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文件烧写到开发板中。

 

实验现象:按顺序波动拨动拨码开关,灯会按真值表的输出亮。

 

 

 

转载于:https://www.cnblogs.com/noticeable/p/7182463.html

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值