《数字系统设计与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程序作注释。好的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。p37Verilog模块的模板module顶层模块名(输入输出端口列表);output输出端口列表;输出端口声明input输入端口列表;输入端口声明/*定义数据,信号的类型,函数声明*/reg信号名;逻辑功能定义assign结果信号名=表达式;使用assign语句定义逻辑功能/用always块描述逻辑功能always(敏感信号表达式)begin过程赋值/if-else,