译码器设计——Verilog HDL语言
譯碼器設計
- 任務描述
- 相關知識
- 3線-8線譯碼器的功能
- always語句
- 事件時序控制
- case語句
- 編程要求
- 源代碼
任務描述
設計一個3線-8線譯碼器。運用Verilog HDL進行設計,完善譯碼器的功能描述風格代碼,具備組合邏輯電路的設計仿真和測試的能力。
相關知識
3線-8線譯碼器的功能
譯碼是編碼的逆過程,3線-8線譯碼器可以將n位二進制代碼可譯成2n種電路狀態。譯碼器框圖如下所示。
always語句
通俗的理解,always就是:一直運行。
always過程從關鍵字always開始,可以連續多次運行,當過程的最后一行代碼執行完成后,再次從第一行代碼開始執行。
一個模塊中可以包含多個過程,各個過程相互之間是并發執行的。不過,過程不能夠嵌套使用。如果過程中有多個語句,則需要使用關鍵字begin、end或fork、join將它們組成一個代碼塊。這兩種關鍵字組合代表著順序代碼塊和并行代碼塊。
事件時序控制
事件時序控制的意思是,如果指定的事件發生,則代碼被觸發執行。它的關鍵字為@,后面可以加變量或者事件名稱。例如:
@(a or b) y = ~a; //當a或b其中任意一個變量發生變化時,則將a非賦值給y @(posedge clk) y = 1; //在變量clk的上升沿,將1賦值給ycase語句
case語句是一個多路條件分支形式,其語法如下:
case(case_expr) case_item_expr{ ,case_item_expr} : procedural_statement . . . . . . [default: procedural_statement] endcasecase語句首先對條件表達式case_expr求值,然后依次對各分支項求值并進行比較,第一個與條件表達式值相匹配的分支中的語句被執行。可以在1個分支中定義多個分支項;這些值不需要互斥。缺省分支覆蓋所有沒有被分支表達式覆蓋的其他分支。
編程要求
根據提示,設計具有一位使能端的3線-8線譯碼器。當使能端為0時,8位輸出信號全為0;如果一位使能信號為1,則輸出高電平有效的譯碼信號。該譯碼器真值表如下所示。
源代碼
測試平臺:EduCoder
//設計具有一位使能端的3線-8線譯碼器。當使能端為0時,8位輸出信號全為0; //如果一位使能信號為1,則輸出高電平有效的譯碼信號。 module decoder3e_test(a,ena,y);input [2:0] a;input ena;output [7:0] y; reg [7:0] y;// 請在下面添加代碼,完成設計任務 /* Begin */always @ (a or ena)beginif(ena == 1)case(a)3'b000: y = 8'b00000001; 3'b001: y = 8'b00000010; 3'b010: y = 8'b00000100; 3'b011: y = 8'b00001000; 3'b100: y = 8'b00010000; 3'b101: y = 8'b00100000; 3'b110: y = 8'b01000000; 3'b111: y = 8'b10000000; default: y = 8'b00000000;endcaseelsey = 8'b00000000;end /* End */ endmodule覺得有幫助的可以點個贊再走哦!!
總結
以上是生活随笔為你收集整理的译码器设计——Verilog HDL语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乡村教师计算机能力提升培训,乡村中小学幼
- 下一篇: max31865C语言程序,max318