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

一、Verilog模块的结构

     module block1(a, b, c, d );   //端口信息
     input     a, b, c ;
     output   d ;                  // I/O说明

     wire  x;                      //内部信号声明
     
     assign   d = a | x ;
     assign   x = ( b & ~c );      //功能定义
     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=表达式,···;

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

module decode(A,F);
     parameter  Width=1;
     parameter  P=2;
	 ….
endmodule
module top;
    wire [3:0]A4;
    wire [3:0]F4;
    decode  #(3,4)  D1(A4,F4)
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位的寄存器

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值