NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

如何調整方波波型的脈波寬度

已解决!
转到解答

Untitled12.pngCapture2.PNG

 

大家好,想請問各位前輩,如圖片所示,我已弄出DIO24、DIO23的波型,但像DIO22這種有不同脈波寬度該如何產生呢,或是有其他的方法, 謝謝大家
附檔為PWMOut sub vi

0 项奖励
1 条消息(共 6 条)
2,867 次查看

Hi,

DIO24-DIO22需要输出的PWM信号频率是固定的?除了DIO24-DIO22之外还有其他信号吗?比如最下面的那个滞后了14.4us的信号。

1. 如果是固定的频率输出,那么可以尝试:

     1a. 设定FPGA的循环周期为0.1us;

     1b. 使用一个IO节点,包含DIO24,DIO23, DIO22(也就是那个DIO24节点,鼠标移动到最下方,向下拉)

     1c. 利用一个U8数组或者布尔二维数组(最前面N个'000', 15个‘101’,27个‘100’, 6个‘000’,15个‘011’,以此类推)

      //这些IO节点输出也是需要占用时间的,所以到时候根据实际波形进行微调

2. 如果输出频率是变的,整个波形的比例是否会保持不变?那就用上面的信号,把循环速率设低一点,进行N次分频。

3. 如果波形比例(占空比)也会发生变化,那么可以考虑1中的数组是RT传过来。

 

这种情况下,可以尽量保证DIOx是同一个时间节拍更新,保证同步性。

 

Good Luck!

Xiaohui Wang

0 项奖励
2 条消息(共 6 条)
2,838 次查看

Capture00.PNG

 

信号频率是固定的? 頻率多少都可以 沒關係,DIO22-DIO24還有其他訊號,但其他訊號都是跟前面一樣的,只是delay時間不一樣而已, 1a. 设定FPGA的循环周期为0.1us,這邊我要從哪邊去設定呢,我FPGA clock頻率是給40MHz, 1c. 利用一个U8数组或者布尔二维数组(最前面N个'000', 15个‘101’,27个‘100’, 6个‘000’,15个‘011’,以此类推,這裡也不太懂,01.PNG 是指前面的constant嗎?
謝謝你的回覆

0 项奖励
3 条消息(共 6 条)
2,832 次查看
解答
已被主题作者 cool49 接受

Hi,

1a. 可以用一个While循环,然后里面用一个Delay函数来确定单次循环的时间。

1c. 不再用PWM生成的那个函数节点,直接把布尔值传递给DO节点:

image.png

其中,需要设置数组长度为固定的长度,自己灵活设置吧。

上面的代码仅供参考,如果优化性能的话,可能还要考虑移位寄存器,等等。如果可能的话,建议参加一次NI的FPGA培训。

Good Luck!

 

Xiaohui Wang

0 项奖励
4 条消息(共 6 条)
2,826 次查看

as.png23.png

hi XiaohuiWang :
再run的時候跑出 The FPGA Module does not support variable-sized arrays on the front panel of the top-level VI.
這樣是要把control 改成 constant嗎
其實我月初有去上過FPGA的課程了,連上了三天,但對於coding這個還是不太熟悉
thanks

0 项奖励
5 条消息(共 6 条)
2,814 次查看

Hi,

你改成常量(constant)是可以的,但是就不能够通过RT或者上位机更改要发的波形了。

设置为固定长度的话,可以参考下面的设置方式:image.png

另外,如果您的软件在有效SSP内,可以联系我们上海的技术支持(021-50509800),有些事情你们电话沟通效率更高一些:)

 

Good Luck!

Xiaohui Wang

 

0 项奖励
6 条消息(共 6 条)
2,797 次查看