【Verilog HDL】从逻辑电路图到门级建模——人工翻译的方法论
生活随笔
收集整理的這篇文章主要介紹了
【Verilog HDL】从逻辑电路图到门级建模——人工翻译的方法论
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從左到右,從上到下
先搞定緩沖/非門,再寫與/或門
1. 實例解讀
先以四選一數據選擇器進行說明
對于數字邏輯的部分不再說明,直接進行邏輯電路圖到Verilog門級建模的人工翻譯過程的描述。
1.1 端口和線網分析
- 確定輸入/輸出端口
- 輸入端口
- 數據端:i0,i1,i2,i3
- 控制端:s1,s0(小端序寫法,高字節在高位)
- 輸出端口:
- 數據端:out
- 輸入端口
- 確定子模塊內部線網
- 非門類:s1n,s0n
- 與門類:y0,y1,y2,y3
至此,可以翻譯的部分為:
module mux4_to_1 ( // 四選一數據選擇器模塊input i0,i1,i2,i3,input s1,s0,output out);// 設置內部線網wire s1n,s0n;wire y0,y1,y2,y3;<其他> endmodule【疑問】為什么內部線網用wire而不用寄存器reg?
繼續從端口連接規則——污水處理模型來談及,我們
- 把wire比作無閥門水管
- 把reg比作雙閥門水管
- 把設計塊的設計過程,比作水管與其他器件的連接過程(此時是沒有通水的)
- 把激勵塊的設計過程,比作管道通水,以測試連接的正確性
1.2 器件分析
器件分析的順序:
對于左邊輸入,右邊輸出的邏輯電路圖來說:
- 緩沖門/非門單獨拎出來
- 從左到右
- 從上到下
因此,有如下器件翻譯順序:
- 非門2個
- 與門4個
- 或門1個
給出如下代碼片(非完整代碼)
// 連接門電路 not (s1n,s1); not (s0n,s0);// 【特別注意】以下部分的s1,s0的寫法是有規律的,背著寫就可以 and (y0,i0,s1n,s0n); // 0,0 and (y1,i1,s1n,s0); // 0,1 and (y2,i2,s1,s0n); // 1,0 and (y3,i3,s1,s0); // 1,1or (out,y0,y1,y2,y3);1.3 完善的設計塊
module mux4_to_1( // 1位 四選一數據選擇器input i0,i1,i2,i3,input s0,s1,output out);// 聲明內部線網wire s0n,s1n;wire y0,y1,y2,y3;// 門級建模not (s0n,s0);not (s1n,s1);and (y0,i0,s1n,s0n);and (y1,i1,s1n,s0);and (y2,i2,s1,s0n);and (y3,i3,s1,s0);or (out,y0,y1,y2,y3);endmodule2. 總結:門級建模的翻譯方法
對于設計好的邏輯電路圖來說,有這樣的方法進行翻譯,這種方法會讓你翻譯出來的門級描述邏輯清晰嚴謹
2.1 前提條件
- 邏輯電路圖的設計,是數字邏輯課程的內容,這里不講
- 邏輯電路圖需要是優化的,也就是應用層級建模方法設計出來的,而不是很亂的一堆電路圖。
- 例如:設計一個四位全加器,需要首先設計出來一個一位全加器,在這里,一位全加器的邏輯電路圖和四位全加器的邏輯電路圖是兩張圖,并且四位全加器直接應用一位全加器的實例
2.2 具體方法
對于某一個子模塊的設計來說:
- 先確定端口
- 再確定內部線網
- 再確定需要的邏輯門
- 先緩沖門/非門,再與/或門
- 從左到右,從上到下(左邊輸入,右邊輸出)
總結
以上是生活随笔為你收集整理的【Verilog HDL】从逻辑电路图到门级建模——人工翻译的方法论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都欢乐谷泳衣可以租吗
- 下一篇: 英雄联盟里是艾瑞莉娅漂亮还是菲奥娜漂亮?