《8位十进制显示数字频率计(带周期)设计报告16页》由会员分享,可在线阅读,更多相关《8位十进制显示数字频率计(带周期)设计报告16页(16页珍藏版)》请在金锄头文库上搜索。
1、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*(1/8))=N,从而计数器的数值
4、就是被测信号的频率。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_1164.ALL;USE IEE
6、E.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: STD_LOGIC_VECTOR(3 DOWNT
7、O 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位锁存器REG32B.VHDLIBRARY IEEE; -
8、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 = 1 THEN DOUT = DIN;-上沿边触发锁存
9、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 : OUT STD_LOGIC ); - 输出锁存信号
10、 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=NOT M;-由1开始跳变,变到9时跳变 END IF;EN
11、D 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_1164.ALL;USE IEEE.STD_LOGIC_UNSIG
12、NED.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 );-计数信号 BEGIN K1:PROCESS( CLKK2,C
13、 )-分频 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(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;