基于NiosII的多通道PWM信號(hào)測(cè)量/產(chǎn)生器節(jié)點(diǎn)設(shè)計(jì)
具體實(shí)現(xiàn)的流程如下:
·根據(jù)具體需要依次配置每個(gè)通道為PWM測(cè)量或者產(chǎn)生通道,由PWM配置控制器實(shí)現(xiàn),該控制器與NiosII處理器的PWM控制器相連。
·使用一個(gè)基準(zhǔn)地址計(jì)數(shù)器給出的循環(huán)地址信號(hào)對(duì)所有的RAM讀寫(xiě)進(jìn)行同步,該基準(zhǔn)地址計(jì)數(shù)器給出不同延遲周期的地址計(jì)數(shù),以修正RAM讀取產(chǎn)生的延時(shí)。
·PWM產(chǎn)生:將高/低電平周期數(shù)寫(xiě)入預(yù)置高/低電平計(jì)數(shù)器,計(jì)數(shù)器自加器按基準(zhǔn)地址計(jì)數(shù)器給出的修正延遲的地址讀出計(jì)數(shù)并+1后重新寫(xiě)入計(jì)數(shù)器RAM;比較器按基準(zhǔn)地址計(jì)數(shù)器給出的修正延遲地址計(jì)數(shù)讀出預(yù)置高/低電平周期數(shù)進(jìn)行比較決定輸出的是高/低電平。
這種方法得到頻率為:
其中為該模塊的時(shí)鐘頻率,為預(yù)置數(shù)計(jì)數(shù)器,采用循環(huán)方式時(shí)一個(gè)周期的時(shí)間為通道數(shù)與預(yù)置數(shù)和之積;本節(jié)點(diǎn)中,因此,滿足測(cè)速測(cè)距模塊0~10KHz的設(shè)計(jì)需要;若需要更高頻率,可以提高fCLK或者進(jìn)行通道分組,以降低每組的Nch,占空比的精度與頻率有關(guān),頻率越低,可調(diào)精度越高。
·PWM測(cè)量:是PWM產(chǎn)生的逆過(guò)程,測(cè)量的精度與產(chǎn)生的PWM信號(hào)的精度相同。每隔一個(gè)脈沖更新一次測(cè)得的周期和占空比值,因此可用于周期快速變化PWM信號(hào)的測(cè)量。
·死區(qū)控制器:僅僅對(duì)應(yīng)于PWM產(chǎn)生部分,該模塊輸出的PWM信號(hào)初始間隔為1個(gè)TCLK,根據(jù)具體的需要配置相應(yīng)的延時(shí)即可。
節(jié)點(diǎn)軟件設(shè)計(jì)
上位機(jī)通過(guò)RS-485發(fā)送命令包來(lái)控制智能節(jié)點(diǎn)的動(dòng)作,該命令包順序由8bit標(biāo)識(shí)碼,8bit包長(zhǎng)度,16bit目標(biāo)節(jié)點(diǎn)號(hào),16bit包編號(hào),命令區(qū)和16bit CRC16校驗(yàn)碼組成,NiosII處理器負(fù)責(zé)解包,校驗(yàn)CRC碼是否正確,并且根據(jù)命令動(dòng)作PWM控制器。當(dāng)需要讀取PWM周期和占空比測(cè)量值時(shí),NiosII處理器還需要把從高/低電平計(jì)數(shù)保存器RAM讀出的值組包發(fā)送給上位機(jī)。
NiosII處理器采用中斷方式接受通過(guò)RS-485總線發(fā)來(lái)的命令包,中斷處理通過(guò)狀態(tài)機(jī)的方式處理每一個(gè)接收到的字節(jié),具體功能描述如下:
·檢查標(biāo)識(shí)碼,檢查是否為智能PWM節(jié)點(diǎn)類(lèi)型的命令包,啟動(dòng)狀態(tài)機(jī),并打開(kāi)定時(shí)器,防止當(dāng)命令包不完整時(shí)接受狀態(tài)機(jī)無(wú)法回到初始狀態(tài);
·讀取包長(zhǎng)度信息,檢查是否目標(biāo)為本節(jié)點(diǎn),是則記錄包編號(hào);
·如果標(biāo)識(shí)碼不是智能PWM節(jié)點(diǎn)類(lèi)型的命令包則不對(duì)命令進(jìn)行處理,是則將命令放入緩沖中待處理;
·檢查CRC校驗(yàn)碼是否正確,如正確,則將緩沖中的命令寫(xiě)入命令隊(duì)列;如果不正確,則將錯(cuò)誤信息寫(xiě)入待發(fā)送信息隊(duì)列。
命令包括配置某位為PWM測(cè)量/產(chǎn)生,配置某位的預(yù)置數(shù)計(jì)數(shù)器,讀取某位的計(jì)數(shù)保存器三類(lèi)。
主循環(huán)中完成的工作是:
·檢查命令隊(duì)列中是否有未處理的命令并處理;
·檢查待發(fā)送信息隊(duì)列長(zhǎng)度是否達(dá)到預(yù)定值,是則啟動(dòng)一次發(fā)送,將待發(fā)送信息打包發(fā)送給上位機(jī)。
實(shí)驗(yàn)結(jié)果
使用ModelSim進(jìn)行仿真,配置使用了10通道作為PWM信號(hào)輸出,隨機(jī)賦值了給每個(gè)通道不同的周期和占空比,得到的仿真結(jié)果如圖4所示。
圖4 智能PWM信號(hào)產(chǎn)生器仿真結(jié)果圖
將這10個(gè)通道與另外配置為PWM信號(hào)測(cè)量的10個(gè)通道相連接,進(jìn)行周期和占空比測(cè)量,得到的高低電平周期測(cè)量結(jié)果與實(shí)際值誤差限為,由此導(dǎo)致的頻率誤差為:
當(dāng)取f=10KHz時(shí),Δf≈200Hz;取f=1KHz時(shí),Δf≈2Hz,頻率越低,測(cè)量精度越高。
結(jié)語(yǔ)
針對(duì)于列車(chē)控制系統(tǒng)半實(shí)物仿真平臺(tái)測(cè)速測(cè)距模塊的多通道PWM信號(hào)測(cè)量/產(chǎn)生的要求,本文提出了一種利用NiosII軟核處理器替代通訊用MCU的智能多通道PWM信號(hào)測(cè)量/產(chǎn)生器的設(shè)計(jì)方案,給出了利用FPGA實(shí)現(xiàn)多通道PWM信號(hào)測(cè)量/產(chǎn)生器模塊的方法,并且編寫(xiě)了NiosII處理器的通訊控制軟件。
本設(shè)計(jì)將應(yīng)用在北京全路通通信信號(hào)研究設(shè)計(jì)院列控實(shí)驗(yàn)室的實(shí)物測(cè)控接口平臺(tái)中,連接測(cè)速測(cè)距模塊,將仿真端與實(shí)物端相連。除此之外,本設(shè)計(jì)還可應(yīng)用在多電機(jī)控制等領(lǐng)域。
參考文獻(xiàn):
1. 徐光輝、程?hào)|旭、黃如等,基于FPGA的嵌入式開(kāi)發(fā)與應(yīng)用,電子工業(yè)出版社, 2006.
2. 李旭、謝運(yùn)祥,PWM技術(shù)實(shí)現(xiàn)方法綜述,電源技術(shù)應(yīng)用,2005,02:40~43
pwm相關(guān)文章:pwm原理
評(píng)論