数字系统设计与Verilog-HDL.docx

上传人:夺命阿水 文档编号:1114472 上传时间:2024-03-15 格式:DOCX 页数:23 大小:535.12KB
返回 下载 相关 举报
数字系统设计与Verilog-HDL.docx_第1页
第1页 / 共23页
数字系统设计与Verilog-HDL.docx_第2页
第2页 / 共23页
数字系统设计与Verilog-HDL.docx_第3页
第3页 / 共23页
数字系统设计与Verilog-HDL.docx_第4页
第4页 / 共23页
数字系统设计与Verilog-HDL.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《数字系统设计与Verilog-HDL.docx》由会员分享,可在线阅读,更多相关《数字系统设计与Verilog-HDL.docx(23页珍藏版)》请在课桌文档上搜索。

1、数字系统设计与VerilogHDL复习EDA(ElectronicDesignAutomation)就是以计算机为工作平台,以EDA软件工具为开发环境,以PLD器件或者ASlC专用集成电路为目标器件设计实现电路系统的一种技术。1 .电子CAD(ComputerAidedDesign)2 .电子CAE(ComputerAidedEngineering)3 .EDA(ElectronicDesignAutomation)EDA技术及其开展p2EDA技术的应用范畴1.3数字系统设计的流程基于FPGA/CPLD的数字系统设计流程1.原理图输入(SChematiCdiagrams)2、硬件描述语言(HD

2、L文本输入)设计输入(1) ABEL-HDL(2) AHDL(3) VHDL(4) Verilog HDLA IEEEW硬件描述语言与软件编程语言有本质的区别综合(Synthesis)将较高层次的设计描述自动转化为较低层次描述的过程行为综合:从算法表示、行为描述转换到存放器传输级(RTL)逻辑综合:RTL级描述转换到逻辑门级(包括触发器)幅员综合或结构综合:从逻辑门表示转换到幅员表示,或转换到PLD器件的配置网表表示综合器是能自动实现上述转换的软件工具,是能将原理图或HDL语言描述的电路功能转化为具体电路网表的工具软件程序编译器_CPU指令/数据代码:COMPILEROlOOlO100OlO1

3、100CASM.程序(a)软件语言设计目标流程VhdlatErilog程序硬件描述语言综合器(b)硬件语言设计目标流程为ASlC设计提供的电路网表文件SYNTHESIZER适配适配器也称为结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,并产生最终的可下载文件对CPLD器件而言,产生熔丝图文件,即JEDEC文件;对FPGA器件那么产生BitStream位流数据文件p8仿真(Simulation)功能仿真(FunctionSimulation)时序仿真(TimingSimulation)仿真是对所设计电路的功能的验证p9编程(PrOgraln)把适配后生成的编程文件装入到PL

4、D器件中的过程,或称为下载。通常将对基于EEPROU工艺的非易失结构PLD器件的下载称为编程(Program),将基于SRAU工艺结构的PLD器件的下载称为配置(Configure)O习题1.1现代EDA技术的特点有哪些?1. 2什么是Top-down设计方式?1.3数字系统的实现方式有哪些?各有什么优缺点?1. 4什么是IP复用技术?IP核对EDA技术的应用和开展有什么意义?1.5用硬件描述语言设计数字电路有什么优势?1. 6基于FPGA/CPLD的数字系统设计流程包括哪些步骤?1.7 什么是综合?常用的综合工具有哪些?1.8 功能仿真与时序仿真有什么区别?第2章FPGA/CPLD器件2.

5、1PLD的分类PLD的开展历程GAL器件AMD公司 推出PAL 器件内嵌复杂 功能模块 的 SoPC熔丝编程的PROM 和PLA器件FPGA器件 EPLD器件CPLD器件PLD的集成度分类一般将GAL22V10 (500门750门)作为简单PLD和高密度PLD的分水岭PLD器件按照可以编程的次数可以分为两类:(1) 一次性编程器件(OTP,OneTimeProgrammable)(2)可屡次编程器件OTP类器件的特点是:只允许对器件编程一次,不能修改,而可屡次编程器件那么允许对器件屡次编程,适合于在科研开发中使用。按编程特点分类p15(1)熔丝(Fuse)反熔丝(Antifuse)编程元件(3

6、)紫外线擦除、电可编程,如EPRoM。(4)电擦除、电可编程方式,(EEPROMs快闪存储器(FlashMemory),如多数CPLD静态存储器(SRAM)结构,如多数FPGA按编程元件和编程工艺分类PLD器件的原理结构图2. 2PLD的根本原理与结构PLD电路符号表不(a)与门国标符号B=&(b)与门习惯符号ClTBlTPl刈P2P3(d)或门国标符号与门、或门的表示(c)PLD中与阵列的表示PLD连接表示法(a)固定连接(b)可编程连接(C)未连接PLD的输入缓冲电路简单阵列的表示米IJD-Dp20PROMP21PROM用PROM完成半加器逻辑阵列查找表结构输入D输入C输入B输入A4输入L

7、UT及内部结构图p23习题2. 1PLA和PAL在结构上有什么区别?2.2 说明GAL的OLMC有什么特点,它怎样实现可编程组合电路和时序电路?2.3 简述基于乘积项的可编程逻辑器件的结构特点?2.4 基于查找表的可编程逻辑结构的原理是什么?2.5 基于乘积项和基于查找表的结构各有什么优缺点?2.6 CPLD和FPGA在结构上有什么明显的区别,各有什么特点?2.7 FPGA器件中的存储器块有何作用?p24第3章QuartusII集成开发工具设计输入基于QUartUSII进行EDA设计开发的流程p26设计一个半加器QUartUSII-(fcschBlockl-Blockl-ADDERh-adde

8、r.bdf*厘JEieEdtlewprojectfisslgnmehtsIlDMeWctrf+NQPenCtri+O三oseOrI+F4Ei4送)NewProject5zard.IOpenPcoject.Ctrl+JConvertMA+PLUSIProject.SaveProjectClosfiProjectQSaveCtrl+SSaveSaveCurrentReportSectionASCreateUpdateCreatetfDlDesignFileforCurrentFieExportv.ConvertProgrammingFites.CreateSymbolfilesforCurrent

9、FileCreatefilHDtIncludeRlesforCurrentFileP27设计一个全加器连接好的全加器原理图f_adder.bdf习题3-1基于QUartUSll软件,用D触发器设计一个2分频电路,并做波形仿真,在此根底上,设计一个4分频和8分频电路,做波形仿真。3-2基于QUartUSII软件,用7490设计一个能计时(12小时)、计分(60分)和计秒(60秒)的简单数字钟电路。设计过程如下:(1)先用QUartUSll的原理图输入方式,用7490连接成包含进位输出的模60的计数器,并进行仿真,如果功能正确,那么将其生成一个部件;(2)将7490连接成模12的计数器,进行仿真,

10、如果功能正确,也将其生成一个部件;(3)将以上两个部件连接成为简单的数字钟电路,能计时、计分和计秒,计满12小时后系统清。重新开始计时。(4)在实现上述功能的根底上可以进一步增加其它功能,比方校时功能,能随意调整小时、分钟信号,增加整点报时功能等。第4章基于宏功能模块的设计功能仿真波形p31lpm_counter计数器功能仿真波形altpllinclkaresetClkRatioPh (dg)DC()Co2/50.0050.00Cl2/10.0050.00iclk frequency: 100.000 MHz Operation 岫de: NormalCOOUTPUTIS COdOutput-

11、IZ_|s 1locked*wr*r*wwSutputI/I、 H!=instCyclone锁相环电路1.rLnrUmnJUmrLrLrmmnJirUUmJmrLrmnRrLrumJmJmrLrumRrLrmmfTJLJLJLrLrjLJLJLJLJkJLJLJLJLJLTLTJLl三三11JUl三Ul三三11三三三三三l三三三三三三l三三R三三l三11三I三三in11三JUUlIkd功能仿真波形习题4. 1采用QUartUSII软件的宏功能模块lpm_counter设计一个模为60的加法计数器,进行编译和仿真,查看仿真结果。4 .2采用QUartUSII软件的宏功能模块lpm_rom,用查表

12、的方式设计-个实现两个8位无符号数加法的电路,并进行编译和仿真。4.3先利用LPALROM设计4位X4位和8位X8位乘法器各一个,然后用Verilog语言分别设计4位X4位和8位X8位乘法器,比拟两类乘法器的运行速度和资源耗用情况。5 .4用数字锁相环实现分频,假定输入时钟频率为IoUHz,想要得到6IHz的时钟信号,试用edtpll宏功能模块实现该电路。第5章VerilogHDL设计初步5. 2VeriIOg设计举例【例1】4位全加器moduleadder4(cout,sum,ina,inb,cin);output3:0sum;outputcout;input3:0ina,inb;input

13、cin;assigncout,sum=ina+inb+cin;endmodulep36Verilog程序的特点(1) VerilOg程序是由模块构成的。每个模块的内容都嵌在module和endmodule两个关键字之间;每个模块实现特定的功能;模块是可以进行层次嵌套的。(2)每个模块首先要进行端口定义,并说明输入和输出口(input、OUtPUt或inout),然后对模块功能进行描述。(3)VeriIog程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写。(4)除了endmodule等少数语句外,每个语句的最后必须有分号。(5)可以用/*/和对Verilog程序作注释。好的源程序都应

14、当加上必要的注释,以增强程序的可读性和可维护性。p37Verilog模块的模板module顶层模块名(输入输出端口列表);output输出端口列表;输出端口声明input输入端口列表;输入端口声明/*定义数据,信号的类型,函数声明*/reg信号名;逻辑功能定义assign结果信号名=表达式;使用assign语句定义逻辑功能/用always块描述逻辑功能always(敏感信号表达式)begin过程赋值/if-else,CaSe语句/while,repeat,for循环语句/task,function调用end/调用其他模块调用模块名moduleIanIe例化模块名(端口列表Portist);门元

15、件例化门元件关键字例化门元件名(端口列表portist);endmodulep38习题5.1 用Verilog设计一个8位加法器,并进行综合和仿真,查看综合结果和仿真结果。5.2 用VerilOg设计一个8位计数器,并进行综合和仿真,查看综合结果和仿真结果。第6章VeriIogHDL语法与要素标识符(Identifiers)标识符(Identifiers)VeriIog中的标识符可以是任意一组字母、数字以及符号$”和(下划线)的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。Examples:countCOUNT/COUNT与count是不同的_Al_d2以下划线开

16、头R56_68FIVEp41 整数 实数 字符串6.2常量程序运行中,值不能被改变的量称为常量(constants),Verilog中的常量主要有如下3种类型:p42整数按如下方式书写:+/-即+/Y位宽 小于 =小于或等于 大于 =大于或等于p545 .等式运算符(EqualityOperators)=等于!二不等于=:全等!=不全等6 .缩位运算符(Reductionoperators)6 与与非I或】或非C异或C;同或7 .移位运算符(shiftoperators)右移左移p578 .条件运算符(conditionaloperators)三目运算符,其定义方式如下:signal=cond

17、ition?true_expression:false_expression;即:信号=条件?表达式1:表达式2;当条件成立时,信号取表达式1的值,反之取表达式2的值。p589 .位拼接运算符(concatenationoperators)该运算符将两个或多个信号的某些位拼接起来。使用如下:信号1的某几位,信号2的某几位,信号n的某几位p59习题6.1 以下标识符哪些是合法的,哪些是错误的?Cout,8sum,a*b,data,wait,initial,$latch6.2 以下数字的表示是否正确?6,dl8,BxO,5,bxll,da30,10d2,hzF6.3 定义如下的变量和常量:(1)定

18、义一个名为COUrIt的整数;(2)定义一个名为ABUS的8位Wire总线;(3)定义一个名为address的16位reg型变量,并将该变量的值赋为十进制数128;(4)定义参数Delay参数值为8;(5)定义一个名为DELAY的时间变量;(6)定义一个32位的存放器MYREG;(7)定义一个容量为128,字长为32位的存储器MYMEM;第7章Verilog行为语句p61VerilogHDL行为语句initialalways/块语句由1_1/-ill4ffPrI:赋值语句UZ4tB2/2t+i11B-一/if-else/case/循环语句for/repeatwhileforeverdefine

19、/include/vifdef,else,endif/p627.1过程语句initialalways在一个模块(module)中,使用initial和always语句的次数是不受限制的。initial语句常用于仿真中的初始化,initial过程块中的语句仅执行一次;always块内的语句那么是不断重复执行的。p63always过程语句使用模板always(敏感信号表达式event-expression)begin过程赋值/if-else,case,casex,CaSeZ选择语句/while,repeat,for循环/task,function调用end“always”过程语句通常是带有触发条件

20、的,触发条件写在敏感信号表达式中,只有当触发条件满足时,其后的“begin-end”块语句才能被执行。P647.2 块语句块语句是由块标志符begin-end或fork-join界定的一,组语句,当块语句只包含一条语句时,块标志符可以缺省。begin-end串行块中的语句按串行方式顺序执行。比方:beginregb=rega;regc=regb;end由于begin-end块内的语句顺序执行,在最后,将regb、regc的值都更新为rega的值,该begin-end块执行完后,regb、regc的值是相同的。p657.3 赋值语句持续赋值语句(ContinuousAssignments)ass

21、ign为持续赋值语句,主要用于对wire型变量的赋值。比方:assignc=a&b;在上面的赋值中,a、b、C三个变量皆为Wire型变量,a和b信号的任何变化,都将随时反映到C上来。p667.4 条件语句(if-else语句)if-else语句使用方法有以下3种:(1) if(表达式)语句1;(2) if(表达式)语句1;else语句2;(3) if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;elseif(表达式n)语句n;else语句n+1;p67case语句的使用格式如下。case(敏感表达式)值1:语句1;CaSe分支项值2:语句2;值n:语句n;

22、default:语句n+1;endcasecase语句P687.5循环语句repeatloopinitialbeginfor(i=0;i4;i=i+l)out=out+1;endinitialbeginrepeat(5)out=out+1;endinitialbegini=0;while(iO)i=i+l;endforloopwhileloop在Verilog中存在四种类型的循环语句,用来控制语句的执行次数。这四种语句分别为:(1) forever:连续地执行语句;多用在“initial”块中,以生成时钟等周期性波形。(2) repeat:连续执行一条语句n次。(3) while:执行一条语句

23、直到某个条件不满足。(4) for:有条件的循环语句。p69for语句for语句的使用格式如下(同C语言):for(表达式1;表达式2;表达式3)语句;即:for(循环变量赋初值;循环结束条件;循环变量增值)执行语句;p707.6 编译指示语句VerilOg允许在程序中使用特殊的编译向导(CompilerDirectives)语句,在编译时,通常先对这些向导语句进行“预处理”,然后再将预处理的结果和源程序一起进行编译。向导语句以符号开头,以区别于其它语句。VeriIog提供了十几条编译向导语句,如:define、ifdefxelse、endif、restall等。比拟常用的有define,in

24、clude和ifdef、else、endif等。P71宏替换define.define语句用于将一个简单的名字或标志符(或称为宏名)来代替一个复杂的名字或字符串,其使用格式为:define宏名(标志符)字符串如:definesumina+inb+inc+ind在上面的语句中,用简单的宏名SUm来代替了一个复杂的表达式ina+inb+inc+ind,采用了这样的定义形式后,在后面的程序中,就可以直接用SUin来代表表达式ina+inb+inc+ind了。P72文件包含includeinclude是文件包含语句,它可将一个文件全部包含到另一个文件中。其格式为:include“文件名”使用inclu

25、de语句时应注意以下几点:(1) 一个include语句只能指定一个被包含的文件。(2) include语句可以出现在源程序的任何地方。被包含的文件假设与包含文件不在同一个子目录下,必须指明其路径名。(3)文件包含允许多重包含,比方文件1包含文件2,文件2又包含文件3等。p737.7 任务与函数任务(task)任务定义格式:task任务名;/注意无端口列表端口及数据类型声明语句;其它语句;endtask任务调用的格式为:任务名(端口1,端口2,);需要注意的是:任务调用时和定义时的端口变量应是一-对应的。p74函数的目的是返回一个值,以用于表达式计算函数的定义格式:function返回值位宽或

26、类型说明函数名;端口声明;局部变量定义;其它语句;endfunction返回值位宽或类型说明是一个可选项,如果缺省,那么返回值为1位存放器类型的数据。函数(function)p75任务与函数的比拟比较项目任务(task)函数(function)输入与输出可有任意个各种类型的参数至少有一个输入,不能将InOUt类型作为输出调用任务只可在过程语句中调用,不能在连续赋值语句assign中调用函数可作为表达式中的一个操作数来调用,在过程赋值和连续赋值语句中均可以调用定时事件控制(#,和wait)任务可以包含定时和事件控制语句函数不能包含这些语句调用其它任务和函数任务可调用其它任务和函数函数可调用其它函

27、数,但不可以调用其它任务返回值任务不向表达式返回值函数向调用它的表达式返回一个值p76思考与练习7.1 试编写求补码的Verilog程序,输入是带符号的8位二进制数。7.2 试编写两个四位二进制数相减的VeriIog程序。7.3 有一个比拟电路,当输入的一位842IBCD码大于4时,输出为1,否那么为0。试编写出VerilOg程序。7.4 试编写一个实现3输入与非门的VeriIog源程序。P77思考与练习7.5 用VeriIog语言设计一个类似74138的译码器电路,用SynPlify软件对设计文件进行综合,观察RTL级综合视图和门级综合视图。7.6用Verilog语言设计一个功能类似7416

28、1的电路,用SynPlify软件对设计文件进行综合,观察RTL级综合视图和门级综合视图。7.7用Verilog设计一个8位加法器,用QuartusII软件进行综合和仿真。7. 8用Verilog设计一个8位计数器,用QuartusII软件进行综合和仿真。第8章数字设计的层次与风格P79Verilog设计的描述风格结构(Structural)描述行为(Behavioural)描述数据流(DataFlow)描述p80在Verilog程序中可通过如下方式描述电路的结构 调用VerilOg内置门元件(门级结构描述) 调用开关级元件(晶体管级结构描述) 用户自定义元件UDP(也在门级)8. 2结构(St

29、ructural)描述p81门级结构描述的2选IMUXmoduleMUXl(out,a,b,sei);outputout;inputa,b,sei;not(sel_,sei);and(al,a,sel_),(a2,b,sei);or(out,al,a2);8.3 行为描述就是对设计实体的数学模型的描述,其抽象程度远高于结构描述方式。行为描述类似于高级编程语言,当描述一个设计实体的行为时,无需知道具体电路的结构,只需要描述清楚输入与输出信号的行为,而不需要花费更多的精力关注设计功能的门级实现。p83行为描述的2选IMUXoutmodulemux2(out,a,b,sei);outputout;i

30、nputa,b,sei;regout;always(aorborsei)beginif(sei)out=b;elseout=a;endendmodulep848.4 数据流描述数据流描述方式主要使用持续赋值语句,多用于描述组合逻辑电路,其格式为:assignLHSnet=RHSexpression;右边表达式中的操作数无论何时发生变化,都会引起表达式值的重新计算,并将重新计算后的值赋予左边表达式的net型变量。p85数据流描述的2选IMUXmoduleMUX3(out,a,b,sei);outputout;inputa,b,sei;assignout=sei?b:a;endmodulep86i

31、ncludefulladdl.vz,moduleadd41(sum,cout,a,b,cin);output3:0sum;outputcout;input3:0a,b;inputcin;full_addlf(a0,b0,cin,sum0,cinl);fulladdlf1(al,bl,cinl,suml,cin2);full_addlf2(a2,b2,cin2,sum2,cin3);full_addlf3(a3,b3,cin3,sum3,cout);endmodule结构描述的4位级连全加器p87moduleadd42(cout,sum,a,b,cin);output3:0sum;outputcout;input3:0a,b;inputcin;assigncout,sum=a+b+cin;endmodule数据流描述的4位加法器p88习题8. 1VerilOg支持哪几种描述方式,各有什么特点?8.2 分别用结构描述和行为描述方式设计一个根本的D触发器,并进行综合。8.3 分别用结构描述和行为描述方式设计一个JK触发器,并进行综合。8.4 试编写同步模5计数器程序,有进位输出和异步复位端。8.5 编写4位串/并转换程序。8.6 编写4位并/串转换程序。8.7 编写4位除法电路程序。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号