比照之前2011/10/03的多工器設計是個1-bit的多工器,
將兩個1-bit的多工器組合便可產生2-bits的多工器。
同理,
4-bits的多工器則是使用兩個2-bits組合而成。
同樣從2011/10/03的時脈圖可得知,
當SEL為0時,信號輸出為B。
當SEL為1時,信號輸出為A。
不論多少bit的多工器皆須滿足上述條件。
多工器本身的組合並不難,
只要注意將輸入線數除以二分成高腳位和低角位。
以下為1-bit組合成2-bits多工器的範例程式碼:
以此類推便可推至64-bits的程式碼,在此則省略不多加說明。
當64-bits的多工器組合好後,
如何驗證該多工器是否正確成了今天最主要的課題。
緊接著先介紹一些會用到的Verilog語法:
※大多為網路上蒐集來的零星資料,和自己所學過的程式語言比較。
一、initial語法:
initial具對變數設出值的功能,
但它只在#0的時候動作,
也就是說透過initial設初值的動作只會被執行唯一一次,並且至於時脈設定的模組
其過程類似MATLAB的for迴圈動作,
開始與結尾分別用begin、end來囊括設初值的動作。
二、reg語法:
reg是register的縮寫,有登記的意思。
在Verilog中是指對變數設位數(也就是幾條線),
reg設的值是被動的,
必須透過initial和always設定初值才會改變。
三、wire語法:
wire起初也是對變數設位數,
之後透過assign來對變數設值,
或者是不設初值,透過輸入信號的不同而不同。
因此,一個用於測試64-bits的時脈設置如下:
300的十六進制是12C,
100的十六進制是64,
故時脈圖當SEL=0時,輸出應是64,反之為12C。
沒有留言:
張貼留言