1. 程式人生 > >HDL-數字電路建模的要點

HDL-數字電路建模的要點

image edm init wire prop .com 編譯 等等 round

https://mp.weixin.qq.com/s/tEDMWf1gk0e7u4hIWKM9bQ ?技術分享圖片? 一. 拓撲 數字電路的拓撲抽象出來之後比較簡單,就是線(Wire)和開關(Switch),門(Gate)也由開關組成。 線多了之後,看上去像網,所以Verilog裏面的wire的Data Type為net。如果線是網,那麽一個個開關及開關組成的門、門組成的寄存器,則可以看出是抽象的節點(Node)。 只有兩點: 1.線串接各個節點; 2.節點上帶有input/output/inout三種類型的接口(Port),供線連接; 二. 值的流動(Propagation) 拓撲是靜態的,動態的是值的流動。數字電路關註最多的值是0和1,其他還有未知x和高阻z。
值經過線,流到連接的節點。根據節點的狀態,值會發生反轉、減弱,產生延遲傳遞到節點的輸出線。或者被阻斷,傳不到下一條。或者輸出值未改變,下一條未發現變化。等等。 三. 事件驅動 輸入值的變化,根據自身狀態,引起輸出值的變化。此節點的輸出值又作為下一節點的輸入值,如此不停的傳播。 每一個值的變化,即為一個事件,一個事件的發生,觸發了對該事件的處理,該事件的處理,又產生新的事件。 如此,靜態的拓撲模型為線和節點,動態的模型為事件驅動模型。 四. 各自為政 上電之後,電路的每一部分都是活的。每一個節點都有自己的輸入、處理邏輯和輸出,每一個節點只關註自己的輸入,旁若無人的進行處理,然後自顧自的輸出。這就是數字電路所為並行性的特點。
五. 並行性建模 數字電路各個組成部分的並行性,並不需要對之進行建模的語言也必須是並行性語言,這是一個很大的誤區 Verilog是並行性語言嗎?不是。甚至Verilog本身並不能編譯運行,只能靠EDA對模型進行解釋,然後仿真。 Verilog只是對數字電路的各個模塊、模塊內的幾段邏輯進行建模而已: 描述每個模塊的輸入、處理邏輯、輸出; 描述不同模塊的輸入、輸出連接情況; 僅此而已。任何語言都可以對此進行建模。

HDL-數字電路建模的要點