基于vhdl的频率计设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档