敏捷硬件開發(fā)語言Chisel與數(shù)字系統(tǒng)設(shè)計 課件 第9章 其他議題_第1頁
敏捷硬件開發(fā)語言Chisel與數(shù)字系統(tǒng)設(shè)計 課件 第9章 其他議題_第2頁
敏捷硬件開發(fā)語言Chisel與數(shù)字系統(tǒng)設(shè)計 課件 第9章 其他議題_第3頁
敏捷硬件開發(fā)語言Chisel與數(shù)字系統(tǒng)設(shè)計 課件 第9章 其他議題_第4頁
敏捷硬件開發(fā)語言Chisel與數(shù)字系統(tǒng)設(shè)計 課件 第9章 其他議題_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

9.其他議題一、重命名模塊名稱二、命名規(guī)則三、重命名模塊內(nèi)信號名稱四、參數(shù)化的Bundle五、FixedPoint六、assert七、總結(jié)目錄

2一、重命名模塊名稱

3一、重命名模塊名稱Chisel生成Verilog的模塊名默認使用Chisel中的類名。通過重寫desiredName方法重命名生成Verilog的模塊名。模塊和黑盒都適用。

4一、重命名模塊名稱例:ChiselVerilogclassCoffeeextendsBlackBox{

valio=IO(newBundle{

valI=Input(UInt(32.W))

valO=Output(UInt(32.W))

})

overridedefdesiredName="Tea"

}

classSaltextendsModule{

valio=IO(newBundle{})

valdrink=Module(newCoffee)

overridedefdesiredName="SaltDrink"

}moduleSaltDrink(

inputclock,

inputreset

);

wire[31:0]drink_I;

wire[31:0]drink_O;

Teadrink(

.I(drink_I),

.O(drink_O)

);

assigndrink_I=32'h0;

endmodule

5二、命名規(guī)則

6二、命名規(guī)則Chisel難以可靠地捕獲信號名稱是一個歷史性問題,主要是因為Chisel依靠反射來查找名稱。Chisel3.4引入了一個Scala編譯器插件,它能可靠地捕獲信號名稱。插件的作用:

①給中間變量名加前綴

②函數(shù)調(diào)用或者作用域里面定義的信號名生成 Verilog時使用Chisel變量名

7三、重命名模塊內(nèi)信號名稱

8三、重命名模塊內(nèi)信號名稱chisel3.experimental包里的prefix和noPrefix可以用來增加自定義前綴和去除前綴: prefix用來增加自定義前綴,但是會保留前綴中的左側(cè)變量名; noPrefix可以去掉前綴中的左側(cè)變量名;如果只想生成自定義的前綴,先使用prefix加自定義前綴,再使用noPrefix去除前綴中的左側(cè)變量名。注:如果先使用noPrefix再使用prefix只能去掉前綴中的左側(cè)變量名,不會添加自定義前綴名。3.1前綴

9三、重命名模塊內(nèi)信號名稱如果想更改生成Verilog的信號名稱,可以使用suggestName方法。如果在生成中間變量過程中使用suggestName,會生成相應(yīng)的前綴。如果想去掉該前綴,使用noPrefix去除。

suggestName添加的名字可能不會出現(xiàn)在Verilog中,比如該信號被優(yōu)化掉。三、重命名模塊內(nèi)信號名稱3.2suggestName

10重命名模塊內(nèi)信號名稱

forceName是chisel3.util.experimental里的單例對象,它可以更改信號名、端口名、實例名。用法是foceName(信號名/端口名/實例名,字符串)注:使用時需要importchisel3.util.experimental.forceName三、重命名模塊內(nèi)信號名稱3.3forceName

11四、參數(shù)化的Bundle

12當一個Bundle類的對象用于創(chuàng)建線網(wǎng)、IO等操作時,它并不是把自己作為參數(shù),而是交出自己的一個復(fù)制對象,也就是說編譯器需要知道如何來創(chuàng)建當前Bundle對象的復(fù)制對象。Chisel提供了一個內(nèi)部的API函數(shù)cloneType,任何繼承自Data的Chisel對象,要復(fù)制自身時,都是由cloneType負責(zé)返回該對象的復(fù)制對象。四、參數(shù)化的Bundle

13當自定義的Bundle的主構(gòu)造方法沒有參數(shù)時,Chisel會自動推斷出如何構(gòu)造Bundle對象的復(fù)制。但是,如果自定義的Bundle帶有參數(shù)列表,那么Chisel就可能無法推斷了。此時需要自己重寫B(tài)undle類的cloneType方法,其形式如下:overridedefcloneType=(newCustomBundle(arguments)).asInstanceOf[this.type]四、參數(shù)化的Bundle

14五、FixedPoint

15五、FixedPoint在設(shè)計電路中有時需要用到定點數(shù),在chisel3.util.experimental包里定義了FixedPoint密封類和伴生對象。構(gòu)造FixedPoint需要兩個參數(shù):

FixedPoint(width:Width,binaryPoint:BinaryPoint) width:定點數(shù)的位寬 binaryPoint:尾數(shù)位位寬

FixedPoint類也定義了很多方法,包括算術(shù)運算、位操作、比較操作等,詳情見API文檔和源碼。

16六、assert

17六、assert

有時需要在構(gòu)建電路時限制參數(shù)條件,或者對電路內(nèi)信號進行斷言,如果信號不滿足斷言的條件則報錯,實現(xiàn)上述功能可以使用chisel3包中的assert方法。assert方法可以接受一個參數(shù)、兩個參數(shù)、多個參數(shù)。一個參數(shù):只有判斷條件,可以是Bool類型或者是Boolean類型,也就是說assert同時支持scala和chisel的邏輯判斷。兩個參數(shù):判斷條件和字符串,如果判斷條件不成立,報錯信息會輸出這個字符串。多個參數(shù):判斷條件、字符串和信號名,當判斷條件是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論