2457|1

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教CPLD等精度测频的问题 [复制链接]

初学CPLD,写了个等精度测频程序,闸门时间由单片机给,完成后CPLD数据并行传送给单片机,参考频率是2.5M,很稳定,现在对32K的信号进行测量,32K也是稳定,2hz左右的波动,大侠们指点下,是什么问题

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY freq IS
        PORT(
                 BCLK:IN STD_LOGIC;--标准频率信号
         TCLK:IN STD_LOGIC;--待测频率信号
         CL:IN STD_LOGIC;--
         CLR:IN STD_LOGIC; --清零和初始化信号
         START:OUT STD_LOGIC;--有低电平变到高电平时指示计数结束
         SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);--两个32位计数器值分8位读出多路选择器
         DATA:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--8位数据读出
                                        );
END ENTITY freq;
ARCHITECTURE behav OF freq IS
SIGNAL BZQ:STD_LOGIC_VECTOR(31 DOWNTO 0);--标准计数器
SIGNAL TSQ:STD_LOGIC_VECTOR(31 DOWNTO 0);--被测频率计数
SIGNAL ENA:STD_LOGIC;--计数使能
-- SIGNAL BCLK:STD_LOGIC;
-- SIGNAL BENA,PUL:STD_LOGIC;--脉宽计数使能
--SIGNAL SS:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
   START<=ENA;
                 DATA<=BZQ(7 DOWNTO 0) WHEN SEL="000"ELSE   --标准频率计数低8位输出
         BZQ(15 DOWNTO 8) WHEN SEL="001"ELSE
         BZQ(23 DOWNTO 16)WHEN SEL="010"ELSE
         BZQ(31 DOWNTO 24)WHEN SEL="011"ELSE
         TSQ(7 DOWNTO 0)  WHEN SEL="100"ELSE   --被测频率计数低8位输出
         TSQ(15 DOWNTO 8) WHEN SEL="101"ELSE
         TSQ(23 DOWNTO 16)WHEN SEL="110"ELSE
         TSQ(31 DOWNTO 24)WHEN SEL="111"ELSE
         TSQ(31 DOWNTO 24);
BZH:PROCESS(BCLK,CLR,ENA)     --标准频率测试计数器,标准计数器
  BEGIN
     IF CLR='0'THEN
        BZQ<=(OTHERS=>'0');
     ELSIF BCLK'EVENT AND BCLK='1'THEN
          IF ENA='1'THEN
              BZQ<=BZQ+1;
           END IF;
     END IF;
  END PROCESS;
TF:PROCESS(TCLK,CLR,ENA)  --待测频率计数,频率计数器
  BEGIN
     IF CLR='0'THEN
        TSQ<=(OTHERS=>'0');
     ELSIF TCLK'EVENT AND TCLK='1'THEN
        IF ENA='1'THEN
           TSQ<=TSQ+1;
        END IF;
     END IF;
  END PROCESS;
PROCESS(TCLK,CLR)   --计数控制使能触发器,CL为预置门控信号
  BEGIN
     IF CLR='0'THEN
        ENA<='0';
     ELSIF TCLK'EVENT AND TCLK='1'THEN
        ENA<=CL;
     END IF;
END PROCESS;
END ARCHITECTURE behav;
此帖出自FPGA/CPLD论坛

最新回复

你用2.5M测量32K的时钟,有两HZ的波动,是吗?   从你程序来看,主要是整个程序不是在同一系统时钟的控制下完成。主要还是你的编程风格对程序有影响。  详情 回复 发表于 2011-9-20 20:01
点赞 关注
 

回复
举报

6892

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

你用2.5M测量32K的时钟,有两HZ的波动,是吗?

 

从你程序来看,主要是整个程序不是在同一系统时钟的控制下完成。主要还是你的编程风格对程序有影响。

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表