我們用一個3-8譯碼器來結束本次對組合邏輯電路的介紹,并且最后我們還給大家準備了一個略微酸爽的任務,確保大家的腦神經都可以得到充分的摩擦。閑話不多,現在開始。
本次實驗的任務是構建一個3-8譯碼器,且將譯碼結果通過小腳丫的LED燈顯示。
聽上去并不難,而且我能想象到,一定會有不少同學會立刻開始畫一個8行的真值表,然后通過卡諾圖進行化簡,且根據最終的邏輯表達式畫出門電路圖。這個方法當然沒有錯,不過,如果面對更多位數的系統,比如4-16或者是8-256的譯碼器,建一個幾百行的真值表并進行邏輯運算聽上去似乎不那么科學。
在這里我們將采用模塊化的思路來完成我們的實驗設計。
在開始進行模塊化設計之前,我們先做一個2-4譯碼器,也就是譯碼器系列中最底層的基礎模塊。
這次的代碼我們采用行為級描述(Behavioral-level)的寫法,直接根據真值表將輸入與輸出的各種組合進行直接關聯。可以看出,行為級的寫法甚至不需要構建門電路,僅通過輸入輸出對應關系即可構建,因此最為抽象。
有了最基礎的模塊,如何通過它搭建出3-8譯碼器呢?現在,我們在原有的真值表上加上一路使能信號E,再來觀察一下新的真值表??梢园l現,當E為低電平時,不論輸入的取值如何,前四位輸出均為0。當E為高電平時,右側仍然為2-4譯碼器的輸出結構。
我們可以把表3看作為一個3-8譯碼器的真值表,只不過輸入端的最高位由E代替。由于E為低電平時輸出最高的四位均為0,因此確保我們在對后四位輸出(黃色)進行賦值不會影響到前四位的輸出。
從表3不難看出,黃框和紅框對應的其實就是一個帶有使能端的2-4譯碼器,且使能端E控制著前后半端位數的輸出結果。也就是說,一個3-8譯碼器可以由兩個2-4譯碼器構成。同理,一個4-16譯碼器可以由兩個3-8譯碼器構成,以此類推。
帶有使能E的2-4譯碼器如下圖所示。實際上就是在之前的代碼上稍做修改,在這里我們就不詳細寫出來了,給大家自行練習的機會。
接下來,按照之前的分析,我們畫出由兩個2-4譯碼器組成的3-8譯碼器的結構。
以下是用Verilog寫的一個3-8譯碼器,在程序里我們調用了兩次2-4譯碼器的子模塊。注意,子模塊的文件需要和decode38文件放在同一個工程目錄下,不然就成了隔壁老王了。
當你反復在圖和代碼之間徘徊幾輪,并有了多么痛的領悟之后,你就可以把自己編譯好的程序下載到小腳丫里,然后通過實驗測試你的代碼了。
練習一下,當我們把輸出D7-D1分別對應為小腳丫上的L7-L1,且輸入X2-X0分別對應至小腳丫的SW3-SW1,請判斷以下的LED狀態(低電平亮)。
在倒騰了半天之后,你終于搞定了代碼,并且成功在小腳丫上驗證了你的設計,于是滿懷信心的你終于可以嘗試一下通過模塊化的設計思路去構建4-16甚至更多位的譯碼器了。
責任編輯人:CC
-
邏輯電路
+關注
關注
13文章
494瀏覽量
42581 -
譯碼器
+關注
關注
4文章
310瀏覽量
50285
發布評論請先 登錄
相關推薦
評論