(2.9)--第6章 EDA技术及应用实验篇总结复习.ppt
第6章 EDA技术及应用实验篇总结复习6.1 计数器电路的设计实验1 1、阅读如下、阅读如下VHDLVHDL程序,回答如下问题:程序,回答如下问题:课前测试题答案:答案:A A答案:答案:B B。答案:答案:B B。答案:答案:A A。答案:答案:D D。内容提要内容提要实验目的;实验内容;实验设计计;VHDL程序;仿真波形设置;硬件验证结果。6.1.1 计数器电路的设计实验(1)EDA技术实验的特点:1.EDA技术实验是综合性的,因为它涉及硬件、软件和相关的专业知识;2.EDA技术实验又是设计性、创新性的,因为即使给出了参考设计方案或程序,自己还是需要根据实际进行修改甚至创新;3.所设即所见,也就是用软件设计的结果,经过编程下载后立即可以在EDA实验开发系统上立即看到结果。一、实验目的1学习Quartus/ISE Design Suite软件的基本使用方法。2学习GW48系列或其他EDA实验开发系统的基本使用方法。3学习VHDL程序的基本结构和基本语句的使用。二、实验内容设计并调试好一个计数范围为09999的4位十进制计数器电路CNT9999,并用GW48系列或其他EDA实验开发系统进行硬件验证,具体包括系统结构设计、VHDL程序设计、程序仿真与分析、逻辑综合分析、硬件逻辑验证等主要内容。三、实验设计1系统设计方案1图1 CNT9999电路原理图1CNT99992系统设计方案2图2 09999计数动态显示电路DTCNT9999原理图2底层的6个模块用VHDL文本输入,顶层的电路系统则采 用原理图输入或文本方式输入。DTCNT9999四、VHDL程序DTCNT9999顶层电路的VHDL程序设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DTCNT9999 IS PORT(CLK:IN STD_LOGIC;CLK2:IN STD_LOGIC;CLR:IN STD_LOGIC;ENA:IN STD_LOGIC;COM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY DCNT9999;ARCHITECTURE ART OF DCNT9999 IS COMPONENT CNT10 IS PORT(CLK,CLR,ENA:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO:OUT STD_LOGIC);END COMPONENT CNT10;COMPONENT CTRLS IS PORT(CLK:IN STD_LOGIC;SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END COMPONENT CTRLS;COMPONENT DISPLAY IS PORT(SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);DATAIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0);COM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT DISPLAY;SIGNAL S0,S1,S2:STD_LOGIC;SIGNAL SEL:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL DOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);U0:CNT10 PORT MAP(CLK,CLR,ENA,DOUT(3 DOWNTO 0),S0);U1:CNT10 PORT MAP(S0,CLR,ENA,DOUT(7 DOWNTO 4),S1);U2:CNT10 PORT MAP(S1,CLR,ENA,DOUT(11 DOWNTO 8),S2);U3:CNT10 PORT MAP(S2,CLR,ENA,DOUT(15 DOWNTO 12);U4:CTRLS PORT MAP(CLK2,SEL);U5:DISPLAY PORT MAP(SEL,DOUT,COM,SEG);END ARCHITECTURE ART;图2 09999计数动态显示电路DTCNT9999原理图2内容提要内容提要实验目的;实验内容;实验设计计;VHDL程序;仿真波形设置;硬件验证结果。6.1.2 计数器电路的设计实验(2)一、仿真波形设置底层的十进制计数器CNT10的仿真:图1 CNT10仿真输入设置及可能结果估计图二、硬件验证结果1硬件验证方案1图2 CNT9999电路原理图1图3 实验电路结构图NO.0对应实验模式0。设计实体I/O标识设计实体I/O来源/去向插座序号EP1C6Q2407I/O号管脚号CLK时钟信号源CLOCK9IO175CLR键3PIO2IO2235ENA键4PIO3IO3236DOUT3.0经译码后接数码管1PIO19PIO16IO19IO1616、15、14、13DOUT7.4经译码后接数码管2PIO23PIO20IO23IO2020、19、18、17DOUT11.8经译码后接数码管3PIO27PIO24IO27IO24132、128、41、21DOUT15.12经译码后接数码管4PIO31PIO28IO31IO28136、135、134、133备 注验证设备:GW48系列;实验芯片:EP1C6Q2407;实验模式:NO.0;模式图及管脚对应表详见教材图5.5和表5.3。表1 CNT9999(静态显示)管脚锁定过程表使用杭州康芯GW48系列实验开发系统进行硬件验证的结果:当编程下载成功后,首先将CLR设置为低电平,而将ENA设置为高电平,这时看到系统每隔1个CLK的周期,计数结果变化1次。假若改变CLK的时钟频率,计数结果的变化快慢,会跟着发生变化。在计数的过程中,若将ENA设置为低电平,这计数过程停止;若将CLR设置为高电平,则会对当前的计数结果进行清零。2硬件验证方案2设计实体I/O标识设计实体I/O来源/去向插座序号EP3C55F484C8管脚号CLK1时钟信号源FRQ_Q11AB16CLK2时钟信号源FRQ_Q15P20CLR按键SW1CON1.33N18ENA按键SW8CON2.59F8COM7.0接数码管7-0的公共端CON1.51-CON1.44V16、AA17、U22、V22、W22、Y22、Y21、AB20SEG7.0接数码管的驱动段h-aCON1.32-CON1.25M19、M21、N20、N21、P21、R21、W20、AA20备 注验证设备:北京革新GX-BICE-EDA/SOPC实验系统;实验芯片:EP3C55-FBGA484;管脚对应表详见参考资料:北京革新GX-BICE-EDA/SOPC(EP3C55-FBGA484)实验开发系统常用管脚表。表2 DTCNT9999(动态扫描显示)管脚锁定过程表计数结果DOUT3.0、DOUT7.4、DOUT11.8、DOUT15.12使用动态扫描的方式,分别在数码管0、数码管1、数码管2、数码管3上显示,使用北京革新GX-BICE-EDA/SOPC实验系统进行硬件验证的结果:首先将CLR设置为低电平,而将ENA设置为高电平,这时看到系统每隔1个CLK1的周期,计数结果变化1次。假若改变CLK1的时钟频率,计数结果的变化快慢,会跟着发生变化。假若先选定动态扫描时钟信号CLK2的频率比较低,我们看到每次在1个数码管上显示1位数据,每隔1个CLK2的周期,显示的数据位数和数码管在不停地变化,随着CLK2频率的增大,动态扫描变化的频率加快,当CLK2的频率达到一定数值后,最终计数结果的各位数据将同时在4个数码管上稳定的显示。第6章 EDA技术及应用实验篇6.2 数字秒表的设计实验主讲人:谭会生 教授内容提要内容提要实验目的;实验内容;实验设计计;VHDL程序;仿真波形设置。6.2 数字秒表的设计实验一、实验目的1学习Quartus/ISE Design Suite软件的基本使用方法。2熟悉GW48系列或其他EDA实验开发系统的基本使用方法。3学习VHDL基本逻辑电路的综合设计应用。二、实验内容设计并调试好一个计时范围为0.01s1h的数字秒表,并用GW48系列或其他EDA实验开发系统进行硬件验证,具体包括系统结构设计、VHDL程序设计、程序仿真与分析、逻辑综合分析、硬件逻辑验证等内容。三、实验设计1)系统设计方案1图1 数字秒表TIMES电路组成原理图每0.01S变化一次图1 数字秒表TIMES电路组成原理图假若用于验证的EDA实验开发系统上的数码管,没有外接的显示译码器,本设计方案应该在每个计数器CNT10/CNT6的输出CQ3:0端,再增设1个4/8显示驱动译码器。每0.1S变化1次每0.1S变化一次每1S变化1次每1S变化一次每10S变化1次每10S变化一次每1MIN变化1次每10MIN变化一次每1MIN变化一次每10MIN变化1次每1HOUR变化1次2)系统设计方案2图2 数字秒表DTTIMES电路组成原理图将计数结果使用动态扫描的方式进行显示底层的六个模块用VHDL文本输入,顶层的电路系统则采用原理图输入或文本方式输入。四、VHDL源程序分频器电路,就是将频率比较高的数字信号经过适当的处理后产生要求的频率比较低的数字信号。该电路的设计,第一步,需要计算分频常数,分频常数等于输入信号的频率除以输出信号的频率,本设计分频常数等于3000000/100=30000;其次,分频器的设计,实际上就是一个计数器的变换形式,也就是根据时钟信号的上升沿或下降沿进行计数,再根据计数的结果控制的输出高电平或低电平分频输出信号。-3 MHz100 Hz分频器的源程序CLKGEN.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CLKGEN IS PORT(CLK:IN STD_LOGIC;NEWCLK:OUT STD_LOGIC);END ENTITY CLKGEN;-3 MHz信号输入-100 Hz计时时钟信号输出ARCHITECTURE ART OF CLKGEN IS SIGNAL CNT:INTEGER RANGE 0 TO 10#29999#;BEGIN PROCESS(CLK)IS BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT=10#29999#THEN CNT=0;ELSE CNT=CNT+1;END IF;END IF;END PROCESS;分频计数器,由3 MHz时钟产生100 Hz信号 PROCESS(CNT)IS BEGIN IF CNT=10#29999#THEN NEWCLK=1;ELSE NEWCLK=0;END IF;END PROCESS;END ARCHITECTURE ART;计数溢出信号控制五、仿真波形设置在程序的调试和仿真中,由于程序中有关参数的原因,要观察有关输出的变化,需要运行较长的时间,或在一个给定的时间内,可能看不到有关输出的变化。这时我们可采取调整有关参数的方法进行仿真,待仿真证明程序正确后再复原到原程序。调整参数的具体方法是:先将需修改的内容用“-”注释掉并添加新的内容,而调试好后复原的方法就是将修改后的内容注释掉,而将原内容去掉注释。图3 使用注释的方法进行程序有关仿真参数的调整图4 CLKGEN的时序仿真结果(分频常数修改为30)第6章 EDA技术及应用实验篇6.3 数字频率计的设计主讲人:谭会生 教授内容提要内容提要实验目的;实验内容;实验设计计;VHDL程序;仿真波形设置。6.3 数字频率计的设计一、实验目的1学习Quartus/ISE Design Suite软件的基本使用方法。2熟悉GW48系列或其他EDA实验开发系统的基本使用方法。3学习VHDL基本逻辑电路的综合设计应用。二、实验内容设计并调试好8位十进制数字频率计,并用GW48系列或其他EDA实验开发系统进行硬件验证,具体包括系统结构设计、VHDL程序设计、程序仿真与分析、逻辑综合分析、硬件逻辑验证等内容。三、实验设计本实验就是设计一个8位十进制数字频率计,而频率就是周期性变化的信号在单位时间1S之内周期性变化的次数。因此频率测量的基本原理就是计算每秒钟内待测信号的脉冲个数,而脉冲的个数可通过计数被测信号上升沿的次数而得到,因为两次上升沿之间就是1个周期。所以频率计的设计,本质上就是一个特定计数器的设计。1系统设计方案1图1 8位十进制数字频率计FREQ电路组成原理图频率计的测频结果则分别通过外部的8个外部BCD译码器显示译码后,再接到8个数码管上进行显示。图2 测频控制信号发生器工作时序-CLK频率取1Hz-TSTEN脉宽为1s分频器电路CLKGEN,就是为了满足各种不同频率信号源而经过分频后能产生输出信号频率为1HZ的基准控制时钟信号。寄存器REG32B的设置,则可使显示的数据稳定,而不会由于周期性的清零信号而不断闪烁。十进制计数器CNT10,用于测频计数,该此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时计数禁止。2系统设计方案2图3 8位十进制数字频率计DTFREQ电路组成原理图底层的13个模块用VHDL文本输入,顶层的电路系统则采用原理图输入或文本方式输入。四、VHDL程序-测频控制信号发生器的源程序TESTCTL.VHD LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL IS PORT(CLK:IN STD_LOGIC;TSTEN:OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END ENTITY TESTCTL;-1 Hz测频控制时钟-计数器时钟使能-计数器清零-输出锁存信号ARCHITECTURE ART OF TESTCTL IS SIGNAL DIV2CLK:STD_LOGIC;BEGIN PROCESS(CLK)IS BEGIN IF CLKEVENT AND CLK=1 THEN DIV2CLK=NOT DIV2CLK;END IF;END PROCESS;1Hz时钟二分频程序 PROCESS(CLK,DIV2CLK)IS BEGIN IF CLK=0 AND DIV2CLK=0 THEN CLR_CNT=1;ELSE CLR_CNT=0;END IF;END PROCESS;LOAD=NOT DIV2CLK;END ARCHITECTURE ART;产生计数器的清零信号TSTEN=DIV2CLK;五、仿真波形设置图4 FREQ的时序仿真结果第6章 EDA技术及应用实验篇6.4 FIR滤波器的设计实验主讲人:谭会生 教授内容提要内容提要实验目的;实验内容;实验设计计;VHDL程序;仿真波形分析。6.4 FIR滤波器的设计实验一、实验目的1学习Quartus/ISE Design Suite软件的基本使用方法。2掌握GW48系列或其他EDA实验开发系统的基本使用方法。3学习VHDL程序设计中LPM兆功能块的程序调用及参数传递方法。4学习数字信号处理算法的分析、设计、编程与调试方法,包括参数的量化、数据的延迟、流水线的使用、仿真数据的输入、仿真结果的分析等。二、实验内容图1 转置结构的FIR滤波器G(Z)=0.48301+0.8365Z-1+0.2241Z-2-0.1294Z-3G(Z)=124/256+214Z-1/256+57Z-2/256-33Z-3/256Y(n)=124X(n)/256+214X(n-1)/256+57X(n-2)/256-33X(n-3)/256根据图示的转置FIR滤波器的原理,设计并调试好一个成一个滤波器长度为4的DaubechiesDB4转置FIR滤波器,并用GW48系列或其他EDA实验开发系统进行硬件验证。具体包括系统结构设计VHDL程序设计程序仿真与分析逻辑综合分析硬件逻辑验证三、实验设计图1 转置结构的FIR滤波器Y(n)=124 X(n)/256+214 X(n-1)/256+57 X(n-2)/256-33 X(n-3)/256延迟输出系数输入tnn+1n-1n-2n-30X(n)X(n-1)X(n-2)X(n-3)图2 输入端口X在不同时刻t输入数据表示示意图X(n+1)四、VHDL源程序LIBRARY LPM;USE LPM.LPM_COMPONENTS.ALL;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;(W1:INTEGER:=9;W2:INTEGER:=18;W3:INTEGER:=19;W4:INTEGER:=11;L:INTEGER:=4;MPIPE:INTEGER:=3);GENERIC类属说明-输入位宽-乘法器的位宽为2W1-输出位宽-滤波器的长度-流水线的级数ENTITY FIR IS (CLK:IN STD_LOGIC;LOAD_X:IN STD_LOGIC;X_IN:IN STD_LOGIC_VECTOR(W1-1 DOWNTO 0);C_IN:IN STD_LOGIC_VECTOR(W1-1 DOWNTO 0);Y_OUT:OUT STD_LOGIC_VECTOR(W4-1 DOWNTO 0);PORT端口说明-控制时钟信号-装载控制信号-数据输入端口-系数输入端口-数据输出端口END ENTITY FIR;SUBTYPE N1BIT IS STD_LOGIC_VECTOR(W1-1 DOWNTO 0);SUBTYPE N2BIT IS STD_LOGIC_VECTOR(W2-1 DOWNTO 0);SUBTYPE N3BIT IS STD_LOGIC_VECTOR(W3-1 DOWNTO 0);TYPE ARRAY_N1BIT IS ARRAY(0 TO L-1)OF N1BIT;TYPE ARRAY_N2BIT IS ARRAY(0 TO L-1)OF N2BIT;TYPE ARRAY_N3BIT IS ARRAY(0 TO L-1)OF N3BIT;SIGNAL X:N1BIT;SIGNAL Y:N3BIT;SIGNAL C:ARRAY_N1BIT;SIGNAL P:ARRAY_N2BIT;SIGNAL A:ARRAY_N3BIT;-输入的中间结果-输出的中间结果-系数矩阵-积矩阵-加法矩阵ARCHITECTURE ART OF FIR IS SIGNAL C:ARRAY_N1BIT;W1位数据L个单元-C实际上就是一个存储器或寄存器图3 信号C对应硬件示意图 SIGNAL P:ARRAY_N2BIT;-P实际上就是一个存储器或寄存器W2位数据L个单元图4 信号P对应硬件示意图 SIGNAL A:ARRAY_N3BIT;-A实际上就是一个存储器或寄存器W3位数据L个单元图5 信号A对应硬件示意图 LOAD:PROCESS IS BEGIN WAIT UNTIL CLK=1;IF(LOAD_X=0)THEN C(L-1)=C_IN;FOR I IN L-2 DOWNTO 0 LOOP C(I)=C(I+1);END LOOP;ELSE X=X_IN;END IF;END PROCESS LOAD;装载数据或系数的进程系数的装载-同时获得一个采样数据-系数右移一位-重复L-1次因此,经过4次装载,分别装入系数C0、C1、C2、C3 SOP:PROCESS(CLK)IS BEGIN IF CLKEVENT AND(CLK=1)THEN FOR I IN 0 TO L-2 LOOP A(I)=(P(I)(W2-1)&P(I)+A(I+1);END LOOP;A(L-1)=P(L-1)(W2-1)&P(L-1);END IF;Y=A(0);END PROCESS SOP;进行累加运算的进程累加运算图1 转置结构的FIR滤波器A(I)=(P(I)(W2-1)&P(I)+A(I+1);-完成加法A(2)、A(1)、A(0)的运算A(L-1)=P(L-1)(W2-1)&P(L-1);完成加法A(3)的运算,可以看成是P(3)与初始值为0的加法。-第一级抽头只有一个寄存器Y=A(0);-最右边的加法结果特别注意:A(I)=(P(I)(W2-1)&P(I)+A(I+1);A(L-1)W1,LPM_WIDTHB=W1,LPM_PIPELINE=MPIPE,LPM_REPRESENTATION=SIGNED,LPM_WIDTHP=W2,LPM_WIDTHS=W2)PORT MAP(CLOCK=CLK,DATAA=X,DATAB=C(I),RESULT=P(I);END GENERATE;例化L个流水线乘法器 Y_OUT=Y(W3-1 DOWNTO W3-W4);类属参数的映射端口映射-将最后乘加运算结果去掉多余的尾数END ARCHITECTURE ART;五、仿真波形分析图6 FIR的时序仿真结果Y_OUT(0)=124*X_IN(0)+214*X_IN(-1)+57*X_IN(-2)-33*X_IN(-3)/256 =(124*100+214*0+57*0-33*0)/256=48Y_OUT(1)=124*X_IN(1)+214*X_IN(0)+57*X_IN(-1)-33*X_IN(-2)/256 =(124*150+214*100+57*0-33*0)/256=156Y_OUT(2)=124*X_IN(2)+214*X_IN(1)+57*X_IN(0)-33*X_IN(-1)/256 =(124*200+214*150+57*100-33*0)/256=244Y_OUT(3)=124*X_IN(3)+214*X_IN(2)+57*X_IN(1)-33*X_IN(0)/256 =(124*250+214*200+57*150-33*100)/256=308Y_OUT(4)=124*X_IN(4)+214*X_IN(3)+57*X_IN(2)-33*X_IN(1)/256 =(124*0+214*250+57*200-33*150)/256=234图6 FIR的时序仿真结果输入X_IN输出Y_OUTX_IN(n)Y_OUT(n)1 1、阅读如下、阅读如下VHDLVHDL程序,回答如下问题:程序,回答如下问题:课后测试题答案:答案:A A答案:答案:B B。答案:答案:ABDABD。答案:答案:B B。答案:答案:A A。