jchdl - GSL Node
生活随笔
收集整理的這篇文章主要介紹了
jchdl - GSL Node
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
https://mp.weixin.qq.com/s/Oa4qgjIUccu5Y-Jlqcyn_A org.jchdl.model.gsl.core.meta.Node.java generated by Intellij IDEA powered by yFiles Node為所有節(jié)點的父類。所有用戶創(chuàng)建的節(jié)點,必須繼承Node類。Node為用戶創(chuàng)建了節(jié)點提供了很多支持方法,但把logic()方法留給子類自行定義。 一. 類結(jié)構(gòu) 主要屬性: netI:連接在節(jié)點Input接口上的線; netO: 鏈接在節(jié)點Output接口上的線; ioI:節(jié)點的Input接口,與netI中的線一一對應(yīng); ioO:接口Output接口,與netO中的線一一對應(yīng); 主要方法: 收集連接在接口Input接口上的線的方法: in(Net): 添加一條輸入線; in(Net[]):添加一組輸入線; 收集連接在接口Output接口上的線的方法: out(Net): 添加一條輸出線; out(Net[]):添加一組輸出線; 獲取節(jié)點Input接口的方法: in(int index): 獲取第index個Input接口; inputs(): 獲取所有的Input接口; inputs(int from):獲取從from開始的所有接口; inputs(int from, int to):[from, to),獲取從from(包含)到to(不包含)的所有接口; 獲取節(jié)點Output接口的方法: out(int index): 獲取第index個Output接口; outputs(): 獲取所有的Output接口; outputs(int from):獲取從from開始的所有接口; outputs(int from, int to):[from, to),獲取從from(包含)到to(不包含)的所有接口; 節(jié)點內(nèi)部邏輯構(gòu)建方法:logic() 該方法為抽象方法,留給子類自行定義,即用戶通過重新定義該方法,來實現(xiàn)節(jié)點的自定義邏輯。 節(jié)點構(gòu)建方法:construct() 輔助方法,下面單講。 轉(zhuǎn)換為Verilog的方法:toVerilog() 把節(jié)點轉(zhuǎn)換為Verilog的(門和開關(guān)層結(jié)構(gòu)建模)實現(xiàn)。 二. 構(gòu)建節(jié)點 當前構(gòu)建節(jié)點的方法如下: 收集節(jié)點構(gòu)造方法中提供的輸入線和輸出線; 調(diào)用construct()方法: 根據(jù)收集的輸入線和輸出線,分別創(chuàng)建足夠數(shù)量的Input接口和Output接口與之對應(yīng); 調(diào)用用戶自定義的logic()方法構(gòu)建節(jié)點內(nèi)部邏輯; 將輸入線和輸出線與節(jié)點的Input接口和Output接口一一連接; 如此即完成節(jié)點構(gòu)建。 三. 用戶自定義邏輯:logic() 用戶自定義邏輯的方法是在子類中覆蓋logic方法。logic方法主要做以下事情: 創(chuàng)建線或一組線從Input接口牽出。(創(chuàng)建線時即可自動將Input接口連接到新創(chuàng)建的線的Input接口上,從而驅(qū)動(driven)線) 創(chuàng)建線或一組線連接到Output接口。(創(chuàng)建線時即可自動把線的Output接口連接到節(jié)點的Output接口上) 創(chuàng)建內(nèi)部子節(jié)點;(創(chuàng)建內(nèi)部子節(jié)點時,即可自動把Input牽出作為子節(jié)點輸入線的線,連接到子節(jié)點的Input接口上;并且自動把子節(jié)點的Output接口連接到子節(jié)點的輸出線上) 另外,可以通過pullup/pulldown來處理臨時需要的線;使用toGround()處理不再需要的線。 注意:logic內(nèi)部使用的線,屬于節(jié)點的一部分,最好是定義為節(jié)點類的屬性。 四. 總結(jié) 可以看出,節(jié)點的構(gòu)建其實就是連線: 把輸入線連到Input接口上; 從Input接口牽出線連到內(nèi)部子節(jié)點上; 從內(nèi)部子節(jié)點牽出線連接到Output接口上; Output接口牽出線以供后續(xù)使用;(連接到下一個節(jié)點,或者接地,或者懸空供觀察使用) 五. 實例Mux Mux為二選一。 構(gòu)造函數(shù) 構(gòu)造函數(shù)的參數(shù)為輸入線和輸出線,使用in()和out()分別收集: 收集輸入線 in1, in2, sel; 收集輸出線out; 調(diào)用construct方法構(gòu)建Mux節(jié)點; 內(nèi)部邏輯 從輸入口牽出線,比如: in1 = new Wire(in(0)) 其中,in(0)方法為Node類提供的輔助方法,獲取第0個Input接口; 然后創(chuàng)建一條線,從這第0個Input接口牽出。 創(chuàng)建線連接到輸出口,比如: out = new Wire(out(0)) out(0)方法為Node類提供的輔助方法,獲取第0個Output接口; 然后創(chuàng)建一條線,連接到這個輸出口上; 創(chuàng)建子節(jié)點Not需要的輸出線selNot; 創(chuàng)建字節(jié)點Not:sel作為輸入線,selNot作為輸出線; 同理,逐個創(chuàng)建子節(jié)點:兩個與門,一個或門; 節(jié)點內(nèi)部的線 節(jié)點內(nèi)部使用的線,推薦作為節(jié)點屬性聲明: 創(chuàng)建Mux節(jié)點 PS. inst靜態(tài)方法可以省略new關(guān)鍵字,使代碼更緊湊。 六. 原子節(jié)點(AtomicNode) 原子節(jié)點是節(jié)點的子類。覆蓋了logic方法,但實現(xiàn)為空。 該類定義了抽象方法atomic()供子類覆蓋,以實現(xiàn)從輸入到輸出的轉(zhuǎn)化邏輯。最簡單的比如非門: atomic()方法調(diào)用not()方法,實現(xiàn)從輸入到輸出值的轉(zhuǎn)換。
轉(zhuǎn)載于:https://www.cnblogs.com/wjcdx/p/9616068.html
總結(jié)
以上是生活随笔為你收集整理的jchdl - GSL Node的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jchdl - GSL Port
- 下一篇: protobuf生成