打印
[FPGA]

fpga应用篇(三):你可能用了假分频

[复制链接]
878|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fpga应用篇(三):你可能用了假分频
分频对于fpga的重要性不言而喻,对于大多数通信方式来说,一个稳定且准确的分频程序对于通信的稳定很重要。为什么你的UART总是不稳定,很有可能你用了一个假分频。让我们来看一个例子:
假如主时钟50MUART通信的波特率为9600,我们以16倍的波特率采样,以保证数据准确,我们需要计50M/9600*16)个主时钟,即大约326个主时钟才输出一个分频时钟,我们返过去看看我们实际分出来的频率,50M/326=153374而我们要的频率是9600*16=153600,竟然差了153600-153374=226hz,显然我们传统的分频方法并不准确,所以才会导致我们通信的不稳定。
下面我们看一种更加精准的分频方式,假如我们有一个N位的寄存器,则寄存器可以表示的最大数为2^N;寄存器初始值为0,以步长K增加,则寄存器每经过2^N/k个时钟回到初始状态。我们想要的频率Fo=F*k/2^N,F为主频,举个例子:假如主频50MN32,我们想要的频率仍为9600*16,则我们可以计算出K值,K=2^32*9600*16/50M=13194139,返回去求我们实际输出的频率 Fo=50M*13194139/2^32=153599.99379,可以看出已经跟153600相差无几,所以这种分频方式更加适合作为通信的分频。
这种方法到底怎么用,我们看一段程序:

我们采用的是32的寄存器,所以程序中最大值为ffff_ffff;一半为7fff_ffff;所以产生的divid信号为占空比为50%的信号,当然可以调节cnt的最大值来改变占空比。tempdivid信号延迟一个时钟的信号,updivid信号的上升沿采用了我们上次介绍的边沿检测,以后我们每次产生不同频率的信号时只需改变span即步长的值,为了调用方便特把span作为parameter类型参数,方便例化。
采用这种分频方式的好处:1.精准2.不需要考虑奇偶分频。
给大家推荐一个fpga公众号:FPGA干货,每天分享fpga相关内容

相关帖子

沙发
luca1986| | 2017-4-11 15:23 | 只看该作者
代码是错的!

使用特权

评论回复
板凳
luca1986| | 2017-4-11 15:26 | 只看该作者
时钟50M,你这种方法根本不可能通过啥步进值产生先分频再倍频的信号!你产生一个精准的37.5Mhz的给我看看!照你的理论模值为4,步进为3即可!50*3/4=37.5!

使用特权

评论回复
地板
licaijunzhuce| | 2017-4-12 14:14 | 只看该作者
代码有些小问题,整体思路还是挺好的。当然应用也有一些局限,如上面所,不能产生37.5MHz。

使用特权

评论回复
5
nethopper| | 2017-4-12 18:31 | 只看该作者
这个算法是按DDS的方式工作的,平均频率可以很精确(=主时钟频率/2^N), 只是输出频率越接近主时钟频率,输出的方波的jitter越大, 在50MHz主时钟频率下输出37.5Mhz,基本上是四个主时钟脉冲,输出三个脉冲。

使用特权

评论回复
6
梁聪聪2014|  楼主 | 2017-4-13 10:29 | 只看该作者
luca1986 发表于 2017-4-11 15:26
时钟50M,你这种方法根本不可能通过啥步进值产生先分频再倍频的信号!你产生一个精准的37.5Mhz的给我看看! ...

N值越大才越精确,你把50M分成4分,误差当然大啊。分辨率是50M/2^n;

使用特权

评论回复
7
梁聪聪2014|  楼主 | 2017-4-13 10:31 | 只看该作者
licaijunzhuce 发表于 2017-4-12 14:14
代码有些小问题,整体思路还是挺好的。当然应用也有一些局限,如上面所,不能产生37.5MHz。 ...

N值越大才越精确,你把50M分成4分,误差当然大啊。分辨率是50M/2^n;

使用特权

评论回复
8
梁聪聪2014|  楼主 | 2017-4-13 10:34 | 只看该作者
nethopper 发表于 2017-4-12 18:31
这个算法是按DDS的方式工作的,平均频率可以很精确(=主时钟频率/2^N), 只是输出频率越接近主时钟频率,输出 ...

对的,谢谢理解

使用特权

评论回复
9
nethopper| | 2017-4-13 11:45 | 只看该作者

如果输出是连续变化的模拟信号,比如正弦波,那么由于幅度上是基本准确的,不会像方波一样被Round Off二值化为0和1,而且输出端还有重构滤波器滤波,因此即使输出频率接近主时钟频率的1/2,输出频率也会非常准确。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

10

帖子

0

粉丝