閻師在數字電子技術書籍教師權利的組合邏輯電路由給定的定義,特點是“組合邏輯電路,在任何特定時間只能在輸入的時間取決于輸出,電路的原始狀態無關。“也就是說,組合邏輯電路輸出電路的歷史地位并不重要,電路不包括存儲單元。組合邏輯表達方法有三種:真值表,邏輯表達式和電路原理圖。在verilogHDL描述組合邏輯電路中,與真值表對應的是用戶自定義原語;而與電路原理圖相對應的是門級建模,有個綽號又叫結構化描述;與邏輯表達式相對應的則稱為行為描述。另外verilogHDL還可以用更抽象的描述方法描述組合邏輯電路。
這樣看起來,不少還沒有接觸verilogHDL的人可能會大呼上當:這些小把戲也值得費時間研究?尤其在這個迅速發展的年頭,哪有閑功夫學習什么邏輯語言描述呀!我會用EDA試驗課上教授的原理圖的繪畫不就夠了嗎?
其實不然,從會用圖形表達意思到用各種抽象的文字表達意思,人類的文明由此建立。語言抽象的威力可見一斑。試想,你1個3-8譯碼器你可以用圖畫,10個也沒問題,但是后面加個萬呢?事實上經過這些年的發展,verilogHDL等針對硬件描述語言小到密碼鎖,大到CPU(其實也是小,就是多而已)都可以拿來設計。
好了,看到這里你可能雄心勃勃想設計CPU了。高樓平地起,那我們就言歸正傳,開始進入硬件語言設計的世界吧。
在verilogHDL描述邏輯電路中有三種表達方式:assign、always和門原語。
所謂assign描述其實沒什么難的,不過是用邏輯表達式和算術表達式描述輸出信號與輸入信號之間建立的某種直接的聯系。
例如要求X1=a&b,你可以輸入:
assign X1=a&b;
要求X2=a|b,你就敲:
assign X2=a|b;
非常簡單,非常實用。
所謂always描述則可以在設計之中經常看見。首先,always在英語中的意思有三,即: invariably、forever、in any event。不少人可能以為always在verilogHDL中就是in any event的意思,沒什么新的。其實不然。always在使用中必須加入事件的控制,當事件發生時,執行always指定的內容。需要注意的是,always另外一個特性是不論該事件已經發生多少次,只要事件發生就會執行相關的操作。其中最常見的兩個事件是電平觸發和邊沿觸發。
所謂電平觸發是指當某個信號的電平發生變化時,執行指定內容;
例如:
always @(a or b)
out1=a+b;
指當a或b 的值發生變化時,out1等于a和b的算術和。
所謂邊沿觸發是指當某個信號的上升沿或者下降沿到來時,執行always指定的內容。
例如:
always @(posedge clk1)
out2=a&b;
指當clk1的上升沿到來時,令out2等于a和b的邏輯與。
always @(negedge clk2)
out3=a|b;
指當clk2的下降沿到來時,令out3等于a和b 的 邏 輯 或 。
本文地址:http://www.189yp.com/dz/22/20091111201600.shtml
本文標簽: