王婳懿 董 欣 張成林
(上海航天設(shè)備制造總廠,上海 200245)
運(yùn)載火箭測(cè)量系統(tǒng)分頻器用于實(shí)現(xiàn)火箭上三級(jí)發(fā)動(dòng)機(jī)渦輪泵轉(zhuǎn)速的測(cè)量和變換,將發(fā)動(dòng)機(jī)轉(zhuǎn)速降低到適合中心程序單元采集的頻率范圍內(nèi),具有極其重要的作用。在之前的分頻器調(diào)試中,使用信號(hào)發(fā)生器模擬發(fā)動(dòng)機(jī)渦輪泵產(chǎn)生的轉(zhuǎn)速信號(hào)作為分頻器的激勵(lì)信號(hào),當(dāng)同時(shí)進(jìn)行多臺(tái)分頻器的高/低溫試驗(yàn)時(shí),需要多臺(tái)信號(hào)發(fā)生器提供激勵(lì)信號(hào),在信號(hào)發(fā)生器數(shù)量有限的情況下,嚴(yán)重影響了生產(chǎn)進(jìn)度。 筆者采用直接數(shù)字頻率合成技術(shù)[1],以MSP430為控制系統(tǒng)、 FPGA為核心,設(shè)計(jì)了一臺(tái)信號(hào)發(fā)生器,可同時(shí)給8臺(tái)分頻器提供正弦波激勵(lì)信號(hào)。該信號(hào)發(fā)生器在0~9 999Hz頻段內(nèi)頻率可選,波形光滑,系統(tǒng)雜散小。
直接數(shù)字頻率合成器是基于奈奎斯特采樣定理,將已知信號(hào)取樣、量化、編碼,形成可查數(shù)表存于ROM中,通過頻率控制字的改變,輸出所需波形的一種波形合成技術(shù)。筆者設(shè)計(jì)的利用其產(chǎn)生正弦波的信號(hào)發(fā)生器系統(tǒng)如圖1所示。
圖1 正弦波信號(hào)發(fā)生器系統(tǒng)框圖
由圖1可知,系統(tǒng)由正弦波控制模塊和正弦波信號(hào)產(chǎn)生模塊兩部分組成。正弦波控制模塊由MSP430F149和外圍按鍵、數(shù)碼管構(gòu)成。系統(tǒng)通過單片機(jī)產(chǎn)生頻率控制字,設(shè)Fcw為頻率控制字,即累加器模塊每次累加的步進(jìn)值;fc為外部參考時(shí)鐘信號(hào)的頻率;N為相位累加器位數(shù),當(dāng)累加器位數(shù)為N時(shí),可以讀取2N個(gè)存儲(chǔ)單元中的數(shù)據(jù),此時(shí)一個(gè)正弦波的一個(gè)周期最多可以劃分成2N個(gè)抽樣點(diǎn)。FPGA輸出的正弦波頻率f=Fcw×fc/2N,根據(jù)此公式可計(jì)算出所需頻率正弦波的頻率控制字大小、按鍵顯示所選正弦波頻率和數(shù)碼管顯示正弦波頻率。
正弦波信號(hào)產(chǎn)生模塊由移位寄存器、累加器模塊和正弦波查找模塊構(gòu)成。通過正弦波產(chǎn)生模塊產(chǎn)生正弦波的數(shù)字量,再經(jīng)過AD轉(zhuǎn)換得到所需的正弦波。
正弦波控制模塊以MSP430F149為核心控制單元,外接按鍵和數(shù)碼管。當(dāng)用戶按下選頻數(shù)字按鍵0~9后,再按下確認(rèn)按鍵,MSP430f149接收按鍵的數(shù)據(jù),產(chǎn)生一個(gè)頻率控制字,將頻率控制字發(fā)送給FPGA,產(chǎn)生用戶所選頻率的正弦波。為了直觀地顯示按鍵設(shè)定的當(dāng)前正弦波的頻率值,設(shè)置4個(gè)七段LED數(shù)碼管顯示當(dāng)前正弦波的頻率。在按數(shù)字按鍵時(shí),按鍵值采用BCD編碼方式,再通過計(jì)算將BCD轉(zhuǎn)換成二進(jìn)制碼作為真正的頻率控制字來(lái)控制頻率,為防止溢出,要求BCD碼向N位寬的二進(jìn)制碼轉(zhuǎn)換時(shí),N≥[M·log210],其中N為累加器位寬,M為最大頻率控制字十進(jìn)制位數(shù)。正弦波控制模塊的軟件控制流程如圖2所示。由圖2可知,系統(tǒng)循環(huán)檢測(cè)掃描按鍵值,當(dāng)有鍵值按下后,系統(tǒng)通過中斷進(jìn)入循環(huán)體。
圖2 正弦波控制模塊的軟件控制流程
單片機(jī)采用硬件SPI的方式將頻率控制字發(fā)送給FPGA。SPI節(jié)約了芯片管腳,較并行總線通信而言很大程度上節(jié)省了PCB的布局空間。該設(shè)計(jì)中通過MSP430F149單片機(jī)的CLR、SIMO0、UCLK0口接入FPGA的IO口,UCLK0作為移位寄存器的時(shí)鐘信號(hào),32位數(shù)據(jù)通過SIMO0口送入FPGA的移位寄存器數(shù)據(jù)輸入口,CLR信號(hào)經(jīng)過非門后作為移位寄存器的復(fù)位信號(hào),把頻率控制字按照先低位再高位的方式進(jìn)行發(fā)送。
正弦波信號(hào)產(chǎn)生模塊由移位寄存器、累加器模塊和正弦波查找模塊3部分組成[2]。移位寄存器選擇串入并出的32位移位寄存器,移位寄存器將SPI發(fā)送的32位串行數(shù)據(jù)經(jīng)過移位后并行發(fā)送給累加器模塊。累加器模塊(圖3)把頻率控制字每一次累加后得到的數(shù)據(jù)作為正弦查找表的存儲(chǔ)單元的地址[3],將前一次累加的和作為后一次累加時(shí)的累加值之一。
圖3 累加器模塊
在該系統(tǒng)中,把10MHz時(shí)鐘信號(hào)作為外部參考時(shí)鐘,最小頻率分辨率為10×106/2N,為實(shí)現(xiàn)最小頻率分辨率1Hz,選取的N至少大于24,筆者選取N=32。在直接數(shù)字頻率合成中,一般相位累加器的位數(shù)M大于ROM的尋址位數(shù)N,因此累加器的輸出尋址低位M-N位必須舍去,表現(xiàn)在輸出頻譜上就是雜散分量。為了降低相位截?cái)嗾`差,需要增加存儲(chǔ)正弦波幅度量化值的ROM的地址位數(shù),但是尋址位數(shù)增加一位,ROM的存儲(chǔ)容量就增加一倍,為減少正弦查找表的數(shù)據(jù)量,根據(jù)正弦函數(shù)的對(duì)稱性采取壓縮存儲(chǔ)的辦法,在ROM中只儲(chǔ)存0~π/2的數(shù)據(jù),截取相位累加器的高15位作為ROM尋址的位數(shù),相位的高兩位用來(lái)確定波形的象限,其余13位用來(lái)查找正弦表,生成ROM地址。利用最高位和次高位兩位確定當(dāng)前相位值屬于哪個(gè)象限,象限確定法見表1。
表1 象限確定法
整個(gè)正弦波信號(hào)產(chǎn)生模塊流程如圖4所示。按照?qǐng)D4所示進(jìn)行Verilog編程[3],得到所需的符合要求的正弦波信號(hào)發(fā)生器。
圖4 正弦波信號(hào)產(chǎn)生模塊流程
對(duì)產(chǎn)生的波形進(jìn)行仿真,結(jié)果如圖5所示,當(dāng)頻率控制字為十六進(jìn)制數(shù)FC0D7E時(shí),正弦波頻率為38 460Hz,正弦波每個(gè)周期約為26μs。圖5所示即為頻率為38 460Hz正弦波的仿真波形。
在初始位置處,波形存在一定的雜亂,這是因?yàn)楫?dāng)按鍵選擇頻率后,單片機(jī)產(chǎn)生一個(gè)頻率控制字,通過單片機(jī)的SPI口把頻率控制字傳輸給FPGA,F(xiàn)PGA收到頻率控制字后,先需要清除已有的頻率控制字,并開始把新的頻率控制字傳給32位的移位寄存器,移位寄存器在32個(gè)時(shí)鐘到達(dá)后,才把32位串行數(shù)據(jù)完整轉(zhuǎn)移,當(dāng)時(shí)鐘周期超過32位時(shí),F(xiàn)cw為固定值,得到光滑的正弦波波形。
圖5 軟件仿真波形
實(shí)際中,為取得較多抽樣點(diǎn),提高正弦波的精度,降低波形失真度,只取10kHz以下的頻率。試驗(yàn)證明在10kHz頻段下產(chǎn)生的正弦波比圖5的仿真波形更加光滑。
筆者設(shè)計(jì)基于MSP430和Cyclone IV FPGA設(shè)計(jì)了在0~9 999Hz頻段范圍內(nèi),頻率分辨率為1Hz,頻率可選的正弦波信號(hào)發(fā)生器。發(fā)生器系統(tǒng)采用直接頻率合成法,采取壓縮存儲(chǔ)法進(jìn)行查表,降低了相位截?cái)嗾`差,得到的正弦波波形光滑,雜散影響小。經(jīng)測(cè)試證明,產(chǎn)品性能可靠,在某運(yùn)載火箭分頻器檢測(cè)系統(tǒng)上使用,極大地提高了生產(chǎn)效率。