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