最經典的Verilog學習案例:優先編碼器的設計原理

小夥伴們好,又見面了,小編今天要講的是基於硬件描述語言的優先編碼器的設計及其應用。

那麼,還是原來那樣,我們首先來介紹一下優先編碼器的基本概念:

就百度百科的概念來說,優先編碼器其實就是允許同時在幾個輸入端有輸入信號,編碼器按輸入信號排定的優先順序,只對同時輸入的幾個信號中優先權最高的一個進行編碼,即已經排好了隊,從高位向低位遞減。比如,8-3優先編碼器的輸入有“0、1、2、3、4、5、6、7”八位輸入,而輸出只有“Y0、Y1、Y2”三位輸出,在這裡,就是當“7”為“1”的時候,即“7”為有效值的時候,無論“0”到“6”之間為何值,都只對“7”進行編碼,以此類推。當“7”為無效而“6”為有效的時候,就只對“6”進行編碼而不用管“0”到“5”之間為何值,反正就是隻看高位有沒有效,高位優先。

最經典的Verilog學習案例:優先編碼器的設計原理

接下來,我們給出Verilog代碼以及testbench激勵信號:

最經典的Verilog學習案例:優先編碼器的設計原理

最經典的Verilog學習案例:優先編碼器的設計原理

我們這裡用了兩種方式:if-else語句和casex語句分別進行設計(此為組合邏輯電路設計)。

然後Data[7:0]為8位的數據輸入;code[2:0] 為3位的編碼輸出。仿真結果也都很成功。從高位到低位,優先權依次下降,第七位的優先權最高。具體可以看下圖的仿真結果,可以看出,編碼的結果符合優先編碼器的原理,從高位向低位優先編碼,也符合二進制的變換,是一個完美的仿真!

最經典的Verilog學習案例:優先編碼器的設計原理

其實,優先編碼器的逆運算其實就是某一些密碼學的原理。比如,一個密碼為“111”,那麼,就可以像隊友發出“7”的數字,即使數字“7”被截獲了,也不一定會被破解,因為敵方不知道你是基於什麼協議編寫的密碼,但是隊友通過之前的溝通,會明白。所以說編碼器是非常重要的,不僅在密碼學中有應用,而且在實際生活中。也有很廣泛的應用。比如電話的通信,優先火警信號,次要盜警信號,最後才日常業務信號;或者醫院的病房,優先重症患者,次要感染患者,最後才是普通患者等等。只要你用心去發現,生活中的“優先編碼器”還是非常多的類似的例子的!一切切的複雜的系統都是由一些小模塊組成的。

所以我覺得,每一個數字電路的小模塊在實際生活中都有著一個一個很重要的應用,所有複雜的模塊,都是有這些小模塊構成的。所以說學好基礎知識很重要,如果基礎知識都學不好的話,那麼更復雜的就更不用說了。

反正在小編看來,8-3優先編碼器的用處還是挺大的。希望大家在以後學習的時候要注重基礎。基礎的學習不只是為了學習,更為主要的,還是希望對現實生活中起到一種幫助的作用,那麼,你花時間來學習基礎的知識就是值得的!

小夥伴們如果在學習的時候遇到一些問題的話,歡迎留言討論,小編會一一回復的~


分享到:


相關文章: