报告四
- 格式:pdf
- 大小:734.32 KB
- 文档页数:11
电子科技大学电子工程学院数字系统EDA技术实验报告——实验四数字频率计的设计及实现李文学号:2010021030012指导老师:窦衡2013/5/11实验四数字频率计的设计及实现一、预习内容1、什么是数字频率计;2、数字频率计实现原理;3、写出原理草图和源程序。
二、实验目的1、学会数字频率计的设计方法;2、掌握自顶向下的设计方法,体会其优越性。
三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、用VHDL完成8位数字频率计的设计, 该频率计要求频率测量范围:1 Hz ~20 MHz;测量误差≤0.1%;具有清零复位功能;频率测量结果用八位数码管稳定显示;2、用实验系统箱实现该频率计,并用数码管显示所测的频率值。
五、实验原理与内容1、测频原理若某一信号在T秒时间里重复变化了N 次,则根据频率的定义可知该信号的频率fs 为:fs=N/T 通常测量时间T取1秒或它的十进制时间。
频率计方框图如下:1)时基T 产生电路:提供准确的计数时间T。
晶振产生一个振荡频率稳定的脉冲,通过分频整形、门控双稳后,产生所需宽度的基准时间T的脉冲,又称闸门时间脉冲。
注意:分频器一般采用计数器完成,计数器的模即为分频比。
2)计数脉冲形成电路:将被测信号变换为可计数的窄脉冲,其输出受闸门脉冲的控制。
3)计数显示电路:对被测信号进行计数,显示被测信号的频率。
计数器一般采用多位10 进制计数器;控制逻辑电路控制计数的工作程序:准备、计数、显示、复位和准备下一次测量。
2、具体实现:1) 测频控制逻辑电路(以1 秒为例)2)产生一个1秒脉宽的周期信号;3)对计数器的每一位计数使能进行控制;4)完成下一次测量前的计数器复位;以下是一种可能的时序关系:5)10 进制计数器要求具有计数使能端CNTEN、复位端CLR、进位输出端CO。
3、元件例化图(方框图):注意:用8个十进制计数器实现1MHz 计数。
六、实验步骤1、画出实验原理方框图;2、设计各个元件;3、进行元件例化;4、下载程序,查看数码管显示的频率是否和待测的频率相同。
七、实验源程序及实验结果源程序:1)1Hz时钟产生LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ONEHZ ISPORT(CLK0:IN STD_LOGIC;CLK1HZ:OUT STD_LOGIC);END ENTITY ONEHZ;ARCHITECTURE ART OF ONEHZ ISSIGNAL A:INTEGER RANGE 0 TO 2499999;--5M基准源SIGNAL B:STD_LOGIC;BEGINPROCESS(CLK0)BEGINIF CLK0'EVENT AND CLK0='1' THENIF A=2499999 THEN A<=0;B<=NOT B;ELSE A<=A+1;END IF;END IF;END PROCESS;CLK1HZ<=B;END ARCHITECTURE ART;2)250Hz扫描时钟产生LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FP250HZ ISPORT(CLK0:IN STD_LOGIC;CLK250HZ:OUT STD_LOGIC);END ENTITY FP250HZ;ARCHITECTURE ART OF FP250HZ ISSIGNAL A:INTEGER RANGE 0 TO 99999;--5M基准源SIGNAL B:STD_LOGIC;BEGINPROCESS(CLK0)BEGINIF CLK0'EVENT AND CLK0='1' THENIF A=99999 THEN A<=0;B<=NOT B;ELSE A<=A+1;END IF;END IF;END PROCESS;CLK250HZ<=B;END ARCHITECTURE ART;3)4-7译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY LED8421BCD ISPORT(Dout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);Din:IN STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY LED8421BCD;ARCHITECTURE ART OF LED8421BCD ISBEGINPROCESS(Din) ISBEGINCASE Din ISWHEN"0000"=>Dout<="0111111";WHEN"0001"=>Dout<="0000110";WHEN"0010"=>Dout<="1011011";WHEN"0011"=>Dout<="1001111";WHEN"0100"=>Dout<="1100110";WHEN"0101"=>Dout<="1101101";WHEN"0110"=>Dout<="1111101";WHEN"0111"=>Dout<="0000111";WHEN"1000"=>Dout<="1111111";WHEN"1001"=>Dout<="1101111";WHEN OTHERS=>Dout<="0000000";END CASE;END PROCESS;END ARCHITECTURE ART;4)扫描显示电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SMXS ISPORT(Din:IN STD_LOGIC_VECTOR(31 DOWNTO 0);Dout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);CLK0:IN STD_LOGIC);END ENTITY SMXS;ARCHITECTURE ART OF SMXS ISCOMPONENT LED8421BCD ISPORT(Dout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);Din:IN STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT;COMPONENT FP250HZ ISPORT(CLK0:IN STD_LOGIC;CLK250HZ:OUT STD_LOGIC);END COMPONENT;SIGNAL Dtemp:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL NUM:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SELtemp:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL CLK:STD_LOGIC;BEGINPROCESS(SELtemp,Din)ISBEGINCASE SELtemp ISWHEN"000"=>NUM<=Din(3 DOWNTO 0);WHEN"001"=>NUM<=Din(7 DOWNTO 4);WHEN"010"=>NUM<=Din(11 DOWNTO 8);WHEN"011"=>NUM<=Din(15 DOWNTO 12);WHEN"100"=>NUM<=Din(19 DOWNTO 16);WHEN"101"=>NUM<=Din(23 DOWNTO 20);WHEN"110"=>NUM<=Din(27 DOWNTO 24);WHEN"111"=>NUM<=Din(31 DOWNTO 28);WHEN OTHERS=>NUM<="0000";END CASE;END PROCESS;PROCESS(CLK)ISBEGINIF CLK'EVENT AND CLK='1' THENIF SELtemp=7 THENSELtemp<="000";ELSESELtemp<=SELtemp+1;END IF;END IF;END PROCESS;SEL<=SELtemp;U0:LED8421BCD PORT MAP(Dout,NUM);U1:FP250HZ PORT MAP(CLK0,CLK);END ARCHITECTURE ART;5)测频控制器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT(CLK:IN STD_LOGIC;TSTEN:OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END ENTITY TESTCTL;ARCHITECTURE ART OF TESTCTL ISSIGNAL DIV2CLK :STD_LOGIC;BEGINPROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1'THENDIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS(CLK,DIV2CLK) ISBEGINIF CLK='0'AND DIV2CLK='0'THENCLR_CNT<='1';ELSE CLR_CNT<='0';END IF;END PROCESS;LOAD<=NOT DIV2CLK;TSTEN<=DIV2CLK;END ARCHITECTURE ART;6)32位寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32 ISPORT(LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END ENTITY REG32;ARCHITECTURE ART OF REG32 ISSIGNAL Dtemp:STD_LOGIC_VECTOR(31 DOWNTO 0); BEGINPROCESS(LOAD) ISBEGINIF LOAD'EVENT AND LOAD='1' THENDtemp<=DIN;END IF;END PROCESS;DOUT<=Dtemp;END ARCHITECTURE ART;7)10进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK: IN STD_LOGIC;CLR: IN STD_LOGIC;ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CARRY_OUT: OUT STD_LOGIC);END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK,CLR,ENA) ISBEGINIF CLR='1'THEN CQI<="0000";ELSIF CLK'EVENT AND CLK='1'THENIF ENA='1'THENIF CQI<"1001"THEN CQI<=CQI+1;ELSE CQI<="0000";END IF;END IF;END IF;END PROCESS;PROCESS(CQI) ISBEGINIF CQI="1001"THEN CARRY_OUT<='1';ELSE CARRY_OUT<='0';END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;8)各元件连接LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FREQ ISPORT(FSIN,CLK0:IN STD_LOGIC;SEL:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0);Dout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ENTITY FREQ;ARCHITECTURE ART OF FREQ ISCOMPONENT CNT10 ISPORT(CLK: IN STD_LOGIC;CLR: IN STD_LOGIC;ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CARRY_OUT: OUT STD_LOGIC);END COMPONENT;COMPONENT REG32 ISPORT(LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT;COMPONENT TESTCTL ISPORT(CLK:IN STD_LOGIC;TSTEN:OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END COMPONENT;COMPONENT ONEHZ ISPORT(CLK0:IN STD_LOGIC;CLK1HZ:OUT STD_LOGIC);END COMPONENT;COMPONENT SMXS ISPORT(Din:IN STD_LOGIC_VECTOR(31 DOWNTO 0);Dout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);CLK0:IN STD_LOGIC);END COMPONENT;SIGNAL SCLK1:STD_LOGIC;SIGNAL SENA,SCLR,SLOAD:STD_LOGIC;SIGNAL S1,S2,S3,S4,S5,S6,S7,S8:STD_LOGIC;SIGNAL SD1,SD2:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINU1:ONEHZ PORT MAP(CLK0,SCLK1);U2:TESTCTL PORT MAP(SCLK1,SENA,SCLR,SLOAD);U3:REG32 PORT MAP(SLOAD,SD1,SD2);U4:SMXS PORT MAP(SD2,Dout,SEL,CLK0);U5:CNT10 PORT MAP(FSIN,SCLR,SENA,SD1(3 DOWNTO 0),S1);U6:CNT10 PORT MAP(S1,SCLR,SENA,SD1(7 DOWNTO 4),S2);U7:CNT10 PORT MAP(S2,SCLR,SENA,SD1(11 DOWNTO 8),S3);U8:CNT10 PORT MAP(S3,SCLR,SENA,SD1(15 DOWNTO 12),S4);U9:CNT10 PORT MAP(S4,SCLR,SENA,SD1(19 DOWNTO 16),S5);U10:CNT10 PORT MAP(S5,SCLR,SENA,SD1(23 DOWNTO 20),S6);U11:CNT10 PORT MAP(S6,SCLR,SENA,SD1(27 DOWNTO 24),S7);U12:CNT10 PORT MAP(S7,SCLR,SENA,SD1(31 DOWNTO 28),S8); END ARCHITECTURE ART;编译报告:仿真波形(功能仿真):实验照片:八、步骤总结、结果分析及心得体会先把充分理解频率计的原理,然后作出其原理框图,根据框图设计每一部分的程序实现,最后把各部分程序链接起来,编译调试。