FPGA学习等精度测频

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

FPGA学习——等精度测频由于最近一直在与队员一起攻克题目,所以没时间写博客,现在把最近做的东西总结一下,希望对大家有帮助。以前一直是用测频率法来测信号的频率,就是在一秒内测被测频率的个数,即为频率,这种方法在高频时还行,低频就误差比较大,无论是用FPGA还是单片机都差不多,所以我们这次用了一种相对更精确的测量方法——等精度测频法,主导思想是利用一个D触发器保证测量时间是被测频率的整数倍,对被测频率和基准频率进行计数,利用计数值求出被测频率,这种方法在高频低频段均适用,由于测量误差只与基准频率和闸门时间有关,与被测频率无关,故称之为等精度测频。由于FPGA对数据处理有困难,所以我们用FPGA计数,然后把数据传给单片机处理,显示数据。我们这次的测频范围为0.01HZ到50MHZ,精确到小数点后两位,测频误差在10的-5次方以下。我做的是FPGA的部分,先附上思路:等精度测频就是对基准频率和待测频率在一段时间内分别计数,通过一个D触发器确保计数时间是待测频率的整数倍,系统的误差只与门控时间和基准频率有关,与待测频率无关,达到等精度测频的目的。计数器是用两个32位二进制计数器,通过一个3—8选择器把64位变成8位,传给单片机,经单片机处理后恢复出两个计数值,计算出频率。RTL图附上程序,欢迎探讨分频模块——产生基准频率1MHZ方波LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFENPINISPORT(CLK:INSTD_LOGIC;CLOCK:OUTSTD_LOGIC);ENDENTITY;ARCHITECTUREARTOFFENPINISSIGNALCOUNT:INTEGERRANGE0TO10#49#;BEGINPROCESS(CLK)ISBEGINIF(CLK'EVENTANDCLK='1')THENIF(COUNT=10#49#)THENCOUNT=0;ELSECOUNT=COUNT+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(COUNT)ISBEGINIF(COUNT=10#24#)THENCLOCK='1';ELSECLOCK='0';ENDIF;ENDPROCESS;ENDARCHITECTURE;D触发器模块——保证测量时间是被测频率整数倍LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDCHUFAISPORT(CLK:INSTD_LOGIC;CLR:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITY;ARCHITECTUREARTOFDCHUFAISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLR,CLK)BEGINIF(CLR='0')THENQ1='0';ELSEIF(CLK'EVENTANDCLK='1')THENQ1=D;ENDIF;ENDIF;ENDPROCESS;Q=Q1;ENDARCHITECTURE;计数模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJISHUISPORT(CLK:INSTD_LOGIC;CLR,ENA:INSTD_LOGIC;OQ:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDENTITY;ARCHITECTUREARTOFJISHUISSIGNALTMP:STD_LOGIC_VECTOR(31DOWNTO0);BEGINPROCESS(CLK,CLR,ENA)ISBEGINIF(CLR='0')THENTMP=00000000000000000000000000000000;ELSIF(ENA='1')THENIF(CLK'EVENTANDCLK='1')THENTMP=TMP+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(ENA)BEGINIFENA'EVENTANDENA='0'THENOQ=TMP;ENDIF;ENDPROCESS;ENDARCHITECTURE;64转8模块——方便单片机读取数据LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJISHUISPORT(CLK:INSTD_LOGIC;CLR,ENA:INSTD_LOGIC;OQ:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDENTITY;ARCHITECTUREARTOFJISHUISSIGNALTMP:STD_LOGIC_VECTOR(31DOWNTO0);BEGINPROCESS(CLK,CLR,ENA)ISBEGINIF(CLR='0')THENTMP=00000000000000000000000000000000;ELSIF(ENA='1')THENIF(CLK'EVENTANDCLK='1')THENTMP=TMP+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(ENA)BEGINIFENA'EVENTANDENA='0'THENOQ=TMP;ENDIF;ENDPROCESS;ENDARCHITECTURE;顶层模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFENPINISPORT(CLK:INSTD_LOGIC;CLOCK:OUTSTD_LOGIC);ENDENTITY;ARCHITECTUREARTOFFENPINISSIGNALCOUNT:INTEGERRANGE0TO10#49#;BEGINPROCESS(CLK)ISBEGINIF(CLK'EVENTANDCLK='1')THENIF(COUNT=10#49#)THENCOUNT=0;ELSECOUNT=COUNT+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(COUNT)ISBEGINIF(COUNT=10#24#)THENCLOCK='1';ELSECLOCK='0';ENDIF;ENDPROCESS;ENDARCHITECTURE;

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功