资源预览内容
第1页 / 共86页
第2页 / 共86页
第3页 / 共86页
第4页 / 共86页
第5页 / 共86页
第6页 / 共86页
第7页 / 共86页
第8页 / 共86页
第9页 / 共86页
第10页 / 共86页
亲,该文档总共86页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第六讲第六讲数字集成电路设计数字集成电路设计与硬件描述语言与硬件描述语言浙大微电子浙大微电子韩雁韩雁hanyzju.edu.cn秀弘败证迭妥颓挽衫坍唤擎烷纫绍犬碉渊盛滚喷钧堤佬紊平喳毙笛惫笆老六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言1.数字数字IC设计方法设计方法2.两种两种HDL语言语言3.Verilog HDL简介简介4.VHDL简介简介澳簇理孤拇哑赁柴诫熔钻鬃弱翠祭脊颅准咎尔纷裕富荤桃促当谐肯盅萄脖六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/20242浙大微电子浙大微电子当前的数字当前的数字ICIC设计分可分成以下几个层次设计分可分成以下几个层次:1. 算法级设计:算法级设计:利用高级语言利用高级语言( (如如C C语言语言) )及其他一些系统分及其他一些系统分析工具(如析工具(如MATLABMATLAB)对设计从系统的算法级进行描述。算)对设计从系统的算法级进行描述。算法级不需要包含时序信息。法级不需要包含时序信息。2 2. RTL. RTL级设计:级设计:用信号在寄存器间传输的模式来对设计进行用信号在寄存器间传输的模式来对设计进行描述。描述。3. 3. 门级设计:门级设计:用逻辑门及门级之间的连线对设计进行描述。用逻辑门及门级之间的连线对设计进行描述。4. 4. 开关级设计:开关级设计:用晶体管及其连线来对设计进行描述。用晶体管及其连线来对设计进行描述。幼站淑皿奢疗扎懒让瓣镐椿检择幂哼逆帝近锄狈中腿皇驰岳幕詹罗榜衍傀六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/20243浙大微电子浙大微电子数字数字ICIC一般采用自顶向下一般采用自顶向下(TOP-DOWN)(TOP-DOWN)的设计方法的设计方法在在系统级系统级(顶层(顶层) )进行功能的划分和架构设计进行功能的划分和架构设计在在功能级功能级进行仿真、纠错,并用硬件描述语言对功能进进行仿真、纠错,并用硬件描述语言对功能进行描述行描述用综合工具将设计转化为具体用综合工具将设计转化为具体门级门级电路网表电路网表物理级物理级可以是可以是FPGAFPGA器件或专用集成电路(器件或专用集成电路(ASICASIC) TOP-DOWN 设计思想设计思想门级门级 功能级功能级 系统级系统级TOP-DOWN TOP-DOWN 设计方法设计方法块颖嘘败害牺挖鹏耐误枉斗销垛址磁引袋弄染群彩披琉传矫倚禾溶框染胜六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/20244浙大微电子浙大微电子电子设计规模越来越大电子设计规模越来越大(百万百万/千万门的量级千万门的量级),复杂,复杂度越来越高,只能用高级语言来描述其功能,在设计度越来越高,只能用高级语言来描述其功能,在设计初期隐藏其具体的细节实现。初期隐藏其具体的细节实现。可读性强,易修改。可读性强,易修改。提高逻辑设计的效率,降低设计成本,更重要的是缩提高逻辑设计的效率,降低设计成本,更重要的是缩短设计周期。短设计周期。HDL追求对硬件的描述,而将该描述在目标器件上实追求对硬件的描述,而将该描述在目标器件上实现则由现则由EDA工具的综合器完成。工具的综合器完成。受限于目标器件,并不是所有受限于目标器件,并不是所有HDL语句均可被综合。语句均可被综合。矩瘤幂弟挫扔遮燃将纬步贡锨织作营津仍靶艾鉴斧狙蒲早怎舜隶竞穿她虱六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/20245浙大微电子浙大微电子VHDL和和Verilog HDL是目前世界上流行最广的两是目前世界上流行最广的两种硬件描述语言,都是在种硬件描述语言,都是在20世纪世纪80年代中期开发年代中期开发出来的。均为出来的。均为IEEE标准。标准。VHDL语法严谨,易于学习;逻辑综合能力强。语法严谨,易于学习;逻辑综合能力强。在欧洲使用较多。在欧洲使用较多。Verilog HDL语法灵活(类似语法灵活(类似C语言,较难掌握)语言,较难掌握)底层综合出色。美国使用较多。底层综合出色。美国使用较多。 孕乏唉火篡迎船泻咽苟猖拉猎锋亏量户格夹鸟搂惜技辗吗垢蜕馋揣人以虏六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/20246浙大微电子浙大微电子Verilog HDL是一种应用广泛的硬件描述语言,是是一种应用广泛的硬件描述语言,是IC硬件设计硬件设计人员和人员和EDA工具之间的桥梁。其功能为工具之间的桥梁。其功能为编写设计文本(脚本)编写设计文本(脚本)建立电子系统行为级的仿真模型并进行仿真建立电子系统行为级的仿真模型并进行仿真自动综合生成数字逻辑网表(自动综合生成数字逻辑网表(Netlist)及具体电路)及具体电路生成某工艺条件下具体电路的延时模型并进行时序仿真生成某工艺条件下具体电路的延时模型并进行时序仿真仿真验证无误后用于制造仿真验证无误后用于制造ASIC或写入或写入FPGA器件中器件中常用的常用的Verilog HDL开发软件有开发软件有Altera公司的MAX+PLUS II,Quartus IIXilinx公司的Foundation ISE彰佃弥厩宜禾忆填目邱隅牧剔况嚏探龋陌朽接硒那弘润灾炯天党央憋肥霜六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/20247浙大微电子浙大微电子1、语法结构上,与、语法结构上,与C语言有许多相似之处,并借鉴语言有许多相似之处,并借鉴C语言的多种操作符语言的多种操作符2、既包含高级程序设计语言的结构形式,同时也兼、既包含高级程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体构件顾描述硬件线路连接的具体构件3、通过使用结构级或行为级描述可以在不同的抽象、通过使用结构级或行为级描述可以在不同的抽象层次上进行设计层次上进行设计 晰翌刚帮芝贷躬厨蚕篆壳庆泳迹裳揪谷式贞事埔监瘫宙酞镶抡塘睛挣裹柑六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/20248浙大微电子浙大微电子4、Verilog HDL语言是语言是并发的,并发的,即具有在同一时即具有在同一时刻执行多任务的能力,因为在实际硬件中许多操刻执行多任务的能力,因为在实际硬件中许多操作都是在同一时刻发生的。作都是在同一时刻发生的。 而计算机编程语言往而计算机编程语言往往是顺序执行的。往是顺序执行的。5、有时序概念,有时序概念,因为在硬件电路中从输入到输因为在硬件电路中从输入到输出总是有延迟存在的出总是有延迟存在的 这两点显示了这两点显示了 Verilog HDL与与C语言的最大区别语言的最大区别岁晚陵昂衍球出翠局家娃亦叹镇谚簇捡昨廉圾逞翌诛核值胚蔬亭驭船旬困六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/20249浙大微电子浙大微电子数字电路可简单归纳为两种要素:数字电路可简单归纳为两种要素:连线和器件连线和器件 Verilog HDL建模建模-使用硬件语言对数字电路的这使用硬件语言对数字电路的这两种基本要素进行描述。两种基本要素进行描述。凝哦詹坏慌链悉舔蚕咱杆辙殆茁北锄踌箭唬拈绽抗挂后痉怖闺谣蝉逮扶藩六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202410浙大微电子浙大微电子 八位加法器的八位加法器的Verilog HDL源代码源代码module adder8 (cout, sum, ina,inb, cin);output 7:0 sum;output cout;input 7:0 ina,inb;input cin; assign cout,sum= ina+inb+cin;endmodule准备实现的逻辑功能准备实现的逻辑功能888cicocincoutinainbsum简单的简单的Verilog HDL的例子的例子程序为模块结构,包含在module与endmodule之间端口列表 输入、输出端口描述-描述外部特性逻辑功能描述-描述内部特性模块名嘉待弯扦赚梭侧蕾双瓣磋探止张砸牵祷昼阑遁剩惊袋茁醚绩云霸戊碧喜此六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202411浙大微电子浙大微电子一一. .模块的概念模块的概念模块是模块是Verilog HDL语言的基本单元,数字系统用语言的基本单元,数字系统用 模块集合模块集合的形式来描述的形式来描述模块描述某个设计的功能、结构和与其它模块通信模块描述某个设计的功能、结构和与其它模块通信的外部端口的外部端口Verilog HDL中各个模块是中各个模块是并行运行的并行运行的模块可以模块可以调用调用其它模块的实体(实例)其它模块的实体(实例)妻完踢菲致川口俘辉郧赶电蝗舟横彝增扑勾薯仅丛击蛋去范讳功琵眉苏痘六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202412浙大微电子浙大微电子module () 端口端口说明(明(input,output,inout) 参数定参数定义 /可可选 数据数据类型定型定义 /wire、reg、task、function 连续赋值语句(句(assign)/组合合逻辑 过程程块(always和和initial) -行行为描述描述语句句 低低层模模块实例例 /调用其它模用其它模块 任任务和函数和函数 延延时说明明块endmodule棉断叉艇营簿控侣喉按密凡氏展堂搓物臂娃打棘奖慎戍沫濒霹像漫姓形狙六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202413浙大微电子浙大微电子注意模块的名称注意模块的名称DFF,端口列表及说明,端口列表及说明模块通过端口与外部通信模块通过端口与外部通信端口在模块名字端口在模块名字后的括号中列出后的括号中列出端口可以说明为端口可以说明为input, output及及inout端口等价于硬件端口等价于硬件的引脚的引脚(pin)谆朴硼融睡阅虎喷旋椭蕉轨膊惰言岔晤仿经肋娜菲鼻粕搂皖碗风茬昧蜀萎六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202414浙大微电子浙大微电子moduleDFF(d,clk,clr,q,qb);moduleDFF(d,clk,clr,q,qb);.endmoduleendmodulemodulemoduleREG4REG4(d,clk,clr,q,qb);(d,clk,clr,q,qb);output3:0q,qb;output3:0q,qb;input3:0d;input3:0d;inputclk,clr;inputclk,clr;DFFd0(d0,clk,clr,q0,qbDFFd0(d0,clk,clr,q0,qb0);0);DFFd1(d1,clk,clr,q1,qbDFFd1(d1,clk,clr,q1,qb1);1);DFFd2(d2,clk,clr,q2,qbDFFd2(d2,clk,clr,q2,qb2);2);DFFDFFd3d3(d3,clk,clr,q3,qb(d3,clk,clr,q3,qb3);3);endmoduleendmoduleREG4有模块有模块DFF的的四个实例四个实例畅忍斜库签摈憋无孺奸卸雏伤慧搔总嗓机溪群摔罐喂潭纂往掐襟斑忻予币六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202415浙大微电子浙大微电子将模块的实例通过端口连接起来构成一个大的系统将模块的实例通过端口连接起来构成一个大的系统每个实例都有自己的名字每个实例都有自己的名字(d0, d1, d2, d3)。实例名是每。实例名是每个对象唯一的标记,通过这个标记可以查看每个实例的个对象唯一的标记,通过这个标记可以查看每个实例的内部。内部。实例中端口的次序与模块定义的次序相同。实例中端口的次序与模块定义的次序相同。模块实例化与程序调用不同。每个实例都是模块的一个模块实例化与程序调用不同。每个实例都是模块的一个完全的拷贝,相互独立、并行。完全的拷贝,相互独立、并行。模块实例化模块实例化(module instances):衬骸彭已矗抽浊钙艇身渐崔倘窄桓盔奏颇邹吮值幸哉幼氯软捶伐痕极义阁六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202416浙大微电子浙大微电子信号在电路中传输会有传播延时,如线延时、器件延时等assign # 2 B = A;表示 B信号在2个时间单位后得到A信号的值 所有时延都必须根据时间单位进行定义定义方式为在文件头添加语句:timescale 1ns /100ps其中timescale 是Verilog HDL 提供的预编译处理命令,1ns 表示时间单位是1ns,100ps表示时间精度是100ps 根据该命令,编译工具可以认知 #2 为2ns僧虾绎捆刻勋关彤琶梭勺需男疵恐挤佐娱羡腾罢肋卡朽影窍擦攻剑蚊庭薯六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202417浙大微电子浙大微电子敦唇他诀失咬懂旧耸碌钻份孙凌依欲淤撵中著线瑶帽映示驶扑芽牢锐内部六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202418浙大微电子浙大微电子moduleMUX2_1(out,a,b,sel);moduleMUX2_1(out,a,b,sel);/Portdeclarations/Portdeclarationsoutputout;outputout;inputsel,/controlinputinputsel,/controlinputb,/*datainputs*/a;b,/*datainputs*/a;/*/*Thenetlistlogicselectsinput”a”whenThenetlistlogicselectsinput”a”whensel=0anditselects”b”whensel=1.sel=0anditselects”b”whensel=1.*/*/not(sel_,sel);not(sel_,sel);and(a1,a,sel_),(b1,b,sel);and(a1,a,sel_),(b1,b,sel);or(out,a1,b1);or(out,a1,b1);endmoduleendmodule格式自由格式自由一条语句可多行书写;一行可写多个语句。空白(新行、制表符、空格)没有特殊意义。如input A;input B;与input A; input B;是一样的。使用空白符提高可读性使用空白符提高可读性Verilog忽略空白符忽略空白符多行注释,在多行注释,在/* */内内单行注释单行注释到行末结束到行末结束孵氛稍貌掠量撞堆辗吃寿可喜客垣啦认凶拙偏盐校毕酱缉曰男首溺嗡丁宦六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202419浙大微电子浙大微电子0, Low, False, Logic Low, Ground, 1, High, True, Logic High, Power,VDD, X Unknown: Occurs at Logic Which Cannot be Resolved ConflictHiZ, High Impedance, Tri- Stated,捣滔孔内她坛厦阑巡鹅番霜逊哺篇诛诽与巷焰羌且刑袭轿塞盐丁欺十暮藏六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202420浙大微电子浙大微电子5 O37 5位八进制数(二进制位八进制数(二进制 11111 ) 4 D2 4位十进制数位十进制数 (二进制(二进制0010)4 B1x_01 4位二进制数位二进制数 7 Hx 7位位x (扩展的扩展的x), 即即xxxxxxx4 hZ 4 位位z (扩展的扩展的z) , 即即zzzz 4 d-4 非法:数值不能为负非法:数值不能为负8 h 2A 在位长和基数之间,以及基数和数值之间允许在位长和基数之间,以及基数和数值之间允许出现空格出现空格3 b 001 非法:非法: 和基数和基数b 之间不允许出现空格之间不允许出现空格(2+3) b10 非法:位长不能为表达式非法:位长不能为表达式膀捉纶蘑厩辊女慌柳鸳摸奏剪汞丰菇埂镍峦隋渍壬焊们己俗君长踊白柯燕六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202421浙大微电子浙大微电子格式符格式符%h%o%d%b%c%s%m%thexoctdecbinACSIIstringmoduletime转义符转义符tn”tab换行反斜杠双引号ASCII representation of above拂室擅札贡初空楼李痒综展酝脖俩桔矽嚎曲晰戒讲哟煽悬氛啮搜啄劝兼暖六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202422浙大微电子浙大微电子标识符是用户在描述时给对象起的名字标识符是用户在描述时给对象起的名字标识符必须以字母标识符必须以字母(a-z,A-Z)(a-z,A-Z)或或(_)(_)开头,后面可以是字开头,后面可以是字母、数字、母、数字、($)($)或或(_)(_)。最长可以是最长可以是10231023个字符个字符标识符区分大小写,标识符区分大小写,selsel和和SELSEL是不同的标识符是不同的标识符模块、端口和实例的名字都是标识符模块、端口和实例的名字都是标识符modulemoduleMUX2_1MUX2_1(out,a,b,sel);(out,a,b,sel);outputoutputoutout; ;inputinputa,b,sela,b,sel; ; notnotnot1not1(sel_,sel);(sel_,sel); andandand1and1(a1,a,sel_);(a1,a,sel_); andandand2and2(b1,b,sel);(b1,b,sel); ororor1or1(out,a1,b1);(out,a1,b1);endmoduleendmoduleVerilog标识符标识符烟凳画滤搀苹界锯绣疚躁瘩烘匠劫少繁饺炒贬匿幂狡贩摈截骏攻竞氛瞎邓六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202423浙大微电子浙大微电子有效标识符举例:有效标识符举例:shift_reg_ashift_reg_abusa_indexbusa_index_bus3_bus3无效标识符举例:无效标识符举例:34net/34net/开头不是字母或开头不是字母或“_”“_”a*b_net/a*b_net/包含了非字母或数字,包含了非字母或数字,“$”“_”“$”“_”n238/n238/包含了非字母或数字,包含了非字母或数字,“$”“_”“$”“_”VerilogVerilog区分大小写,所有区分大小写,所有VerilogVerilog关键词使用小写字母关键词使用小写字母裹朝砾熔诉殖惶尿篇镀亥腑占察巴痈钎烂迹穴间渝长析慰搬村凡嘻斧禹榷六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202424浙大微电子浙大微电子A、用有意义的名字如、用有意义的名字如 Sum 、CPU_addr等。等。B、用下划线区分词。、用下划线区分词。C、采用一些前缀或后缀,如时钟采用、采用一些前缀或后缀,如时钟采用Clk 前缀:前缀:Clk_50,Clk_CPU;低电平采用;低电平采用_n 后缀:后缀:Enable_n;D、统一缩写、统一缩写, 如全局复位信号如全局复位信号 Rst。E、同一信号在不同层次保持一致性,如同一时钟信号必须、同一信号在不同层次保持一致性,如同一时钟信号必须在各模块保持一致。在各模块保持一致。F、自定义的标识符不能与保留字同名。、自定义的标识符不能与保留字同名。G、参数采用大写,如、参数采用大写,如SIZE 武确悲埔酣从段宾暖测麓凋讯壤绣肺脆帜烈屹瓮溃绒被越擎析握奇款哦淘六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202425浙大微电子浙大微电子net (线网)(线网) : 表示器件之间的物理连接表示器件之间的物理连接register (寄存器)(寄存器) :表示存储元件:表示存储元件parameters(参数参数) : 运行时的常数运行时的常数Verilog主要有三类数据类型:主要有三类数据类型:盂牢泥谩惶政犀共房佬短痛郧嗅担庇误怠乖畏阎两骤问拇啥写咳哟篇译庸六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202426浙大微电子浙大微电子netnet需要被持续的驱动,驱动它的可以是门和模块。需要被持续的驱动,驱动它的可以是门和模块。当当netnet驱动器的值发生变化时,驱动器的值发生变化时, 会自动将新值传送会自动将新值传送到到netnet上。在例子中,线网上。在例子中,线网outout由由oror门驱动。当门驱动。当oror门的输入信门的输入信号变化时将传输到线网号变化时将传输到线网netnet上。上。榔棍椎州撇俗吧汞擅拂宽驼缅矗总兢吮又酿鹿过僳彭捞秩孪塞邑枢粮带属六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202427浙大微电子浙大微电子wire类型是最常用的类型,只有连接功能。类型是最常用的类型,只有连接功能。wire常用来表示用常用来表示用assign语句赋值的组合逻辑信号语句赋值的组合逻辑信号取值为:取值为:0,1,x(不定值),(不定值),z(高阻)(高阻)wire和和tri类型有相同的功能。用户可根据需要将线类型有相同的功能。用户可根据需要将线网定义为网定义为wire或或tri以提高可读性。例如,可以用以提高可读性。例如,可以用tri类型表示一个类型表示一个net有多个驱动源,或者指示这个有多个驱动源,或者指示这个net可以是高阻态可以是高阻态 Z (hign-impedance)。休语培伸憎嗜但编嫁舱阁铃技羽来悼茧恤灾越线轻凰抡疏仗荧锁赴鸥详库六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202428浙大微电子浙大微电子语法:语法:wire 数据数据1,数据,数据2,数据数据n;例子:例子:wire a,b,c/定义了三个定义了三个wire型变量型变量a,b,cwire7:0 databus/定义了八位宽定义了八位宽wire型型向量向量数据总线数据总线wire20:1 addrbus /定义了定义了20位宽位宽wire型型向量向量地址总线地址总线温绰籍午顽显荤硫牙份亨脸大淑边毗呼曾姜盒安铜江商踢朗擎俩增股隆抬六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202429浙大微电子浙大微电子寄存器类型在赋新值以前保持原值寄存器类型在赋新值以前保持原值用行为描述结构给寄存器类型赋值(在过程块中进行)用行为描述结构给寄存器类型赋值(在过程块中进行)寄存器类型大量应用于行为描述及激励描述寄存器类型大量应用于行为描述及激励描述reg_a、reg_b、reg_sel用于施加激励给用于施加激励给2:1多路器多路器戈浩蜒逆册嫂战尹勾泵酣酪马吧绎薄逻哉腋沙颠决蠢第被饭至协剧闸末臃六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202430浙大微电子浙大微电子寄存器类有四种数据类型寄存器类有四种数据类型寄存器类型寄存器类型 功能功能 reg 可定义的无符号整数变量,可以是标量(1位)或矢量,是最常用的寄存器类型 integer 32位有符号整数变量,算术操作产生二进制补码形式的结果。通常用作不会由硬件实现的的数据处理。real 双精度的带符号浮点变量,用法与integer相同。time 64位无符号整数变量,用于仿真时间的保存与处理受苫拷待秋关绦连是恐砷爆议番稼苔犀固舔告返谁吹莉柬僵丝润刃累待庶六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202431浙大微电子浙大微电子举例:举例:rega;/rega;/一个标量寄存器一个标量寄存器reg3:0v;/reg3:0v;/从从MSBMSB到到LSBLSB的的4 4位寄存器向量位寄存器向量reg7:0m,n;/reg7:0m,n;/两个两个8 8位寄存器位寄存器tri15:0busa;/16tri15:0busa;/16位三态总线位三态总线wire0:31w1,w2;/wire0:31w1,w2;/两个两个3232位位wirewire,MSBMSB为为bit0bit0当胸蝴漓份壳初拜揪闲黑舅拿掖霖炔赔谤里嚷烙鹰猿香拈喉钒桃新丑炒举六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202432浙大微电子浙大微电子输入端口可以输入端口可以由由net/register驱动,但输入驱动,但输入端口只能是端口只能是net输出端口可输出端口可以是以是net/register类型,输出类型,输出端口只能驱端口只能驱动动netin1in2OABY双向端口只能是双向端口只能是net类型类型贝移应挂耸冲探啪钳锑巾澳姿丹捂撼芳颁脚惺逆寸昌行谚基绵坏肝廊沾晰六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202433浙大微电子浙大微电子Verilog操作符。操作符。“与与”操作符的优先级总是比相同类型的操作符的优先级总是比相同类型的“或或”操作符操作符高高操作符类型操作符类型符号符号连接及复制操作符连接及复制操作符一元操作符一元操作符算术操作符算术操作符逻辑移位操作符逻辑移位操作符关系操作符关系操作符相等操作符相等操作符按位操作符按位操作符逻辑操作符逻辑操作符条件操作符条件操作符 ! & | * / %+ - = = = = = = != != =& | &|?:最高最高最低最低优先级优先级鄂派豁壮焦敦烁肌售羹量诵办鸟啄木职前聊涪烯欠尼批镀徒祖酿袱牢画国六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202434浙大微电子浙大微电子注意逻辑等与注意逻辑等与case等的差别等的差别 逻辑等逻辑等= =01xz010xx101xxxxxxxzxxxx case等等= =01xz0100010100x0010z00012b1x=2b0x 值为值为0,因为不相等,因为不相等2b1x=2b1x 值为值为x,因为可能不,因为可能不相等,也可能相等相等,也可能相等2b1x=2b0x 值为值为0,因为不相同,因为不相同2b1x=2b1x 值为值为1,因为相同,因为相同a=2b1x;a=2b1x;b=2b1x;b=2b1x;if(a=b)if(a=b)$display(aisequaltob);$display(aisequaltob);elseelse$display(aisnotequalto$display(aisnotequaltob);b);a=2b1x;a=2b1x;b=2b1x;b=2b1x;if(a=b)if(a=b)$display(aisidenticalto$display(aisidenticaltob);b);elseelse$display(aisnotidenticalto$display(aisnotidenticaltob);b);Case等只能用于行为描述,不能用于等只能用于行为描述,不能用于RTL描述。描述。综合工具不支持综合工具不支持宛纫水萍砍噶退拙褐俗傻匠叔制宙剔逸泥猖海阉噪瓢寸波稿凛家娜御繁嫁六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202435浙大微电子浙大微电子 级联级联 可以从不同的矢量中可以从不同的矢量中选择位并用它们组成选择位并用它们组成一个新的矢量。一个新的矢量。用于位的重组和矢量用于位的重组和矢量构造构造moduleconcatenation;moduleconcatenation;reg7:0rega,regb,regc,reg7:0rega,regb,regc,regd;regd;reg7:0new;reg7:0new;initialbegininitialbeginrega=8b0000_0011;rega=8b0000_0011;regb=8b0000_0100;regb=8b0000_0100;regc=8b0001_1000;regc=8b0001_1000;regd=8b1110_0000;regd=8b1110_0000;endendinitialforkinitialfork#10new=regc4:3,regd7:#10new=regc4:3,regd7:5,5,regb2,regaregb2,rega1:0;1:0;/new=/new=8b111111118b11111111#20$finish;#20$finish;joinjoinendmoduleendmodule谜锚纸汉贿纬家晌傻紧琵傅近遁蠢艳蹈肌刷乡续陵荧庚吓键焉次竟锡帝尔六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202436浙大微电子浙大微电子 1、Verilog HDL语言提供了十多条的编译指令,例如:defineincludetimescale 编译指令以(反引号)开头。 编译指令结束不需要加分号。 编译指令对同一个文件中的所有模块有效。 在进行Verilog HDL语言编译时,已定义的编译指令一直有效,直至有其它编译指令修改它或取消它2、说明 些拨港汹镭操湃级伪彦膀秀殿嗜喉却衔朱舶伪倾欧疽狰找果先整毫张制沮六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202437浙大微电子浙大微电子timescale 说明时间单位及精度说明时间单位及精度格式:格式:timescale / 如:如:timescale 1 ns / 100 ps timescale必须在模块之前出现必须在模块之前出现timescale1ns/10pstimescale1ns/10ps/Alltimeunitsareinmultiplesof1/Alltimeunitsareinmultiplesof1nanosecondnanosecondmoduleMUX2_1(out,a,b,sel);moduleMUX2_1(out,a,b,sel);outputout;outputout;inputa,b,sel;inputa,b,sel;not#1not1(sel_,sel);not#1not1(sel_,sel);and#2and1(a1,a,sel_);and#2and1(a1,a,sel_);and#2and2(b1,b,sel);and#2and2(b1,b,sel);or#1or1(out,a1,b1);or#1or1(out,a1,b1);endmoduleendmodule 醉效卵敦肋毒甲劫渝落禽缆拧陪古覆进貉舔氯据偏很舍翱枚攒崩撂盘资剑六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202438浙大微电子浙大微电子time_precision不能大于不能大于time_unitprecision的时间单位应尽量与设计的实际精度相同的时间单位应尽量与设计的实际精度相同precision是仿真器的仿真时间步长是仿真器的仿真时间步长若若time_unit与与precision_unit差别很大将严重影响差别很大将严重影响仿真速度仿真速度timescale 1s / 1ps,则仿真器在,则仿真器在1秒内要扫描其事秒内要扫描其事件序列件序列1012次;而次;而timescale 1s/1ms则只需扫描则只需扫描103次。次。如果没有如果没有timescale说明将使用缺省值,一般是说明将使用缺省值,一般是ns咙峙柬寓亥均尘初攫索育恒曾撤健留灰式矢境劳烛憨宫寇钞先堤坦门瓦斯六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202439浙大微电子浙大微电子结构型描述结构型描述 系统级系统级行为描述级行为描述级 算法级算法级 寄存器级寄存器级数据流描述数据流描述混合型描述混合型描述韧烧赎宫挛娜捌另他毅约大莱乔锡络香轨玲仑奎思糟两燕剃旋娇鹃端凤疚六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202440浙大微电子浙大微电子 术语及定义术语及定义结构描述结构描述 : 用门来描述器件的功能,用门来描述器件的功能,是通过实例进是通过实例进行描述的,将预定义的基本元件实例嵌入到语言中,行描述的,将预定义的基本元件实例嵌入到语言中,监控实例的输入,一旦其中任何一个发生变化便运监控实例的输入,一旦其中任何一个发生变化便运算并输出算并输出。primitives(基本单元基本单元) : Verilog语言已定义的具有基语言已定义的具有基本逻辑功能的模型本逻辑功能的模型(models)扮删盾尽霉践软轴渭屁秽枕诀拎蘑乐瘸喊抄洞尖徽势陶型缩夯妨许斩封猛六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202441浙大微电子浙大微电子结构描述表示一个逻辑图结构描述表示一个逻辑图结构描述用已有的元件构造更为复杂的元件结构描述用已有的元件构造更为复杂的元件modulers_latch(y,yb,r,modulers_latch(y,yb,r,s);s);outputy,yb;outputy,yb;inputr,s;inputr,s;norn1(y,r,yb);norn1(y,r,yb);norn2(yb,s,y);norn2(yb,s,y);endmoduleendmodule益饺烹熔得县磕蝶隔姚夹伎左竟拂百割跳步埃舀昔馁稚她苯焉读立磊亮恋六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202442浙大微电子浙大微电子Verilog基本单元提供基本的逻辑功能,这些逻辑功基本单元提供基本的逻辑功能,这些逻辑功能是预先定义的,用户不需要再定义这些基本功能能是预先定义的,用户不需要再定义这些基本功能基本单元是基本单元是Verilog 库的一部分,基本单元库是自下库的一部分,基本单元库是自下而上(而上(Bottom Up)设计方法的一部分)设计方法的一部分基本单元名称功能andornotbufxornandnorxnor Logical And Logical Or Inverter Buffer Logical Exclusive Or Logical And Inverted Logical Or Inverted Logical Exclusive Or Inverted颈恐舜怎绎贩腿衅主浅逾坞事盲悠茄稍爬古翁抄窿棍娶福裳胃嫁镭岳恬疤六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202443浙大微电子浙大微电子可以只有可以只有一个输出一个输出 语法:语法:门类型关键字门类型关键字 (端口列表)(端口列表)其中端口列表为:其中端口列表为:多输入门多输入门:(输出,输入输出,输入1,输入,输入2,)多输出门多输出门:(输出输出1,输出,输出2,输入)输入)三态门三态门: (输出,输入,使能输入输出,输入,使能输入)亨瘸游蹲冬磋宏歧屯疡唯闻蛤蛰萌投袋驼记翠咬杰抵扣悲欠卑瘫缘郑埔崇六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202444浙大微电子浙大微电子VerilogVerilog有四种不同类型的条件有四种不同类型的条件基本单元基本单元这四种基本单元只能有三种引脚:这四种基本单元只能有三种引脚:output, input, enable这些单元由这些单元由enable引脚使能。引脚使能。当使能信号无效时,输出高阻态当使能信号无效时,输出高阻态。基本单元名称 功能bufif1 条件缓冲器,逻辑条件缓冲器,逻辑 1 使能使能bufif0 条件缓冲器,逻辑条件缓冲器,逻辑 0 使能使能notif1 条件反相器,逻辑条件反相器,逻辑 1 使能使能notif0 条件反相器,逻辑条件反相器,逻辑 0 使能使能爵始薄晾精扳铜罐陆瓤研氟褐嫂联独渍汗垣牵谈喻丁陵志聘澡则算疤玖愿六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202445浙大微电子浙大微电子在端口列表中,先说明输出端口,然后是输入端口在端口列表中,先说明输出端口,然后是输入端口实例化时实例的名字是可选项实例化时实例的名字是可选项and(out,in1,in2,in3,in4);/unnamedand(out,in1,in2,in3,in4);/unnamedinstanceinstancebufbufb1b1(out1,out2,in);/named(out1,out2,in);/namedinstanceinstance延时说明是可选项。所说明的延时是固有延时。输出延时说明是可选项。所说明的延时是固有延时。输出信号经过该延时才变化。没有说明时延时为信号经过该延时才变化。没有说明时延时为0。notif0notif0#3.1#3.1n1(out,in,cntrl);/delayn1(out,in,cntrl);/delayspecifiedspecified者坍隐兔套蓉然瞎凋船坯赖逝拼超拭杰滋患札撇爬犊呵澡轿龟挞盒挛烙回六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202446浙大微电子浙大微电子模块实例化时实例必须有一个名字。模块实例化时实例必须有一个名字。使用位置映射时,端口次序与模块的说明相同。使用位置映射时,端口次序与模块的说明相同。使用名称映射时,端口次序与位置无关使用名称映射时,端口次序与位置无关没有连接的输入端口初始化值为没有连接的输入端口初始化值为x。modulecomp(o1,o2,i1,i2);modulecomp(o1,o2,i1,i2);outputo1,o2;outputo1,o2;inputi1,i2;inputi1,i2;.endmoduleendmodulemoduletest;moduletest;compc1(Q,R,J,K);/Positionalmappingcompc1(Q,R,J,K);/Positionalmappingcompc2(.i2(K),.o1(Q),.o2(R),.i1(J);/Namedcompc2(.i2(K),.o1(Q),.o2(R),.i1(J);/Namedmappingmappingcompc3(Q,J,K);/Oneportleftcompc3(Q,J,K);/Oneportleftunconnectedunconnectedendmoduleendmodule名称映射的语法:名称映射的语法:.内部信号(外部信号)内部信号(外部信号)没有连接时通常会产生警告没有连接时通常会产生警告苑过患诛汁琶卡擦蛋豢喜嫡整龟腥皮赠瘤澈篡闲弄沽砂连竟国箱粹怖膊坝六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202447浙大微电子浙大微电子行为级描述是对系统的高抽象级描述。行为级描述是对系统的高抽象级描述。在这个抽象级,注重的是整个系统的功能而不是实现。在这个抽象级,注重的是整个系统的功能而不是实现。Verilog将高级编程语言结构用于行为描述,包括:将高级编程语言结构用于行为描述,包括: wait, while, if then, case和和forever在每一个时钟上升沿,在每一个时钟上升沿, 若若ClrClr不是低电平,不是低电平, 置置Q Q为为D D值,值, 置置QbQb为为D D值的反值的反DFF无论何时无论何时ClrClr变低变低 置置Q Q为为0 0, 置置QbQb为为1 1菩率石厚侧偶剩甲涧解步消点信归期谬佩硬募蚁钢佬波刻褒丫潞滔机爵苫六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202448浙大微电子浙大微电子过程块是行为描述的基础过程块是行为描述的基础过程块有两种:过程块有两种:initial块,只能执行一次块,只能执行一次always块,循环执行块,循环执行戴相米水匹炎车跑慑拌巫伪墓捌诱拯银孪膛庆务岭敏废洲价域囊钝抖萍湖六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202449浙大微电子浙大微电子(1) initial 块语句模板:块语句模板:initialbegin 语句语句1;语句语句2;end(2)例initialbegin#2 Stream = 1;#5 Stream = 0;#3 Stream = 1;#4 Stream = 0;#2 Stream = 1;#5 Stream = 0;end(3)说明:说明:0时刻开始执行,时刻开始执行,只执行一次只执行一次同一模块内的多个同一模块内的多个initial过程过程块,块,0时刻开始时刻开始并行并行执行执行主要面向功能模拟,通常不主要面向功能模拟,通常不具有可综合性。具有可综合性。initial过程块不能嵌套使用过程块不能嵌套使用。initial语句中的积累延时语句中的积累延时打贪违怨党遵饵誊骋炼壕楚砾姜沽雇壬粟贰亡庭绵于静砸丹遥碗武雾填办六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202450浙大微电子浙大微电子always块语句模板块语句模板always ()begin /过程赋值过程赋值/if语句语句/case语句语句/while,repeat,for 语句语句/task,function调用调用end当表达式的值改变时当表达式的值改变时 就就执行一遍块内语句执行一遍块内语句always过程块不能嵌套使过程块不能嵌套使用用。盅煎哗篓嫌贸亚措漂枫复戎梭阉瑚扶编堂驾宇拨箍旁致塞怪删晴渝比湖洋六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202451浙大微电子浙大微电子posedge与negedge关键字 上升沿下降沿例:例:同步时序电路的时钟信号为同步时序电路的时钟信号为clk,clear为异步清为异步清0信号。信号。 敏感信号可写为:敏感信号可写为:/上升沿触发,或高电平清上升沿触发,或高电平清0时时 always (posedge clk or posedge clear) Begin 。 end/上升沿触发,或低电平清上升沿触发,或低电平清0时时always (posedge clk or negedge clear) Begin 。 end阶动随明郝僧旨爆晕鸭售轰雏伦峭屁姑做快黍每换仕腺索瞄涤镐妓插乎茧六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202452浙大微电子浙大微电子块块语语句句用用来来将将多多个个语语句句组组织织在在一一起起,使使得得他他们们在在语语法法上上如如同同一一个语句。块语句分为两类:个语句。块语句分为两类:顺顺序序块块:置置于于关关键键字字begin和和end之之间间,块块中中的的语语句句以以顺顺序序方式执行方式执行并行块:置于关键字并行块:置于关键字fork和和join之间,块中语句并行执行。之间,块中语句并行执行。Fork和和join语语句句常常用用于于test bench描描述述。这这是是因因为为可可以以一一起起给给出出矢矢量量及及其其绝绝对对时时间间,而而不不必必描描述述所所有有先先前前事件的时间。事件的时间。险再绩瞳旋欣烬避夫余蛛这逗渗往亲靶毛挪慧放职舔坷朗徘拜瑶纱隶另倔六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202453浙大微电子浙大微电子在顺序块中,语句一条接一条地计算执行。在顺序块中,语句一条接一条地计算执行。在并行块中,所有语句在各自的延迟之后立即计算执行。在并行块中,所有语句在各自的延迟之后立即计算执行。beginbegin#5a=3;#5a=3;#5a=5;#5a=5;#5a=4;#5a=4;endendforkfork#5a=3;#5a=3;#15a=4;#15a=4;#10a=5;#10a=5;joinjoin上面的两个例子在功能上是等价的。上面的两个例子在功能上是等价的。Fork-join例子里的赋例子里的赋值故意打乱顺序是为了强调顺序是没有关系的。值故意打乱顺序是为了强调顺序是没有关系的。注意注意fork-join块是典型的不可综合语句,并且在一些仿真块是典型的不可综合语句,并且在一些仿真器时效率较差。器时效率较差。 糠筋螟楚坪淖谚只泳沤坎泼诵美透访癌挝胖淹驹宴捣厄拱董户么他谍羚嚎六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202454浙大微电子浙大微电子有四种循环语句有四种循环语句:repeat:将一块语句循环执行确定次数。:将一块语句循环执行确定次数。repeat(repeat(次数表达式)次数表达式) whilewhile:在条件表达式为真时一直循环执行:在条件表达式为真时一直循环执行while(while(条件表达式)条件表达式) foreverforever:重复执行直到仿真结束:重复执行直到仿真结束foreverforever forfor:在执行过程中对变量进行计算和判断,在条件满足时执行:在执行过程中对变量进行计算和判断,在条件满足时执行for(for(赋初值;条件表达式;计算)赋初值;条件表达式;计算) 综合工综合工具还不具还不支持支持钞歧滋途娄诛卷股节持偿躇日凶莉辟恍漱巳溢榴实摧因豌娠殊工槽瞪石迂六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202455浙大微电子浙大微电子语法:语法: for ( ; ; ) 循环体语句或语句块;循环体语句或语句块;执行过程:执行过程:(1)执行执行“变量赋初值语句变量赋初值语句”(2)判断判断“条件表达式条件表达式”, 真:执行真:执行“循环体语句或语句块循环体语句或语句块”,继续执行第继续执行第(3)步步 假:循环结束,退出。假:循环结束,退出。(3)执行执行“变量增值语句变量增值语句”,转到(转到(2)继续执行)继续执行。绷起抖西土刀框喧铁毅赋肇痕榨菏澈支烽尝滔咒辰啤刹喜湾疾撅利埔汇式六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202456浙大微电子浙大微电子例例 数据选择器的数据流型描述数据选择器的数据流型描述。 module mux2x1_df (A, B, select, OUT); input A, B, select; output OUT; assign OUT = select ? B : A; endmodule数据流型描述条件运算符是一种描述组合逻辑功能的方法,用是一种描述组合逻辑功能的方法,用assign连续赋值语句来实现连续赋值语句来实现连连续续赋赋值值语语句句完完成成如如下下的的组组合合功功能能:等等式式右右边边的的所所有有变变量量受受持持续续监监控控,每每当当这这些些变变量量中中有有任任何何一一个个发发生生变变化化,整整个个表表达达式式被重新赋值并送给等式左端被重新赋值并送给等式左端候壕甩裔孤涡摧肮卒憨搪珠肆粳敛父碴扁屠溺讥鸣馏顽站庞轮趋有瓤随攻六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202457浙大微电子浙大微电子assign语句之间:并行执行(同时执行)语句之间:并行执行(同时执行)过程块之间(过程块之间( always, initial ):并行执行):并行执行 assign语句与过程块之间:并行执行语句与过程块之间:并行执行模块中的门的实例、模块实例语句:并行执行模块中的门的实例、模块实例语句:并行执行过程块(过程块( always, initial )内部)内部串行块串行块(begin-end):):顺序执行顺序执行并行块并行块(fork-join ):):并行执行并行执行堆量瓤泡剐芜遥筋融翻舌闲番卸滩沧惺削疗帝霄基续豺峨台偏牢跳迪募驭六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202458浙大微电子浙大微电子混合描述的1位全加器module full_add5(a,b,cin,sum,cout);input a,b,cin;output sum,cout;reg cout,m1,m2,m3; /在在always块中被赋值的变量应定义为块中被赋值的变量应定义为reg型型wire s1;xor x1(s1,a,b); /调用门元件调用门元件always(a or b or cin) /always块语句块语句begin m1=a&b; m2=b&cin; m3=a&cin; cout=(m1|m2)|m3;endassign sum=s1cin; /assign持续赋值语句持续赋值语句endmodule虏胰股康抡藉筐谈缠橱慢扳熬费狠聪状蜜耻慑老取吾丑辊霖浮翘动励跪诸六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202459浙大微电子浙大微电子可综合指的是所设计的可综合指的是所设计的指令和代码能转化为指令和代码能转化为具体的电路网表结构。具体的电路网表结构。综合过程就是将综合过程就是将Verilog HDL语言描语言描述的行为级或数据流述的行为级或数据流电路模型转化为电路模型转化为RTL级功能块或门级电路级功能块或门级电路网表的过程。而不可网表的过程。而不可综合的设计主要用于综合的设计主要用于设计的仿真验证。设计的仿真验证。行为级或数据行为级或数据流电路建模流电路建模RTL级功能块级功能块逻辑优化逻辑优化优化后的门级优化后的门级网表网表RTL级综合级综合门级综合门级综合RTL级综合得到由功能模块构成级综合得到由功能模块构成的电路结构的电路结构逻辑优化器以用户设定的面积和逻辑优化器以用户设定的面积和时间约束为目标优化电路网表时间约束为目标优化电路网表针对目标工艺产生优化后的电路针对目标工艺产生优化后的电路门级网表结构门级网表结构埋桶鲸渡悸狞竣绽缚幻秆积桑瞒光糜抨捧狰漠威或泌钞抚迢秦腮情趴确纲六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202460浙大微电子浙大微电子1、将硬件的行为以合理的方式映射为一些进程。将硬件的行为以合理的方式映射为一些进程。2、对于每个进程完成的操作,尽量选择最有效的算法。、对于每个进程完成的操作,尽量选择最有效的算法。3、了解综合器的性能,特别是了解综合工具支持的、了解综合器的性能,特别是了解综合工具支持的Verilog HDL可综合子集。以合理的代码风格引导综合工具生成硬件可综合子集。以合理的代码风格引导综合工具生成硬件4、对于固定值的信号要用常量代替。、对于固定值的信号要用常量代替。5、尽量共享复杂运算,可以共享的数据处理用函数和过程定义、尽量共享复杂运算,可以共享的数据处理用函数和过程定义6、明确指出过程的无关态,引导综合器进行优化。、明确指出过程的无关态,引导综合器进行优化。7、使用能够满足需要的最小数据宽度。、使用能够满足需要的最小数据宽度。8、用组合逻辑实现的电路和用时序逻辑实现的电路要分配到不、用组合逻辑实现的电路和用时序逻辑实现的电路要分配到不同的进程中。同的进程中。尹霖陇考檄傻骨芒湛摊自助焚急砍盼相把断时噬此漳贪貉拷钮然拔莉潭淤六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202461浙大微电子浙大微电子9、不要使用枚举类型的属性。、不要使用枚举类型的属性。10、Integer应加范围限制。应加范围限制。11、通常的可综合代码应该是同步设计。、通常的可综合代码应该是同步设计。12、除非是关键路径的设计,一般不采用调用门级元件来描述、除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。设计的方法,建议采用行为语句来完成设计。13、不使用初始化语句;不使用带有延时的描述;不使用循环、不使用初始化语句;不使用带有延时的描述;不使用循环次数不确定的循环语句,如次数不确定的循环语句,如forever,while等。等。14、用、用always过程描述组合逻辑,应在敏感信号列表中列出块过程描述组合逻辑,应在敏感信号列表中列出块中出现的所有输入信号。中出现的所有输入信号。15、所有的内部寄存器都应该能够被复位。在使用、所有的内部寄存器都应该能够被复位。在使用FPGA实现设实现设计时,应尽量使用器件的全局复位端作为系统总的复位,因计时,应尽量使用器件的全局复位端作为系统总的复位,因为该引脚的驱动功能最强,到所有逻辑单元的延时也基本相为该引脚的驱动功能最强,到所有逻辑单元的延时也基本相同,同样的道理,应尽量使用器件的全局时钟端作为系统外同,同样的道理,应尽量使用器件的全局时钟端作为系统外部时钟输入端。部时钟输入端。设计准则(续)券琳例咽视谜滦办盈贼卸皱蹭免畴滤叛央债渭竖绳痞醒纶滓肌吓搞尼茂今六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202462浙大微电子浙大微电子4、VHDL介绍介绍VHDL程序的基本单元与构成程序的基本单元与构成例例1. 多路选择器多路选择器entity mux is generic(m:TIME:=1ns); port(A,B,T: in BIT;Z: out BIT);end mux;当条件当条件T成立时成立时, 输出输出A路信号路信号;当条件当条件T不成立时不成立时, 输出输出B路信号路信号ABTZMUX分窑喳掷漳牺咐携鳃挥时邱缀胃鹰左荣渔瘤枷遇济狮惕禾吟瑚摹座避镐馏六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202463浙大微电子浙大微电子 architecture connect of mux is begin Cale:process(A,B,T) variable tmpl,tmp2,tmp3:BIT; begin tmp1:=A and T; tmp2:=B and (not T); tmp3:=tmp1 or tmp2; Z=tmp3 after m; end process;end connect:款口篓题申疏掖拂驱灼阀殊瞅褪裔槐率嘴霜急委晃鸿蛾协捕蹋司垛咆胶样六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202464浙大微电子浙大微电子例例2. 半加器半加器- The entity declarationentity Half_adder is port ( X Half_ SumX: in Bit ; Y adder CarryY: in Bit ; Sum : out Bit ;Carry : out Bit ) ; end Half_adder ;奈记咐刮祟圣媳量帖射丧律吾塔沏盐剂祖骆仆灾捧拒琵捍幽涩妓彬梢史札六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202465浙大微电子浙大微电子- The architecture body :architecture Behavioral_description of Half_adder isbeginprocess begin Sum = X xor Y after 5 Ns ;Carry A, Y = B, Sum = Temp_sum, Carry = Temp_carry_1 ) ;U1 : Half_adderport map ( X = Temp_sum , Y = Carry_in Sum = S , Carry = Temp _Carry_2 ) ;U2 : Or_gateport map ( In1 = Temp_carry_1, In2 = Temp_carry_2 , Out1 = Carry_out ) ;end structure ;逐狙稀尾鸿列煮腾隐靴烷哄勉岛键兰竞吮壮冷舌仪谢荚拦杏农挡擒报蚁踊六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202469浙大微电子浙大微电子VHDL 结构 (实体+结构体)entity 实体名 is 说明语句; begin 实体语句部分;end 实体名; Architecture 结构体名 of 实体名 is 说明语句; begin 并行处理语句; end 结构体名;说明模块的说明模块的外观外观说明模块的内部说明模块的内部功能功能或或结构结构 功能:功能:多路选择器多路选择器 结构:结构:全加器全加器井碘酚赊骗捆责沾抠谣凋位敌橇妨噎县策钝掘劝制狮荤填斯深滴攫漆旨露六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202470浙大微电子浙大微电子一个实体可以有多个不同的结构体一个实体可以有多个不同的结构体(比如有的速度快,有的硬件少)(比如有的速度快,有的硬件少)所以:对应于同一实体的结构体不允许同名,所以:对应于同一实体的结构体不允许同名, 而对应于不同实体的结构体可以同名。而对应于不同实体的结构体可以同名。entity Full_adder isarchitecture Structure of Full_adder isarchitecture Structure1 of Full_adder isentity mux isarchitecture Structure of mux is换壕瞎查哈傈用趣割擅守狞轮唤编钥随磁悬炙析拜蜡恰褂颅诗漆霞掖昼椭六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202471浙大微电子浙大微电子包包(Package)、库、库(Library)、配置配置(Configuration)在实体说明和结构体中说明的数据类型、常量和在实体说明和结构体中说明的数据类型、常量和子程序等只对相应的结构体可见,而不能被其他子程序等只对相应的结构体可见,而不能被其他设计实体使用。为了提供一组可被多个设计实体设计实体使用。为了提供一组可被多个设计实体共享的类型、常量和子程序说明,共享的类型、常量和子程序说明,VHDL提供了提供了包包(Package)包用来单纯的罗列要用到的信号定义、常数定义、包用来单纯的罗列要用到的信号定义、常数定义、数据类型,元件语句、函数定义和过程定义等,数据类型,元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一它是一个可编译的设计单元,也是库结构中的一个层次个层次畅化沟阜也孺岂萍缀惭搁首渡纫磋芒诽凭疑微嫉晃念调椭灌说揪菱组肉旦六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202472浙大微电子浙大微电子包(包(Package )包包分为分为包说明包说明和和包体包体两部分两部分包说明的一般形式是,Package包名 is 说明语句; end 包名; 包体的一般形式是: Package body包名 is 说明语句;end 包名; 包说明和相应包体的名称包说明和相应包体的名称必须一致必须一致包说明定义数据类型包说明定义数据类型, 给出函数的调用说明给出函数的调用说明 包体具体描述实现该函数包体具体描述实现该函数功能的语句(即函数定义)功能的语句(即函数定义)和数据的赋值和数据的赋值 这种分开描述的好处是,这种分开描述的好处是,当函数的功能需要作某些当函数的功能需要作某些调整时,只要改变包体的调整时,只要改变包体的相关语句就行了,使重新相关语句就行了,使重新编译的单元数目尽可能少编译的单元数目尽可能少 素篇几烙纽庚貌怖尖显彭近捶颖龙磊吵削海韧碘第懊迅绒啮宰企贺哀靖匙六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202473浙大微电子浙大微电子可见性可见性 包体中的内容不能被其它包体中的内容不能被其它VHDL元件引用,只对相元件引用,只对相应的包说明可见,而包说明中的内容才是通用的和可应的包说明可见,而包说明中的内容才是通用的和可见的(当然还必须用见的(当然还必须用use子句才能提供这种可见性)。子句才能提供这种可见性)。下面即为一个包说明及其相应包体的例子:Package Logic is type Three_level_logic is (0,1,z); function lnvert (input:Three_1evel_logic) return Three_1evel_logic;end logic;函数说明(对外可见)函数说明(对外可见)首蛹刊不尘里虽宙寇齐列萄肾梳坝呆钦稚略淹堑凶跺赣晒舒司弹夷氏媚涸六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202474浙大微电子浙大微电子package body Logic is function invert( input:Three_level_1ogic) return Three_level_logic is begin case lnput is when0 return1; when1 return0; whenz returnz; end case; end invert;end Logic; 函数定义(对外不可见)函数定义(对外不可见)秆宫窝吼熄范谁锦汰辫颐坊漓譬勇壮趾巨猫潍组众傣骆辫下叫损贱他直稚六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202475浙大微电子浙大微电子 在一个设计实体说明之前加上在一个设计实体说明之前加上use子句子句, 可以使包说明中的内容可见。可以使包说明中的内容可见。 如:如: use IEEE.STD_LOGlC_1164a11; 表示将表示将IEEE库中的库中的 STD_LOGIC_1164包中的所包中的所有说明项可见。有说明项可见。 又如:又如: use Logic.Three_level_logic; 表示将用户自定义的包表示将用户自定义的包Logic中的类型中的类型 Three_level_logic对相应的设计实体可见。对相应的设计实体可见。待磺吾累绝违镭堆筋杯欺邮且接宽额矣默搔桌景啄哇铃媳僧殿椅达卸津拐六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202476浙大微电子浙大微电子配置(配置(Configuration) 利用配置语句(又叫组装说明),可以为待利用配置语句(又叫组装说明),可以为待设计的实体从资源文件(库或包)中选择不设计的实体从资源文件(库或包)中选择不同行为和结构的结构体(做性能比较)。同行为和结构的结构体(做性能比较)。 配置语句的一般形式为:配置语句的一般形式为:configuration 配置名配置名 of 实体名实体名 is 配置说明:配置说明: use子句;子句; 语句说明;语句说明;end 配置名配置名;嚣敷偿雍砚纹赏他弛蔚发摔盛办硅跋帐软林慑宦忌蔡臆雕靛储捐汞阀暴报六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202477浙大微电子浙大微电子architecture Structure_View of Processor is*end Structure_View;library TTL.Work;configuration V4_27_87 of processor is use WorkAll; for Structure_View *end V4_27_87;嘶虏音叛证疹坦壮赌誓然盔柴苹咀瞬级伍斑细桔围吃昌俘舆赁缕右逮几蹬六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202478浙大微电子浙大微电子 库库( Library )库是编译后的数据的集合,它存放已经编库是编译后的数据的集合,它存放已经编译的实体、结构体、包和配置。译的实体、结构体、包和配置。库由库元组成,库元是可以独立编译的库由库元组成,库元是可以独立编译的VHDL结构。结构。 VHDL中有两类库元中有两类库元- 基本元和辅助元基本元和辅助元基本元包括实体说明、包说明和配置,基本元包括实体说明、包说明和配置,辅助元为包体和结构体。辅助元为包体和结构体。基本元对同一库中其它基本元都是不可见基本元对同一库中其它基本元都是不可见的,必须用的,必须用 use子句才能提供可见性。子句才能提供可见性。芥奈拇赶侨昌目乙胸茨刷芜蚊油烹炸媚汤敝命掀场韧诱素峰甸炭嘴坍兼针六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202479浙大微电子浙大微电子库的种类 VHDL语言中存在的库大致可以归纳为语言中存在的库大致可以归纳为5种:种:IEEE库库-IEEE认可的标准包集合认可的标准包集合STD库库-VHDL认可的标准包集合认可的标准包集合ASIC库库-与逻辑门一一对应的实体与逻辑门一一对应的实体用户定义的库用户定义的库-用户自定义的包和实体用户自定义的包和实体WORK库库-现行工作库,缺省库现行工作库,缺省库命沫妊枚喘然砧不每销却浙似颈依胜录嫩宙职代龋渡康仙绳政坊搽麓毒块六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202480浙大微电子浙大微电子库的使用库的使用 除了除了 WORK库外,其他库外,其他4类库在使用前都必须作说明,类库在使用前都必须作说明, 用用库子句库子句(Library)对不同库中的库元提出可见性。)对不同库中的库元提出可见性。Library的说明放在设计单元的最前面,其一般形式为:的说明放在设计单元的最前面,其一般形式为:Library库名;接着用库名;接着用 use子句使库中的包和包中的项可见。子句使库中的包和包中的项可见。例如:例如: Library IEEE; Use IEEESTD_LOGIC_1164all;对于同一库中的不同库元,用对于同一库中的不同库元,用use子句提供所需的可见性;子句提供所需的可见性;对于不同库中的库元,用库子句加上对于不同库中的库元,用库子句加上use子句提供可见性。子句提供可见性。弥修故肩拒肄泅聘碍咳宿刺捶票昏瓣起刨儒桌歹山狄水勾罚整愁旅毗耶泌六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202481浙大微电子浙大微电子库的作用范围库的作用范围 库语句的作用范围从一个实体说明开始到库语句的作用范围从一个实体说明开始到它所属的结构体和配置为止。它所属的结构体和配置为止。当一个源程序中出现两个以上的实体时,当一个源程序中出现两个以上的实体时,库语句应在每个实体说明语句前书写。库语句应在每个实体说明语句前书写。 骚虫菌苫担茧彪甲派咋讫掩五捣俘命愧狮聋霞砌姻始线丙率盖鞭竿踪衅嘲六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202482浙大微电子浙大微电子VHDL语言的对象和分类语言的对象和分类 VHDL中的对象主要有以下三种:中的对象主要有以下三种:信号信号(signal)全局量全局量,对应硬件中的连线对应硬件中的连线,赋值(赋值(=)可有延时)可有延时 变量变量(variable)局部量局部量,暂存某些值的载体暂存某些值的载体,赋值(赋值(:=)被立即执)被立即执行行常数常数(constant) 电路中的电源和地电路中的电源和地 趴尽捣底奢眠带滞胀范纽巍注尹桩掳袖坷躁彭畜现阅偶男搪蛤赏坡豹堪窍六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202483浙大微电子浙大微电子VHDL结构体的描述方式 行为描述行为描述对系统书写模型的描述对系统书写模型的描述 基本语句是进程语句基本语句是进程语句 用于系统数学模型或系统工作原理的仿真用于系统数学模型或系统工作原理的仿真 结构描述结构描述对系统子元件和子元件之间相互关系的描述对系统子元件和子元件之间相互关系的描述基本语句是元件实例化语句基本语句是元件实例化语句用于进行结构设计,与电原理图一一对应用于进行结构设计,与电原理图一一对应可以进行逻辑综合可以进行逻辑综合 独移袍飘张垒撼池谜峦莲柱出险紊擂痪孔暖腕终李慢嘎菏深态宝况架瑶肯六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202484浙大微电子浙大微电子顺序描述语句顺序描述语句与并发描述语句并发描述语句 顺序描述语句顺序描述语句 - 阻塞赋值语句阻塞赋值语句 并发描述语句并发描述语句 非阻塞赋值语句非阻塞赋值语句 昼菌行部凶聂谁锚巳痪胸寨豪港勋丙而毅群盆拷艾前靖恋杖抬嗣写送皇免六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202485浙大微电子浙大微电子THE END菠柄实溢口格曲二札肝婿匆趟欠骚醒入沼彬迅味朵哮懈判闲镇卑孕勾哨晨六讲数字集成电路设计与硬件描述语言六讲数字集成电路设计与硬件描述语言7/27/202486浙大微电子浙大微电子
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号