- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Verilg HDL
EDA课程设计-Verilog HDL 程序设计 教师:郑兆兆 2013年12月30日 原理图设计输入 硬件描述语言设计输入(VHDL 、 Verilog HDL) 波形设计输入 底层设计输入 层次设计输入 Verilog HDL基础 Verilog HDL设计模块结构 一个完整的Verilog HDL设计模块包括端口定义、I/O声明、变量类型声明和功能描述等4个部分。 module decide (f, a, b, c);//端口定义 input a, b, c ; /* I/O output f ; 声明*/ wire a, b, c ; /*变量 reg f ; 类型声明*/ always @(a or b or c) /*功 begin 能 ……. 描 end 述*/ endmodule (1)模块端口定义 模块端口定义用来声明电路设计模块的输入输出端口,端口定义格式如下: module 模块名(端口1,端口2,端口3,…); 例:module decide (f, a, b, c); (2)模块的I/O声明 模块的I/O声明用来声明模块端口定义中各端口数据流动方向,包括:input(输入),output(输出)和inout(双向)。 I/O声明格式如下: input 端口1,端口2,端口3,…;//声明输入端口 output 端口1,端口2,端口3,…;//声明输出端口 例: input a, b, c ; output f ; (3)变量类型声明 变量类型声明用来表明设计电路的端口和内部电路使用的变量的数据类型。变量的数据类型主要有wire(连线),reg(寄存器),integer(整型),real(实型)和time(时间) 输入/输出端口类型默认时,自动定义为wire型。 (4)功能描述 功能描述是Verilog HDL程序设计中最主要的部分,用来描述设计模块的内部结构和模块端口间的逻辑关系,在电路上相当于器件的内部电路结构。功能描述可以用assign语句、元件例化(InstAntiate)、always块语句、initial块语句等方法来实现,通常把确定这些设计模块描述的方法称为建模。 Verilog HDL的词法 (一)空白符和注释 (二)常数 位宽’进制符号数字 (三)字符串 (四)标识符 区分大小写(字母、数字、下划线) (五)关键词 (六)操作符 (1)算术操作符 求余符号% (2)逻辑操作符 (3)位运算 (4)关系操作符 等 (七)Verilog HDL数据对象 Verilog HDL的语句 (一)赋值语句 (1)门基元赋值语句 基本逻辑门关键词 例化门标识符(门输出,门输入1,门输入2,…, 门输入n); 例如: 具有a,b,c,d输入和y输出与非门的门基元赋值语句为: nand u1(y,a,b,c,d); (2)连续赋值语句 连续赋值语句的关键词是assign,赋值符号是“=”,连续赋值语句“=”号两边的变量都应该是wire型变量。连续赋值语句的格式为 assign 赋值变量=表达式; 例如,具有a,b,c,d输入和y输出与非门的连续赋值语句为 assign y=~(abcd); (3)过程赋值语句 过程赋值语句出现在initial和always块语句中,包括阻塞赋值语句、非阻塞赋值语句。在过程赋值语句中,赋值变量必须是寄存器型变量(reg、integer、real) 。 i)阻塞赋值语句 阻塞赋值符号是“=”,语句格式为 赋值变量=表达式; 例:y=~(abcd); 其值在该语句结束即可得到。
文档评论(0)