版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章VerilogHDL模型的不同抽象级别1概述Verilog模型可以是实际电路不同级别的抽象。所谓不同的抽象级别,实际上是指同一个物理电路,可以在不同的层次上用Verilog语言来描述它,如果只从行为和功能的角度来描述某一电路模块,就称为行为模块;如果从电路结构的角度来描述该电路模块,就称为结构模块。抽象的级别和它们对应的模块类型常可以分为以下5种(1)系统级(system)(2)算法级(algorithmic)(3)RTL级(RegisterTransferLevel):(4)门级(gate-level):(5)开关级(switch-level)系统级、算法级和RTL级是属于行为级的,门级是属于结构级的。2对于数字系统的逻辑设计工程师而言,熟练地掌握门级、RTL级、算法级、系统级是非常重要的。而对于电路基本部件(如门、缓冲器、驱动器等)库的设计者而言,则需要掌握用户自定义源语元件(UDP)和开关级的描述。一个复杂电路的完整VerilogHDL模型是由若干个VerilogHDL模块构成的,每一个模块又可以由若干个子模块构成。这些模块可以分别用不同抽象级别的VerilogHDL描述,在一个模块中也可以有多种级别的描述。利用VerilogHDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计。39.1门级结构一个逻辑网络是由许多逻辑门和开关所组成,因此用逻辑门的模型来描述逻辑网络是最直观的。VerilogHDL提供了一些门类型的关键字,可以用于门级结构建模。49.1.1与非门、或门和反向器及其说明语法VerilogHDL中有关门类型的关键字共有26个之多。我们只介绍8个。and与门nand
与非门nor或非门or或门xor
异或门xnor
异或非门buf
缓冲器not非门门声明语句的格式如下:<门的类型>[<驱动能力><延时>]<门实例1>[,<门实例2>,…<门实例n>];59.1.2用门级结构描述D触发器例9.1用基本逻辑单元组成D型主从触发器6module flop(data,clock,clear,q,qb);input data,clock,clear;output q,qb;nand #10 nd1(a,data,clock,clear),nd2(b,ndata,clock),nd4(d,c,b,clear),nd5(e,c,nclock),nd6(f,d,nclock),nd8(qb,q,f,clear);nand #9 nd3(c,a,d),nd7(q,e,qb);not #10 iv1(ndata,data),iv2(nclock,clock);endmodule79.1.3.由已经设计成的模块来构成更高一层的模块clrdqclkclrdqclkclrdqclkq0d0clrdqclkd3d2q2q3q1d1clrbclkf4f3f2f1四位寄存器电路结构图8`include"flop.v"module hardreg(d,clk,clrb,q);input clk,clrb;input[3:0] d;output[3:0] q;flop f1(d[0],clk,clrb,q[0],),f2(d[1],clk,clrb,q[1],),f3(d[2],clk,clrb,q[2],),f4(d[3],clk,clrb,q[3],);endmodule99.2VerilogHDL的行为描述建模modulehardreg(d,clk,clrb,q);input clk,clrb;input[3:0] d;output[3:0] q;reg[3:0]q;always@(negedge
clkorposedge
clrb)beginif(clrb)q<=0;elseq<=d;endendmodule109.2.1仅用于产生仿真测试信号的VerilogHDL行为描述建模`include"flop.v"`include"hardreg.v"modulehardreg_top;regclock,clearb;//为产生测试用的时钟和清零信号需要寄存器reg[3:0]data;//为产生测试用数据需要用寄存器wire[3:0]qout;//为观察输出信号需要从模块实例端口中引出线
`definestim#100data=4'b//宏定义stim,可使源程序简洁
eventend_first_pass;//定义事件end_first_passhardregreg_4bit(.d(data),.clk(clock),.clrb(clearb),.q(qout));11initialbeginclock=0;
clearb=1;end
always#50clock=~clock;always@(end_first_pass)
clearb=~clearb;always@(negedgeclock)$strobe("attime%0dclearb=%bdata=%dqout=%d",$time,clearb,data,qout);12initialbegin#55;repeat(4) //重复四次产生下面的data变化
begindata=4'b0000;`stim0001;`stim0010;`stim0011;`stim0100;`stim0101;
`stim0110;`stim0111;`stim1000;`stim1001;`definestim#100data=4'b13
`stim1010;`stim1011;`stim1100;`stim1101;
`stim1110;`stim1111;#200->end_first_pass;end$finish; //结束仿真endendmodule149.2.2硬件描述语言的可综合性问题所谓逻辑综合就其实质而言是设计流程中的一个阶段,在这一阶段中将较高级抽象层次的描述自动地转换成较低层次描述。就现在达到的水平而言,所谓逻辑综合就是通过综合器把HDL程序转换成标准的门级结构网表,而并非真实具体的电路。而真实具体的电路还需要利用ASIC和FPGA制造厂商的布局布线工具根据综合后生成的标准的门级结构网表来产生。为了能转换成标准的门级结构网表,HDL程序的编写必须符合特定综合器所要求的风格。由于门级结构、RTL级的HDL程序的综合是很成熟的技术,所有的综合器都支持这两个级别HDL程序的综合。159.3用户定义的原语用户可以定义自己设计的基本逻辑元件的功能,也就是说,可以利用UDP来定义自己特色的用于仿真的基本逻辑元件模块并建立相应的原语库。这样,就可以与调用VerilogHDL基本逻辑元件同样的方法来调用原语库中相应的元件模块,并进行仿真。由于UDP是用查表的方法来确定其输出的,用仿真器进行仿真时,对它的处理速度较对一般用户编写的模块快得多。与一般的用户模块比较,UDP更为基本,它只能描述简单的能用真值表表示的组合或时序逻辑。16primitiveudp_and(out,a,b);//原语名和端口列表//端口声明语句outputout;//表示组合逻辑时一定不能声明为reg类型inputa,b;//输入端口声明//状态表定义;以关键词table开始table//状态表输入项的次序必须与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2168-2024盐雾试验箱校准规范
- 2024年国际汽车销售代理合同
- 2024年度保险代理协议
- 2024年害虫防治定期服务协议
- 2024区块链技术应用与合作合同
- 2024年专业同声传译合作协议
- 2024版蔬菜采购合同书文书
- 2024区块链技术研发公司与金融机构之间的数字货币发行与交易合同
- 2024民间私人贷款合同范本个人民间贷款合同范本
- 2024年个性化金融服务系统建设合同
- 《城市轨道交通桥梁养护技术规范》
- 《水土保持技术》课件-项目八 拦渣措施
- 机动车检测站违规检验整改报告
- 2024年建筑电工复审考试题库附答案
- 2024年4月自考04737C++程序设计试题及答案含评分参考
- 睡眠医学智慧树知到期末考试答案章节答案2024年广州医科大学
- GB/T 17259-2024机动车用液化石油气钢瓶
- 国开(河北)2024年《中外政治思想史》形成性考核1-4答案
- 床边护理带教体会
- 2024年社区工作者考试必背1000题题库及必背答案
- MOOC 微型计算机原理与接口技术-南京邮电大学 中国大学慕课答案
评论
0/150
提交评论