1、8位十进制显示数字频率计带周期设计报告EDA期末考试设计报告 设计题目:8位十进制显示数字频率计(带周期测量) 学校:梧州学院 系别:电子信息工程系 班别:09电本2班 姓名:陈迪学号:200900604215 组员:刘芸云 王缉俭 指导老师:黄玉健1、设计内容:8位十进制显示数字频率计(带周期测量)。二、设计目的与要求:1、 设计电路实现测量199999999Hz方波信号的频率以及其周期,并以十进制的方式显示。2、 要求其数值用七段LED数码管或液晶屏显示。3、 在实验系统上硬件测试,验证此设计的功能。4、 画出实体图,设计原理图,要求用Protel设计出具体的电路原理图。三、设计原理:8位
2、十进制显示数字频率计(带周期测量)是由8位十进制频率计、8位十进制周期测量器和带锁存功能的64选32数据选择器构成。频率计基准信号采用8Hz的方波信号,而周期测量采用基准信号为50MHz的方波信号。其中,频率计和周期测量由相同的32位数据锁存器和8位十进制计数器及不同的测频控制电路构成。为使电路设计更加简单快捷,且方便阅读与理解,本电路使采用模块化的设计思想,先由VHDL源程序对各个模块进行独立编写、测试,然后封装,再用原理图方式进行连接、整合与波形和硬件仿真。例如将用CLOCK5、CLOCK2输入标准频率,CLOCK0输入被测频,用数码管显示频率和周期。Protel设计原理图:1、频率测量的
3、基本原理:根据频率的定义,若某一信号在T时间内重复变化N次,则可知该信号的频率为:f =N/T 对此可采用数字逻辑电路中的门电路来实现,如图:在与门端加入被测信号,另一端加宽度为T1的控制信号(称闸门信号),输出端仅能在T1时间内有波形的出现,然后送入计数器计数,得N*T2=T1所以f =N/T1。进一步分析可知,多周期测量可以减小误差。因此,电路设计时我们采用基准信号的8个周期为一个T1。如图CNT-EN信号 在T1时间结束的同时输出一个作用于计数器锁存信号load,在下一个T1来临前输出一个清零信号RST使得计数器复位,为下一次测量做好准备。电路的基准信号为8Hz,由方程可知f=N/(8*
4、(1/8))=N,从而计数器的数值就是被测信号的频率。2、测量周期的基本原理:如图所示为计数器测量信号周期的原理框图。它是由上图的 标准信号和输入信号位置对调而构成的。可以看出,被测信号经过放大后,形成闸门信号,周期为T2。标准频率的周期为T1,在闸门时间内,标准频率通过闸门形计数脉冲,送至计数器计数,进过译码显示为N。所以T2=N*T1=N/f1。同理,多周期测量也可减小误差,但是由于被测信号为测频控制信号,当被测信号频率较低时,测量需要较长时间,因此我们的电路只采用被测信号的2倍周期进行测量。 为使能测量更高的频率,我们采用了50MHz的信号为计数信号。电路同样设置了锁存和清零的输出信号,
5、同时为防止高频率时锁存和清零过快,电路在闸门时间结束后设置了较长的过渡时间。由方式T=N/(2*50M)=N/100000000,所以数码管显示的最高位位权为0.1依次类推为0.01一直到小数点后8位。当信号小于1Hz和大于100MHz时都超出量程。3、8位十进制计数器的构成:用VHDL语言设计带进位的1位十进制计数器,然后封装如图,再用8个1位计数器和与门连接成8位的十进制计数器。4、利用VHDL语言来实现各个结构模块:1.带进位的1位10进制计数器COUNTER .VHD带进位的一位十进制计数器 LIBRARY IEEE; -带进位的一位十进制计数器 USE IEEE.STD_LOGIC_
6、1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; -允许用户对操作符重新定义 ENTITY COUNTER ISPORT( CLK,RST,EN: IN STD_LOGIC; -clk时钟频率,rst清零,en使能端 DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -4位输出到7段数码管 COUT:OUT STD_LOGIC -进位信号 );END COUNTER;ARCHITECTURE one OF COUNTER ISBEGINPROCESS(CLK,RST,EN) -时钟,清零,使能为敏感信号 VARIABLE Q: ST
7、D_LOGIC_VECTOR(3 DOWNTO 0); -定义变量Q为4位 BEGINIF RST=1 THEN Q:=(OTHERS =0); -如果rst为高电平,变量Q清零 ELSIF CLKEVENT AND CLK=1 THEN -否则,若clk为上升沿,即上升沿触发 IF EN=1 THEN IF Q0); -否则清零 END IF;END IF;END IF;IF Q =1001 THEN COUT=1; -当Q为9时输出进位信号 1 ELSE COUT =0;END IF; -否则输出 0 DOUT=Q; -把变量信号输出 END PROCESS;END one; 2.32位锁
8、存器REG32B.VHDLIBRARY IEEE; -32位锁存器 USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT ( LK : IN STD_LOGIC;-锁存信号 DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);-计数信号输入 DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );-计数信号输出并锁存 END REG32B;ARCHITECTURE one OF REG32B ISBEGIN PROCESS(LK, DIN) BEGIN IF LKEVENT AND LK =
9、1 THEN DOUT = DIN;-上沿边触发锁存 END IF; END PROCESS;END one; 3.基准频率为8HZ的测频控制电路FTCTRL.VHDLIBRARY IEEE; -频率为8HZ的测频控制电路,用于频率计 USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FTCTRL IS PORT (CLKK : IN STD_LOGIC; - 8Hz CNT_EN : OUT STD_LOGIC; - 计数器时钟使能 RST_CNT : OUT STD_LOGIC; - 计数器清零 Load
10、: OUT STD_LOGIC ); - 输出锁存信号 END FTCTRL;ARCHITECTURE one OF FTCTRL IS SIGNAL M: STD_LOGIC; SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0 ); -计数信号 BEGIN K1:PROCESS( CLKK,C )-16分频 BEGIN IF RISING_EDGE(CLKK)THEN IF(C=1111) THEN C=0000; ELSE C=C+1;END IF;-计数为15是清零 IF(C=0001) THEN M=NOT M;ELSIF (C=1001) THEN M=NO
11、T M;-由1 开始跳变,变到9时跳变 END IF;END IF; END PROCESS; CNT_EN = M; -输出16分频后的波形 Load=NOT M;-输出锁存信号 F2:PROCESS (C,M)- 产生计数器清零信号 BEGIN IF (C=1101)AND M=0 THEN RST_CNT=1;ELSE RST_CNT=0;END IF;-计数为13时为1,否则为0 END PROCESS;END one; 4.基准频率为50MHZ的测频控制电路FTCTRL2.VHDLIBRARY IEEE; -频率为50MHZ的测频控制电路,USE IEEE.STD_LOGIC_116
12、4.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FTCTRL2 IS PORT (CLKK2 : IN STD_LOGIC; - 50MHz CNT_EN2 : OUT STD_LOGIC; - 计数器时钟使能 RST_CNT2 : OUT STD_LOGIC; - 计数器清零 Load2 : OUT STD_LOGIC ); - 输出锁存信号 END FTCTRL2;ARCHITECTURE one OF FTCTRL2 IS SIGNAL M: STD_LOGIC; SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0 );
13、-计数信号 BEGIN K1:PROCESS( CLKK2,C )-分频 BEGIN IF RISING_EDGE(CLKK2)THEN IF(C=1111) THEN C=0000; ELSE C=C+1;END IF;-清零 IF(C=0001) THEN M=NOT M;ELSIF (C=0011) THEN M=NOT M;-由1 开始跳变? END IF;END IF; END PROCESS; CNT_EN2 = M; -输出分频后的波形 Load2=NOT M;-锁存信号 F2:PROCESS (C,M,CLKK2)- 产生计数器清零信号 BEGIN IF C=1010 AND(
14、M=0)AND CLKK2=0 THEN RST_CNT2=1;ELSE RST_CNT2=0;END IF;-计数为0时为1,否则为0 END PROCESS;END one; 5.带锁存的2选1数据选择器MUX2.VHDlibrary ieee;use ieee.std_logic_1164.all;entity mux2 is -64位输入的2选1数据选择器 port ( L1,L2:OUT STD_LOGIC; -L1锁存指示灯,L2信号选通灯 S,EN:in std_logic;-选择,锁存 AIN,BIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);-输入通道
15、A DOUT3:out STD_LOGIC_VECTOR(31 DOWNTO 0)-数据输出 );end entity mux2;architecture one of mux2 isSIGNAL M:STD_LOGIC_VECTOR(31 DOWNTO 0);-寄存 begin process(AIN,BIN,S,EN)beginIF EN=0 THEN-非0锁存 if S=1 then M=AIN;else M=BIN;-选通 end if;END IF;end process;DOUT3=M;L1=EN;L2=S;end architecture one ;5、利用原理图来完成各个模块的
16、链接与功能的实现:1.8位十进制计数器功能的实现: 先编译COUNTER .VHD生成原理图文件,如下图: ,再用元件库中的与门与其链接,然后加上输入输出端口,从而完成电路。具体链接如下:电路完成编译后,继续生产如下原理图文件,为下一阶段工作做好准备。2.8位频率计功能的实现:先编译REG32B.VHD和FTCTRL.VHD,分别生成原理图文件,如下图: 和 。再与上面的8位十进制计数器原理图文件与端口进行链接,完成计数器功能电路。具体链接如下:同时,电路完成编译后,继续生产如下原理图文件,为下一阶段工作做好准备。3. 周期测量功能的实现:先编译FTCTRL2.VHD生成原理图文件,如下图:,
17、再用已经编译生成的计数器和锁存器原理图链接,完成周期测量功能电路。具体链接如下。电路完成编译后,也生产如下原理图文件,为下一阶段工作做好准备。3.顶层文件用原理图表示实现测频测周功能,设计如下:编译数据选择器MUX2.VHD生成原理图文件,如图:然后与已经生成的测频和测周的原理图文件进行连接,生成带有锁存和选通功能,可显示频率和周期的频率计。设计如下:6编译仿真、下载:1、波形仿真:设计好程序后便保存进行编译,查错,修改,成功后,进行仿真,观察波形。如下图:PCLK的基准频率为50MHz,但在综合仿真时,过高的频率需要较长的仿真时间,为了提高软件的效率,PCLK在仿真时设置基准频率为32Hz,
18、FCLK设置为8Hz,测试频率为16Hz.同时对锁存以及选通进行测试。在不同的选通状态下,由方程可知周期T=N/64和f=N。波形仿真结果 T=4/64=0.0625s,f=16Hz,经检验,波形正确。2、引脚分配:选用实验模式5,键1(PIO 0)用于锁存信号,cloke2的8Hz用于频率基准信号,cloke0用于被测频率的输入,键2(PIO1)用于选通信号,D1用于锁存指示灯,D2用于选通指示灯,8个数码管用于显示频率或周期大小。具体引脚分配如下:信号名 引脚名EN PIN_8 DATAOUT30 PIN_95FCLK PIN_54 DATAOUT31 PIN_96FIN PIN_126L
19、1EN PIN_20L2S PIN_21PCLK PIN_124S PIN_9DATAOUT0 PIN_30DATAOUT1 PIN_31DATAOUT2 PIN_32DATAOUT3 PIN_33DATAOUT4 PIN_36DATAOUT5 PIN_37DATAOUT6 PIN_38DATAOUT7 PIN_39DATAOUT8 PIN_41DATAOUT9 PIN_42DATAOUT10 PIN_65DATAOUT11 PIN_67DATAOUT12 PIN_68DATAOUT13 PIN_69DATAOUT14 PIN_70DATAOUT15 PIN_72DATAOUT16 PIN_7
20、3DATAOUT17 PIN_78DATAOUT18 PIN_79DATAOUT19 PIN_80DATAOUT20 PIN_81DATAOUT21 PIN_82DATAOUT22 PIN_83DATAOUT23 PIN_86DATAOUT24 PIN_87DATAOUT25 PIN_88DATAOUT26 PIN_89DATAOUT27 PIN_90DATAOUT28 PIN_913、硬件测试:再次编译程序,成功后,下载到实验箱EP1K30TC144-3FPGA中,选用模式5,拨下显示开关拨码4。键2未按下时,输入低电平,8个数码管显示为cloke0所选信号的频率。当按下键1,输出高电平,D
21、1亮,信号被锁存,数码管数字不发生改变。按起键1,停止锁存,使D1灭。按下键2,使其输入高电平,周期选通灯D2亮,8个数码管显示为cloke0所选信号的周期。按下键1,D1亮起,信号再次被锁存,数码管数字不变。注释:超出量程时,显示值为0。通过实物验证,该设计满足所要求的各个功能,达到了设计要求与目的。七、设计结论与总结:1、本设计利用计数器和闸门原理来测试信号的频率与周期,完成8位十进制频率计(周期)的功能。2、本设计可以完全通过VHDL语言来描述,也可以用原理图的方法来实现。通过用两种方法的结合,提高了工作效率,并让我们进一步对Quartus的操作以及VHDL语言有了更深的理解。3、通过此设计实验,让我们对EDA课程有了更深的了解,它不仅功能强大,富于实用性,并且在未来的发展中还有非常广阔的应用前景。同时,实验过程中,我们也体会到了团队合作的力量,以及团队精神的重要。4、感谢黄玉健老师的悉心指导。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1