您好,欢迎访问三七文档
1为什么要使用UNSIGNED.ALLLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;为什么要打开这个程序包2原因VHDL是一种强数据类型语言。要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。对于算术运算符,如“+”,“-”等,要求操作数必须是整型。对于不是整型的数据要进行算术运算,就必须把非整型数据转换为整型数据。因此,就必须打开STD_LOGIC_UNSIGNED这个程序包。3转换函数表P34函数说明STD_LOGIC_1164包TO_STDLOGICVECTOR(A)TO_BITVECTOR(A)TO_LOGIC(A)TO_BIT(A)由BIT_VECTOR转换成STD_LOGIC_VECTOR由STD_LOGIC_VECTOR转换成BIT_VECTOR由BIT转换成STD_LOGIC由STD_LOGIC转换成BITSTD_LOGIC_ARITH包CONV_STD_LOGIC_VECTOR(A,位长)CONV_INTEGER(A)由INTEGER,UNSIGNED和SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED和SIGNED转换成INTEGERSTD_LOGIC_UNSIGNED包CONV_INTEGERSTD_LOGIC_VECTOR转换成INTEGER4分频器1.分频器的概念分频器是一般是用于音箱内的一种电路装置,是指将不同频段的信号区分开来,用以将输入的音乐信号分离成高音、中音、低音等不同部分,然后分别送入相应的高、中、低音喇叭单元中重放。分频器是音箱中的“大脑”,对音质的好坏至关重要。功放输出的音乐讯号必须经过分频器中的各滤波元件处理,让各单元特定频率的讯号通过。好音箱的分频器,能有效地修饰喇叭单元的不同特性,优化组合,使得各单元扬长避短,淋漓尽致地发挥出各自应有的潜能,使各频段的频响变得平滑、声像相位准确,才能使高、中、低音播放出来的音乐层次分明、合拍,明朗、舒适、宽广、自然的音质效果。本课程涉及的分频器是用于降低频率,如输入为12HZ的信号进行12分频输出为1HZ的信号,就是12分频器,或者称这个分频器的分频比是1:12。52.占空比(DUTYCYCLE)占空比在电信领域中有如下含义:在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:正脉冲宽度1ΜS,信号周期4ΜS的脉冲序列占空比为0.25或者为1:4。6使用VHDL基本语句设计分频器电路分频器电路在VHDL中一般采用计数器进行描述。根据要求的分频比和占空比的不同,相应的描述方法也不同。71.分频比是2的整数次幂,占空比是0.5例7.1对时钟信号CLK进行2分频,4分频,8分频,16分频。ARCHITECTURERTLOFCLK_DIVISSIGNALCOUNT:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIF(CLK’EVENTANDCLK=’1’)THENIF(COUNT=”1111”)THENCOUNT=(OTHERS=’0’);ELSECOUNT=COUNT+1;ENDIF;ENDIF;ENDPROCESS;CLK_DIV2=COUNT(0);CLK_DIV4=COUNT(1);CLK_DIV8=COUNT(2);CLK_DIV16=COUNT(3);ENDRTL;82.分频比不是2的整数次幂,但是偶数,占空比是0.5例7.2对时钟信号CLK进行6分频。ARCHITECTURERTLOFCLK_DIVISSIGNALCOUNT:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALCLK_TEMP:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF(CLK’EVENTANDCLK=’1’)THENIF(COUNT=”10”)THENCOUNT=(OTHERS=’0’);CLK_TEMP=NOTCLK_TEMP;ELSECOUNT=COUNT+1;ENDIF;ENDIF;ENDPROCESS;CLK_DIV6=CLK_TEMP;ENDRTL;93.分频比是偶数,占空比是和分频比相同。例7.3将输入的时钟信号进行16分频,分频信号的占空比为1:15。ARCHITECTURERTLOFCLK_DIVISSIGNALCOUNT:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIF(CLK’EVENTANDCLK=’1’)THENIF(COUNT=”1111”)THENCOUNT=(OTHERS=’0’);ELSECOUNT=COUNT+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK)BEGINIF(CLK’EVENTANDCLK=’1’)THENIF(COUNT=”1111”)THENCLK_DIV16=‘1’;ELSECLK_DIV=‘0’;ENDIF;ENDIF;ENDPROCESS;ENDRTL;104.分频比是奇数,占空比是0.5。例7.4将输入的时钟信号进行5分频,分频信号的占空比为1:1。ARCHITECTUREONEOFCLKDIV5_1TO2ISSIGNALCNT:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALOUT_TEMP1,OUT_TEMP2:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFRISING_EDGE(CLK)THENIFCNT=100THENCNT=000;ELSECNT=CNT+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,CNT)BEGINIFFALLING_EDGE(CLK)THENIF(CNT2)THENOUT_TEMP1='1';ELSEOUT_TEMP1='0';ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,CNT)BEGINIFRISING_EDGE(CLK)THENIF(CNT2)THENOUT_TEMP2='1';ELSEOUT_TEMP2='0';ENDIF;ENDIF;ENDPROCESS;CLKOUT=OUT_TEMP2OROUT_TEMP1;END;11功能仿真4分频电路(占空比位1:2)仿真波形如图7.2所示。1210分频电路(占空比位1:2)仿真波形如图7.3所示。135分频电路(占空比位2:5)仿真波形如图7.4所示。145分频电路(占空比位1:2)仿真波形如图7.5所示。15周四实验:n进制加法计数译码显示电路(n=你学号后3位)任务与要求:1、VHDL设计n进制加法计数器2、VHDL设计BCD-7段显示译码器3、VHDL设计动态扫描电路4、VHDL设计分频器电路5、原理图设计n进制带3个数码管显示的加法n进制计数电路16n进制加法计数译码显示电路的实体符号17设计分析n进制加法计数译码显示电路由n进制加法分频器电路、计数器电路、显示电路、动态扫描电路组成。其中,计数器电路、译码显示电路就是项目6做过的计数显示译码器电路,故本项目其实只要完成分频器电路和动态扫描电路的设计。18动态扫描为什么要动态扫描?因为EDA实验箱上的六个数码管的使能端连接到3-8译码器,当3-8译码器输出有效时,数码管点亮。在一个瞬间(时刻),3-8译码器的只有一个输出有效,只能点亮一个数码管。但是现在要同时显示三个数码管,就必须要使3-8译码器输出变换的很快,利用人眼的视觉残余惰性,看上去好像同时点亮了三个数码管。19如何设计动态扫描电路?经过以上分析,只要3-8译码器输出变换得很快,就能实现。那么如何使3-8译码器输出快速变换呢?只要在很短时间内给3-8译码器送不同的输入。那么如何使3-8译码器的输入快速变换?做一个3选1多路选择器,使选择信号快速变换,将3选1的输出连到3-8译码器的输入即可。如何使选择信号快速变换?做一个快速的计数器,将计数输出连接到3选1的选择信号即可。如何做快速计数器?只要计数的时钟频率高就可以实现了。20为什么要使用分频器因为只有一个外部时钟,而需要两个时钟,一个是计数时钟,另一个是扫描时钟。扫描时钟的频率远大于计数时钟。因此,需要将扫描时钟进行分频。如何设计分频器?21仿真因为使用了动态扫描,故仿真波形不是很直观。可以不做波形仿真。22管脚分配rst:P41K1en:P42K2clk:P55CLK1ledseg0:P72LED_aledseg1:P73LED_bledseg2:P78LED_cledseg3:P79LED_dledseg4:P80LED_eledseg5:P81LED_fledseg6:P82LED_gledsel0:P68LED_SEL0ledsel1:P69LED_SEL1ledsel2:P70LED_SEL2cout:P116OUT123实验箱开关设置与连接设置跳接:开关K6和K7为ON,其余为OFF。跳线连接:用导线将CLK1和1Hz的脉冲信号源连接起来。24硬件测试1)K1为OFF,EN为ON,数码管显示从0~n-1的计数;2)K1为ON,EN为ON或OFF,数码管显示字符0;3)K1为OFF,EN为OFF,数码管保持显示0~n-1的计数中的某个字符。25请在进入实验室前在做好充分的准备!
本文标题:EDA技术分频器
链接地址:https://www.777doc.com/doc-2139117 .html