用户工具

站点工具


icore4tfpga_13
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-03-02 gingko 初次建立

实验十三:3-8译码器实验——FPGA实现3-8译码器

一、 实验目的与意义

  1. 掌握3-8译码器的原理。
  2. 掌握状态机的使用方法。
  3. 掌握QuartusII的使用方法。

二、 实验设备及平台

  1. iCore4T 双核心板。
  2. iTool A(或相同功能)仿真器。
  3. USB Type C线缆。
  4. Keil MDK 开发平台。
  5. Quartus开发平台。
  6. 电脑一台。

三、 实验原理

  • 译码器的逻辑功能是将每个输入的二进制代码译成对应的输出高、低电平信号或另一个代码。译码是编码的反操作。根据输入和输出信号数量的关系译码器分为全译码器和部分译码器两类。
  • 3-8译码器是一种常见的全译码器,输入是3位的二进制代码,共有8种组合,输出是与这8种组合对应的8个输出信号。译码器将每种二进制的代码组合译成对应的一根输出线上的高、低电平信号。其框图如图13.1所示。

图13.1

  • 根据3-8译码器的逻辑功能可知其逻辑真值表如表13.1所示。
  • 表13.1 3-8译码器逻辑真值表
输入 输出
a2 a1 a0 y7 y6 y5 y4 y3 y2 y1 y0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0

四、 代码讲解

  • 本实验首先通过内部程序自身产生输入信号a,并设置一个20us的定时器根据编码器的工作原理依次切换输入信号的值;然后通过状态机根据逻辑真值表将输入信号译码成对应的输出信号,改变8根输出线上的高低电平。其代码如下:
/*************************************************/
//利用状态机实现3-8译码器的输出信号,输出译码信号与真值表一致
    reg [7:00]y_r;
 
    always@(posedge clk_25m or negedge rst_n)
        begin
            if(!rst_n)
                begin
                    y_r <= 8'b000000000;
                end
            else
                begin
                    case(a)
                        3'b000:begin
                            y_r <= 8'b00000001;
                        end
                        3'b001:begin
                            y_r <= 8'b00000010;
                        end
                        3'b010:begin
                            y_r <= 8'b00000100;
                        end
                        3'b011:begin
                            y_r <= 8'b00001000;
                        end
                        3'b100:begin
                            y_r <= 8'b00010000;
                        end
                        3'b101:begin
                            y_r <= 8'b00100000;
                        end
                        3'b110:begin
                            y_r <= 8'b01000000;
                        end
                        3'b111:begin
                            y_r <= 8'b10000000;
                        end                     
                        default:begin
                            y_r <= 8'b000000000;
                        end
                    endcase
                end
        end
 
    assign y = y_r;

五、 实验步骤及实验结果

图13.2

  1. 将硬件正确连接,如图13.2所示。
  2. 将编写好的代码进行编译,并下载到开发板中;
  3. 通过Signaltap工具查看输入信号与输出信号之间的关系,观察实验现象——如图7.3所示。

图13.3

六、 拓展实验

  1. 设计一个部分译码器(如:4-10译码器),观察信号变化。
icore4tfpga_13.txt · 最后更改: 2024/04/10 10:56 由 zhaowenzhe