Verilog实例代码.pdf
- 文档编号:3210693
- 上传时间:2022-11-20
- 格式:PDF
- 页数:67
- 大小:978.43KB
Verilog实例代码.pdf
《Verilog实例代码.pdf》由会员分享,可在线阅读,更多相关《Verilog实例代码.pdf(67页珍藏版)》请在冰豆网上搜索。
ShandyIMEofTsinghuaUniv.10/11/2004VerilogHDL使用简介使用简介张建良数字大规模集成电路讲义数字大规模集成电路讲义ShandyIMEofTsinghuaUniv.2004提纲提纲什么是VerilogHDL?
VerilogHDLvs.VHDLVerilogHDL语法设计描述层次设计的测试与验证可综合的设计有限状态机(FSM)一个除法器的设计实例常用仿真器和综合软件网络资源ShandyIMEofTsinghuaUniv.2004提纲提纲什么是VerilogHDL?
VerilogHDLvs.VHDLVerilogHDL语法设计描述层次设计的测试与验证可综合的设计有限状态机(FSM)一个除法器的设计实例常用仿真器和综合软件网络资源ShandyIMEofTsinghuaUniv.2004什么是什么是VerilogHDL?
VerilogHDL是一种硬件描述语言,用于从算法级、结构级、门级到开关级的多种抽象设计层次的数字系统建模。
被建模的数字系统对象的复杂性可以介于开关级电路(例如pmos/nmos)、简单的门(例如库单元描述)和完整的复杂电子数字系统之间(例如CPU)ShandyIMEofTsinghuaUniv.2004什么是什么是VerilogHDL?
(cont.)VerilogHDL语言具有下述描述能力:
设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
提供了编程语言接口(PLI),通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
支持多个设计层次的混合层次建模ShandyIMEofTsinghuaUniv.2004更重要的是更重要的是.VerilogHDL语言与C语言很相似,从C语言中继承了多种操作符和结构,其核心子集非常易于学习和使用而这对大多数建模应用来说这已经足够。
ShandyIMEofTsinghuaUniv.2004VerilogHDL的历史的历史最初是于1983年由GatewayDesignAutomation公司(后被CadenceDesignSystems公司收购)为其模拟器产品开发的硬件建模语言。
那时它只是一种专用语言,由于他们的模拟、仿真器产品的广泛使用,VerilogHDL作为一种便于使用且实用的语言逐渐为众多设计者所接受。
VerilogHDL语言于1990年被推向公众领域。
OpenVerilogInternational(OVI)是促进Verilog发展的国际性组织,1992年,OVI决定致力于推广VerilogOVI标准成为IEEE标准。
这一努力最后获得成功,Verilog语言于1995年成为IEEE标准,称为IEEEStd13641995。
完整的标准在Verilog硬件描述语言参考手册中有详细描述。
ShandyIMEofTsinghuaUniv.2004提纲提纲什么是VerilogHDL?
VerilogHDLvs.VHDLVerilogHDL语法设计描述层次设计的测试与验证可综合的设计有限状态机(FSM)一个除法器的设计实例常用仿真器和综合软件网络资源ShandyIMEofTsinghuaUniv.2004VerilogHDLvs.VHDLVerilogHDL和VHDL都是用于逻辑设计的硬件描述语言并且都已成为IEEE标准。
VHDL是在1987年成为IEEE标准,VerilogHDL则在1995年才正式成为IEEE标准。
VerilogHDL和VHDL共同的特点:
能形式化地抽象表示电路的行为和结构支持逻辑设计中层次与范围的描述,可借用高级语言的精巧结构来简化电路行为的描述具有电路仿真与验证机制以保证设计的正确性支持电路描述由高层到低层的综合转换硬件描述与实现工艺无关,有关工艺参数可通过语言提供的属性包括进去便于文档管理易于理解和设计重用。
ShandyIMEofTsinghuaUniv.2004VerilogHDLvs.VHDL(cont.)VerilogHDL和VHDL又各有其自己的特点:
VerilogHDL拥有更广泛的设计群体,成熟的资源也远比VHDL丰富VerilogHDL是一种非常容易掌握的硬件描述语言(类C语言),而掌握VHDL设计技术就相对比较困难(类Ada语言)。
一般认为VerilogHDL在系统级抽象方面比VHDL略差一些而在门级开关电路描述方面比VHDL强得多大学、研究机构更多使用VHDL,而工业界更多使用VerilogHDLShandyIMEofTsinghuaUniv.2004提纲提纲什么是VerilogHDL?
VerilogHDLvs.VHDLVerilogHDL语法设计描述层次设计的测试与验证可综合的设计有限状态机(FSM)一个除法器的设计实例常用仿真器和综合软件网络资源ShandyIMEofTsinghuaUniv.2004/sampel_reg.v/sampel_reg.v数据采样模块数据采样模块modulesample_reg(clk,rst,din,dout);modulesample_reg(clk,rst,din,dout);inputclk,rst;inputclk,rst;input3:
0din;input3:
0din;output3:
0dout;output3:
0dout;reg3:
0data;reg3:
0data;assigndout=data;assigndout=data;alwaysalways(posedgeclkornegedge(posedgeclkornegedgerst)rst)beginbeginif(!
rst)beginif(!
rst)begindata=4data=4b0;b0;endelsebeginendelsebegindata=din;data,=,=相等操作符:
=,!
=,=,!
=逻辑操作符:
&,|,!
按位操作符:
&,|,归约操作符:
&,&,|,|,移位操作符:
条件操作符:
exp?
exp1:
exp2;连接和复制操作符:
exp1,exp2,repexpassignbus3:
0=bus0,bus1,bus2,bus3;/反转assignbus3:
0=2bus0,2bus3;/扩展ShandyIMEofTsinghuaUniv.2004VerilogHDL语法语法过程结构过程结构initial语句:
只执行一次,并在模拟开始时执行,即在0时刻开始执行。
通常用于初始化(例如赋给寄存器一个初始值)、波形产生和仿真控制always语句:
也是在0时刻开始执行,但是在整个仿真期间被反复多次执行initial块和always块内部的语句顺序执行一个模块中可以包含任意多个initial或always语句。
这些语句相互并行执行,即这些语句的执行顺序与其在模块中的顺序无关。
一个initial语句或always语句的执行产生一个单独的控制流注意#的时延控制用法initialinitialbeginbeginreset=0;reset=0;a=4a=4b0101b0101b=4b=4b1010;b1010;#20#20reset=1;reset=1;#50#50$display($display(“sumis%dsumis%d”,sum);,sum);$finish;$finish;endendalways(always(posedgeposedgeclkorclkornegedgenegedgereset)reset)beginbeginif(!
reset)beginif(!
reset)begindata=0;data=0;endelsebeginendelsebegindata=din;data=din;endendendendShandyIMEofTsinghuaUniv.2004VerilogHDL语法语法表达式表达式线网类型使用assign语句赋值,称为连续赋值寄存器使用“=”或”=“赋值,并只能用于initial、always、task和function块内!
注意两者区别:
a=b;/执行到此语句后a的值马上更新为b,称为阻塞性赋值a10)beginresult=123;endelseif(a0)beginroll=roll1;cnt=cnt-1;endfor(cnt=0;cnt1;endShandyIMEofTsinghuaUniv.2004VerilogHDL语法语法函数与任务函数与任务VerilogHDL还定义了函数(function)和任务(task),可以用于完成复杂的行为描述函数只能有一个输出,而任务可以具有多个输出;两者都可以有多个输入函数和任务必须定义在module内ShandyIMEofTsinghuaUniv.2004VerilogHDL语法语法顺序执行与并行执行顺序执行与并行执行initial,always,function,task块内部的语句是顺序执行的,所有begin.end之间的语句也是顺序执行的同一个模块内部的所有initial,always块都是并行执行的fork.join块之间的语句是并行执行的(略)ShandyIMEofTsinghuaUniv.2004VerilogHDL语法语法编译指令编译指令以(反引号)开始的某些标识符是编译器指令。
在Verilog语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令。
完整的标准编译器指令如下:
define,undefdefine,undef宏定义宏定义,类似于类似于#define#undef#define#undef,例如例如:
defineMAX_BUS_SIZEdefineMAX_BUS_SIZE3232.regMAX_BUS_SIZE-1:
0AddReg;regMAX_BUS_SIZE-1:
0AddReg;注意引用时要加注意引用时要加ifdef,else,endififdef,else,endif类似于类似于#ifdef#else#endif#ifdef#else#endifincludeinclude类似于类似于#include#include,用于包含另外一个用于包含另外一个verilogverilog文件文件timescaletimescaleresetalldefault_nettypeunconnected_drive,nounconnected_drivecelldefine,endcelldefineShandyIMEofTsinghuaUniv.2004VerilogHDL语法语法编译指令编译指令(cont.)timescaletimescale定义时延单位和精度定义时延单位和精度在VerilogHDL模型中,所有时延都用单位时间表述。
使用该指令将时间单位与实际时间相关联。
指令格式为:
timescaletimescaletime_unit/time_precisiontime_unit和time_precision由值1、10、和100以及单位s、ms、us、ns、ps和fs组成。
例如:
times
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog 实例 代码