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

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

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

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

在SpinalHDL中的對(duì)應(yīng)關(guān)系及聲明形式

FPGA之家 ? 來(lái)源:似猿非猿的FPGA ? 作者:似猿非猿的FPGA ? 2022-07-03 11:02 ? 次閱讀

針對(duì)SpinalHDL中的兩大類型Reg、Wire,來(lái)梳理下在SpinalHDL中的對(duì)應(yīng)關(guān)系及聲明形式。

Wire

在編寫(xiě)Verilog時(shí),reg、wire是我們經(jīng)常用到的變量聲明類型。wire類型變量常用于描述組合邏輯。而Reg則用于描述時(shí)序邏輯。在SpinalHDL中,其定義了Bool、Bits、UInt、SInt、Vec等數(shù)據(jù)類型。當(dāng)我們聲明一個(gè)數(shù)據(jù)類型變量時(shí)其默認(rèn)均為線網(wǎng)類型:

aeee314c-f678-11ec-ba43-dac502259ad0.png

在上面的代碼中,我們聲明了端口dataIn、dataOut、其默認(rèn)均對(duì)應(yīng)著RTL中的Wire類型:

af0096a2-f678-11ec-ba43-dac502259ad0.png

Reg

Reg類型變量常用于時(shí)序邏輯,在SpinalHDL中,將數(shù)據(jù)類型聲明為Reg類型的方式有:

af0d5ca2-f678-11ec-ba43-dac502259ad0.png

SpinalHDL提供了四種類型聲明寄存器的方式,根據(jù)不同的場(chǎng)景需求,我們可以四選一選擇最合適的(都是基于Reg一步步封裝的)。 除此之外,由于SpinalHDL中默認(rèn)為Wire類型,而SpinalHDL為其都提供了setAsReg()方法來(lái)標(biāo)注為寄存器類型,同時(shí)提供Init(resetValue)方法來(lái)做初始化。因此想上面的那個(gè)例子我們想寄存器打一拍我們可以這么來(lái)寫(xiě):

case class regDemo() extends Component{  val io=new Bundle{    val dataIn=in UInt(8 bits)    val dataOut=out UInt(8 bits)  }  val regTemp=Reg(UInt(8 bits)) init(0)  regTemp:=io.dataIn  io.dataOut:=regTemp}
也可以這么來(lái)寫(xiě):

case class regDemo() extends Component{  val io=new Bundle{    val dataIn=in UInt(8 bits)    val dataOut=out UInt(8 bits)  }  val regTemp=RegInit(U(0,8 bits))  regTemp:=io.dataIn  io.dataOut:=regTemp}
還可以這么寫(xiě):

case class regDemo() extends Component{  val io=new Bundle{    val dataIn=in UInt(8 bits)    val dataOut=out UInt(8 bits)  }  io.dataOut:=RegNext(io.dataIn).init(0)}
甚至可以這么寫(xiě):

case class regDemo() extends Component{  val io=new Bundle{    val dataIn=in UInt(8 bits)    val dataOut=out UInt(8 bits) setAsReg() init(0)  }  io.dataOut:=io.dataIn} 

時(shí)序調(diào)整很容易

在我們編寫(xiě)RTL代碼時(shí),當(dāng)時(shí)序存在問(wèn)題時(shí)需要我們調(diào)整時(shí)序時(shí)是很痛苦的,因?yàn)闊o(wú)論是Verilog還是SystemVerilog代碼,在較長(zhǎng)組合邏輯之間添加一級(jí)寄存器往往需要改動(dòng)較多的點(diǎn),還需要仔細(xì)的評(píng)估。稍不注意就是時(shí)序沒(méi)調(diào)整好,功能先出問(wèn)題了(主要在于代碼太長(zhǎng),更改需慎之又慎)。 而在SpinalHDL里,時(shí)序調(diào)整可以做到簡(jiǎn)潔而優(yōu)雅。 在我們之前用SpinalHDL做Sobel圖像處理算法時(shí)有這么一段代碼:

af1f1ec4-f678-11ec-ba43-dac502259ad0.png

在卷積核計(jì)算處理時(shí)這里存在較多的組合邏輯延遲,會(huì)成為系統(tǒng)時(shí)序瓶頸點(diǎn)。當(dāng)我們想向更高的頻率去跑時(shí)這里便需要插入寄存器。想想看這里如果是用Verilog來(lái)寫(xiě)時(shí)我們插入寄存器不僅要計(jì)算清楚中間寄存器的位寬,同時(shí)也需要改多行代碼,還要小心翼翼的改寫(xiě)。 而在SpinalHDL里,我們這里插入寄存器調(diào)整時(shí)序很容易!我們可以通過(guò)調(diào)用regNext很容易地插入一級(jí)寄存器:

af3cc118-f678-11ec-ba43-dac502259ad0.png

如此我們便可以輕松地優(yōu)化時(shí)序,誰(shuí)還說(shuō)時(shí)序調(diào)整是個(gè)體力活兒呢??? 而針對(duì)帶握手信號(hào)的時(shí)序打拍優(yōu)化,SpinalHDL也有相關(guān)的Lib供調(diào)用可以快捷地優(yōu)化處理。

原文標(biāo)題:SpinalHDL—Reg&Wire

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

    關(guān)注

    31

    文章

    5412

    瀏覽量

    123144
  • Reg
    Reg
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    11620
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4886

    瀏覽量

    70194
  • 時(shí)序邏輯
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    9329

原文標(biāo)題:SpinalHDL—Reg&Wire

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

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

    SpinalHDL如何快速地實(shí)現(xiàn)總線連接

    教你SpinalHDL總線連接時(shí)針對(duì)總線的部分信號(hào)位寬不同時(shí)的如何快速地實(shí)現(xiàn)總線連接。
    發(fā)表于 11-28 15:48 ?1031次閱讀

    spinalhdl轉(zhuǎn)Verilog可讀性 SpinalHDL開(kāi)發(fā)流程

    是比較陡峭的。另外在團(tuán)隊(duì)協(xié)作,你可以要求你的同伴對(duì)Verilog,VHDL語(yǔ)言進(jìn)行掌握,但是不能要求他們也掌握SpinalHDL,Chisel這些語(yǔ)言,所以你的代碼怎么安排別人接手也是一個(gè)問(wèn)題。但是這并不妨礙我們采用SpinalHDL
    的頭像 發(fā)表于 07-27 09:29 ?3073次閱讀
    <b class='flag-5'>spinalhdl</b>轉(zhuǎn)Verilog可讀性 <b class='flag-5'>SpinalHDL</b>開(kāi)發(fā)流程

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

    時(shí)會(huì)同時(shí)生成用于生成相應(yīng)ILa IP的tcl腳本,從而能夠輕松的SpinalHDL實(shí)現(xiàn)對(duì)待跟蹤波形信號(hào)的抓取實(shí)現(xiàn)。下面一段代碼展示了如何在SpinalHDL里添加ILA:在上述代碼
    發(fā)表于 06-22 14:37

    SpinalHDL的設(shè)計(jì)中集成現(xiàn)有RTL設(shè)計(jì)(IP)的渠道——BlackBox

    接口及parameter參數(shù)(這也是我們RTL里例化IP時(shí)常用的)。我們來(lái)看SpinalHDL-doc給出的example:整個(gè)代碼里做了三件事:參數(shù)聲明、端口聲明,時(shí)鐘域映射。參數(shù)
    發(fā)表于 06-22 14:59

    談?wù)?b class='flag-5'>SpinalHDLStreamCCByToggle組件設(shè)計(jì)不足的地方

    到ack為低電平即可處理新的任務(wù)。  寫(xiě)在最后  關(guān)于跨時(shí)鐘域處理處理上相對(duì)來(lái)講還是一個(gè)易錯(cuò)點(diǎn),其處理也是新學(xué)者需要好好把握的。SpinalHDL的源代碼還是很值得一讀的。一方面
    發(fā)表于 06-30 15:11

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

    SpinalHDL的switch之前的文章中曾提到過(guò)SpinalHDLswitch的使用:通常情況下,switch
    發(fā)表于 07-06 10:59

    分享一個(gè)SpinalHDL里apply的有趣用法

    接口相關(guān)的時(shí)序操作均封裝在flushRx并將接口的賦值封裝成函數(shù)的形式供其他人調(diào)用,從而將算法設(shè)計(jì)與接口時(shí)序分離。這里看一個(gè)簡(jiǎn)單的例子:代碼本身意義不大,這里我們將對(duì)接口c的時(shí)序操作均放置
    發(fā)表于 07-19 15:08

    SpinalHDL的代碼組織結(jié)構(gòu)如何實(shí)現(xiàn)Component參數(shù)化設(shè)計(jì)呢

    SpinalHDL在生成RTL時(shí),會(huì)檢測(cè)Bundle的所有元素是否都聲明了端口方向。有一點(diǎn)是像上面的MyAdder將端口聲明放在Bun
    發(fā)表于 07-21 14:20

    請(qǐng)問(wèn)SpinalHDL的Area到底是什么意思

    (僅限于純組合邏輯)。AreaSpinalHDKL里,與Verilog、SystemVerilog對(duì)應(yīng)的概念是Component,當(dāng)我們的類繼承了Component后,與之相應(yīng)的我們就要定義端口
    發(fā)表于 07-22 14:22

    SpinalHDL仿真信號(hào)的驅(qū)動(dòng)實(shí)現(xiàn)

    梳理基本完畢,下文將以一個(gè)小的例子為demo構(gòu)建一個(gè)完整的個(gè)人覺(jué)得不錯(cuò)的SpinalHDL仿真環(huán)境書(shū)寫(xiě)方式。原作者:玉騏
    發(fā)表于 07-27 14:37

    記錄一個(gè)使用BlackBoxparameter踩到的坑

    》踩到的坑很早之前,曾寫(xiě)過(guò)如何在SpinalHDL例化之前用Verilog/SystemVerilog所寫(xiě)的代碼,可參照文章《[SpinalHDL——集成你的RTL代碼]》一文。
    發(fā)表于 08-31 14:58

    看下在SpinalHDL中常見(jiàn)的位拼接符的使用

    信號(hào)的不同bit賦值給不同的信號(hào),這種拼接方式可以SpinalHDL按照如下的形式進(jìn)行書(shū)寫(xiě):case class demo() extends Component{val
    發(fā)表于 11-18 15:21

    SpinalHDLBundle數(shù)據(jù)類型的轉(zhuǎn)換

    SpinalHDLBundle與SystemVerilog的packed struct很像,某些場(chǎng)景下,與普通數(shù)據(jù)類型之間的連接賦值可以通過(guò)asBits,assignFromBi
    的頭像 發(fā)表于 10-17 09:51 ?1545次閱讀

    SpinalHDL如何將ROM的初始化放置RTL文件

    默認(rèn)情況下,SpinalHDL在生成代碼時(shí)會(huì)同時(shí)生成一個(gè)bin文件及一個(gè)RTL代碼文件。RTL代碼,會(huì)通過(guò)readmemb函數(shù)來(lái)載入初始化內(nèi)容
    的頭像 發(fā)表于 04-01 15:27 ?1183次閱讀

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

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