FPGA-VIVADO学习二:38译码器
芯片类型:XC7Z020CLG400-2。
·
verilog实现
原理图如下:
新建VIVADO工程:
芯片类型:XC7Z020CLG400-2

新verilog语法:always@(*)
完整代码:
module decoder_3_8(
A0,
A1,
A2,
Y0,
Y1,
Y2,
Y3,
Y4,
Y5,
Y6,
Y7
);
input A0;
input A1;
input A2;
output reg Y0;
output reg Y1;
output reg Y2;
output reg Y3;
output reg Y4;
output reg Y5;
output reg Y6;
output reg Y7;
always@(*)
case({A2,A1,A0})
3'b000:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b0000_0001;
3'b001:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b0000_0010;
3'b010:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b0000_0100;
3'b011:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b0000_1000;
3'd4:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b0001_0000;
3'd5:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b0010_0000;
3'd6:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b0100_0000;
3'd7:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b1000_0000;
default:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0}=8'b0000_0000;
endcase
endmodule
查看电路:

仿真验证
代码部分:
`timescale 1ns/1ns
module decoder_3_8_tb();
reg A0;
reg A1;
reg A2;
wire Y0;
wire Y1;
wire Y2;
wire Y3;
wire Y4;
wire Y5;
wire Y6;
wire Y7;
decoder_3_8 decoder_3_8_inst0(
.A0(A0),
.A1(A1),
.A2(A2),
.Y0(Y0),
.Y1(Y1),
.Y2(Y2),
.Y3(Y3),
.Y4(Y4),
.Y5(Y5),
.Y6(Y6),
.Y7(Y7)
);
initial begin
A2=0;A1=0;A0=0;
#20;
A2=0;A1=0;A0=1;
#20;
A2=0;A1=1;A0=0;
#20;
A2=0;A1=1;A0=1;
#20;
A2=1;A1=0;A0=0;
#20;
A2=1;A1=0;A0=1;
#20;
A2=1;A1=1;A0=0;
#20;
A2=1;A1=1;A0=1;
#20;
$stop;
end
endmodule
仿真结果:

板级验证
看手册
因为LED灯有限,所以这里只设置部分验证了(无奈哈哈哈)

最后生成比特率插上板子就可以看到可以亮4个灯哈哈哈哈哈哈哈有条件的可以用小梅哥的学习版这个有8个开关更加好。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)