搜索
您的当前位置:首页正文

数字频率计的设计

来源:易榕旅网


数字频率计的设计

一、实验目的

1.学习系统设计方法;

2.设计一个6位的频率计。

二、实验说明

频率计是常用的测量仪器,它通过对单位时间内的信号脉冲进行计数,从而测量出信号的频率。本实验设计一个6位频率计,可以测量从1Hz到999999Hz的信号频率。

频率计工作时,先要产生一个计数允许信号,即闸门信号,闸门信号的宽度为单位时间,例如1s或100ms。在闸门信号有效的时间内对被测信号计数,即为信号频率。测量过程结束,需要锁存计数值或留出一段时间显示测量值。下一次测量前,应该对计数器清零,其时序如图8.9所示。

计数器复位信号清零清零显示计数计数使能信号数据锁存信号图8.9 频率计闸门时序

闸门信号由闸门电路产生。

频率计可以分为三个部分:闸门电路、计数器和显示电路。本实验中,闸门电路时钟为1Hz,产生的计数周期为1s,清零周期为0.5s,2s为一个周期测量一次信号频率。计数器由六个10进制计数器构成,受闸门电路控制。显示电路利用实验8.6设计的6位扫描数码显示器,它的扫描时钟可以使用lkHz或更高频率时钟。

预习时可以根据以上说明,并查阅有关频率计的资料,画出频率计的框图。按照自顶向下的设计方法对频率计的功能进行分割,画出各层的功能模块图,注明输入信号、输出信号和模块内部连接关系,并根据实验板资源情况分配I/O管脚。

三、实验要求

1.输人顶层电路图和底层设计文件;

2.利用仿真手段进行功能调试;

3.选择EP2C5T144C8N器件进行适配。本实验需要较多资源,在布局或布线发生错误时,注意优化设计,减少逻辑资源的消耗。

4.下载文件到实验板,测试实际的信号频率。

四、实验报告要求

1.画出功能分割图,写出各层次的电路图和VHDL文件;

2.用图形设计方式描述或元件例化方式描述顶层电路;

3.写出资源分配和统计报告;

4.写出测试结果并分析。

附1:测频控制信号发生器(Control)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY Control IS

PORT(clk_hz1: IN STD_LOGIC;--闸门时钟

cnt_en,cnt_rst_n,load:OUT STD_LOGIC);

-- cnt_en计数使能、cnt_rst_n计数器清零,load锁存器所存信号

END Control;

ARCHITECTURE behav OF Control IS

SIGNAL clk_div2:STD_LOGIC:='0';

BEGIN

PROCESS(clk_hz1) --CLK二分频

BEGIN

IF clk_hz1'EVENT AND clk_hz1='1' THEN

clk_div2<=NOT clk_div2;

END IF;

END PROCESS;

PROCESS(clk_hz1,clk_div2) --计数器复位信号产生进程

BEGIN

IF (clk_hz1='0' AND clk_div2='0') THEN

cnt_rst_n <='0';

ELSE cnt_rst_n <='1';

END IF;

END PROCESS;

load<=NOT clk_div2;

cnt_en<=clk_div2;

END behav;

测频控制信号发生器仿真波形如图8.10所示。

图8.10测频控制信号发生器仿真波形

附2:锁存器(reg)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY reg IS

PORT(load: IN STD_LOGIC;

data_in:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

data_out:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END;

ARCHITECTURE behav OF reg IS

BEGIN

PROCESS(load,data_in) --数据锁存,上升沿锁存

BEGIN

IF load'EVENT AND load='1' THEN

data_out<=data_in;

END IF;

END PROCESS;

END behav;

锁存器仿真波形如图8.11所示。

图8.11 锁存器仿真波形

附3:十进制计数器(cnt10)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY cnt10 IS

PORT(clk,rst_n,ena: IN STD_LOGIC;

q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

co:OUT STD_LOGIC);

END cnt10;

ARCHITECTURE behav OF cnt10 IS

SIGNAL temp:STD_LOGIC_VECTOR(3 DOWNTO 0):=\"0000\";

BEGIN

PROCESS(clk,rst_n,ena)

BEGIN

IF rst_n='0' THEN temp<=\"0000\";co<='0';

ELSIF clk'EVENT AND clk='1' THEN

IF ena='1' THEN

IF temp=\"1001\" THEN

temp<=\"0000\";

co<='1';

ELSE

temp<=temp+1;

co<='0';

END IF;

END IF;

END IF;

END PROCESS;

q<=temp;

END behav;

十进制计数器仿真波形如图8.12所示。

图8.12十进制计数器仿真波形。

附4:数字频率计顶层设计结构如图8.13所示。

图8.13 数字频率计顶层电路

附5:数字频率计管脚分配如表8.9所示。

表8.9 数字频率计引脚分配

因篇幅问题不能全部显示,请点此查看更多更全内容

Top