3-8 譯碼器的設計


 3-8 譯碼器真值表

 

 創建工程

按照真值表定義編寫Verilog程序

module my3_8(a,b,c,out);
input a;
input b;
input c;

output reg [7:0]out;//定義一個8位的位寬.只要是在always塊中進行賦值的都要定義為reg類型。
always@(a,b,c)
begin
case ({a,b,c})//{}位為位拼接,將信號拼接成一個三位的信號
3'b000: out=8'b0000_0001;
3'b001: out=8'b0000_0010;
3'b010: out=8'b0000_0100;
3'b011: out=8'b0000_1000;
3'b100: out=8'b0001_0000;
3'b101: out=8'b0010_0000;
3'b110: out=8'b0100_0000;
3'b111: out=8'b1000_0000;
endcase
end
endmodule

 

 

編寫testbench信號

 

`timescale 1ns/1ns
module my3_8_tb;
reg a,b,c;
wire [7:0] out ;

my3_8 u1(
.a(a),
.b(b),
.c(c),
.out(out));
initial begin
a=0;b=0;c=0;
#200;
a=0;b=0;c=1;
#200;
a=0;b=1;c=0;
#200;
a=0;b=1;c=1;
#200;
a=1;b=0;c=0;
#200;
a=1;b=0;c=1;
#200;
a=1;b=1;c=0;
#200;
a=1;b=1;c=1;
#200;
$stop;
end

endmodule

 

 

 

 

將testbench文件鏈接到仿真工具

 

點擊 前仿按鈕進行仿真驗證,仿真結果波形 如下, 與真值表對照發現波形是對的,說明 設計沒有問題

 

 點擊全編譯按鈕后點擊進行后仿,后仿結果如下

至此,整個3-8譯碼器就設計完成了,下面既需要對照開發板進行管腳設置和程序下載。 

 

設置管腳,SW0~SW2對應a~c,LED7~0對應out【7:0】

 

 

點擊全編譯按鈕后,上電鏈接開發板,點擊programmer,將系統生成的.sof文件燒寫到開發板中。

 

實驗現象:按順序波動撥動撥碼開關,燈會按真值表的輸出亮。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM