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