2009年6月8日 星期一

使用FPGA來產生PWM信號,為什麼0% duty cycle還是會有一段短的時間會有pulse?

 

又到了 LabVIEW FPGA Q&A 時間,這個現象我以前也會碰到,因為我拿 LabVIEW 的 PWM 範例直接下去 compile,但是 NI 給的 FPGA PWM 範例其實是可以再改善的。這是 Example Finder 所提供的範例:

image

這時候如果 duty cycle 是 0% 或 100% 的話, low pulse 或 high pulse 的值很有可能是 0,但是將 "0" feed 給 Loop Timer 的話,它很難真正給你停 0 秒,因為這個指令已經被下了,說什麼也要花幾個 tick 的時間。如果可以想辦法改一下的話,讓low pulse 或 high pulse等於0的時候直接送出 0V 或 5V,就不會有那個現象了。這裡有個範例給大家看看:

Example of modified FPGA PWM

還有,這邊再附上一個很方便的VI,讓我們從RT那邊幫我們算 high & low ticks 應該要多少,只要跟它講你要的 duty cycle以及PWM的頻率就好了。注意,此VI會假設FPGA那邊是用預設的40Mhz的timebase,假如你用其他的timebase,那可能這個VI還要在修改一下。用途如下:

image

Calculate PWM High and Low Ticks.vi

沒有留言:

張貼留言