Verilog HDL(八):变量类型(reg和wire) 您所在的位置:网站首页 Verilog错误1128不支持合成单边赋值 Verilog HDL(八):变量类型(reg和wire)

Verilog HDL(八):变量类型(reg和wire)

2023-10-28 16:17| 来源: 网络整理| 查看: 265

        Verilog HDL 语法虽然有很多,但是真正常用的却屈指可数, 我们只需要掌握了常用的语法,就可以用 Verilog HDL 语言去描述逻辑电路。之前用到两种变量类型,一种是 wire(线型),另一种是 reg(寄存器型)。在数字电路中信号只有两种形态,一种是传输,一种是存储。传输是通过连接线, 存储是用寄存器,因此也就清楚在 Verilog HDL 中常用 wire 和 reg 变量了。wire 和 reg 变量模型如图 1 所示:

                                           

                                                                              图1 变量类型

        由图 1 可以看出,wire 型变量在物理结构上只是一根线,在 Verilog HDL 描述时,对线型变量赋值用 assign 即可,相对比较简单。由图 1 可以看出 reg 型变量左端有一个输入端口 D,右端有一个输出端口 Q, 并且 reg 型存储数据需要在 clk(时钟)沿的控制下完成,它是由晶振产生,是我们描述数字电路时最基本的时间单元,它的周期固定,占空比一般为 50%(即高电平占整个周期的比例)。clk 的低电平用数字 0 表示,高电平用 1 表示,从低电平转变到高电平的过程叫做上升沿,从高电平转变到低电平的过程叫做下降沿,如图 2 所示。

                                                  

                                                                                    图2 时钟周期

        reg 在物理结构上相对比较麻烦,在 Verilog HDL 描述时也相对麻烦。在对reg 型变量进行赋值时,必须在 always 块内完成,可以选择用时钟上升沿,也可以选择时钟下降沿,具体用上升沿还是用下降沿可以根据需要所定。我们可以试着将第一章中的 po_c 改为 reg 型变量,完成 pi_a 和 pi_b 想与之后的结果传输给 寄存器变量 po_c,RTL 电路图如图 3 所示。

                                   

                                                                              图3 RTL电路

        使用 Verilog HDL 描述出图 3 给出的 RTL 电路图,具体代码示例如下所示。

图4 代码示例

代码解析 1:

         ①第 2 行为输入时钟端口定义,由开发板晶振提供,作为 reg 变量的控制端; 

        ②第 5 行由于 po_c 在 always 中被赋值,所以必须定义为 reg 变量;

        ③第 9 行使用 always 块对 reg 型变量 po_c 进行赋值,@(posedge clk)表示意思是每当遇到 clk上升沿则执行always 块内语句。下降沿的关键字是 negedge。 

        ④第 11 行赋值号(



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有