版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块用户自定义原语门级原语连续赋值语句initial和always块关键字:generateendgenerate类型:4.3生成块VerilogHDL语言允许在生成范围内声明下列数据类型:net(线网),reg(寄存器)integer(整型数),real(实型数),time(时间型),realtime(实数时间型)event(事件)生成的数据类型具有惟一的标识名,可以被层次引用任务和函数的声明也允许出现在生成范围中,但是不能出现在循环生成当中生成任务和函数同样具有惟一的标识符名称,可以被层次引用不允许出现在生成范围中的模块项声明包括:参数、局部参数输入、输出和输入/输出声明指定块生成模块实例的连接方法与常规模块调用相同,三种创建生成语句的方法:循环生成条件生成case生成4.3.1循环生成语句变量声明模块用户自定义原语、门级原语连续赋值语句initial和always块循环生成语句:对两个N位总线变量进行按位异或modulebitwise_xor(out,i0,i1);parameterN=32;output[N-1:0]out;input[N-1:0]i0,i1;genvarj;generatefor(j=0;j<N;j=j+1)begin:xor_loopxorg1(out[j],i0[j],i1[j]);end//在生成块内部结束循环endgenerate//结束生成块另一种编写形式,异或门可以用always块代替:/*reg[N-1:0]out;generatefor(j=0;j<N;j=j+1)begin:bitalways@(i0[j]ori1[j])out[j]=i0[j]^i1[j];endendgenerate*/endmodule在仿真开始之前,仿真器会对生成块中的代码进行展开,将生成块转换为展开的代码,然后对展开的代码进行仿真关键字genvar用于声明生成变量,生成变量只能用在生成块中;在展开后的仿真代码中,生成变量不在存在一个生成变量的值只能由循环生成语句来改变循环生成语句可以嵌套使用。但是使用同一个生成变量作为索引的循环生成语句不能相互嵌套xor_loop是赋予循环生成语句的名字,目的在于通过它对循环生成语句中的变量进行层次化调用。因此,循环生成语句中各个异或门的相对层次名分别为:xor_loop[0].g1,xor_loop[1].g1,....…,xor_loop[31].g1一位全加器的逻辑如图所示:modulefulladd(sum,c_out,a,b,c_in);outputsum,c_out;inputa,b,c_in;wiret1,t2,t3;xorg1(t1,a,b);xorg2(sum,t1,c_in);andg3(t2,a,b);andg4(t3,t1,c_in);xorg5(c_out,t2,t3);endmodule
modulefulladd4(sum,c_out,a,b,c_in);output[3:0]sum;outputc_out;input[3:0]a,b;inputc_in;wirec1,c2,c3;fulladdfa0(sum[0],c1,a[0],b[0],c_in);fulladdfa1(sum[1],c2,a[1],b[1],c1);fulladdfa2(sum[2],c3,a[2],b[2],c2);fulladdfa3(sum[3],c_out,a[3],b[3],c3);endmodule用循环生成语句描述的脉动加法器moduleripple_adder(c_out,sum,a,b,c_in);output[3:0]sum;outputco;input[3:0]a,b;inputc_in;wire[3:0]c;assignc[0]=c_in;genvari;generatefor(i=0;i<4;i=i+1)begin:r_loopwiret1,t2,t3;xorg1(t1,a[i],b[i]);xorg2(sum[i],t1,c[i]);andg3(t2,a[i],b[i]);andg4(t3,t1,c[i]);xorg5(c[i+1],t2,t3);end//生成块内部循环的结束endgenerate//生成块的结束assignc_out=c[3];endmodule
modulefulladd(sum,c_out,a,b,c_in);outputsum,c_out;inputa,b,c_in;wiret1,t2,t3;xorg1(t1,a,b);xorg2(sum,t1,c_in);andg3(t2,a,b);andg4(t3,t1,c_in);xorg5(c_out,t2,t3);endmodule
4.3.2条件生成语句模块用户自定义原语、门级原语连续赋值语句initial和always块条件生成语句if-else,依据条件决定是否调用:使用条件生成语句实现参数化乘法器modulemultiplier(product,a0,a1);parametera0_width=8;parametera1_width=8;localparamproduct_width=a0_width+a1_width;output[product_width-1:0]product;input[a0_width-1:0]a0;input[a1_width-1:0]a1;generateif(a0_width<8)||(a1_width<8)cla_multiplier#(a0_width,a1_width)m0(product,a0,a1);elsetree_multiplier#(a0_width,a1_width)m0(product,a0,a1);endgenerate//生成块的结束endmodule4.3.3case生成语句模块用户自定义原语、门级原语连续赋值语句initial和always块case生成语句依据条件决定是否调用:case生成语句moduleadder(co,sum,a0,a1,ci);parameterN=4;output[N-1:0]sum;outputco;input[N-1:0]a0,a1;inputci;generatecase(N)1:adder_1bitadder1(c0,sum,a0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 飞机雷达调试工10S考核试卷含答案
- 机场雷达操纵修理工诚信模拟考核试卷含答案
- 医疗废弃物处理工安全生产能力考核试卷含答案
- 铸轧工岗前操作管理考核试卷含答案
- 香精配制工操作安全评优考核试卷含答案
- 桥梁工岗位设备性能考核试卷含答案
- 油品储运调合工岗前责任制考核试卷含答案
- 乙炔发生工岗前实践理论考核试卷含答案
- 硬质合金混合料鉴定下料工岗中操作安全考核试卷含答案
- 矿井通风操作工成果转化知识考核试卷含答案
- 2026年河南省重点学校高一入学语文分班考试试题及答案
- 中国公证协会招聘考试真题2025
- 2026年全国数据技术与应用职业技能竞赛(商务数据分析与应用)必练题(共350题)
- 2026年四川省初级注册安全工程师考试真题及答案
- 2026年高职(服装工艺技术)服装流水线生产实操试题及答案
- GB/T 30117.7-2026灯和灯系统的光生物安全第7部分:主要发射可见辐射的光源和灯具
- 第39届中国化学奥林匹克竞赛(初赛 )试题(含答案)
- 北京国家大剧院合唱团2025年招聘(第二批次)笔试历年参考题库附带答案详解
- 2026年广州市天河区灵秀小学公开招聘编外聘用制专任教师备考题库含答案详解
- 水利水电工程生产安全重大事故隐患判定导则(2025版)解读课件
- T-CCTAS 262-2025 高速公路充换电设施配置方法
评论
0/150
提交评论