第二节 3-8译码器设计实现与相关语法基础

目录

前言

一、三八译码器基本理论

1.3-8译码器框图

2.3-8译码器真值表

二、fpga实现步骤

1.设计输入

2.功能仿真

1.testbench编写

2.仿真结果



前言

1.3-8译码器基本理论

2.fpga设计实现三八译码器

3.基本语法:always 语句/数字表示形式/位拼接{}


提示:以下是本篇文章正文内容,下面案例可供参考

一、三八译码器基本理论

1.3-8译码器框图

第二节 3-8译码器设计实现与相关语法基础_第1张图片

3-8译码器:输入的3位二进制代码共有8种状态,译码器将每个输入代码译成对应的一根输出线上
的高、低电平信号。因此,也将这个译码器称为3线-8线译码器。

译码器:编码器的反义

2.3-8译码器真值表

第二节 3-8译码器设计实现与相关语法基础_第2张图片

二、fpga设计实现步骤

1.设计输入

代码如下(示例):

module decoder_3_8(
    a,
    b,
    c,
    out
    );
    
    input a;
    input b;
    input c;
    output reg [7:0]out;

    //以always块描述的信号赋值,被赋值的对象必须定义为reg型
    //{a,b,c}变成了一个三位信号。这种操作叫做位拼接
    /*
    b 二进制  3'b101    8'b0000_1010  
    o 八进制  
    d 十进制   
    h 十六进制
    */

    always@(*)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

2.功能仿真

1.testbench编写

代码如下(示例):

`timescale 1ns/1ns

module decoder_38_tb;
    reg s_a;
    reg s_b;
    reg s_c;
    wire [7:0] out;
    
decoder_3_8 decoder_3_8_ins(
    .a(s_a),
    .b(s_b),
    .c(s_c),
    .out(out)
    );
    
    initial begin
    s_a=0;s_b=0;s_c=0;
    #200;
     s_a=0;s_b=0;s_c=1;
    #200 ;
    s_a=0;s_b=1;s_c=0;
    #200;
     s_a=0;s_b=1;s_c=1;
    #200 ;
    s_a=1;s_b=0;s_c=0;
    #200 ;
    s_a=1;s_b=0;s_c=1;
    #200 ;
    s_a=1;s_b=1;s_c=0;
    #200;
    s_a=1;s_b=1;s_c=1;
    #200;
    $stop;
    end
    
endmodule

2.仿真结果

第二节 3-8译码器设计实现与相关语法基础_第3张图片

三、语法总结

1.数字表示

你可能感兴趣的:(fpga开发,单片机,c语言)