自学内容网 自学内容网

FPGA学习(3)-38译码器实现

目录

1.38译码器概述

2.VIVADO步骤 

2.1创建工程,添加源文件

2.2添加仿真文件,并进行仿真

​2.3添加管脚约束

2.4生成bit文件 

2.5 烧录程序

3.实验结果 


1.38译码器概述

即三个输入A2A1A0,输出的十进制数,例如LHL(010)=2,即Y2非为低电平,其他都为高电平。等价于Y2为高电平,其他都为低电平。

2.VIVADO步骤 

2.1创建工程,添加源文件

decoder_3_8代码:

module decoder_3_8(
    A2,
    A1,
    A0,
    Y0,
    Y1,
    Y2,
    Y3,
    Y4,
    Y5,
    Y6,
    Y7
);

input A2;
input A1;
input A0;
output Y0;
output Y1;
output Y2;
output Y3;
output Y4;
output Y5;
output Y6;
output Y7;
reg Y0; reg Y1; reg Y2; reg Y3;
reg Y4; reg Y5; reg Y6; reg Y7;
always@(*)
    begin
        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'b100:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0001_0000;
        3'b101:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0010_0000;
        3'b110:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0100_0000;
        3'b111:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b1000_0000;
        default:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0000;
        endcase
        end  
endmodule

2.2添加仿真文件,并进行仿真

凡是always这种语句块中要修改值的信号一律用reg类型。为什么test bench不需要端口声明,因为在仿真里面已经形成了闭环,不需要输入输出。代码如下:

`timescale 1ns / 1ps

module decoder_3_8_tb( );
reg A2;reg A1;reg A0;
wire Y0; wire Y1; wire Y2; wire Y3;
wire Y4; wire Y5; wire Y6; wire Y7;
decoder_3_8 decoder_3_8_inst0(
    .A2(A2),
    .A1(A1),
    .A0(A0),
    .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

$stop的作用是停止仿真,不然会像二选1数据选择器仿真一样,后面仿真波形如下,与预期一致。

有时候这样看起很麻烦,直接将输入信号合成一个。

2.3添加管脚约束

在RTL ANALYSIS下添加I/O口。硬件上SW0~SW2,代表A0~A2,Y0~Y7代表LED0~LED1。

2.4生成bit文件 

点击 Generate Bitstream,等待右上角出现write_bitstream Complete

2.5 烧录程序

3.实验结果 

1.SW2,SW1,SW0=000,LED0灯亮,其他灯灭。

2.SW2,SW1,SW0=110=6,LED6亮,其他灯灭。


原文地址:https://blog.csdn.net/dl_666888/article/details/142594152

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!