我的 FPGA 学习历程(04)—— 练习 verilog 硬件描述语言

本文介绍如何使用Verilog HDL编写一个3-8译码器,详细展示了代码实现过程及综合工具如何理解代码意图,生成符合要求的RTL网表文件。

       这篇讲的是使用 verilog 硬件描述语言编写一个 3 - 8 译码器。

       3 - 8 译码器是一个简单的组合逻辑,用于实现并转串,其输入输出关系如下:

                     | 输入  |  输出  |

                     -----------------

                     000 --> 0000_0001

                     001 --> 0000_0010

                     010 --> 0000_0100

                     011 --> 0000_1000

                     100 --> 0001_0000

                     101 --> 0010_0000

                     110 --> 0100_0000

                     111 --> 1000_0000

      新建工程,并新建如下的代码的 verilog HDL 文件

module   my38decode
(
      input wire [2:0] a,  
      output reg [7:0] y
);
//*********************//
     integer i;         
//*********************//
    always @ (*)
    begin
        for (i=0;i<=7;i=i+1)  // a = 0 时,y[0] = 1'b1, y = 8'b0000_0001
          if (a == i)         // a = 1 时,u[1] = 1'b1, y = 8'b0000_0010
             y[i] = 1'b1;
          else
             y[i] = 1'b0;
     end
endmodule

这段代码其实相当抽象(循环变量操作下标),但好在综合工具还是能够理解我们的用意。

建好的工程如下图:

project

        可以在 Tool --> Netlist Viewers --> RTL Viewer 查看生成的 RTL 网表文件。

        下图为 Tool 菜单和生成的网表文件。可以看出我们写的代码生成了几个比较器,我们的输入信号被扩大至 32 位(前29位自动填 0);比较器的 B 端口连接的是一些常量,当 32 位比较器在输入相等时输出 1,不等则输出 0;7 个比较器输出分别连接到 y 的 7 个引脚上。如图,综合器在 RTL(寄存器传输级)成功的实现了我们的要求。

Tool菜单RTL

转载于:https://www.cnblogs.com/SummerSunnyDay/p/4985496.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值