VHDL课程设计报告 频率计_第1页
VHDL课程设计报告 频率计_第2页
VHDL课程设计报告 频率计_第3页
VHDL课程设计报告 频率计_第4页
VHDL课程设计报告 频率计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1. 前言32. 设计要求43整体设计44. 设计原理45. 设计程序45.1顶层文件45.2 8位是进制计数器55.3 10进制计数器65.4 测频控制电路75.5 32位锁存器及其控制器86. 引脚锁定97. 综合结果97.1 RTL电路97.2 测频控制电路107.3 8位十进制计数器107.3 32位锁存器108. 实验结果117.实验总结11参考文献13自适应数字频率计数器设计1. 前言传统的数字频率计一般是由分离元件搭接而成,用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差大、可靠性差。后来随着单片机的大规模的应用, 出现了不少用单片机控制的频率测量系统。相对

2、于以前用分离元件搭接起来的频率测量系统, 单片机控制的频率测量系统在频率测量范围、频率测量精度和频率测量速度上都有了很大的提高。但由于单片机工作频率的限制、单片机内部计数器位数的限制等因素, 由单片机控制的频率测量系统无法在频率测量范围、频率测量精度和频率测量速度上取得重大突破。若再增加别的器件, 以弥补单片机的不足, 不仅会大大增加系统的复杂性, 而且不利于系统的集成化。以E D A 工具作为开发平台,运用V H D L 语言,将使整个系统大大简化,从而提高整体的性能和可靠性。 本课题采用的是等精度数字频率计,在一片FPGA开发板里实现了数字频率计的绝大部分功能, 它的集成度远远超过了以往的

3、数字频率计。又由于数字频率计最初的实现形式是用硬件描述语言写成的程序, 具有通用性和可重用性。 所以在外在的条件(如基准频率的提高, 基准频率精度的提高)的允许下,只需对源程序作很小的改动, 就可以使数字频率计的精度提高几个数量级。同时对于频率精度要求不高的场合, 可以修改源程序, 使之可以用较小的器件实现, 从而降低系统的整体造价。2. 设计要求设计一个频率计,频率测量范围为1-9999KHZ,量程分别为10 、100、 1M三档,要求如下: a. 当读数大于999时,频率计处于超量程状态,下一次测量时,量程自动增大1档b. 当读数小于099时,频率计处于欠量程状态,下一次测量时,量程自动减

4、小1档c. 当超过频率范围时,显示器自动溢出3整体设计当被测频率进入时候,档位1、2能自动换挡实现功能,在档位1中,有一个LED灯亮(表示Hz);档位2中有2个LED灯亮(表示kHz);当计数频率超出9999kHz的时候,显示“E”而且LED灯全部熄灭,表示溢出功能。在程序代码中,必须要清晰表示出计数的运行状况。档位1:当被测频率为09999Hz时候,直接显示f x的值(单位为Hz);档位2:当被测频率为10k9999kHz时候,显示10-9999(单位kHz);4. 设计原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1 秒的输入信号脉冲计数允许的信号;1 秒计数结束后

5、,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。测频控制信号可以由一个独立的发生器来产生。5. 设计程序5.1顶层文件LIBRARY IEEE; -频率计顶层文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQTEST ISPORT ( CLK1HZ : IN STD_LOGIC;FSIN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);LED : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) );END FREQTEST;ARCHITECT

6、URE struc OF FREQTEST ISCOMPONENT FTCTRLPORT (CLKK : IN STD_LOGIC; - 1HzCNT_EN : OUT STD_LOGIC; - 计数器时钟使能RST_CNT : OUT STD_LOGIC; - 计数器清零Load : OUT STD_LOGIC ); - 输出锁存信号END COMPONENT;COMPONENT COUNTERPORT (FIN : IN STD_LOGIC; - 时钟信号CLR : IN STD_LOGIC; - 清零信号ENABL : IN STD_LOGIC; - 计数使能信号DOUT : OUT S

7、TD_LOGIC_VECTOR(31 DOWNTO 0); - 计数结果END COMPONENT;COMPONENT REG32BPORT ( LK : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);LEDOUT : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END COMPONENT;SIGNAL TSTEN1 : STD_LOGIC;SIGNAL CLR_CNT1 : STD_LOGIC;SIGNAL Load1 : STD_

8、LOGIC;SIGNAL DTO1 : STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL CARRY_OUT1 : STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINU1 : FTCTRL PORT MAP(CLKK =>CLK1HZ,CNT_EN=>TSTEN1,RST_CNT =>CLR_CNT1,Load =>Load1);U2 : REG32B PORT MAP( LK => Load1, DIN=>DTO1, DOUT => DOUT,LEDOUT=>LED);U3 : COUNTER PORT

9、 MAP( FIN => FSIN, CLR => CLR_CNT1,ENABL => TSTEN1, DOUT=>DTO1 );END struc;5.2 8位是进制计数器LIBRARY IEEE;- 8位十进制计数器USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER ISPORT (FIN : IN STD_LOGIC; - 时钟信号CLR : IN STD_LOGIC; - 清零信号ENABL : IN STD_LOGIC; - 计数使能信号DOUT : OUT ST

10、D_LOGIC_VECTOR(31 DOWNTO 0); - 计数结果END COUNTER;ARCHITECTURE behav OF COUNTER ISCOMPONENT COUNTER10 ISPORT (FIN : IN STD_LOGIC; - 时钟信号CLR : IN STD_LOGIC; - 清零信号ENABL : IN STD_LOGIC; - 计数使能信号DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - 计数结果COUT : OUT STD_LOGIC);END COMPONENT ; SIGNAL CLK1,CLK2,CLK3,CLK4

11、,CLK5,CLK6,CLK7: STD_LOGIC;BEGINu1 : COUNTER10 PORT MAP(FIN=>FIN,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(3 DOWNTO 0),COUT=>CLK1);u2 : COUNTER10 PORT MAP(FIN=>CLK1,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(7 DOWNTO 4),COUT=>CLK2);u3 : COUNTER10 PORT MAP(FIN=>CLK2,CLR=>CLR,ENABL=&g

12、t;ENABL,DOUT=>DOUT(11 DOWNTO 8),COUT=>CLK3);u4 : COUNTER10 PORT MAP(FIN=>CLK3,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(15 DOWNTO 12),COUT=>CLK4);u5 : COUNTER10 PORT MAP(FIN=>CLK4,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(19 DOWNTO 16),COUT=>CLK5);u6 : COUNTER10 PORT MAP(FIN=>CL

13、K5,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(23 DOWNTO 20),COUT=>CLK6);u7 : COUNTER10 PORT MAP(FIN=>CLK6,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(27 DOWNTO 24),COUT=>CLK7);u8 : COUNTER10 PORT MAP(FIN=>CLK7,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(31 DOWNTO 28);END ARCHITECTURE behav; 5

14、.3 10进制计数器LIBRARY IEEE; -10位计数器USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER10 ISPORT (FIN : IN STD_LOGIC; - 时钟信号CLR : IN STD_LOGIC; - 清零信号ENABL : IN STD_LOGIC; - 计数使能信号DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - 计数结果COUT : OUT STD_LOGIC);END COUNTER10;ARCHITECTURE behav

15、OF COUNTER10 ISSIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(FIN, CLR, ENABL)BEGINIF CLR = '1' THEN CQI <= (OTHERS=>'0'); - 清零ELSIF FIN'EVENT AND FIN = '1' THENIF ENABL = '1' THEN IF CQI<9 THEN CQI <= CQI + 1; ELSE CQI <= (OTHERS=>'0

16、'); END IF;END IF;END IF; IF CQI="1001" THEN COUT<='1' ELSE COUT<='0' END IF;END PROCESS;DOUT <= CQI;END behav; 5.4 测频控制电路LIBRARY IEEE; -测频控制电路USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FTCTRL ISPORT (CLKK : IN STD_LOGIC; - 1HzCNT_EN : O

17、UT STD_LOGIC; - 计数器时钟使能RST_CNT : OUT STD_LOGIC; - 计数器清零Load : OUT STD_LOGIC ); - 输出锁存信号END FTCTRL;ARCHITECTURE behav OF FTCTRL ISSIGNAL Div2CLK : STD_LOGIC;BEGINPROCESS( CLKK )BEGINIF CLKK'EVENT AND CLKK = '1' THEN - 1Hz时钟2分频Div2CLK <= NOT Div2CLK;END IF;END PROCESS;PROCESS (CLKK, Div

18、2CLK)BEGINIF CLKK='0' AND Div2CLK='0' THEN RST_CNT<='1'- 产生计数器清零信号ELSE RST_CNT <= '0' END IF;END PROCESS;Load <= NOT Div2CLK; CNT_EN <= Div2CLK;END behav;5.5 32位锁存器及其控制器LIBRARY IEEE; -32位锁存器及控制器USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;EN

19、TITY REG32B ISPORT ( LK : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);LEDOUT : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END REG32B;ARCHITECTURE behav OF REG32B ISSIGNAL DD : STD_LOGIC_VECTOR(31 DOWNTO 0);BEGIN PROCESS(LK, DIN)BEGIN IF LK'EVENT AND LK = &#

20、39;1' THEN DD<=DIN; END IF; if DD(31 DOWNTO 28)="0000" then IF DD(27 DOWNTO 16)="000000000000" THEN DOUT<=DD(15 DOWNTO 0);LEDOUT<="01" ELSIF DD (27 DOWNTO 16)/="000000000000" THEN DOUT<=DD(27 DOWNTO 12);LEDOUT<="11" end if; else DO

21、UT(15 DOWNTO 0)<="0000000000001110"LEDOUT<="00" END IF;END PROCESS;END behav;6. 引脚锁定7. 综合结果7.1 RTL电路7.2 测频控制电路7.3 8位十进制计数器7.3 32位锁存器8. 实验结果 当计数频率为4Hz(范围在0-9999Hz)的时候,此时LED灯有一个亮,计数为:0004;当计数频率为500KHz(范围在10K-9999KHz)的时候,此时设定两个LED灯都亮,计数为0500;当计数频率大于9999KHz的时候,设定此时两个LED灯都处于熄灭状态,而计数则输出一个E值,表示范围超出计数范围。7.实验总结经系统测试表明,本图频率计的各项功能正常,能实现对频率的09999kHz

温馨提示

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

最新文档

评论

0/150

提交评论