EDA技术与数字系统设计PPT教学课件-第7章 设计实例.ppt_第1页
EDA技术与数字系统设计PPT教学课件-第7章 设计实例.ppt_第2页
EDA技术与数字系统设计PPT教学课件-第7章 设计实例.ppt_第3页
EDA技术与数字系统设计PPT教学课件-第7章 设计实例.ppt_第4页
EDA技术与数字系统设计PPT教学课件-第7章 设计实例.ppt_第5页
已阅读5页,还剩160页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章设计实例,实例1设计3-8译码器实例2设计BCD-七段显示译码器实例3设计计数器实例4设计模拟74LSl60计数器实例5设计交通灯控制器实例6设计乒乓球游戏机实例7设计扫描数码显示器实例8数字频率计的设计实例9设计数字钟实例10正弦信号发生器,实例1设计3-8译码器,一、目的(1)设计一个3-8译码器;(2)学习用VHDL进行逻辑描述;(3)学习设计仿真工具的使用方法。二、说明本设计实现一个3-8译码器,其逻辑功能如表7.1所示。,表7.13-8译码器的逻辑功能表,三、设计要求(1)要求用VHDL编写3-8译码器;(2)设计输入波形文件,并进行模块功能的仿真;(3)编程并实验验证;(4)更改设计,现场设计3-6译码器。四、总结报告要求(1)写出VHDL文件;(2)写出测试向量文件;(3)写出仿真和测试结果。,附1.1:3-8译码器的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;-库的说明ENTITYyima38aISPORT(A:INSTD_LOGIC_VECTOR(2DOWNTO0);Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0);-定义端口,3-8译码器有3个输入8个输出END;ARCHITECTUREBEHAVIOROFyima38aIS,BEGINPROCESS(A)-为A敏感信号BEGINCASEAISWHEN000=YYYYYYYYY=00000000;-CASE对应于真值表ENDCASE;ENDPROCESS;ENDBEHAVIOR;附1.2:引脚分配见表7.2(对于FLEX10K10器件)。,表7.23-8译码器的引脚分配,实例2设计BCD-七段显示译码器,一、目的(1)设计BCD-七段显示译码器,并在实验板上验证;(2)学习层次化的设计方法。,二、说明本设计实现一个BCD-七段显示译码器,设计时用按键作为输入,用一个数码管进行显示。本设计只使用一个数码管,选通第1个数码管。层次化设计是数字系统设计常用的设计方法。根据图形和硬件描述语言的特点,在层次化设计中,往往在顶层用电路图说明连接和I/O关系,在底层用VHDL语言描述模块的逻辑功能。本设计要求画出顶层电路图,编写BCD-七段显示译码器的VHDL文件,并且建立一个元件符号。,三、设计要求(1)画出顶层原理图,并为BCD-七段显示译码器建立一个元件符号;(2)用VHDL语言描述BCD-七段显示译码器;(3)设计输入信号波形,并进行设计仿真;(4)编程并进行实验验证。,四、总结报告要求(1)画出原理图并写出VHDL文件;(2)写出仿真和测试结果。附2.1:BCD-七段显示译码的程序。本实验实现一个七段LED显示译码电路,如图7.1所示。,图7.1BCD-七段显示译码的结构图,程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDEC7S1ISPORT(CLK:INSTD_LOGIC;LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0);EN:OUTSTD_LOGIC);ENDDEC7S1;,ARCHITECTUREBEHAVEOFDEC7S1ISSIGNALCNT4B:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENIFCNT4B9THENCNT4B=CNT4B+1;ELSECNT4BLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7S=0000000;ENDCASE;ENDPROCESS;EN=0;ENDBEHAVE;附2.2:引脚分配见表7.3(对于FLEX10K10器件)。,表7.3BCD-七段显示译码器的引脚分配,实例3设计计数器,一、目的(1)实现带计数允许和复位端的十进制、六进制和100进制计数器;(2)掌握计数器类型模块的描述方法;(3)体会ISP技术的优点。,二、说明计数器是数字电路系统中最基本的功能模块之一。设计十进制、六进制和100进制计数器,要求计数器有计数允许和复位输入及进位输出功能。计数时钟可以用2Hz信号,用LED显示计数值。本设计要求用仿真和测试两种手段来验证计数器的功能。实验时,可以通过修改十进制计数器的设计得到六进制、100进制计数器。,三、设计要求(1)设计带计数允许和复位输入的十进制计数器,要求完成顶层电路图和底层VHDL文件;(2)进行功能仿真;(3)下载并验证计数器功能;(4)按上述步骤设计六进制和100进制计数器;(5)为上述设计建立元件符号。,四、总结报告要求(1)画出原理图,并写出VHDL文件;(2)打印元件符号和仿真波形;(3)写出资源报告。附3.1:十进制计数器。(1)顶层电路图如图7.2所示。(2)引脚分配见表7.4(对于FLEX10K10器件)。,图7.2十进制计数器的顶层电路图,表7.4十进制计数器的引脚分配,(3)十进制计数器的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcnt10aISPORT(CLK,RST,ENA:INSTD_LOGIC;COUNT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);OUTY:OUTSTD_LOGIC);ENDcnt10a;,ARCHITECTUREbehaOFcnt10aISSIGNALc1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK,RST,ENA)BEGINIF(RST=1)THENc1=0000;ELSIF(CLKEVENTANDCLK=1)THENIFENA=1THENc1=1001)THENc1=0000;ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENIFc1=1001THENOUTY=1;ELSEOUTY=0;,ENDIF;ENDIF;COUNTLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SNULL;ENDCASE;ENDPROCESS;EN=0;END;,(1)顶层电路图如图7.3所示。(2)引脚分配见表7.5(对于FLEX10K10器件)。,图7.3100进制计数器顶层电路图,表7.5100进制计数器的引脚分配,(3)十进制计数器的程序同附3.1。(4)SCAN2A的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCAN2AISPORT(CLK_SCAN:INSTD_LOGIC;EN:OUTSTD_LOGIC;NO1_BCD,NO2_BCD:INSTD_LOGIC_VECTOR(3DOWNTO0);,SEL:OUTSTD_LOGIC_VECTOR(2DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(6DOWNTO0);ENDSCAN2A;ARCHITECTUREBEHAVEOFSCAN2AISSIGNALS1:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALBCD_OUT:STD_LOGIC_VECTOR(3DOWNTO0);BEGIN,PROCESS(CLK_SCAN)BEGINIFCLK_SCANEVENTANDCLK_SCAN=1THENIFS1001THENS1=S1+1;ELSES1BCD_OUTBCD_OUTBCD_OUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT=1111001;,ENDCASE;ENDPROCESS;EN=0;SEL=S1;ENDBEHAVE;,实例4设计模拟74LS160计数器,一、目的(1)模拟74LS160计数器的功能;(2)用仿真手段验证设计;(3)建立一个74LS160器件的元件符号。,二、说明本设计模拟74LS160计数器的功能。74LS160是一个十进制计数器,它具有计数允许、复位和预置数据功能。74LS160的逻辑功能说明如表7.6所示。,表7.674LS160的逻辑功能表,三、设计要求(1)设计一个类似74LS160的模块;(2)用仿真手段验证设计;(3)建立一个74LS160的模块符号。四、总结报告要求(1)写出源文件(原理图或VHDL文件);(2)画出仿真波形;(3)画出元件符号。,附4.1:74LS160的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcnt10eISPORT(CLK,RST,ENA,PEST:INSTD_LOGIC;W:INSTD_LOGIC_VECTOR(3DOWNTO0);COUNT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);OUTY,EN:OUTSTD_LOGIC);END;,ARCHITECTUREbehaOFcnt10eISSIGNALc1,c2:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK,RST,ENA)BEGINc2=W;IF(RST=1)THENc1=0000;ELSIF(CLKEVENTANDCLK=1)THENIFENA=1THEN,IFPEST=1THENc1=1001THENc1=0000;ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENIFc1=1001THENOUTY=1;,ELSEOUTY=0;ENDIF;ENDIF;COUNT=c1;ENDPROCESS;EN=0;ENDbeha;,实例5设计交通灯控制器,一、目的(1)设计交通灯控制器;(2)学习状态机的设计方法。,二、说明位于十字路口的交通灯,在A方向和B方向各有红、黄、绿三盏灯,按表7.7所列顺序进行循环。,表7.7交通灯的循环顺序,若完成以上内容后,可以考虑以下问题:(1)如何加长“绿灯亮”的持续时间?(2)如何实现各状态保持时间可调?预习时,先分析交通灯的工作原理,然后对状态进行编码,画出状态机框图,并编写VHDL文件和仿真文件。,三、设计要求(1)输入设计和仿真文件,并进行调试使逻辑功能和时序正确;(2)下载到实验板进行实际验证。四、总结报告要求(1)写出状态编码方案和状态机转移图;(2)打印顶层电路图和主要模块的VHDL文件;(3)写出测试结果及分析。附5.1:交通灯的顶层图见图7.4。,图7.4交通灯的顶层图,表7.8交通灯控制器的引脚分配,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFENPIN1ISPORT(CLK:INSTD_LOGIC;OUTY1,OUTY4:OUTSTD_LOGIC);ENDFENPIN1;ARCHITECTUREBEHAOFFENPIN1ISSIGNALC1:STD_LOGIC_VECTOR(2DOWNTO0);,SIGNALC2,C4:STD_LOGIC;SIGNALC3:STD_LOGIC_VECTOR(2DOWNTO0);BEGINPROCESS(CLK)BEGINIF(CLKEVENTANDCLK=0)THENC1=C1+1;IFC1=100THENC2=NOTC2;C1=000;ENDIF;,ENDIF;ENDPROCESS;PROCESS(C2)BEGINIFC2EVENTANDC2=0THENC3=C3+1;IFC3=011THENC4=NOTC4;C3=000;ENDIF;ENDIF;,ENDPROCESS;OUTY1=C2;OUTY4IFDIN=1THEN,STATEIFDIN=1THENSTATEIFDIN=1THENSTATE=S4;ELSESTATEIFDIN=1THENSTATEIFDIN=0THENSTATESTATEDATAOUTDATAOUTDATAOUTDATAOUTDATAOUT=110011;,ENDCASE;ENDPROCESS;EN0=1;EN1=1;ENDONE;,实例6设计乒乓球游戏机,一、目的(1)学习复杂状态机的设计方法;(2)掌握通过采样防止开关抖动的方法;(3)初步了解功能分割的方法。,二、说明本实验设计一个简单的乒乓球游戏机。它可由两个人进行游戏,游戏规则如下:(1)过早击球,对方获胜。(2)每次击球,若球飞出界外,则对方获胜。设计用6个发光二极管指示乒乓球的运动轨迹,2个发光二极管指示获胜方,2个按键开关代表双方的球拍,1个拨动开关用于复位和准备发球。,用按键开关KEY1和KEY2代表球拍时,输入击球信号低有效。因为一般的开关在大约20ms内信号不稳定,存在所谓的“开关抖动”,会产生多个脉冲影响电路的正常工作,所以含开关输入的设计需要做防抖处理。在本设计中可以用2Hz时钟采样KEY1和KEY2信号实现防抖。每次游戏后,用拨动开关复位即可重新进行较量。,设计时,需要考虑乒乓球的运动规律和游戏规则的要求。乒乓球运动可分解为3个因素,即位置、运动速度和运动方向。实验板上的6个发光二极管可以代表6个位置,即123456,根据游戏规则,在本方位置击球有效,在对方位置击球或球超出1位置或6位置,则对方获胜。游戏结果的两个状态,即左方胜和右方胜,进入左方胜或右方胜状态后,需要用复位开关退出上述两个状况。为节省资源,可以将游戏结果和乒乓球位置统一编码,共八个状态。,三、设计要求(1)分别输入状态机设计文件,并用仿真手段进行调试;(2)画出顶层电路图,并选择FLEX10K10芯片进行适配;(3)将设计生成的JEDEC文件下载到实验板上进行游戏。,四、总结报告要求(1)写出各状态机的状态编码方案、状态机转移图、VHDL文件和仿真结果;(2)画出顶层电路图;(3)写出测试记录。,实例7设计扫描数码显示器,一、目的(1)学习功能集成的设计方法;(2)设计6位扫描数码显示器。,二、说明本设计将前面完成的六进制计数器、3-8译码器、BCD-七段显示译码器设计和24选4多路数据开关集成在一起,实现两个6位的扫描数码显示器。在许多情况下为了节省I/O引脚和内部逻辑资源,常用动态扫描的方法进行显示。动态扫描显示利用了时分原理和人的视觉暂留现象。例如,6位扫描数码显示器将时间划分为6个扫描周期:周期1周期2周期3周期4周期5周期6,三、设计要求(1)输入24选4数据开关的VHDL文件,并进行仿真;(2)通过建立一个顶层电路图实现6位动态数码显示器;(3)应用仿真和编程两种手段调试设计文件;(4)修改电路图实现8位动态数码显示器。,四、总结报告要求(1)画出功能模块图,标明模块输入输出信号、连接关系和接口关系;(2)打印顶层电路图;(3)说明如何用功能集成的方法完成一个设计。,附7.1:源文件。由于MLAB-CPLD/FPGA-5实验开发系统中数码管设置方式为动态扫描显示,即由PIO29、PIO30、PIO31控制4051,从而产生位选信号,由PIO32、PIO33、PIO34、PIO35、PIO36、PIO37、PIO38产生段选信号,8位数码管采用共阴极连接方式,因此要想8位LED显示就必须设计动态扫描电路来实现。信号关系如图7.5所示。,图7.5动态扫描电路模块,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYscan8ISPORT(clk_scan:INSTD_LOGIC;en:OUTSTD_LOGIC;no1_bcd,no2_bcd,no3_bcd,no4_bcd:INSTD_LOGIC_VECTOR(3DOWNTO0);,no5_bcd,no6_bcd,no7_bcd,no8_bcd:INSTD_LOGIC_VECTOR(3DOWNTO0);sel:OUTSTD_LOGIC_VECTOR(2DOWNTO0);dout:OUTSTD_LOGIC_VECTOR(6DOWNTO0);ENDscan8;ARCHITECTUREbehaveOFscan8ISSIGNALs1:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALbcd_out:STD_LOGIC_VECTOR(3DOWNTO0);,BEGINPROCESS(clk_scan)BEGINIFclk_scanEVENTANDclk_scan=1THENs1bcd_outbcd_outbcd_outbcd_outbcd_outbcd_outbcd_outbcd_outbcd_outdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=1111001;ENDCASE;ENDPROCESS;EN=0;sel=s1;ENDbehave;,实例8数字频率计的设计,一、目的(1)学习系统设计的方法;(2)设计一个6位的数字频率计。,二、说明频率计是常用的测量仪器,它通过对单位时间内的信号脉冲进行计数,从而测量出信号的频率。设计一个6位频率计,可以测量1999999Hz的信号频率。,频率计工作时,先要产生一个计数允许信号即闸门信号,闸门信号的宽度为单位时间,例如1s或100ms。在闸门信号有效的时间内对被测信号计数,即为信号频率。测量过程结束,需要锁存计数值或留出一段时间显示测量值。下一次测量前,应该对计数器清零。频率计闸门时序如图7.6所示。,图7.6频率计闸门时序,三、设计要求(1)输入顶层电路图和下层设计文件;(2)利用仿真手段进行功能调试;(3)选择EPF10K10器件进行适配。本设计需要较多的资源,在布局或布线发生错误时,注意优化设计,减少逻辑资源的消耗;(4)下载JEDEC文件到实验板,测试实际的信号频率。,四、总结报告要求(1)画出功能分割图;(2)打印各层次的电路图和VHDL文件;(3)写出资源分配和统计报告;(4)写出测试结果。附8.1:数字频率计的顶层图如图7.7所示。附8.2:引脚分配见表7.9(对于EPF10K10器件)。,图7.7数字频率计的顶层图,表7.9数字频率计的引脚分配,附8.3:测频控制信号发生器(TESTCTL)的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYTESTCTLISPORT(CLK:INSTD_LOGIC;CNT_EN,RST_CNT,LOAD:OUTSTD_LOGIC);END;ARCHITECTUREBEHAVIOROFTESTCTLIS,SIGNALdiv2clk:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENdiv2clk=NOTdiv2clk;ENDIF;ENDPROCESS;PROCESS(CLK,div2clk)BEGIN,IF(CLK=0ANDdiv2clk=0)THENRST_CNT=1;ELSERST_CNT=0;ENDIF;ENDPROCESS;LOAD=NOTdiv2clk;CNT_EN=div2clk;ENDBEHAVIOR;,附8.4:锁存器(REG4B)的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYREG4BISPORT(LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(3DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);END;,ARCHITECTUREBEHAVIOROFREG4BISBEGINPROCESS(LOAD,DIN)BEGINIFLOADEVENTANDLOAD=1THENDOUT=DIN;ENDIF;ENDPROCESS;ENDBEHAVIOR;,附8.5:动态扫描输出(SCAN6A)的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCAN6AISPORT(CLK_SCAN:INSTD_LOGIC;EN:OUTSTD_LOGIC;NO1_BCD,NO2_BCD,NO3_BCD,NO4_BCD:INSTD_LOGIC_VECTOR(3DOWNTO0);,NO5_BCD,NO6_BCD:INSTD_LOGIC_VECTOR(3DOWNTO0);SEL:OUTSTD_LOGIC_VECTOR(2DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(6DOWNTO0);ENDSCAN6A;ARCHITECTUREBEHAVEOFSCAN6AISSIGNALS1:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALBCD_OUT:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK_SCAN),BEGINIFCLK_SCANEVENTANDCLK_SCAN=1THENIFS1=101THENS1=000;ELSES1BCD_OUTBCD_OUTBCD_OUTBCD_OUTBCD_OUTBCD_OUTBCD_OUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT=1111001;ENDCASE;ENDPROCESS;EN=0;SEL=S1;ENDBEHAVE;,实例9设计数字钟,一、目的(1)学习系统设计的方法;(2)设计并实现两个数字钟。,二、说明数字钟是计时仪器,它的功能大家都很熟悉。本设计对设计的电子钟要求如下:(1)能够对s(秒)、min(分)和h(小时)进行计时,每日按24h计时制;(2)min和h位能够调整;(3)设计要求使用自顶向下的设计方法。,三、设计要求(1)输入顶层电路图和下层设计文件;(2)利用仿真手段进行功能调试;(3)选择相应器件(与目标芯片相同)进行适配。本实验需要较多的器件资源,在布局或布线发生错误时,注意优化设计,减少逻辑资源的消耗;(4)下载JEDEC文件到实验板,测试实际的信号频率。,四、总结报告要求(1)画出功能分割图;(2)打印各层次的电路图和VHDL文件;(3)写出资源分配和统计报告;(4)写出测试结果。附9.1:数字钟的顶层电路图如图7.8所示。附9.2:引脚分配见表7.10(对于FLEX10K10器件)。,图7.8数字钟的顶层电路图,表7.10数字钟的引脚分配,附9.3:使能端(DEC)的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdecISPORT(CLK:INSTD_LOGIC;OUT1:OUTSTD_LOGIC;OUT2:OUTSTD_LOGIC;OUT3:OUTSTD_LOGIC;OUT4:OUTSTD_LOGIC;OUT5:OUTSTD_LOGIC);,END;ARCHITECTUREbehavOFdecISSIGNALCQI:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALCQE:STD_LOGIC_VECTOR(4DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENIFCQI=100THENCQI=000;ELSE,CQICQECQECQECQECQENULL;ENDCASE;,OUT1=CQE(0);OUT2=CQE(1);OUT3=CQE(2);OUT4=CQE(3);OUT5=CQE(4);ENDPROCESS;ENDbehav;,附9.4:锁存控制信号(DECODER)的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDECODERISPORT(CLK:INSTD_LOGIC;OUT1:OUTSTD_LOGIC;OUT2:OUTSTD_LOGIC;OUT3:OUTSTD_LOGIC;,OUT4:OUTSTD_LOGIC;OUT5:OUTSTD_LOGIC;OUT6:OUTSTD_LOGIC;OUT7:OUTSTD_LOGIC;OUT8:OUTSTD_LOGIC);END;ARCHITECTUREbehavOFDECODERISSIGNALCQI:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALCQE:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(CLK),BEGINIFCLKEVENTANDCLK=1THENIFCQI=111THENCQICQECQECQECQECQECQECQECQENULL;ENDCASE;,OUT1=CQE(0);OUT2=CQE(1);OUT3=CQE(2);OUT4=CQE(3);OUT5=CQE(4);OUT6=CQE(5);OUT7=CQE(6);OUT8=CQE(7);ENDPROCESS;ENDbehav;,附9.5:2/1选择器(MUX21)的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYMUX21ISPORT(A:INSTD_LOGIC_VECTOR(7DOWNTO0);B:INSTD_LOGIC_VECTOR(7DOWNTO0);S:INSTD_LOGIC;Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0);END;,ARCHITECTUREBEHAVOFMUX21ISBEGINPROCESS(A,B,S)BEGINIFS=0THENY=A;ELSEY=B;ENDIF;ENDPROCESS;ENDBEHAV;,附9.6:调整时钟(LA)的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYLAISPORT(CLK:INSTD_LOGIC;RST:INSTD_LOGIC;ENA:INSTD_LOGIC;INY:INSTD_LOGIC;COUT:OUTSTD_LOGIC);END;,ARCHITECTUREBEHAVOFLAISBEGINPROCESS(CLK,RST,ENA)BEGINIFRST=1THENIFENA=1THENCOUT=INY;ELSE,COUT=CLK;ENDIF;ENDIF;ENDPROCESS;ENDBEHAV;,附9.7:小时输出调整(CHANGE21)的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCHANGE21ISPORT(T:INSTD_LOGIC_VECTOR(7DOWNTO0);T_1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);T_2:OUTSTD_LOGIC_VECTOR(3DOWNTO0);END;,ARCHITECTUREBEHAVOFCHANGE21ISBEGINT_1(0)=T(0);T_1(1)=T(1);T_1(2)=T(2);T_1(3)=T(3);T_2(0)=T(4);T_2(1)=T(5);T_2(2)=T(6);T_2(3)=T(7);ENDBEHAV;,附9.8:产生横杠的程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYCONST1ISPORT(DOUT:OUTSTD_LOGIC_VECTOR(6DOWNTO0);END;ARCHITECTUREBEHAVOFCONST1ISBEGINDOUT=1000000;ENDBEHAV;,附9.9:LOAD与前面测频计中的REG4B文件相似,DECO3与SCAN8文件相似,DEC7S2文件为BCD-七段译码,计数器文件均可从前面的十进制修改得到。附9.10:VHDL编写的数字钟(第二种写法)的程序如下。,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYTIME_SET3ISPORT(CP:INSTD_LOGIC;SEGOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0);SELOUT:OUTSTD_LOGIC_VECTOR(2DOWNTO0);NUMOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);KEY:INSTD_LOGIC_VECTOR(2DOWNTO0);EN:OUTSTD_LOGIC);,ENDTIME_SET3;ARCHITECTUREAOFTIME_SET3ISCOMPONENTCOUNTER60PORT(CP:INSTD_LOGIC;BIN:OUTSTD_LOGIC_VECTOR(5DOWNTO0);S:INSTD_LOGIC;CLR:INSTD_LOGIC;EC:INSTD_LOGIC;CY60:OUTSTD_LOGIC);,ENDCOMPONENT;COMPONENTCOUNTER24PORT(CP:INSTD_LOGIC;BIN:OUTSTD_LOGIC_VECTOR(5DOWNTO0);S:INSTD_LOGIC;CLR:INSTD_LOGIC;EC:INSTD_LOGIC;CY24:OUTSTD_LOGIC);ENDCOMPONENT;,SIGNALBIN,DBS,DBH,DBM,SEL:STD_LOGIC_VECTOR(5DOWNTO0);SIGNALENB,S:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALCYS,CYM,CYH,SEC,CLR,SAMPLE,DLY_OUT,DIFF,MATCH,GLITTER:STD_LOGIC;SIGNALBCD:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALNUM:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALSEG:STD_LOGIC_VECTOR(6DOWNTO0);,SIGNALSTATE:STD_LOGIC_VECTOR(1DOWNTO0);BEGINCONNECTION:BLOCK-连接SIGNALADJ,ECS,ECM,ECH,SC:STD_LOGIC;BEGIN,U1:COUNTER60PORTMAP(CP,DBS,ENB(0),CLR,ECS,CYS);-计秒U2:COUNTER60PORTMAP(CP,DBM,ENB(1),CLR,ECM,CYM);-计分U3:COUNTER24PORTMAP(CP,DBH,ENB(2),CLR,ECH,CYH);-计时CLR=NOTKEY(0);SC=STATE(1)ANDSTATE(0);ADJ=SECAND(NOTSC)AND(NOTKEY(1);-ADJUST,ECS=(SECANDSC)OR(ADJANDSTATE(1)ANDNOTSTATE(0);ECM=(CYSANDSC)OR(ADJANDSTATE(0)ANDNOTSTATE(1);ECH=(CYMANDSC)OR(ADJANDNOTSTATE(1)ANDNOTSTATE(0);SELOUT=SEL;GEN:FORIIN0TO6GENERATESEGOUT(I)=SEG(I)AND(SCOR(GLITTERORNOTMATCH);ENDGENERATE;SEGOUT(7)=0;NUMOUT=NUM;ENDBLOCKCONNECTION;,FREE_COUNTER:BLOCK-自由计数器扫描SIGNALQ:STD_LOGIC_VECTOR(16DOWNTO0);SIGNALDLY,SDLY:STD_LOGIC;BEGINPROCESS(CP)BEGINIFCPEVENTANDCP=1THENDLY=Q(16);SDLY=Q(8);Q=Q+1;-计数ENDIF;,ENDPROCESS;GLITTER=Q(16);SEC=Q(16)ANDNOTDLY;-微分1HzS=Q(9DOWNTO7);-ABOUT250HzSAMPLE=Q(8)ANDNOTSDLY;-取样信号SEL=000WHENS=0ELSE001WHENS=1ELSE011WHENS=2ELSE100WHENS=3ELSE,110WHENS=4ELSE111WHENS=5ELSE010;ENB=001WHEN(S=0ORS=1)ELSE010WHEN(S=2ORS=3)ELSE100WHEN(S=4ORS=5)ELSE000;BIN=DBSWHENENB=001ELSE-选择秒,分,时DBMWHENENB=010ELSEDBHWHENENB=100ELSE,111111;MATCH=1WHEN(S=0ORS=1)ANDSTATE=10)ELSE1WHEN(S=2ORS=3)ANDSTATE=01)ELSE1WHEN(S=4ORS=5)ANDSTATE=00)ELSE0;ENDBLOCKFREE_COUNTER;BINARY_BCD:BLOCK-二进制与BCD的转换,BEGINBCD=00000000WHENBIN=0ELSE00000001WHENBIN=1ELSE00000010WHENBIN=2ELSE00000011WHENBIN=3ELSE00000100WHENBIN=4ELSE00000101WHENBIN=5ELSE00000110WHENBIN=6ELSE00000111WHENBIN=7ELSE00001000WHENBIN=8ELSE00001001WHENBIN=9ELSE,00010000WHENBIN=10ELSE00010001WHENBIN=11ELSE00010010WHENBIN=12ELSE00010011WHENBIN=13ELSE00010100WHENBIN=14ELSE00010101WHENBIN=15ELSE00010110WHENBIN=16ELSE00010111WHENBIN=17ELSE00011000WHENBIN=18ELSE00011001WHENBIN=19ELSE00100000WHENBIN=20ELSE00100001WHENBIN=21ELSE,00100010WHENBIN=22ELSE00100011WHENBIN=23ELSE00100100WHENBIN=24ELSE00100101WHENBIN=25ELSE00100110WHENBIN=26ELSE00100111WHENBIN=27ELSE00101000WHENBIN=28ELSE00101001WHENBIN=29ELSE00110000WHENBIN=30ELSE00110001WHENBIN=31ELSE00110010WHENBIN=32ELSE,00110011WHENBIN=33ELSE00110100WHENBIN=34ELSE00110101WHENBIN=35ELSE00110110WHENBIN=36ELSE00110111WHENBIN=37ELSE00111000WHENBIN=38ELSE00111001WHENBIN=39ELSE01000000WHENBIN=40ELSE01000001WHENBIN=41ELSE01000010WHENBIN=42ELSE01000011WHENBIN=43ELSE,01000100WHENBIN=44ELSE01000101WHENBIN=45ELSE01000110WHENBIN=46ELSE01000111WHENBIN=47ELSE01001000WHENBIN=48ELSE01001001WHENBIN=49ELSE01010000WHENBIN=50ELSE01010001WHENBIN=51ELSE01010010WHENBIN=52ELSE01010011WHENBIN=53ELSE01010100WHENBIN=54ELSE01010101WHENBIN=55ELSE,01010110WHENBIN=56ELSE01010111WHENBIN=57ELSE01011000WHENBIN=58ELSE01011001WHENBIN=59ELSE11111111;ENDBLOCKBINARY_BCD;SELECT_BCD:BLOCK-BCD选择其一,BEGINNUMSEGMENT7CODE;BEGIN-GFEDCBA,SEG=0111111WHENNUM=0ELSE0000110WHENNUM=1ELSE1011011WHENNUM=2ELSE1001111WHENNUM=3ELSE1100110WHENNUM=4ELSE1101101WHENNUM=5ELSE1111101WHENNUM=6ELSE0000111WHENNUM=7ELSE1111111WHENNUM=8ELSE1101111WHENNUM=9ELSE0000000;,ENDBLOCKSEVEN_SEG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论