EDA实验:数字频率计(FREQ)设计(VHDL)

本文详细介绍了基于VHDL的数字频率计设计,包括CLKGEN、REG32B、TESTCTL和FREQ四个模块的源代码分析,以及硬件实验现象和步骤详细解析。实验通过EDA实验开发系统验证了8位十进制频率计的功能,通过波形仿真展示了信号处理和测频结果,并讨论了硬件延迟对精度的影响。

目录

一:实验要求

二:程序源代码

2.1   CLKGEN的VHDL源程序及分析

 2.2  REG32B的VHDL源程序及分析

 2.3  TESTCTL的VHDL源程序及分析

2.4  FREQ的VHDL源程序及分析

 三:硬件实验现象

四:对实验步骤详细分析

4.1   RTL图

4.2 引脚锁定

4.3  TESTCTL波形仿真

4.4   FREQ波形仿真

4.5 测频测试结果


一:实验要求

设计并调试好8位十进制数字频率计,并用GW48系列或其他EDA实验开发系统(事先应选定拟采用的实验芯片的型号)进行硬件验证

                        图1: 实验电路

设计思路:数字频率计数器其实就是对数字秒表的进一步深入,其功能是测出某个频率的大小

要测出某个频率的大小那就是设定一秒钟周期,周期内测试的频率的脉冲上升沿多少。

频率 =  上升沿脉冲个数 /  T    当T等于1s时候,则  频率=上升沿脉冲个数。

为了能够在数码管上显示依旧需要加CTRLS(动态扫描)和DISPLAY(动态显示),而1S的周期哪来的呢,这是可以设定由内部产生或者外部产生,这里我设置为内部产生,通过一个分配器的操作来达到输出的周期时间为1S。

为了能够测量多次频率,那么就需要对前面一次频率进行一个保存,当前面频率保存的时候,计数器不工作,并且给一个清零信号将前一次测频的结果清除。

二:程序源代码

对于上篇文章一致的代码不再讲述,大家可以进行一个移植操作。

2.1   CLKGEN的VHDL源程序及分析

其中CLKGEN分析在前一篇文章有详细说明,这里注意的是我选择的时钟是内部时钟50M,为了产生1s的时钟周期,我需要对其进行5M分频,但是为了能够波形仿真,所以还使用了一个分频常数小的分频器。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CLKGEN IS
PORT(CLK: IN STD_LOGIC;
     NEWCLK: OUT STD_LOGIC);
END ENTITY CLKGEN;
ARCHITECTURE ART OF CLKGEN IS
--SIGNAL CNT: INTEGER RANGE 0 TO 10#49999999#;
SIGNAL CNT: INTEGER RANGE 0 TO 10#1#;
BEGIN
 PROCESS(CLK) IS
 BEGIN
 IF CLK'EVENT AND CLK='1' THEN
   --IF CNT=10#49999999# THEN CNT<=0;
   IF CNT=10#1# THEN CNT<=0;
   ELSE CNT<=CNT+1;
  END IF;
 END IF;
END PROCESS;
PROCESS(CNT) IS
   BEGIN
   --IF CNT=10#49999999# THEN NEWCLK<='1';
	 IF CNT=10#1# THEN NEWCLK<='1';
      ELSE
        NEWCLK<='0';
    END IF;
  END PROCESS;
 END ARCHITECTURE
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Esaki diode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值