Verilog语法基础.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:14 大小:24KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

Verilog语法基础.doc

Verilog语法基础.doc

预览

免费试读已结束,剩余 4 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Verilog的基本语法集成电路专业2011年秋季黑龙江大学《数字集成电路设计―实验》卜丹1VerilogHDL是一种用于数字逻辑电路设计的语言。用VerilogHDL描述的电路设计就是该电路的VerilogHDL模型。VerilogHDL既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的VerilogHDL模型。集成电路专业2011年秋季黑龙江大学《数字集成电路设计―实验》卜丹1?VerilogHDL设计描述层次用VerilogHDL描述的电路设计就是该电路的VerilogHDL模型,也称为模块。既是一种行为描述语言也是一种结构描述语言。a.系统级(system-level):用语言提供的高级结构能够实现所设计模块的外部性能的模块。b.算法级(algorithm-level):用语言提供的高级结构能够实现算法运行的模型。c.RTL级:描述数据在寄存器之间的流(registertransferlevel)动和如何处理、控制这些数据流动的模型。d.门级(gate-level):描述逻辑门以及逻辑门之间连接的模型。e.开关级(switch-level):描述器件中三极管和储存点以及它们之间连接的模型。集成电路专业2011年秋季黑龙江大学《数字集成电路设计―实验》卜丹1抽象级别和综合与仿真的关系?行为仿真:行为的验证和验证模块分割的合理性;?前仿真:即RTL级仿真,检查有关模块逻辑执行步骤是否正确。?逻辑综合:把RTL级模块或符合综合风格的行为模块转换成门级。?后仿真:用门级模型做验证,检查由门的互连构成的逻辑其功能是否正确。?布局布线:在门级模型的基础上加上了布线延时?布局布线后仿真:与真实的电路最接近的验证。集成电路专业2011年秋季黑龙江大学《数字集成电路设计―实验》卜丹1?Verilog基本模块的结构Verilog的基本设计单元是“模块”(block)。一个模块是由两部分组成:一部分描述接口信息,另一部分描述逻辑功能,即定义输入是如何影响输出的。moduleblock1(a,b,c,d,e);inputa,b,c;输入/输出说明outputd,e;内部信号定义wirex;assignd=a|(b&~c);功能描述assigne=(b&~c);endmodule集成电路专业2011年秋季黑龙江大学《数字集成电路设计―实验》卜丹1端口信息abcde―模块的端口定义格式:module模块名(口1,口2,…)―模块内容a.输入/输出口说明格式:input[N-1:0]端口名output[N-1:0]端口名inout[N-1:0]端口名b.内部信号说明格式:reg[N-1:0]变量名wire[N-1:0]变量名集成电路专业2011年秋季黑龙江大学《数字集成电路设计―实验》卜丹1N信号位宽―模块内容c.功能定义assign声明语句:assigna=b&calways块:always@(posedgeclkorposedgeclr)beginif(clr)q<=0;elseif(en)q<=d;end集成电路专业2011年秋季黑龙江大学《数字集成电路设计―实验》卜丹1?数据类型1.常量―数字:a.整数:<位宽><进制><数字>8’b101011008’ha2b.x和z值:x代表不定值,z代表高阻值4’b10x012’dz12’d?c.负数:-8’d58’d-5非法格式d.下画线:用来分隔数的表达以提高程序可读性,但不可用在位宽和进制处,只能用在具体的数字之间。16’b1010_1011_1111_1010集成电路专业2011年秋季黑龙江大学8’b_0011_1010非法卜丹1《数字集成电路设计―实验》?数据类型2.参数型(parameter):用来定义常量格式:parameterparameterparameter参数名1=表达式,参数名2=表达式,…;msb=7;e=25,f=29;该表达式只能包含数字或先前已定义过的参数集成电路专业2011年秋季黑龙江大学《数字集成电路设计―实验》卜丹13.变量:a.wire型变量:连线变量,常用来表示以assign关键字指定的组合逻辑信号wire[n-1:0]数据名1,数据名2,…;wirea;//定义了一个1位的wire型数据awire[7:0]b;//定义了一个8位的wire型数据bwire[4:1]c,d;//定义了两个4位的wire型数据c,