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
信号频率是固定的? 頻率多少都可以 沒關係,DIO22-DIO24還有其他訊號,但其他訊號都是跟前面一樣的,只是delay時間不一樣而已, 1a. 设定FPGA的循环周期为0.1us,這邊我要從哪邊去設定呢,我FPGA clock頻率是給40MHz, 1c. 利用一个U8数组或者布尔二维数组(最前面N个'000', 15个‘101’,27个‘100’, 6个‘000’,15个‘011’,以此类推,這裡也不太懂, 是指前面的constant嗎?
謝謝你的回覆
Hi,
1a. 可以用一个While循环,然后里面用一个Delay函数来确定单次循环的时间。
1c. 不再用PWM生成的那个函数节点,直接把布尔值传递给DO节点:
其中,需要设置数组长度为固定的长度,自己灵活设置吧。
上面的代码仅供参考,如果优化性能的话,可能还要考虑移位寄存器,等等。如果可能的话,建议参加一次NI的FPGA培训。
Good Luck!
Xiaohui Wang
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
Hi,
你改成常量(constant)是可以的,但是就不能够通过RT或者上位机更改要发的波形了。
设置为固定长度的话,可以参考下面的设置方式:
另外,如果您的软件在有效SSP内,可以联系我们上海的技术支持(021-50509800),有些事情你们电话沟通效率更高一些:)
Good Luck!
Xiaohui Wang