常用verilog_hdl语法.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常用verilog_hdl语法

常用Verilog HDL语法 一、模块的结构 Verilog的基本设计单元是“模块”。一个模块由两部分组成,一部分描述接口,另一部分描述逻辑功能。 Verilog 结构位于module和endmodule声明语句之间,每个Verilog程序包括4个主要部分:端口定义、I/O说明、内部信号声明和功能定义。 1、模块的端口定义 模块的端口声明了模块的输入输出口。其格式如下: module module_name (port_list); 在引用模块时其端口可以用两种方法连接: (1)在引用时,严格按照模块定义的端口顺序来连接,不用标明原模块定义时规定的端口名: 模块名(连接端口1信号名,连接端口2信号名,……,) (2)在引用时用“.”符号,标明原模块是定义时规定的端口名, 模块名(.端口1名(连接信号1名), 端口2名(连接信号2名), ……,) 2、I/O说明的格式 (1)输入口: input[信号位宽-1:0]端口名i (2)输出口: output[信号位宽-1:0]端口名i (3)输入输出口: inout[信号位宽-1:0]端口名i 3、内部信号说明 在模块内用到的和端口有关的wire和reg类型变量的声明: reg[width-1:0] R变量1, R变量2,… wire[width-1:0] W变量1, W变量2,… 4、功能定义 (1)用“assign”声明语句,只需写一个“assign”,后面再加一个方程式即可,如: assign a=bc (2)用实例元件,此方法像在电路图输入方式下调入库元件一样,键入元件的名字和相连的引脚即可,如 and #2 u1(q,a,b),表示用一个跟与门(and)一样的名为u1的门,其输入端为a,b,输出为q,输出延迟为2个单位时间 (3)用“always”块:always 时序控制 执行语句,如:always areg=~areg 上述三个功能定义在verilog结构中是同时执行的,在同一模块文件中,它们的顺序不会影响实现的功能 二、数据类型及其常量及变量 1、常量 1.1数字 (1)整数:4种表示方式:二进制(b或B);十进制(d或D);十六进制(h或H);八进制(o或O) 数字表达方式如下: 位宽进制数字,其中位宽可以缺省,默认值根据不同机器有所不同,常为32位;进制也可以缺省,默认值为十进制。 如:8‘表示位宽为8 ,二进制,值(2)x和z值,x代表不定值,z代表高阻值。X可以用来定义十六进制的4位二进制数的状态,八进制的3位,二进制的1位,z的表示方式同x,z还可以表达为“?”,如12’dz=12’d? (3)负数,只要在数字定义式的最前面加上一个负号即可表示 (4)下划线:下划线可以用来分隔数的表达以提高程序的可读性,但不可用于位宽和进制处,如16’b1010_1100_1001_0011(合法) 8’b_1010_1100(非法) 1.2、参数(parameter)型 用parameter来定义一个标识符代表一个常量,成为符号常量,即标识符形式的常量,采用标识符代表一个常量可提高程序的可读性和可维护性。其说明格式如下: Parameter 参数名1=表达式,参数名2=表达式,……. 例:parameter msh=7;定义参数msh为常数7 Parameter e=25,f=29;定义两个常数参数 2、变量 2.1 wire型 Wire型数据常用来表示以assign关键字制定的组合逻辑信号。Verilog程序模块中输入、输出信号类型默认时自动定义为wire型。Wire型信号可以用作任何方程式的输入,也可以用作“assign”语句或实例元件的输出。其定义格式为: wire[n-1:0] 数据名1,数据名2,……. 2.2 reg型 reg型数据常用来表示“always”模块内的指定信号,常代表触发器。通常,在设计中要在always模块通过使用行为描述语句来表达逻辑关系,在always块内被赋值的每一个信号都必须定义为reg型。 Reg型数据的格式如下: reg[n-1:0] 数据名1,数据名2,……. 2.3 memory型 Verilog通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器、ROM型存储器和reg文件。Memory型数据是通过扩展reg型数据的地址范围来生成的。其格式为: reg[n-1:0] 存储器名[m-1:0] reg[n-1:0]定义了存储器中每一个存储单元的大小,即该存储器单元是一个n位的寄存器;存储器名后的[m-1:0] 则定义了该存储器中有多少个这样的存储器。 例reg[7:0] mema[255:0] ;定义了一个名为m

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档