首页 > 编程语言 > 详细

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

时间:2015-11-22 12:31:42      阅读:454      评论:0      收藏:0      [点我收藏+]

       这篇讲的是使用 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] = 1b1;
          else
             y[i] = 1b0;
     end
endmodule

这段代码其实非常抽象(循环变量的值所在的位赋 1,其余为 0),但好在综合工具还是能够理解我们的用意。

建好的工程如下图:

技术分享

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

技术分享技术分享

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

原文:http://www.cnblogs.com/sxyf/p/4985496.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!