女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SpinalHDL里pipeline的設(shè)計(jì)思路

冬至子 ? 來源:Spinal FPGA ? 作者:玉騏 ? 2023-08-16 15:11 ? 次閱讀

如果你曾看過VexRSICV的設(shè)計(jì),對于從事邏輯設(shè)計(jì)的你會(huì)驚訝從未想過邏輯設(shè)計(jì)還能這么來做。針對VexRSICV所衍生出的pipeline Lib,該系列會(huì)對pipeline進(jìn)行一次梳理。誠如之前一篇博客曾講,這是“勇者的游戲”。

雖然并未從事CPU設(shè)計(jì),但這里pipeline的庫讀完還是當(dāng)浮一大白~

》傳統(tǒng)的設(shè)計(jì)思路

借用博客《The VexRiscV CPU - A New Way to Design》中的觀點(diǎn),在CPU設(shè)計(jì)里,一條典型的五級流水線:

image.png

在傳統(tǒng)的流水線設(shè)計(jì)里,一條指令切分到不同的Stage中,每增加一條指令,我們可能就需要對各個(gè)Stage進(jìn)行修改,牽一發(fā)而動(dòng)全身。如果對于流水線每個(gè)階段都了然于胸,那么自不是問題,否則那就是噩夢級別的難度了~。

那么,是否有新的方式來做一次流水線設(shè)計(jì)的創(chuàng)新呢?

來看看SpinalHDL里pipeline的設(shè)計(jì)思路。

》高端操作

本篇為開篇系列,先從整體架構(gòu)上看SpinalHDL中pipeline的設(shè)計(jì)整體框架,暫不牽涉具體的設(shè)計(jì)細(xì)節(jié)。

我們先來看一個(gè)非常簡單的“pipeline”:

image.png

從A到B經(jīng)歷三級流水線,每經(jīng)一級加一輸出至下一級。

回到電路設(shè)計(jì)的本質(zhì)。在FPGA里面,除了RAMDSP這些資源,邏輯實(shí)現(xiàn)的核心只有LUT喝Reg。LUT負(fù)責(zé)實(shí)現(xiàn)邏輯實(shí)現(xiàn),Reg負(fù)責(zé)狀態(tài)保存。在上面的三級流水里,我們要思索的無非兩個(gè)問題:

  1. 每一級流水線都做了什么
  2. 流水線各級是如何進(jìn)行連接的
    那么在看看上面的電路。每級流水線里面都是一個(gè)加法器和一個(gè)寄存器輸出。加法器這些功能性的實(shí)現(xiàn)才是每一級Stage的功能。而寄存器則用于連接本級Stage與下一級Stage。也就意味著,每一級流水線都是邏輯電路負(fù)責(zé)實(shí)現(xiàn)功能,時(shí)序電路寄存器用于Stage連接。為此,對于pipeline我們可以抽象為下面的要素:

image.png

Stage:僅考慮具體的功能實(shí)現(xiàn),它包含了輸入、輸出以及具體的邏輯實(shí)現(xiàn)。

Connection:僅用于實(shí)現(xiàn)各級Stage的連接。

在邏輯電路設(shè)計(jì)里,不要總是想著把功能實(shí)現(xiàn)和時(shí)序設(shè)計(jì)給拼到一塊兒。將上面的概念與最上面的三級流水對照,那么加法器就是對應(yīng)的Stage的功能,一個(gè)組合電路。而寄存器就對應(yīng)Connection的功能。

SpinalHDL是基于Scala而設(shè)計(jì),其能夠幫助我們自動(dòng)實(shí)現(xiàn)很多功能。比如兩級Stage之間都有哪些信號是要通過Connection進(jìn)行連接,對應(yīng)的流水線功能如flush、halt能功能如何在各級Stage之間進(jìn)行傳播等功能。我們所需要做的,就是通過一定的規(guī)則告訴pipeline如何去做這些事情。

接下來,先針對pipeline所涉及的Pipeline、Stage、Connection、Stageable、StageableKey進(jìn)行一個(gè)初步整體了解。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 時(shí)序電路
    +關(guān)注

    關(guān)注

    1

    文章

    114

    瀏覽量

    21869
  • 加法器
    +關(guān)注

    關(guān)注

    6

    文章

    183

    瀏覽量

    30595
  • Pipeline
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9614
  • FPGA開發(fā)板
    +關(guān)注

    關(guān)注

    10

    文章

    124

    瀏覽量

    31865
  • HDL語言
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    9096
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    SpinalHDLpipeline的設(shè)計(jì)思路

    如果你曾看過VexRSICV的設(shè)計(jì),對于從事邏輯設(shè)計(jì)的你會(huì)驚訝從未想過邏輯設(shè)計(jì)還能這么來做。
    的頭像 發(fā)表于 08-12 11:22 ?1562次閱讀

    怎樣使用SpinalHDL Pipeline組件的resulting及overloaded?

    關(guān)于stageableToData,在之前的文章中已有介紹,今天來看下stageableOverloadedToData以及stageableResultingToData的作用。
    的頭像 發(fā)表于 09-11 09:47 ?1293次閱讀
    怎樣使用<b class='flag-5'>SpinalHDL</b> <b class='flag-5'>Pipeline</b>組件<b class='flag-5'>里</b>的resulting及overloaded?

    SpinalHDLswitch方法有何用處呢

    ,當(dāng)我們需要根據(jù)tkeep信號來計(jì)算這一拍有多少有效數(shù)據(jù)時(shí)這里的代碼會(huì)是什么樣子……這種代碼寫的手有點(diǎn)兒累(又沒啥技術(shù)含量)……在SpinalHDL該如何做呢?switchSpinalHDL提供了
    發(fā)表于 06-22 14:25

    SpinalHDL實(shí)現(xiàn)優(yōu)雅的添加待跟蹤波形信號

    在FPGA的開發(fā)過程中,在線抓取波形往往是終極調(diào)試大法。而如何抓取信號,相信做邏輯開發(fā)的小伙伴都是輕車熟路,張口就來,無非兩種方式嘛:待跟蹤信號添加原語或者手動(dòng)例化Ila。而在SpinalHDL
    發(fā)表于 06-22 14:37

    聊一聊SpinalHDL 1.6.1引入的blackbox inline功能

    BlackBox在之前的文章中,曾介紹過如何封裝兼容別人的RTL代碼:SpinalHDL——集成你的RTL代碼整體的思路還是簡潔明了的,相信讀完后照著做很快就能上手。這對于保持設(shè)計(jì)的兼容性及混合
    發(fā)表于 06-29 16:02

    SpinalHDL中關(guān)于casez的使用

    Verilog代碼時(shí)還是很少會(huì)直接這么來寫的,往往通常采用casez來進(jìn)行描述:那么在SpinalHDL中,我們是否也可以這么描述呢?SpinalHDL中的don't care像Verilog代碼中,casez
    發(fā)表于 07-06 10:59

    分享一個(gè)在SpinalHDLapply的有趣用法

    SpinalHDL和Chisel都是基于scala來實(shí)現(xiàn)的,而在SpinalHDL的example,偶然看到一個(gè)apply的有趣用法。“神奇”的邏輯,"奇葩"的寫法偶然看到一
    發(fā)表于 07-19 15:08

    SpinalHDL是如何讓仿真跑起來的

    SpinalHDL,當(dāng)我們的設(shè)計(jì)完成后如果說把生成的Verilog/SystemVerilog代碼用SystemVerilog來進(jìn)行仿真驗(yàn)證那真是一件痛苦的事情,而且對于SystemVerilog本身來講,在
    發(fā)表于 07-25 15:09

    如何在SpinalHDL啟動(dòng)一個(gè)仿真

    前言在安裝完成Verilator、GtkWave后,我們即可在IDEA通過SpinalHDL提供的仿真接口來對我們的設(shè)計(jì)進(jìn)行仿真。在《SpinalHDL—仿真環(huán)境》一文中已提到SpinalH
    發(fā)表于 07-26 16:59

    SpinalHDL有沒有什么好的方式實(shí)現(xiàn)一個(gè)接口位寬轉(zhuǎn)換呢

    下午微信群有個(gè)小伙伴問了這么一道題:將一個(gè)為UInt(128 bits)的Stream接口連接到一個(gè)UInt(32 bits)的StreamFiFo上,在SpinalHDL有沒有什么好的方式實(shí)現(xiàn)
    發(fā)表于 07-27 14:52

    SpinalHDL時(shí)鐘域中的定制與命名

    聊一聊在SpinalHDL時(shí)鐘域中時(shí)鐘的定制與命名。 相較于Verilog,在SpinalHDL,其對時(shí)鐘域有著更細(xì)致的描述,從而也能夠更精細(xì)的控制和描述。而對于時(shí)鐘域,我們往往關(guān)
    的頭像 發(fā)表于 03-22 10:14 ?2305次閱讀

    SpinalHDL用于跨時(shí)鐘域處理的一些手段方法

    每一個(gè)做數(shù)字邏輯的都繞不開跨時(shí)鐘域處理,談一談SpinalHDL用于跨時(shí)鐘域處理的一些手段方法。
    的頭像 發(fā)表于 07-11 10:51 ?2180次閱讀

    SpinalHDL如何實(shí)現(xiàn)Sobel邊緣檢測

    書接上文,趁著今天休假,采用SpinalHDL做一個(gè)小的demo,看看在SpinalHDL如何優(yōu)雅的實(shí)現(xiàn)Sobel邊緣檢測。
    的頭像 發(fā)表于 08-26 08:59 ?1509次閱讀

    SpinalHDL在頂層一鍵優(yōu)化Stream/Flow代碼生成

    ? ? 在SpinalHDL在頂層一鍵優(yōu)化代碼中Stream/Flow代碼生成的payload,fragment。 難看的代碼 ? ????來看一段代碼: ? import
    的頭像 發(fā)表于 12-14 09:05 ?954次閱讀

    淺析SpinalHDLPipeline中的復(fù)位定制

    之前有系列文章介紹了SpinalHDLPipeline的使用,最近在一個(gè)功能模塊中真實(shí)的使用了這個(gè)lib。
    的頭像 發(fā)表于 03-17 17:31 ?1307次閱讀
    淺析<b class='flag-5'>SpinalHDL</b>中<b class='flag-5'>Pipeline</b>中的復(fù)位定制