一、为什么任意分频,FPGA的最初实验可能应该是分频实验而不是流水灯。 或者根据LCD1602的' Hello World ',因为分频的思想在FPGA中极其重要。 当初,为了展示效果,为了引起兴趣而安排了流水灯(MCU的学习也是如此)。
大多数教科书都提到了如何分频,包括奇数分频、偶数分频、小数分频等。 根据教科书的不同,也讨论了任意分频(半分频、任意分数分频)的原理,但使用的是相位积的电路,占空比不能达到50%,也不灵活。
但是,没有准确、易懂、高精度的任意分频原理的教科书(至少从没见过Bingo ),同时也没有可以用同一个电路实现任意频率控制的设计。 Bingo就当年制作的任意波形发生器时相累加器的原理,从中得到启示,总结了高精度任意频率合成的重要思考,希望能为大家做点贡献,对大家有所帮助。
二.任意分频的原理和性能
1. DDS相位累加器(1) DDS合成流程
首先阐述DSS (直接频率合成法)的原理。
ds是一种重要的频率合成方法,在波形发生器中有极其重要的应用。 DDS主要由以下部分组成:
a )相位累加器
b ) RAM数据读取
c ) D/A转换器
d )低通滤波器
请参照以下流程图。 直接频率合成法的流程图中有固定模块,输入频率控制器,输出固定频率的波形。
该电路最主要的模块是相位累加器,通过相位累加器的循环计数,循环读取RAM的数据,获得一定频率的波形数据。
)2)相位累加器原理
相位累积原理的流程如上。
输入频率控制字,基于算法实现相位变化,分析如下。
将FPGA基准频率设为50MHz,即基准频率:
(MHz ) )。
将计数器设为32位计数器;
k为频率控制字时,相位输出的频率如下所示。
(1) ) ) )。
也就是说
(2) ) ) )。
基于相位累计原理和RAM缓存的读取数据,按每一周期读出RAM数据间隔k。
K=1时,式可以输出最小频率,根据式(1) :
因此,最小波形频率上升到0.011655Hz。
fo=1Hz时,式(2)
因此,对于Hz的每次增加,k的步长为85.90。
K=N/2时,公式可以输出最大频率。 (因为每个CLK都会跳),此时,根据公式(1),可以得到以下内容。
因此,根据频率控制字k的变化,可输出和固定频率的波形。
2 .将任何分频原理应用于FPGA时,在对频率要求比较高的情况下,也可能采用相位累加器原理产生固定频率的方法。
我们规定将Cnt分成一半50%。 具体情况如下。
)1)时、即低电平
)2)时,fo=1,即高电平。
同上:
在FPGA中,Verilog代码如下所示:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。
* Module Name : clk_generator
* Engineer : Crazy Bingo
* Target Device : EP2C8Q208C8
*工具版本3360 Quartus ii 9.1 sp 1
* Create Date : 2011-6-25
* Revision : v1.0
*描述:
******************************
/*******************************。
fc=50MHz 50*10^6
fo=fc*k/(2^32 ) )
k=fo*(2^32 )/fc
=fo*(2^32 )/(50*10^6)
******************************
模块clk _ generator
#
(
parameter freq _ word=32 ' d 8590///1 khz
)
(
input clk,//50MHz
input rst_n,//clock reset
output reg clk_out
);
----------------
reg [31:0] max_value;
always @ (posedgeclkornegedgerst _ n )
比根
if (! rst_n )
max_value=1'b0;
else
max_value=max_value FREQ_WORD;
结束
----------------
always @ (posedgeclkornegedgerst _ n )
比根
if (! rst_n )
clk_out=1'b0;
else
比根
if(max_value32(H7fff_ffff ) ) ) ) ) ) ) ) ) ) ) ) )。
clk_out=1'b0;
else
clk_out=1'b1;
结束
结束
结束模块
本代码是从DDS相位累加器,根据移植总结的任意频率分频的原理。 该模块已应用于多个要求频率精度的项目(例如在UART中,为了获得115200Hz的bps,利用该任意分频原理可以获得准确的方法,在一定程度上提高数据传输的精度)。
DDS中相位累加器的任意分频原理同样适用于一般工程。 在一些应用场合,还是值得考虑的。 这个APP是Bingo的个人主观APP。 如果有异议的话,请联系本人。