1EDA技术实验指导书电路教研组2007.82实验一利用原理图输入法设计4位全加器一、实验目的:掌握利用原理图输入法设计简单组合电路的方法,掌握MAX+plusII的层次化设计方法。通过一个4位全加器的设计,熟悉用EDA软件进行电路设计的详细流程。二、实验原理:一个4位全加器可以由4个一位全加器构成,全加器的进位以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的低位进位输入信号cin相接。1位全加器f-adder由2个半加器h-adder和一个或门按照下列电路来实现。半加器h-adder由与门、同或门和非门构成。四位加法器由4个全加器构成三、实验内容:1.熟悉QuartusII软件界面,掌握利用原理图进行电路模块设计的方法。ABCOSOABCOSO≥1ainbincincoutsumh_adderh_adder&⊙&1ABCOSOf-adderainbincincoutsumainbincincoutsumainbincincoutsumf-adderf-adderf-adderA1B1A2B2A3B3A4B4ainbincincoutsumCICOS1S2S3S43QuartusII设计流程见教材第五章:QuartusII应用向导。2.设计1位全加器原理图(1)生成一个新的图形文件(file-new-graphiceditor)(2)按照给定的原理图输入逻辑门(symbol-entersymbol)(3)根据原理图连接所有逻辑门的端口,并添加输入/输出端口(4)为管脚和节点命名:在管脚上的PIN_NAME处双击鼠标左键,然后输入名字;选中需命名的线,然后输入名字。(5)创建缺省(Default)符号:在File菜单中选择CreateSymbolFilesforCurrentFile项,即可创建一个设计的符号,该符号可被高层设计调用。3.利用层次化原理图方法设计4位全加器(1)生成新的空白原理图,作为4位全加器设计输入(2)利用已经生成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.4.新建波形文件(file-new-OtherFiles-VectorWaveformFile),保存后进行仿真(Processing-StartSimulation),对4位全加器进行时序仿真。给出波形图,并分析仿资源管理区工程工作区编译状态显示区信息显示窗4真结果是否正确。5.思考如何在原理图中输入一个总线,并与其他总线连接?5实验二简单组合电路的设计一、实验目的:熟悉QuartusIIVHDL文本设计流程全过程。学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。二、实验原理VHDL硬件描述语言是一种可以从多个层次上对数字逻辑电路进行建模的国际标准(IEEE),本次实验是用VHDL设计一个简单的数字组合逻辑电路,并结合QuartusII环境和实验电路进行硬件测试。三、实验内容:1)根据实验一中一位全加器的电路原理图,改用VHDL语言文本输入方法,设计一位全加器,要求采用结构化的描述方法。设计完成后,利用QuartusII集成环境进行时序分析、仿真,记录仿真波形和时序分析数据。2)用VHDL语言设计一个四选一数据选择器电路。要求先设计一个二选一数据选择器mux21,然后利用元件例化语句设计四选一数据选择器mux41,同样请给出时序分析数据和仿真结果。3)硬件测试(选用器件EPF10K10Pin84)管脚锁定:1)一位全加器aPIO23(I/O19)30SW1bPIO24(I/O20)35SW2ciPIO25(I/O21)36SW3sPIO21(I/O16)27LED10coPIO19(I/O8)29LED122)四选一数据选择器a1PIO2330SW1a0PIO2435SW2d3PIO2738SW5d2PIO2839SW6d1PIO2947SW7d0PIO3042SW8yout29LED12四、思考题比较原理图输入法和文本输入法的优缺点。6实验结果:一位全加器的VHDL描述:仿真波形:硬件测试结果及分析:四选一数据选择器的VHDL描述:仿真波形:硬件测试结果及分析:回答问题:7实验三简单时序电路的设计一、实验目的:熟悉QuartusII的VHDL文本设计过程,学习简单时序电路的设计、仿真和硬件测试。二、实验原理时序逻辑电路是现代复杂数字电路的重要组成部分,往往占到整个设计的90%以上。触发器是时序电路的基本单元,本实验中将涉及到边沿触发和电平触发两种电路结构,其中边沿触发是实际电路实现的主要方式。三、实验内容1)设计一个上升沿触发的D触发器输入:D输出:Q触发时钟:CLK2)设计同步/异步清零D触发器触发器有两种清零方式:同步——当触发沿到来时,若清零信号有效,则实现清零;异步——任何时候清零信号一旦有效,触发器马上清零,而不论触发沿是否到来。在以上设计的D触发器基础上,加入清零端rst,分别实现同步和异步清零方式。3)设计一个高电平有效的锁存器输入:D输出:Q触发:E电平触发的锁存器与沿触发的触发器不同之处在于当触发端处于有效电平时,输出等于输出,随输入变化;触发端无效时输出保持不变。4)在QuartusII环境下对以上设计的模块进行编译,记录时序分析数据和仿真波形,并在实验电路上进行硬件测试。管脚锁定:DPIO2330SW1CLKCLK143频率源(35SW2)QPIO1929LED12四、问题1)在本次实验中你使用的VHDL描述方式是和实验二中一样的结构化描述还是行为级描述?这两种方式描述的编译出来的仿真结果是否相同?2)请在试验报告中分析和比较1)和3)的仿真和实测结果,说明两者之间的异同点。8实验结果:上升沿触发的D触发器的VHDL描述:仿真波形:硬件测试结果及分析:设计同步/异步清零D触发器的VHDL描述:仿真波形:硬件测试结果及分析:高电平有效的锁存器的VHDL描述:仿真波形:硬件测试结果及分析:回答问题:9实验四设计一个异步清零和同步时钟使能的4位加法计数器一、实验目的:学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。二、实验原理本试验中所要设计的计数器,由4位带异步清零的加法计数器和一个4位锁存器组成。其中,rst是异步清零信号,高电平有效;clk是计数时钟,同时也是锁存信号;ENA为计数器输出使能控制。当ENA为‘1’时,加法计数器的输出值加载于锁存器的数据端,;当ENA为‘0’时锁存器输出为高阻态。当计数器输出“1111”时,进位信号COUT为“1”。三、实验内容1)画出该计数器的原理框图。2)用VHDL语言完成上述计数器的行为级设计。可以采用分层描述的方式,分别设计计数器和输出锁存器模块,然后将两个模块组合成一个顶层模块。注意锁存器输出高阻时的描述的方式。3)用QuartusII对上述设计进行编译、综合、仿真,给出其所有信号的仿真波形和时序分析数据。4)通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。引脚锁定:clk:clk143clk1rst:PIO2435SW2ena:PIO2330SW1outy(3)PIO1929LED12outy(2)PIO2028LED11outy(1)PIO2127LED10outy(0)PIO2225LED9coutPIO1223LED72、思考题:如果需要设计带并行预置初始值的计数器,用VHDL应如何描述?10实验结果:计数器的原理框图:计数器的VHDL描述:仿真波形:硬件测试结果及分析:回答问题:11实验五七段数码显示译码器设计一、实验目的:学习7段数码显示译码器设计,学习VHDL的多层次设计方法。二、实验原理:七段数码管由8个(a,b,c,d,e,f,g,dp)按照一定位置排列的发光二极管构成,通常采取共阴极或者共阳极的设计,将8个二极管的同一极接在一起,通过分别控制另外的8个电极的电平,使二极管导通(发光)或截止(不发光)。七段数码显示译码器的功能就是根据需要显示的字符,输出能够控制七段数码管显示出该字符的编码。三、实验内容:1)用VHDL设计7段数码管显示译码电路,并在VHDL描述的测试平台下对译码器进行功能仿真,给出仿真的波形。2)数码管显示电路设计利用以上设计的译码器模块,设计一个可以在8个数码管上同时显示字符的电路。快速轮流点亮8个数码管,这样就可以实现同时显示8个字符的效果(尽管实际上同一时间只有一个数码管被点亮)。要实现以上功能,就必须按照一定时钟节拍,轮流使译码器输出所需要字符的编码;同时控制数码管的公共电极电平,轮流点亮数码管(可以使用上个实验设计的计数器,加实验板上的74ls138来实现)。3)用QuartusII对2)中的设计进行编译、综合、仿真,给出其所有信号的仿真波形和时序分析数据。4)通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。管脚锁定:*clk:clk143clk1D(3):PIO3030SW1D(2):PIO2435SW2D(1):PIO2536SW3D(0):PIO2637SW4A(6):PIO611SEGgLED1A(5):PIO510SEGfA(4):PIO49SEGeA(3):PIO38SEGdA(2):PIO27SEGcA(1):PIO16SEGb12A(0):PIO05SEGa*S(2):80*S(1):79*S(0):78四、思考题:尝试将74ls138的功能也用VHDL来实现,将所有逻辑功能都集成到FPGA里面。实验结果:数码管显示电路的原理框图:VHDL描述:仿真波形:硬件测试结果及分析:回答问题:13实验六数控分频器的设计一、实验目的:学习数控分频器的设计和测试方法。二、实验原理:数控分频器的功能为在不同输入信号时,对时钟信号进行不同的分频,在输出端输出不同频率的信号。该电路可以用具有并行预置功能的加法计数器实现,方法是对应不同的输入信号,预置数(初始计数值)设定不同的值,计数器以此预置数为初始状态进行不同模值的计数,当计数器的状态全为1时,计数器输出溢出信号。用计数器的溢出信号作为输出信号或输出信号的控制值,使输出信号的频率受控于输入的预置数。电路输出波形图:三、实验内容:1)根据实验原理画出电路框图,并计算在不同预置数时输出信号的频率与时钟频率的比值。2)编写实现数控分频器的VHDL程序。要求输出信号的占空比尽量为50%。提示:可以将计数器溢出信号输出给一个翻转触发器,溢出信号的边沿作为触发器的触发信号,触发器的输出就是分频器的输出(注意计数器初始计数值与输出频率之间的关系)。3)用QuartusII对设计进行编译、综合、仿真,给出仿真波形和时序分析数据。4)通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。输入不同的clk信号和不同的输入控制信号,测试输出波形。管脚锁定:clkclk143D(3)PIO2330SW1D(2)PIO2435SW2D(1)Pio2536SW3D(0)PIO2637SW4FoutPIO1929LED12四、思考题:如果需要进行奇数分频(如3分频),能否够保持输出波形的占空比为50%?如果不能,如何使占空比尽量接近50%;如果可以,应如何做?14实验结果:数控分频器的原理框图:数控分频器输出频率与输入时钟的关系:数控分频器的VHDL描述:仿真波形:硬件测试结果及分析:回答问题:15实验七4位十进制频率计的设计一、实验目的:设计一个4位十进制频率计,学习复杂数字系统的设计方法。二、实验原理:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的脉冲计数允许信号,1秒计数结束后,计数值(即所测信号频率)锁入锁存器,并为下一次测频作准备,即将计数器清零。三、试验内容:1、根据频率计的工作原理,将电路划分成控制器、计数器、锁存器和LED显示几个模块,控制器——产生1秒脉宽的计数允许信号、锁存信号和计数器清零信号计数器——对输入信号的脉冲数进行累计锁存器——锁存测得的频率值LED显示——将频率值显示在数码管上顶层文件框图如下:controllerDeci