1. 程式人生 > >jchdl - RTL例項 - And2(結構體的使用)

jchdl - RTL例項 - And2(結構體的使用)

https://mp.weixin.qq.com/s/qTgeBF9N0mx5UK3xWDb3jg

  jchdl對Verilog做了增強,增加了使用者自定義結構體型別。使用自定義結構體,可以對輸入和輸出介面進行分類,並簡化模組輸入輸出介面的定義。   參考連結 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/And2/And2.java   1.建立And2.java, 並生成構造方法和logic()方法   2. 根據邏輯原理,新增輸入輸出介面
輸入輸出線作為類成員存在。使用註解標明是input port還是output port。   可以看到這裡有一個型別為Abs的輸入介面s。型別Abc實現自Structure介面,內部定義了一組成員: 注意點:
  1. 實現Structure介面;
  1. 成員宣告為public,以便直接訪問;
  1. Structure內部成員不宣告input/output屬性,在Module中使用的時候宣告,如此結構體所有成員具有同樣的輸入和輸出屬性。
  3. 在構造方法中搜集輸入輸出線並呼叫construct()方法
首先呼叫父類即Module類的構造方法,以構建模組hierarchy。 然後逐個把輸入輸出引數與input/output port對應上。 然後呼叫construct()方法構造模組(呼叫一次logic()方法,蒐集模組的assign/always程式碼塊、子模組)。   4. 在logic()方法中建立assign/always程式碼塊,以及子模組 包含兩個And子模組。可以看到這裡直接使用s.a, s.b, s.c。     5. 建立inst靜態方法方便後續使用
  6. 建立main方法執行驗證 執行結果為:   7. 生成Verilog 生成定製化模組名:   呼叫toVerilog()方法生成Verilog實現。   執行結果如下: 可以看到這裡生成的輸入輸出介面名稱進行了轉換,使用結構體變數名為字首。