当前位置:   article > 正文

Verilog学习笔记(2)结构及数据类型_4'hf

4'hf

一、Verilog模块的结构

  1. module block1(a, b, c, d ); //端口信息
  2. input a, b, c ;
  3. output d ; // I/O说明
  4. wire x; //内部信号声明
  5. assign d = a | x ;
  6. assign x = ( b & ~c ); //功能定义
  7. endmodule

​Verilog的基本设计是由模块组成,一个模块是由两个部分组成的,一部分描述接口,另一部分描述逻辑功能,即定义如何影响输出的。如上例,Verilog结构是在module和endmodule声明语句之间的。在这里,module和endmodule构成了模块的关键词。每个Verilog模块包括4个主要部分:端口定义、I/O说明、内部信号声明和功能定义

 

二、数据类型及其常量与变量

Verilog HDL中数据类型用来表示硬件电路的数据存储和传送元素的,总共有19种数据类型。其中reg型、wire型、integer型和parameter型是最常见的4种数据类型其它类型包括large型、medium型、small型、scalared型、time型、tri型、trio型、tril型、triand型、trior型、trireg型、vectored型、wand型和wor型。这14中数据类型除time型外都与基本逻辑单元建库有关。

A.常量

   1.数字

(1)整数:

  •  1) 二进制整数(b或B)
  • 2) 十进制整数(d或D) 
  • 3) 十六进制整数(h或H)
  • 4) 八进制整数(o或O)

数字表达方式:

  • <位宽><进制><数字>,该表达方式为最全面的描述
  • <进制><数字>,在该表达方式中位宽省略时采用默认位宽(由具体的机器系统决定,至少为32位)
  • <数字>,该表达方式采用默认进制(十进制)

下述举例:

8’b10000011                 //位宽为8的二进制数10000011,‘b表示二进制

4’hf                              //位宽为4的十六进制数f,‘h表示十六进制

’d32                            //默认位宽的十进制数32,‘d表示十进制

(2)x和z值:

x代表不定值,z代表高阻值。个x可以定义十六进制的4位,八进制的3位。z的表示方式与x类似。z还有一种表达方式为“?”,一般用于case语句中

下述举例:

4'b10x0                     //位宽为4的二进制数倒数第二位数值不定

4'b101z                    //位宽为4的二进制数最后一位数值为高阻

12'dz                       //位宽为12的十进制数,其值为高阻值

12'hz                       //位宽为12的十六进制数,其低四位为高阻值

(3)负数

   位宽前加-号,内部是补码

-12'h1  =   12'hFFF

8'd-5                                  //非法表示

(4)下划线_:

仅用来提高程序的可阅读性

   2.参量

    参数是一个常量,经常用于定义时延和变量的宽度。在Verilog HDL中用parameter定义参量,其说明格式:

    parameter   参数名1=表达式,参数名2=表达式,···;

   在模块或实例的应用中,可以传递参数值:

  1. module decode(A,F);
  2. parameter Width=1;
  3. parameter P=2;
  4. ….
  5. endmodule
  6. module top;
  7. wire [3:0]A4;
  8. wire [3:0]F4;
  9. decode #(3,4) D1(A4,F4)
  10. endmodule

  在上例代码中,实例D1引用参数Width=3,P=4时的decode模块。若想要在一个模块改变另外一个模块的参数时,需要使用defparam命令。    

例:test.T.B1.P=2

 

B.变量

   1.wire型

用来表示单个门驱动或连续赋值语句驱动的网络型数据,默认值为z,常用assign语句指定的组合逻辑信号中。

说明格式:   wire [n-1:0] 数据名1,数据名2,···;

    2.reg型

其作用与改变触发器储存的值相当,默认值为x。在always 块内被赋值的每一个变量必须是reg型。

说明格式:   reg [n-1:0] 数据名1,数据名2,···;

注:reg类型不一定为实际的寄存器或触发器的输出

  3.memory型

:通过对reg 型变量建立数组来对存储器建模,可以描述RAM 型存储器,ROM 存储器和reg文件。

说明格式:reg [n-1:0]  存储器名[m-1:0]

例:reg[7:0]  mema[255:0]        该例子定义一个名为mema的存储器,该存储器有256个8位的寄存器

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/915691
推荐阅读
相关标签
  

闽ICP备14008679号