搜索
bottom↓
回复: 27

在fpga里如何改变方波的占空比?

[复制链接]

出0入0汤圆

发表于 2016-5-12 18:31:06 | 显示全部楼层 |阅读模式
如题,输入源是50%的方波,输出也是50%,能否做个模块改变数出方波的占空比?
现在输出的占空比多少合适还不知道,实验测试后可定成固定的占空比,不必再调。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2016-5-12 18:57:08 | 显示全部楼层
本帖最后由 NJ8888 于 2016-5-12 18:58 编辑

A输入源固定最好办,B不固定但是稳定(不是时刻变动)也不难,不管输入源占空,只用标称周期计数,两个按键一个加一个减,比如标称周期100us,你想有1/64级变化那用640k频率计数,上电开始计数32个翻为高64后恢复0,按加键33 34.。。按减键31 30.。这样。B要先测量一个周期再根据周期数来算涉及到除法麻烦,根据精度查表找离散的值做计数频率

出0入0汤圆

发表于 2016-5-12 19:27:31 | 显示全部楼层
从原理上来说:这个输入的波型频率必须是确定的,因为你能预测接下的波形会是怎么样,或是你可以接受一个波型的延迟。
如果深足这两点,可以用 pll 倍频,然后再分频,或用一个远高于它的频率来采上升沿,然后延时

出0入0汤圆

 楼主| 发表于 2016-5-12 19:29:29 | 显示全部楼层
NJ8888 发表于 2016-5-12 18:57
A输入源固定最好办,B不固定但是稳定(不是时刻变动)也不难,不管输入源占空,只用标称周期计数,两个按键 ...

输入固定50%,输出也固定,只是暂时输出是多少需要测试后才知道?
不必做按键,只需在程序里设定一个常量即可,我改变后编译测试,最后固定用合适的常量即可。

出0入0汤圆

 楼主| 发表于 2016-5-12 19:34:10 | 显示全部楼层
linjpxt 发表于 2016-5-12 19:27
从原理上来说:这个输入的波型频率必须是确定的,因为你能预测接下的波形会是怎么样,或是你可以接受一个波 ...

这个输入的频率是固定的,不高,就100K,另有2M的频率可用。

出0入0汤圆

 楼主| 发表于 2016-5-12 19:49:04 | 显示全部楼层
比如 输入是50%占空比,输出60%占空比怎么做?

出0入22汤圆

发表于 2016-5-12 19:57:02 来自手机 | 显示全部楼层
如果周期是确定的,而且频率不是很高(小于1m),那么可以考虑测量周期,然后fpga自己输出pwm

出0入0汤圆

 楼主| 发表于 2016-5-12 22:01:26 | 显示全部楼层
zxq6 发表于 2016-5-12 19:57
如果周期是确定的,而且频率不是很高(小于1m),那么可以考虑测量周期,然后fpga自己输出pwm ...

输出要与输入同步,每个周期尽可能没有延时。

出0入22汤圆

发表于 2016-5-13 09:11:10 | 显示全部楼层
McuY 发表于 2016-5-12 22:01
输出要与输入同步,每个周期尽可能没有延时。

尽可能没有延时是做不到的,而且,fpga的延时不可预测。不过,延时做到ns级别,还是有可能的。

出0入0汤圆

发表于 2016-5-13 09:53:22 | 显示全部楼层
可以做到delay一个周期。
对输入信号的每个周期用高频钟计数,得到计数值后就修改输出信号的下一个周期的占空比。很简单啊。

出0入0汤圆

发表于 2016-5-13 11:57:47 | 显示全部楼层
这种问题,看我的帖子通通可以解决

http://www.amobbs.com/thread-5597618-1-1.html

出0入0汤圆

发表于 2016-5-13 12:46:23 | 显示全部楼层
将把你的输入源作为触发条件,然后通过PLL后输出你想要的,延时应该可以做到很小。

出0入0汤圆

发表于 2016-5-13 17:23:40 | 显示全部楼层
用1个2M时钟,改变一个100k方波的占空比,还是非常简单的。相位会有轻微的变化,因为要用2M时钟采样。
1,用2M时钟把100k打两拍
2,取100k的上升沿
3,用该上升沿复位一个计数器
4,用该计数器输出一个新的100k方波,为0时,输出1,为某一个参数值时,输出0。
5,改变这个参数值,即可任意改变占空比。

出0入0汤圆

发表于 2016-5-13 17:27:05 | 显示全部楼层
如果想时延小,可以把时钟提升到125M,时延大概16ns,如果还不够,还可以和原始信号做一下组合电路,延时能控制在5ns以内。

出0入0汤圆

发表于 2016-5-13 17:57:00 | 显示全部楼层
不需要那么麻烦,用原来的上升沿延时两拍的正脉宽,第一拍用来启动计数器,输出是这两个的或。
这样可以上升沿无廷时,但有一个最小占空比。

出0入0汤圆

 楼主| 发表于 2016-5-17 19:14:22 | 显示全部楼层
延时一个整周期也行

因为以前主要做单片机,fpga这个没弄过。得慢慢摸索。

哪位能帮忙写个v码仿真一下么?不胜感激。

出0入0汤圆

 楼主| 发表于 2016-5-17 19:15:09 | 显示全部楼层
muok@sohu.com 发表于 2016-5-13 17:23
用1个2M时钟,改变一个100k方波的占空比,还是非常简单的。相位会有轻微的变化,因为要用2M时钟采样。
1, ...

多谢。

慢慢琢磨下怎么下手。

出0入0汤圆

 楼主| 发表于 2016-5-17 19:16:13 | 显示全部楼层
RAMILE 发表于 2016-5-13 11:57
这种问题,看我的帖子通通可以解决

http://www.amobbs.com/thread-5597618-1-1.html

多谢了,学习消化下您的代码。

出0入0汤圆

发表于 2016-5-17 22:46:22 | 显示全部楼层
本帖最后由 bj232 于 2016-5-17 22:55 编辑
McuY 发表于 2016-5-17 19:14
延时一个整周期也行

因为以前主要做单片机,fpga这个没弄过。得慢慢摸索。

我简单写了一个仿真,你要不看看是否满意。看图片吧
我假设待处理信号250KHz,FPGA内部使用250MHz,正好是1000倍,方便计算



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-5-17 23:02:18 | 显示全部楼层
当然,我这个程序是针对固定输入的250KHz频率,进行的设计,如果你想任意输入一个频率的50%方波信号,都想实现占空比可调,那我估计存在1,信号的输出延迟不确定,频率变化时,2,PWM信号的频率与输入频率会有一定差异,3,倍频肯定不是正好都是1000倍,导致占空比无法得到非常精确的数据。。。等问题吧

出0入0汤圆

 楼主| 发表于 2016-5-24 05:57:20 | 显示全部楼层
bj232 发表于 2016-5-17 23:02
当然,我这个程序是针对固定输入的250KHz频率,进行的设计,如果你想任意输入一个频率的50%方波信号,都想 ...

您好,多谢。
您这个正是我需要的,我的原始信号100K,是固定的。可用2M的时钟,20倍。

能否把代码共享学习下。非常感谢!

出0入0汤圆

发表于 2016-5-25 07:00:32 | 显示全部楼层
McuY 发表于 2016-5-24 05:57
您好,多谢。
您这个正是我需要的,我的原始信号100K,是固定的。可用2M的时钟,20倍。

我调用了一个PLL模块,其他的都很简单,你看看吧,由于不知道你使用的是什么开发环境,我只是把我的.v文件给你了,你可以在ise里面轻松地实现仿真



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-5-25 07:03:28 | 显示全部楼层
McuY 发表于 2016-5-24 05:57
您好,多谢。
您这个正是我需要的,我的原始信号100K,是固定的。可用2M的时钟,20倍。

我给你的文件,我只是在仿真上面看了,具体应用中,如果有问题,联系我,咱们一起讨论、修改、完善吧

出0入0汤圆

 楼主| 发表于 2016-5-25 09:24:30 | 显示全部楼层
bj232 发表于 2016-5-25 07:03
我给你的文件,我只是在仿真上面看了,具体应用中,如果有问题,联系我,咱们一起讨论、修改、完善吧 ...

多谢啦!   

出0入0汤圆

 楼主| 发表于 2016-5-25 09:37:03 | 显示全部楼层
能否不使用pll,尽可能简单,然后占空比5%步进就行。

出0入0汤圆

发表于 2016-5-27 12:34:47 | 显示全部楼层
McuY 发表于 2016-5-25 09:37
能否不使用pll,尽可能简单,然后占空比5%步进就行。

可以不用PLL的,只要你能提供给我一个频率比较高的时钟就好了。比如说,你芯片的晶振,是用10MHz,那么你可以输出10兆÷20=0.5兆以下的任意频率的PWM

出0入0汤圆

发表于 2016-5-27 12:38:04 | 显示全部楼层
本帖最后由 bj232 于 2016-5-28 08:16 编辑
McuY 发表于 2016-5-25 09:37
能否不使用pll,尽可能简单,然后占空比5%步进就行。

晚上回家,我给你写个2Mhz输入,100KHz输出,百分之5步进的代码吧,仅供参考




代码文件





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2016-5-30 09:41:11 | 显示全部楼层
bj232 发表于 2016-5-27 12:38
晚上回家,我给你写个2Mhz输入,100KHz输出,百分之5步进的代码吧,仅供参考

多谢您了!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-12 23:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表