基于vhdl的频率计设计
基于VHDL语言的数字频率计的设计方案
基于VHDL语言的数字频率计的设计方案
1.引言数字频率计是通讯设备、计算机、电子产品等生产领域不
可缺少的测量仪器。
由于硬件设计的器件增加,使设计更加复杂,可靠性变差,延迟增加,测量误差变大。
通过使用EDA技术对系统功能进行描述,运用VHDL语言,使系统简化,提高整体的性能和可靠性。
采用VHDL编程设计的数字频率计,除了被测信号的整形部分,键输入和数码显示以外,其他都在一片FPGA上实现,从而让整个系统非常精简,让其具有灵活的现场更改性,在不改变硬件电路的基础上,进一步改进提高系统的性能,使数字频率计具有高速,精确度高,可靠性强,抗干扰等优点,为数字系统进一步的集成创造了条件。
2.数字频率计的工作原理
频率测量方法中,常用的有直接测频法、倍频法和等精度测频法。
中直接测频法是依据频率的含义把被测频率信号加到闸门的输入端,只有在闸门开通时间T(以ls计)内,被测(计数)的脉冲送到十进制计数器进行计数。
直接测频法比其他两个方案更加简单方便可行,直接测频法虽然在低频段测量时误差较大,但在低频段我们可以采用直接测周法加测量,这样就可以提高测量精度了。
直接周期测量法是用被测周期信号直接控制计数门控电路,使主门开放时间等于Tx,时标为Ts的脉冲在主门开放时间进入计数器。
设在Tx期间计数值为N,可以根据Tx=N乘以Ts来算得被测信号周期。
因此本文采用低频测周,高频测频的方法来提高精度,减小误差。
3.主要功能模块的实现
该系统设计的控制器是由状态机实现,通过在不同测量档位,选择合理的时基信号频率降低误差,确定各状态转移条件和状态名,采用低频档位测周,。
基于VHDL设计的频率计
基于VHDL设计的频率计专业:信息工程学号:姓名:一、实验任务及要求1、设计一个可测频率的数字式频率计,测量范围为1Hz~12MHz。
该频率计的逻辑图如图所示。
2、用层次化设计方法设计该电路,编写各个功能模块的程序。
3、仿真各功能模块,通过观察有关波形确认电路设计是否正确。
4、完成电路设计后,用实验系统下载验证设计的正确性。
二、设计说明与提示由上图可知8位十进制数字频率计,由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。
1、测频控制信号发生器设计要求。
频率测量的基本原理是计算每秒种内待测信号的脉冲个数。
这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同不控制。
当TSTEN高电平时允许计数、低电平时停止计数,并保持其所计的数。
在停止计数期间,首先需要一个锁存信号Load的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。
设置锁存器的好处是为了显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作做准备。
测频控制信号发生器的工作时序如下图。
为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时使其值翻转。
其中控制信号时钟CLK的频率1Hz,那么信号TSTEN的脉宽恰好为1秒,可以用作闸门信号。
然后根据测频的时序要求,可得出信号Load和CLR_CNT 的逻辑描述。
由图可见,在计数完成后,即计数使能信号TSTEN在1秒的高电平后,利用其反相值的上跳沿产生一个锁存信号Load,0.5秒后,CLR_CNT产生一个清零信号上跳沿。
高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真(TIMING SIMULATION),防止可能产生的毛剌。
基于VHDL语言的数字频率计设计
数 码 管显示 ,最 大 读 数分 别 为 9 9 Hz 9 9k 、 . 9k 、9 . Hz 9 9k , 9 Hz 小数 点 随量 程 变 换 自动 移 位 ) ,量 程 自动 转
换 规则 :
硬件 描述语 言对 高层 次的 系统行 为进 行描述 ,在 系统
一
级 进行验 证 ,最 后再 用逻 辑综合 优 化工具 生成 具体
摘 要 介 绍 了 VHD L语 言在 数 字频 率 计 设 计 中的 具 体 应 甩 ,说 明 了 实现 电子 电路 设 计 的 自动 化 ( A)过 程 和 ED
E A 技 术在 现 代 数 字 系统 设 计 中的 重要 地 位 和 作 用 。 D 关 键 词 VH E A 自下 至上 自上 至 下 综 合 编 程 下载 DL D
M od f M u tme a ds or li di Pr s nt ton e e a i wih t U S r e
[ ] 94 2 7 23 C ,1 9 , 5 ~ 7
5 Pr b k r n,B, gh v n, a ha a a Ra a a S V.Sy hr nia i n nc o z to
的 门级逻辑 电路 的 网表 ,其 对应 的物理 实 现是专 用集 成 电路 ( I 。 AS C)
( )读数 大 于 9 9时 ( 1 9 不考虑 小数 点 ,下同 ) ,频 率计 处 于超 量程 状态 ,此时显 示器 发 出溢 出指示 ( 显
示 F F ,下次 测量 ,量 程 自动增 大一档 。 F )
设 计一个 3位 十进 制 数字 频率 计 ,其 测量范 围 为
1MH , 程分 1 Hz 0 Hz z三档 ( 位 z量 0k 、1 0k 、1MH 3
基于VHDL的数字频率计的设计
目录第一章概述 (1)1.1 设计概述 (1)1.2设计内容 (1)1.3 设计原理 (1)1.4 设计功能 (2)第二章技术与开发工具 (3)2.1 VHDL简介 (3)2.1.1简介 (3)2.1.2 VHDL程序组成部分 (4)2.1.3 VHDL系统优势 (4)2.2 MAX+PLUSⅡ (5)2.2.1 软件简介 (5)2.2.2 软件组成 (6)2.2.3设计流程 (7)第三章系统分析 (8)3.1数字频率计的设计任务及要求 (8)3.2 模块的划分 (8)3.3设计分析 (9)第四章各功能模块基于VHDL的设计 (10)4.1 时基产生与测频时序控制电路模块的VHDL源程序 (10)4.2 待测信号脉冲计数电路模块的VHDL源程序 (11)4.2.1 十进制加法计数器的VHDL源程序 (11)4.2.2待测信号脉冲计数器的VHDL源程序 (12)4.3 锁存与译码显示控制电路模块的VHDL源程序 (13)4.3.1 译码显示电路的VHDL源程序 (13)4.3.2 锁存与译码显示控制模块的VHDL源程序 (14)4.4 顶层电路的VHDL源程序 (16)第五章数字频率计波形仿真 (18)5.1 时基产生与测频时序控制电路模块的仿真 (18)5.2 待测信号脉冲计数电路模块的仿真 (18)5.2.1 十进制加法计数器的仿真 (18)5.2.2待测信号脉冲计数器的仿真 (19)5.3 锁存与译码显示控制电路模块的仿真 (19)5.3.1 译码显示电路的仿真 (19)5.3.2 锁存与译码显示控制模块的仿真 (20)5.4 数字频率计系统的仿真 (20)结论 (22)参考文献 (23)摘要本文介绍了一种自顶向下分层设计多功能数字频率计的设计方法。
该频率计采用VHDL硬件描述语言编程以MAX+PLUSⅡ为开发环境,极大地减少了硬件资源的占用。
数字频率计模块划分的设计具有相对独立性,可以对模块单独进行设计、调试和修改,缩短了设计周期。
基于VHDL的等精度频率计设计—毕业设计论文
摘要基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,本设计采用单片机AT89C51作为主要的控制单元,用来完成电路的信号测试控制、数据运算处理、键盘扫描和控制数码管显示等功能,待测信号经过LM358放大后又经过74HC14形成系统需要的矩形波,然后送入复杂可编程逻辑器件(CPLD),最后由可编程逻辑器件CPLD进行各种时序控制及计数测频功能,并用8位8段LED进行显示。
关键词单片机可编程逻辑器件频率计AbstractBased on the traditional principle of measuring the frequency of the frequency of measurement accuracy will be tested with thefrequency and reduce the decline in the more practical limitations.SCM AT89C51 use this design as the main control unit, the signals used to complete the circuit test control, data processing, keyboard scanning and digital control of the show, and other functions, under test signal LM358 Larger then after a 74 HC14 system needs Rectangular waves, and then into the complex programmable logic devices (CPLD), programmable logic devices by the end CPLD various control and timing count frequency measurement functions, and with eight 8 of the LED display.Keywords: SCMC CPLD Cymometer目录1 引言 (1)1.1课题分析 (1)1.2等精度频率计在国内外发展概况 (1)1.3M AX+P LUS II简介及VHDL语言简介 (3)1.4课题要求 (6)2 等精度频率计的方案选择及原理分析 (7)2.1等精度频率计测频原理 (7)2.2系统原理框图 (9)2.3周期测量 (9)2.4脉冲宽度测量 (10)2.5周期脉冲信号占空比的测量 (10)3 等精度频率计硬件设计 (11)3.1键盘控制模块 (11)3.2显示模块 (12)3.3主控模块 (13)3.4信号输入放大和整形模块 (16)3.5音频输出电路 (17)3.6CPLD功能模块描述 (18)4 等精度频率计软件设计方案 (19)4.1VHDL语言 (19)4.2VHDL软件设计方案 (21)4.3所需VHDL文件及波形仿真结果 (22)4.4单片机的汇编语言编程 (24)5 电路系统调试 (28)6 结论 (29)致谢 (33)附录一:元器件清单 (34)附录二:程序清单 (36)附录三:原理图 (36)1 引言1.1 课题分析在现代电子系统中,数字系统所占的比例越来越大。
基于VHDL的十进制频率计设计
基于VHDL语言的十进制数字频率计设计霍艳艳( 临沂大学物理系)摘要:文中运用VHDL语言,采用Top To Down的方法,实现6位数字频率计,并利用QuartusII软件集成开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,经实际电路测试,该系统系统性能实现。
关键词:EDA;VHDL;数字频率计;波形仿真;功能仿镇;CPLD1、引言VHDL是超高速集成电路硬件描述语言(Very High Speed Integrated Circuit Hardware Description Language)的缩写,在美国国防部支持下于1985年成功开发的一种快速设计电路的工具,是目前标准化流程最高的硬件描述语言。
IEEE(The Institute of Electrical and Electronics Engineers)于1987年将VHDL采纳为IEEE1067标准。
VHDL经过20多年的发展、应用和完善,以其强大的系统描述能力、规范的程序设计结构、灵活的语言表达风格和多层的仿真测试手段,在电子领域受到了普遍的认同和广泛的接触。
相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。
从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL 语言。
基于VHDL频率计的设计
频率计一、实验目的1.学习并熟悉使用max+plusⅡ软件。
2.掌握各频率计各逻辑模块的功能与设计方法。
二、实验原理频率测量基本原理是计算每秒钟内待测信号的脉冲个数。
要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当TSTEN为高电平时,允许计数;为低电频时停止计数,并保持其所计的脉冲信号。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒的计数值锁存进32位锁存器REG32B中,并由周期性的清零信号并不断闪烁。
所存信号之后,必需有一清零信号CLR_CNT 对计数器进行清零,为下一秒的计数做准备。
测试控制信号发生器的工作时序如图。
为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。
三、实验内容和代码—————————————cnt10——————————————LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT10 ISPORT (CLK: IN STD_LOGIC;CLR: IN STD_LOGIC;ENA: IN STD_LOGIC;CQ: OUT INTEGER RANGE 0 TO 15;CARRY_OUT :OUT STD_LOGIC );END CNT10;ARCHITECTURE behav OF CNT10 ISSIGNAL CQI: INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK, CLR, ENA)BEGINIF CLR = '1' THEN CQI <= 0;ELSIF CLK'EVENT AND CLK = '1' THENIF ENA = '1' THENIF CQI < 9 THEN CQI <= CQI + 1;ELSE CQI <= 0;END IF;END IF;END IF;END PROCESS;PROCESS(CQI)BEGINIF CQI = 9 THEN CARRY_OUT <= '1';ELSE CARRY_OUT <= '0'; END IF;END PROCESS;CQ <= CQI;END behav;——————————————REG32GB——————————LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B ISPORT (Load : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END REG32B;ARCHITECTURE behav OF REG32B ISBEGINPROCESS(Load, DIN)BEGINIF Load'EVENT AND Load='1' THEN DOUT <=DIN;END IF;END PROCESS;END behav; ——————————————TESTCTL——————————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 TESTCTL;ARCHITECTURE behav OF TESTCTL ISSIGNAL Div2CLK : STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK = '1' THENDiv2CLK <= NOT Div2CLK;END IF;END PROCESS;PROCESS(CLK, Div2CLK)BEGINIF CLK = '0' AND Div2CLK ='0' THEN CLR_CNT <= '1';ELSE CLR_CNT <= '0'; END IF;END PROCESS;Load <= NOT Div2CLK; TSTEN <= Div2CLK;END behav;——————————FREQTEST——————————LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQTEST ISPORT(CLK : IN STD_LOGIC;FSIN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END FREQTEST;ARCHITECTURE struc OF FREQTEST ISCOMPONENT TESTCTLPORT(CLK : IN STD_LOGIC ; TSTEN : OUT STD_LOGIC ;CLR_CNT : OUT STD_LOGIC ; Load : OUT STD_LOGIC );END COMPONENT;COMPONENT CNT10PORT(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 REG32BPORT( Load : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END COMPONENT ;SIGNAL Load1,TSTEN1,CLR_CNT1: STD_LOGIC;SIGNAL DTO1 : STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL CARRY_OUT1: STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINU1 : TESTCTL PORT MAP(CLK => CLK, TSTEN =>TSTEN1,CLR_CNT => CLR_CNT1, Load => Load1 );U2 : REG32B PORT MAP(Load => Load1, DIN => DTO1, DOUT => DOUT );U3 : CNT10 PORT MAP(CLK => FSIN ,CLR => CLR_CNT1, ENA => TSTEN1,CQ => DTO1(3 DOWNTO 0), CARRY_OUT => CARRY_OUT1(0) ); U4 : CNT10 PORT MAP(CLK => CARRY_OUT1(0), CLR => CLR_CNT1,ENA => TSTEN1, CQ => DTO1(7 DOWNTO 4),CARRY_OUT => CARRY_OUT1(1) );U5 : CNT10 PORT MAP(CLK => CARRY_OUT1(1), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(11 DOWNTO 8),CARRY_OUT => CARRY_OUT1(2) );U6 : CNT10 PORT MAP(CLK => CARRY_OUT1(2), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(15 DOWNTO 12),CARRY_OUT => CARRY_OUT1(3) );U7 : CNT10 PORT MAP(CLK => CARRY_OUT1(3), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(19 DOWNTO 16),CARRY_OUT => CARRY_OUT1(4) );U8 : CNT10 PORT MAP(CLK => CARRY_OUT1(4), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(23 DOWNTO 20),CARRY_OUT => CARRY_OUT1(5) );U9 : CNT10 PORT MAP(CLK => CARRY_OUT1(5), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(27 DOWNTO 24),CARRY_OUT => CARRY_OUT1(6) );U10 : CNT10 PORT MAP(CLK => CARRY_OUT1(6), CLR => CLR_CNT1,ENA => TSTEN1,CQ => DTO1(31 DOWNTO 28) ); END struc;四、实验原理图:五、实验仿真波形:本次设计我们采用GW48 EDA实验箱,选择芯片EP1K30TC144-1,选择模式0,引七、编程下载在实验箱上选择CLOCK2输入为1Hz,模式选择模式0,引脚映射如上表所示。
基于vhdl数字频率计设计说明书
一、设计功能与要求设计数字频率计,满足如下功能:(1)用VHDL语言完成数字频率计的设计及仿真。
(2)频率测量范围:1∼10KHz,分成两个频段,即1∼999Hz,1KHz∼10KHz,用三位数码管显示测量频率,且用LED(发光二极管)来表示所显示单位,我们这里定义亮绿灯表示以Hz为单位,亮红灯表示以KHz为单位。
(3)具有自动校验和测量两种功能,即既能用于标准时钟的校验,同时也可以用于未知信号频率的测量。
(4)具有超量程报警功能,在超出目前所选量程档的测量范围时,会发出音响报警信号。
二、设计思路通过计算已知单位时间内待测信号的脉冲个数来计算被测信号的频率,同时通过动态扫描方式在三个数码管上显示出测得频率值。
如下图1的系统框图所示,计数器对CP信号进行计数,在1秒定时结束后,将计数器结果送锁存器锁存,并通过时钟下降沿将不再变化的测量值送至数码管显示。
在下一个计数时钟信号上升沿到来时,再次重新计数。
图1 系统设计框架图系统各个模块介绍如下:(1)测量/校验选择模块:输入信号:选择信号selin,被测信号measure,标准校验信号test;输出信号:CP;当selin=0时,为测量状态,CP=measure;当selin=1时,为校验状态,CP=test。
校验与测量共用一个电路,只是被测信号CP不同而已。
(2)测频控制信号发生器(二分频):输入信号:1Hz时钟信号clk;输出信号:1秒钟高电平基准信号clk1(周期为2秒);(3)四级十进制计数器模块(带进位C):输入信号:clk1、CP,用于计数开始、清零、锁存。
输出信号:q4~q1设置超出量程档测量范围示警信号alert。
若被测信号频率小于1KHz(K=0),则计数器只进行三级十进制计数,最大显示值为999.Hz,如果被测信号频率超过此范围,示警信号扬声器报警;若被测信号为1KHz~10KHz (K=1),计数器进行四位十进制计数,取高三位显示,最大显示值为9.99KHz,如果被测信号频率超过此范围, 示警信号扬声器报警。
基于vhdl的频率计设计
基于vhdl的频率计设计课程论文(设计)题目基于quartus的频率计的设计院系电子与信息工程学院专业电子与通信工程学生姓名学号指导教师二O一四年元月三日一、频率计的说明 (3)二、顶层原理图 (4)三、底层模块设计 (4)3.1十进制加法计数器CNT10 (4)3.2十二进制加法计数器CNT12 (5)3.3控制模块CODE (6)3.4锁存器LOCK (7)四、底层模块的仿真 (7)4.1LOCK模块的仿真结果 (7)4.2CNT12的仿真结果 (8)4.3CNT10模块的仿真结果 (8)4.4CODE模块的仿真结果 (8)五、频率计顶层原理图的输入 (9)六、频率计仿真结果 (9)总结 (10)一、频率计的说明频率就是周期性信号在单位时间(1S )内的变化次数。
频率计的作用就是测量输入信号的频率,我设计的频率计的原理是若在一定1S 的时间间隔内测得这个周期性信号的重复变化次数为N ,则其频率可表示为:f=N 。
如下图1.1所示,通过定义闸门信号为1s 后,通过统计下该时间内有多少次脉冲即可得到相应的频率。
图1.1系统测量频率的原理系统的框图如下图1.2所示,首先由时基电路产生基准信号,通过控制电路产生出1s 的闸门信号,闸门电路把1s 内截取的检测信号传递给计数器,通过计数器计数就可以得到需要测量的频率。
锁存器的作用就是为了保存当前的频率交给显示电路显示。
计数器锁存器显示电路闸门电路计数脉冲控制电路锁存信号清零信号闸门信号时基电路被测信号图1.2系统原理框图二、顶层原理图如下图2.1所示,系统顶层原理图包括CNT12、CODE 、CNT10、LOCK 、CODE 模块。
其中CNT10和CNT12分别为10和12进制计数器,CODE 则为控制模块输出清零、锁存、和闸门信号,LOCK 则为锁存模块,负责将采集的频率数值锁存起来方便显示,CODE 模块则是将二进制转换成十进制的模块。
系统中的clk1为为我们为测试时候的输入闸门信号,通过CNT12信号后模拟1s 的闸门的信号,系统输出的端口为4个QQ[3..0],这样方便系统仿真,也可以减少系统的复杂程度。
基于VHDL的数字显示频率计的设计
EDA 课程设计报告书课题名称 基于VHDL 的数字显示频率计的设计 姓 名 学 号 院 系 专 业 指导教师※※※※※※※※※ ※※ ※※ ※※EDA 课程设计基于VHDL的数字显示频率计的设计1设计目的通过EDA的试验设计,加深我们对FPGA的了解,熟悉FPGA的工作原理和试验环境,知道FPGA的开发流程,熟悉各种软件如Quartus II 6.0的使用。
通过设计小型试验项目学会仿真和硬件测试的基本方法。
2设计的主要内容和要求在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更加重要。
通过运用VHDL语言,实现4位数字频率计,并利用Quartus II 6.0集成开发环境进行编辑、综合、波形仿真,并下载到FPGA器件中,经实际电路测试,该系统性能可靠。
3 整体设计方案3.1四位十进制数据显示频率计设计在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
数字式频率计的测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即测周期法,如周期测频法。
直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到不同的测量精度;间接测频法适用于低频信号的频率测量,本设计中使用的就是直接测频法,即用计数器在计算1S内输入信号周期的个数。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着现场可编程门阵列FPGA的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。
基于VHDL八位频率计设计
SIGNAL TSTEN:STD_LOGIC; SIGNAL CLR_CNT:STD_LOGIC; SIGNAL LOAD:STD_LOGIC; SIGNAL CARRY1:STD_LOGIC; SIGNAL CARRY2:STD_LOGIC; SIGNAL CARRY3:STD_LOGIC; SIGNAL CARRY4:STD_LOGIC; SIGNAL CARRY5:STD_LOGIC; SIGNAL CARRY6:STD_LOGIC; SIGNAL CARRY7:STD_LOGIC; SIGNAL CARRY8:STD_LOGIC; SIGNAL DIN:STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL DOUT:STD_LOGIC_VECTOR(31 DOWNTO 0);
• • • • • • • • • • • • •
ELSIF CLK'EVENT AND CLK= '1' THEN IF ENA= '1' THEN IF CQI<9 THEN CQI<=CQI+1; ELSE CQI<=0;END IF; --大于9,则计数器清零 END IF; END IF; END PROCESS; PROCESS (CQI) BEGIN IF CQI=9 THEN CARRY_OUT<= '1'; --进位输出 ELSE CARRY_OUT<= '0';END IF; END PROCESS; CQ<=CQI;
• 频率测量的基本原理是计算每秒钟内待测信号的 脉冲个数。这就要求TESTCTL的计数使能信号 TSTEN能产生一个1秒脉宽的周期信号,并对频率 计的每一计数器CNT10的ENA使能端进行同步控 制。当TSTEN高电平时,允许计数;低电平时,停止 计数,并保持其所计的数。在停止计数期间,首先需 要一个锁存信号LOAD的上跳沿将计数器在前1秒 钟的计数值锁存进32位锁存器REG32B中,并由外 部的7段译码器译出并稳定显示。锁存信号之后, 必须有一清零信号CLR_CNT对计数器进行清零, 为下1秒钟的计数操作作准备。为了产生这个时序 图,需首先建立一个由D触发器构成的二分频器,在 每次时钟CLK上沿到来时其值翻转。
论文 基于vhdl语言直接测频法频率计设计(原创)
基于vhdl语言直接测频法频率计设计一.设计原理频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
测频法就是在确定的闸门时间Tw内,记录被测信号的脉冲个数Nx ,则被是信号的频率为fx=Nx/Tw。
通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。
闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。
闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。
一般取1 s作为闸门时间。
原理图:原理图设计框图:设计框图二.系统分析1.顶层文件。
用于集成各个模块的进程,定义输入输出端口。
2.控制模块。
控制十进制计数器的计数及锁存器的工作,当计数器停止计数,则锁存器接收计数器的计数数据。
3.计数器。
由于需要使用数码管显示频率,所以采用的是十进制可清零、具有使能功能的计数器模块。
4.锁存模块。
接受七个计数器信号中的四个进行锁存。
5.译码显示模块。
因为每个数码管有八个段(包括小数点),所以需要八个段选输出,另外有四个位选输出控制四位数码管的亮灭。
二.程序设计(1)十进制计数器模块计数器模块是对输入脉冲信号的频率进行测量,由4个十进制加法器组成,其中EN为计数器选通控制信号,START为计数清零信号。
在计数清零信号清零后,当计数使能信号EN有效时,开始对待测信号进行计数。
本程序计数使能信号EN的宽度为1s(与闸门信号同宽),计数结果为待测信号的频率。
(2)4位锁存器模块当锁存信号上升沿到来时,将计数器的计数值锁存,这样可由外部的八段译码器译码并在数码管上显示。
设置锁存器的好处是显示的数据稳定。
复位后,锁存器里面的内容将清零。
另外程序设定开关s3用于将低四位送锁存器,当按下时显示低四位,用于测量大于9999Hz的信号时显示低四位。
(3)控制模块根据频率的定义和测量的基本原理,测量信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许(EN)的信号,1秒计数结束后,计数值锁入锁存器的锁存信号。
基于VHDL语言的全同步数字频率计的设计与研究的开题报告
基于VHDL语言的全同步数字频率计的设计与研究的开题报告一、题目基于VHDL语言的全同步数字频率计的设计与研究二、研究背景和意义数字频率计广泛应用于各种信号的频率测量,具有准确度高、稳定性好、适用范围广等优点。
目前市面上的数字频率计大多采用片上计数器实现,而片上计数器的精度受到芯片工艺和设计的限制,难以满足高精度应用的需求。
因此,本课题旨在研究一种基于VHDL语言的全同步数字频率计,通过FPGA实现,此方案将大幅提高精度,减小误差,提高计数范围。
三、研究内容和目标本课题拟研究的内容包括:1.通过对数字频率计功能和原理的分析,确定设计思路和参数。
2.根据设计思路和参数,完成数字频率计模块的设计与仿真,并验证其正确性和合理性。
3.使用VHDL语言完成数字频率计的程序设计。
4.将程序下载到FPGA中,实现数字频率计的硬件设计。
5.对硬件设计进行测试与调试,验证数字频率计的性能指标。
本课题的目标是:1.设计出一款精度高、误差小、计数范围广、应用范围广的全同步数字频率计。
2.通过实验验证数字频率计的功能和性能指标,并与市面上的数字频率计进行比较,证明本方案的优越性。
四、研究方法和技术路线本课题的研究方法和技术路线如下:1.文献调研通过查阅相关文献和资料,了解数字频率计的基本原理、设计思路、参数要求等内容,为后续的研究工作提供理论依据。
2.模块设计根据数字频率计的功能和参数要求,对数字频率计的各个模块进行设计,包括时钟模块、预分频器模块、计数器模块、显示模块等。
3.模块仿真通过VHDL语言进行数字频率计模块的仿真,验证模块的电路实现是否符合设计要求,进一步完善设计。
4.程序设计根据模块设计的结果,将各个模块的功能用VHDL语言进行程序设计。
5.硬件设计将程序下载到FPGA中,实现数字频率计的硬件设计,完成外围电路和显示模块的设计.6.测试与调试对数字频率计的设计进行测试和调试,记录其性能指标和实验结果,并对不足之处进行改进和提升。
基于VHDL的多功能数字频率计的设计
基于VHDL的多功能数字频率计的设计
随着科技的不断发展,数字频率计作为一种重要的测量仪器在工程领域中得到广泛应用。
本文将介绍一种。
该数字频率计采用VHDL语言进行设计,具有多功能的特点。
首先,该频率计具备高精度的频率测量功能。
通过采用精确的计数方法和高速时钟,能够准确地测量输入信号的频率。
同时,该频率计还具备宽频率范围的测量能力,能够适应不同频率信号的测量需求。
其次,该频率计还具备多种显示方式的功能。
通过设计多种显示模式,用户可以选择不同的显示方式来满足自己的需求。
例如,可以选择数码管显示、LCD显示或者LED显示等方式来显示测量结果。
这样,用户可以根据具体场景和需求选择最合适的显示方式。
此外,该频率计还具备多种触发方式的功能。
通过设计多种触发模式,用户可以选择不同的触发方式来满足自己的需求。
例如,可以选择外部触发、内部触发或者自动触发等方式来触发测量。
这样,用户可以根据具体实验需求选择最合适的触发方式。
最后,该频率计还具备数据存储和传输的功能。
通过设计存储器和通信接口,可以将测量结果存储起来或者传输给其他设备
进行进一步处理。
这样,用户可以方便地保存和分享测量数据,提高工作效率。
综上所述,基于VHDL的多功能数字频率计的设计具有高精度、宽频率范围、多种显示方式、多种触发方式以及数据存储和传输等功能。
该频率计在工程领域中具有重要的应用价值,可以满足不同场景和需求的频率测量需求。
随着科技的不断进步,相信该频率计的设计将能够为工程领域的发展做出积极贡献。
基于VHDL的数字频率计的设计
基于VHDL的数字频率计的设计一、数字频率计的基本设计原理频率信号易于传输,抗干扰性强,可以获得较好的测量精度。
因此,频率检测是电子测量领域最基本的测量之一。
本文的数字频率计是按照计算每秒内待测信号的脉冲个数的基本原理来设计,此时取闸门时间为1秒。
数字频率计的关键组成部分包括一个测频控制信号发生器、一个计数器和一个锁存器,另外包含信号整形电路、脉冲发生器、译码驱动电路和显示电路,其原理框图如图1所示。
图1 数字频率计原理框图工作过程:系统正常工作时,脉冲信号发生器输入1Hz的标准信号,经过测频控制信号发生器的处理,2分频后即可产生一个脉宽为1秒的时钟信号,以此作为计数闸门信号。
测量信号时,将被测信号通过信号整形电路,产生同频率的矩形波,输入计数器作为时钟。
当计数闸门信号高电平有效时,计数器开始计数,并将计数结果送入锁存器中。
设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
最后将锁存的数值由外部的七段译码器译码并在数码管上显示。
本程序采用了直接测频法:把被测频率信号经脉冲整形电路处理后加到闸门的一个输入端,只有在闸门开通时间T(以秒计)内,被计数的脉冲送到十进制计数器进行计数。
二、VHDL的设计实现1.基本原理设计频率计的核心是设计一个测频控制信号发生器,产生测量频率的控制时序。
这里控制信号clk取为1Hz,2分频后就是一个脉宽为1秒的时钟信号testen,用来作为计数闸门信号。
当testen为高电平时开始计数;在testen的下降沿,要产生一个锁存信号lock,该锁存信号是testen取反的值,并且是上跳沿有效;锁存数据后,还要在下次testen上升沿到来之前产生清零信号clear,为下次计数作准备,clear信号也是上跳沿有效。
测频控制信号发生器各信号之间的时序关系见图2所示。
计数器在清零信号clear到来时清零,testen为高电平时开始测量待测信号FSIN的个数,输出DOUT以十进制数显示,本频率计测量范围在65535Hz(16位)以内。
数字频率计设计(使用VHDL语言)
实验报告\
一、实验目的
设计数字频率计,学习较复杂数字系统设计方法。
二、实验内容
设计八位数码显示频率计P228
三、实验环境
计算机、QuartusII软件
四、实验步骤
1、子模块FTCTRL(用于产生控制信号) (1)程序代码
(2)仿真结果
2
、子模块COUNTER32B (用于计数)
(1)程序代码
(2)仿真结果
(3)结果分析
当使能信号ENABLE=‘1’时,允许计数。
当CLR=‘1’时重新计数
3、子模块REG32B(输出数据)
(1)程序代码
(2)仿真结果
(3)结果分析
当LK=’1’时,输出当前数据DIN,否则不做处理。
4、子模块SHOW
(1)程序代码
(2)仿真结果
(3)结果分析
当S=‘0’时,载入数据DATA,否则将数据DATA左移4位。
每次上升沿,SHOW1输出数据的高四位。
综合模块:
五、实验结果与讨论
这个实验花了比较多的时间,在做计数器的时候由于没有考虑到最后使用的是二进制显示的,所以在转换的时候遇到了不少的问题,最后
新亏有老师帮我想了办法解决。
基于VHDL语言的频率计设计
目录一、课程设计任务: (2)二、课程设计原理: (2)三、课程设计所需仪器: (2)四、课程设计使用的硬件资源及原理框图: (2)五、设计过程及操作: (3)1、FTCTRL测频控制模块: (3)2、计数器模块: (3)3、REG32B锁存器模块 (3)4、DECL7S译码器模块 (4)5、分频器模块 (4)6、MUX多路选择器模块。
(4)7、器件连接: (4)8、操作过程: (4)六、设计各个模块代码: (5)1:FTCTRL模块 (5)2:CNT_10计数器模块 (5)3:REG32B锁存器模块 (6)4:DECL7S译码器模块 (6)5:any_10 10分频器模块 (7)6:any_5 5分频器模块 (7)7:any_16 16分频模块 (8)8:MUX多路选择器模块 (9)9:顶层例化代码 (9)七、总电路: (12)八、管脚配置: (13)九、设计结果: (14)设计8位十进制频率计二、课程设计原理:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。
这清0个信号可以由一个测频控制信号发生器TESTCTL 产生,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的EN使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD 的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
三、课程设计所需仪器:Altrea DE2-115实验箱;quartusII 12.1;modelsim仿真软件。
基于VHDL语言的数字频率计设计
西安工程科技学院学报J o u r n a l o f X i'a nU n i v e r s i t yo f E n g i n e e r i n g S c i e n c e a n d T e c h n o l o g y第19卷第3期(总75期)2005年9月V o l.19,N o.3(S u m N o.75) =================================================================文章编号:1671-850X(2005)03-0321-04基于V H D L语言的数字频率计设计林晓焕1,林刚2(1.西安工程科技学院电信学院,陕西西安710048;2.中国飞行试验研究院,陕西西安710089)摘要:传统数字频率计由于在高频段受基准时钟频率的限制,其测频精度受到很大的限制.本文应用E D A技术,很好的解决了这一问题.文中论述了数字频率计的设计原理、开发环境、设计步骤、设计框架,以及应用V H D L语言对系统的实现方法,说明了各模块和系统输入输出信号的功用.应用M A X+P L U SⅡ对系统进行仿真验证,结果表明所设计的数字频率计不但测频精度达到较高的水平,而且能够实现连续不间断测频.关键词:数字频率计;V H D L语言;可编辑逻辑器件(F P G A)中图分类号:T N095文献标识码:A频率信号抗干扰性强,易于传输,可以获得较高的测量精度,所以测频方法的研究是电子测量领域的重要内容.传统的数字频率计一般由分离元件搭接而成,其测量范围、测量精度和测量速度都受到很大的限制.虽然单片机的发展与应用改善了这一缺陷,但由于单片机本身也受到工作频率及内部计数器位数等因素的限制,所以无法在此领域取得突破性的进展.随着新型可编程逻辑器件F P G A技术的发展,能够将大量的逻辑功能集成于一个单个器件中,根据不同的需要所提供的门数可以从几百门到上百万门,从根本上解决了单片机的先天性限制问题.不但集成度远远超过了以往的数字频率计,而且在基准频率及精度等外部条件的允许下,根据不同场合的精度要求,对硬件描述语言进行一定的改动,使系统在精度提高的同时,用较少的器件来实现系统的功能,从而降低系统的整体造价.此外,系统芯片(S O C)的发展也要求其包含频率测量的功能,所以用F P G A实现数字频率计也是实现系统芯片的前提条件.本文应用V H D L语言设计的集成化数字频率计系统,频率测量范围为1H z~50M H z,输入信号电压幅度为50m V~5V,测量精度为10-7H z.1设计原理目前常用的测频方法可以分为3类,即:(1)比较法通过与标准频率f0比较确定被测频率f x,测量精度主要取决于标准频率f0.主要方法有用于低频频率测量的拍频法、示波器法和用于高频频段测量的差频法等.(2)电路频率特性测量法由电路的已知参数与电路的频率特性得到被测频率f x,主要方法包括用于低频段的电桥法和用于高频或微波频段的谐振法.(3)记数器法由单位时间内周期信号的重复次数测得f x.目前最常用的是电子计数器法,其测量精度主要取决于基准时间和记数的量化误差.*收稿日期:2004-12-15通讯作者:林晓焕(1964-),女,陕西省西安市人,西安工程科技学院副教授,主要从事计算机通信方面的研究.E-m a i l: l i n x i a o h u a n325@y a h o o.c o m.c n本文采用在直接计数基础上发展出的多周期同步测频法[1],测量原理是由控制线路给出闸门开启信号.当待测信号的上升沿到来时,两组计数器开始计数,分别记录待测信号和时基脉冲信号;当控制线路给出闸门关闭信号,并在待测信号下降沿到来时结束计数,完成一个测量周期.待测频率的计算方法为f x =(N x /N 0)f 0.(1)式中f 0时基信号,由晶振产生;N x 为待测信号的计数值;N 0为时基信号的计数值;闸门时间为τ.图1多周期同步法测频原理波形图多周期同步测频法的原理波形如图1所示.由图1可见,对于此方法,其实际闸门与设定的闸门并不严格相等,但最大差值不超过被测信号的一个周期.由于多周期同步测频法的闸门时间是待测信号周期的整数倍,消除了传统直接测频法闸门开启时间与记数脉冲之间时基关系的不相关性,也就消除了由此引起的对待测信号记号产生的±1误差,提高了测量精度,实现了在整个测量频段内的等精度测量.多周期同步测频的相对误差主要由基准时间引起.时基信号的不准会造成主门启闭时间或长或短,对测频结果会产生一定的影响,并且被测频率越高,引起的误差就越大.此相对误差可通过对(1)式微分得到:d f x =-(N x /N 20)f 0d N 0+(N x /N 0)f 0d f 0.令d N 0=±1,τ=N x /f x =N 0/f 0,则有d f x /f x =±1/(τ·f 0)+d f 0/f 0,(2)其中d f 0/f 0为基准频率的误差.当d f 0/f 0与±1/(τ·f 0)相比特别小时,对其忽略不记,则测频的相对误差为d f x /f x =±1/(τ·f 0).(3)此时相对误差仅及闸门时间与时基频率有关,当然,要想进一步提高测频精度,必须提高基准频率的精度.在待测频率大于基准时钟频率时,多周期同步测频法的误差大于直接测频法的误差.为了保证所设计系统在较高频率时也能得到最佳的测频效果,当输入闸门时间内待测频率的测量结果大于基准时钟频率时,系统采用直接测频法工作.2系统的开发环境与设计步骤本数字频率计系统在A L T E R A 公司的M A X +P L U S Ⅱ开发环境下,应用V H D L 语言设计而成.A L T E R A 公司的M A X +P L U S Ⅱ开发环境综合了器件的物理结构,提供了各种的优化措施,最大限度的提高速度与资源利用率之间的平衡.M A X +P L U S Ⅱ提供了原理图形、文本、波形等多种输入手段,配备有编辑、编译、仿真、综合等多项功能,可方便的将电路描述程序做成A S I C 芯片,具有运行速度快、界面统一、功能集中等特点.用M A X +P L U S Ⅱ进行F P G A 开发的流程如图2示.a l t e r a m a x +p l u s Ⅱ设计→输入→编译→仿真→烧录→验证图2在M A X +P L U S Ⅱ环境下进行F P G A 开发的工作流程而V H D L 语言标准规范,易于共享与复用,非常适用于可编程逻辑芯片的应用设计.特别是自I E E E 公布了其标准及其更新版本之后,V H D L 语言逐渐成为系统设计领域最佳的硬件描述语言,其强大的行为描述能力避开了具体的硬件结构,为从逻辑行为上描述和设计大规模电子系统提供了重要保证[2].与传统的硬件描述语言相比,V H D L 语言不但设计功能强大,具有多层次的设计描述功能,可以进行与工艺无关的编程,而且方法灵活,支持广泛,可以很方便的进行A S I C 移植.而作为高密度现场可编程逻辑芯片的F P -G A ,能够将大量的逻辑功能集成到一个单片集成电路中,具有门阵列的高逻辑密度与通用性几用户可编程性.在目前条件下,V H D L 语言程序综合成为具体的F P G A 等目标器件的网表文件已不成问题[3],V H D L 223西安工程科技学院学报第19卷与F P G A 的结合为数字电路的设计带来了极大的方便.本文的设计过程如图3示.设计要求→用V H D L 语言进行设计描述→V H D L 原代码功能仿真→V H D L 原代码综合优化处理→网络表配→时序仿真→器件编程图3系统的设计过程图4系统的结构框图3系统设计与V H D L 语言实现整个系统根据各自功能与控制的关系分为5大模块,此5大模块按照相互间的信号连接关系组合起来,各模块间的流程由V H D L 语言并发处理.需说明的是,由于F P G A 只能实现数字电路,因此输入信号的整形电路需通过外加实现.在此假定F P G A 接收的都是已经整形、变换后的规则方波信号,电压幅值为0~5V .系统功能关系如图4示.控制模块是整个系统的控制部分,所有的控制信号几乎都由此模块产生,控制着其它4个模块的工作.控制模块根据外部对系统的复位和开始等信号,实现系统内部的复位、开始测频等功能,并通过优化模块的标志信号实现连续无间断的频率测量.控制模块首先通过对基准时钟分频得到模块所用时钟,使所产生的测量开始指令脉冲的宽度符合基准时间产生模块的输入要求,然后检测各输入信号,确定各模块的复位、测量、输出等操作.当控制模块接收到优化模块的标志信号时,控制模块先检测在最新一次复位后是否已经接受过系统开始测量脉冲信号.若是,则输出频率测量开始脉冲信号,使基准时间产生模块开始频率测量,同时送到优化模块,复位优化模块的内部变量,使优化模块能够再次输出反馈标志信号.这样,系统只需在开始施加一次频率测量开始脉冲信号,即可实现连续不间断的频率测量.基准时间产生模块用来产生系统所需的基准时间,即闸门时间.为适应对测频精度的不同要求,基准时间的长度可通过修改程序代码加以改变.基准时间越长,测频精度越高;反之,测频精度越低.模块的基准时钟由外加的晶振提供,经分频后用于产生基准时间方波信号.本模块每次输出基准时间方波信号之前,都先对计数模块进行复位,清除计数结果,保证系统在连续不间断测频时的正确性.基准时间产生模块接受控制模块产生的复位、开始指令,同时又向计数模块输出复位和计数指令.计数模块完成系统的频率测量等主要工作,是系统的核心.它通过对待测信号在基准时间内进行计数测量待测信号的频率.计数模块从基准时间产生模块接受复位信号和基准时间方波信号,清除上一次计数结果并进行新的计数,同时向优化模块输出结果信号和使能信号.使能信号在结果信号输出后才变为高电平,以允许优化模块对测频结果进行优化,保证测频结果的准确性.为了在给定条件下尽可能提高测频精度,计数模块首先需要估计对闸门时间内待测频率的大小.当待测频率大于等于基准时钟频率时,采用直接测量法;当待测频率小于基准时钟频率时,采用多周期同步法.这样,系统在低频和高频段都能实现较高的测频精度,突破了基准时钟频率对精度的限制,从而在整体上提高了系统的测频性能.优化模块主要对计数结果进行优化处理,以进一步提高系统的测频精度.其原理是把若干个测频结果加权平均,把加权平均的结果作为系统最后的测频结果,以减小计数器的误差对整个系统的影响.优化模块的复位信号由控制模块提供,结果由计数模块接提供.优化模块将计数结果存储到内部寄存器后,产生一标志信号,送到控制模块,以便新的一轮的频率测量,从而实现连续不间断测频.测频结果经优化后送显示模块显示.显示模块的主要工作是产生共阴级数码管显示所需的控制信号和数据信号,将从优化模块得到的测频结果最终用数码管实时显示出来.模块内用于循环显示的时钟由基准时钟经分频处理后得到.显示模块将二进制的结果信号转换成B C D 码的形式输入给数码管,同时对数码管以较高的频率不断重复进行刷新.模块输出的某一数码管选通信号为低电平时,表示该数码管被选中有效,可以进行显示操作.所需显示数据由模块输出的数据信号提供,根据数据信号各位是否为低电平决定是否点亮数码管中对应的显示段.323第3期基于V H D L语言的数字频率计设计图5数字频率计系统结构整个系统有4个输入信号,分别为基准时钟信号、待测时钟信号、系统复位信号(高电平有效)和开始测量脉冲信号;输出信号有2个,即各个数码管选通信号和系统输出数据信号,如图5示.图5各信号的作用如下:(1)基准时钟信号由外加晶振提供,同时作用于系统的5个模块,整个系统都以它为基准,基准频率经二分频后得到各模块内部所用的时钟信号.(2)待测时钟信号作用于计数模块,经过外加整形电路的整形与放大,符合标准方波的输入要求.(3)系统复位信号作用于控制模块,用于对整个系统的复位工作,为高电平有效.一般在每次测量前都要对系统进行复位操作,系统复位后处于等待测量状态.(4)系统开始测量信号指示系统开始连续不间断的测量,作用于控制模块,其脉冲宽度大于模块的一个时钟周期.当系统收到此信号后,就开始对待测时钟信号进行频率测量并输出测量结果.(5)输出的数码管选通信号和系统输出数据信号用于控制数码管的实时显示,控制信号低电平时表示该控制信号对应的数码管可以进行显示操作,数据信号输出数码管显示所需的数据.4结束语采用自上而下的设计方法,将数字频率计系统划分为5个子模块,针对各个子模块分别进行设计与编程,充分利用V H D L 语言的并行处理功能,同时考虑器件的时延对系统的影响.设计出的系统经过M A X +P L U S Ⅱ的仿真验证,最终完全实现了预定的功能,在测量范围、测量精度、测量速度以及系统造价等方面都比以前有较大的改善.对于1H z ~50M H z 的频率范围,其测量精度达10-7H z ,并且在低频和高频都具有较好的测频性能,能够满足一定场合的测频要求.参考文献:[1]M I L A NP r o k i n .D y n a m i c r e s p o n s e o f a f r e q u e n c ym e a s u r i n g s y s t e m [J ].I E E ET r a n s I n s t r uM e a s ,1992,41(3):390-396.[2]侯伯享,顾新.V H D L 硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,1997.10-65.[3]赵雅兴.FP G A 原理、设计与应用[M].天津:天津大学出版社,1999.5-12.T h e d e s i g no f d i g i t a l c y m o m e t e r b a s e d o nV H D LL I N X i a o -h u a n 1,L I N G a n g2(1.C o l l e g e o f E l e c t r o n i c s &I n f o r m a t i o n ,X A U E S T ,X i 'a n710048,C h i n a ;2.C h i n a F l i g h t T e s t E s t a b l i s h m e n t ,X i 'a n710089,C h i n a )A b s t r a c t :T h e p r e c i s i o no f t r a d i t i o n a l d i g i t a l c y m o m e t e r i s p r o d i g i o u s l i m i t e d b y t h e n o r mc l o c k f r e q u e n c y ,e s p e c i a l -l y i n t h e h i g h f r e q u e n c y b a n d ,b u t t h i s p r o b l e mi s g o o d r e s o l v e d i n h e r e f r o mu s i n g t h e E D At e c h n o l o g y .I n t h i s p a -p e r ,t h e d i g i t a l c y m o m e t e r 's d e s i g n p r i n c i p l e a n d p r o c e s s ,e x p l o i t e n v i r o n m e n t ,f r a m e w o r k a n d r e a l i z a t i o n m e t h o d b yV H D La r e d i s c u s s e d i n d e t a i l ,a n d t h e m o d u l e s a n d i n p u t /o u t p u t s i g n a l s 'f u n c t i o na r e e x p l a i n e d p a r t i c u l a r l y .B ye m u l a t i o n a l v a l i d a t e i n M A X +P L U S Ⅱ,w e c a n s e e t h a t t h e d i g i t a l c y m o m e t e r 's p r e c i s i o n h a s r e a c h e d t o a h i g h -e r l e v e l ,a n d i t c a nr e a l i z e u n i n t e r r u p t e d f r e q u e n c yc o u n t .K e y w o r d s :V H D L ;d i g i t a l c y m o m e t e r ;F P G A 编辑、校对:董军浪423西安工程科技学院学报第19卷。
基于VHDL的数字频率计的设计与仿真设计
基于VHDL的数字频率计的设计与仿真设计1 引言1.1 设计背景随着计算机技术和半导体技术的发展,传统的硬件电路电路设计方法已大大落后于当今技术的发展,一种崭新的、采用硬件描述语言的硬件电路设计方法已经兴起,这是电子设计自动化(EDA)领域的一次重大变革。
目前,广泛使用的硬件描述语言VHDL(Very Speed Integrated Circuit Hardware Description Language)和Verilog HDL;它们先后被批准为国际标准语言。
据统计,目前在美国硅谷约有90%以上的ASIC 和FPGA采用硬件描述语言进行设计,VHDL的应用已成为当今以及未来EDA解决方案的核心,而且是复杂数字系统设计的核心。
数字频率计[1]是电子测量与仪表技术最基础的电子仪表类别之一,它是一种用十进制数字显示被测信号频率、周期、占空比的数字测量仪器,是在数字电路中的一个典型应用;实际的硬件设计的多功能数字频率计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差,随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言,将使整大大简化,提高整体个系统的性能和可靠性;它是计算机、通信设备、音频视频等科研生产领域不可缺少的测量仪器。
采用VHDL编程设计实习的多功能数字频率计,具有体积小,可靠性高,功耗低的特点;整个系统非常精简,且具有灵活的现场可更改性。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,而且它是数字电压必不可少的部件。
当今数字频率计不仅是作为电压表,计算机,天线电广播通讯设备,工艺过程自动化装置、多种仪表仪器与家庭电器等许多电子产品中的数据信息输出显示器反映到人们眼帘。
集成数字频率计由于所用元件少、投资少、体积小、功耗低,且可靠性高、功能强、易于设计和研发,使得它具有技术上的实用性和应用的广泛性。
不论从我们用的彩色电视机、电冰箱、DVD还有我们现在家庭常用到的数字电压表数字万用表等等都包含有频率计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程论文(设计)题目基于quartus的频率计的设计院系电子与信息工程学院
专业电子与通信工程
学生姓名
学号
指导教师
二O一四年元月三日
一、频率计的说明 (3)
二、顶层原理图 (4)
三、底层模块设计 (4)
3.1十进制加法计数器CNT10 (4)
3.2十二进制加法计数器CNT12 (5)
3.3控制模块CODE (6)
3.4锁存器LOCK (7)
四、底层模块的仿真 (7)
4.1LOCK模块的仿真结果 (7)
4.2CNT12的仿真结果 (8)
4.3CNT10模块的仿真结果 (8)
4.4CODE模块的仿真结果 (8)
五、频率计顶层原理图的输入 (9)
六、频率计仿真结果 (9)
总结 (10)
一、频率计的说明
频率就是周期性信号在单位时间(1S )内的变化次数。
频率计的作用就是测量输入信号的频率,我设计的频率计的原理是若在一定1S 的时间间隔内测得这个周期性信号的重复变化次数为N ,则其频率可表示为:f=N 。
如下图1.1所示,通过定义闸门信号为1s 后,通过统计下该时间内有多少次脉冲即可得到相应的频率。
图1.1系统测量频率的原理
系统的框图如下图1.2所示,首先由时基电路产生基准信号,通过控制电路产生出1s 的闸门信号,闸门电路把1s 内截取的检测信号传递给计数器,通过计数器计数就可以得到需要测量的频率。
锁存器的作用就是为了保存当前的频率交给显示电路显示。
计数器
锁存器
显示电路
闸门电路
计数脉冲
控制电路
锁存信号
清零信号闸门信号
时基
电路被测信号
图1.2系统原理框图
二、顶层原理图
如下图2.1所示,系统顶层原理图包括CNT12、CODE 、CNT10、LOCK 、CODE 模块。
其中CNT10和CNT12分别为10和12进制计数器,CODE 则为控制模块输出清零、锁存、和闸门信号,LOCK 则为锁存模块,负责将采集的频率数值锁存起来方便显示,CODE 模块则是将二进制转换成十进制的模块。
系统中的clk1为为我们为测试时候的输入闸门信号,通过CNT12信号后模拟1s 的闸门的信号,系统输出的端口为4个QQ[3..0],这样方便系统仿真,也可以减少系统的复杂程度。
CNT10CLK CLR
CS ]0QQ[3..CO CNT10CLK CLR
CS
]0QQ[3..CO CNT10CLK CLR
CS ]0QQ[3..CO CNT10CLK CLR CS
]
0QQ[3..CO
LOCK
]
0DD[3..]
0QQ[3..LOCK
]
0DD[3..]
0QQ[3..LOCK
]
0DD[3..]0QQ[3..LOCK
]
0DD[3..]
0QQ[3..CODE LOCK
CLR CS ]0DD[T12
CLK
]
0QQ[3..CLK CLK CLK CLK (被测信号))
(8Hz CLK1 f CLKIN
DECODER
]
0AK[3..g a ~]0LED1[6..]0LED2[6..]0LED3[6..]0LED4[6..DECODER
DECODER
DECODER
]
0AK[3..]
0AK[3..]
0AK[3..g a ~g
a ~g a ~
三、底层模块设计
3.1十进制加法计数器CNT10
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity cnt10 is
port(clk:in std_logic;
clr:in std_logic;
cs :in std_logic;
qq :buffer std_logic_vector(3 downto 0);
co :out std_logic);
end cnt10;
architecture one of cnt10 is
begin
process(clk,clr,cs)
begin
if (clr='1') then
qq<="0000";
elsif (clk'event and clk='1') then
if (cs='1') then
if (qq=9) then
qq<="0000";
else
qq<=qq+1;
end if;
end if;
end if;
end process;
process(qq)
begin
if (qq=9) then
co<='0';
else
co<='1';
end if;
end process;
end;
3.2十二进制加法计数器CNT12
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt12 is
port(clk: in std_logic;
qq : buffer std_logic_vector(3 downto 0)); end cnt12;
architecture one of cnt12 is
begin
begin
if (clk'event and clk='1') then
if (qq=11) then
qq<="0000";
else
qq<=qq+1;
end if;
end if;
end process;
end one;
3.3控制模块CODE
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity code is
port(
dd : in std_logic_vector(3 downto 0);
cs : out std_logic;
clr : out std_logic;
lock: out std_logic
);
end code;
architecture one of code is
begin
process(dd)
begin
if (dd=0) then
clr<='1';
else
clr<='0';
end if;
if (dd=11) then
lock<='1';
else
lock<='0';
end if;
if ( (dd > 0 ) and (dd < 9 )) then
cs<='1';
else
cs<='0';
end if;
end one;
3.4锁存器LOCK
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity lock is
port(
clk: in std_logic;
dd : in std_logic_vector(3 downto 0);
qq : out std_logic_vector(3 downto 0)
);
end lock;
architecture one of lock is
begin
process(clk,dd)
begin
if (clk'event and clk='1') then
qq<=dd;
end if;
end process;
end one;
四、底层模块的仿真
4.1LOCK模块的仿真结果
4.2CNT12的仿真结果
4.3CNT10模块的仿真结果
4.4CODE模块的仿真结果
五、频率计顶层原理图的输入和硬件电路
六、频率计仿真结果
通过仿真图可以通过aa、bb、cc、dd读出此时的频率为140hz,由于1s的
闸门信号仿真起来会很慢,所以我们使用很小的一个闸门信号以方便仿真,相应的频率显示可能会有些偏差。
总结
通过这次EDA的系统设计,我重拾了专科期间学习的知识,同时也把软件从原来的maxplus2升级到了quartus2。
一开始我不太情愿使用quartus2,因为很多的功能都不太会使用,遇到了很多的问题,后来通过查阅资料和同学讨论等途径硬着头皮解决了些问题,最终也是在quartus里实现了频率计的系统,在这里要真心地向我们的指导老师刘老师感谢,在他的课堂上我学到了很多,对我以后的硬件和数字处理有太大的帮助,真心的感谢您。