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

     

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

     

  • 相关阅读:
    BZOJ 3529 数表
    BZOJ 3832 Rally
    BZOJ 1086 王室联邦
    BZOJ 2738 矩阵乘法
    2656565
    小L的区间求和
    小L的直线
    Co-prime 杭电4135
    POJ 跳蚤
    B
  • 原文地址:https://www.cnblogs.com/noticeable/p/7182463.html
Copyright © 2020-2023  润新知