基于PC104總線的2FSK調(diào)制器的設(shè)計與實現(xiàn)
嵌入式計算機(jī)系統(tǒng)在現(xiàn)代工業(yè)控制中發(fā)揮著越來越重要的作用,它具有便攜、可靠、低功耗、通用、易擴(kuò)展等諸多優(yōu)點。使用嵌入式系統(tǒng)進(jìn)行工業(yè)控制要涉及到計算機(jī)數(shù)據(jù)的傳輸、采集、調(diào)制解調(diào)等一系列問題。
本調(diào)制器是一種基于PC104總線的嵌入式系統(tǒng)的外圍設(shè)備,嵌入式計算機(jī)系統(tǒng)通過PC104總線將數(shù)據(jù)發(fā)送到端口,調(diào)制器接收數(shù)據(jù)并進(jìn)行調(diào)制后,將信號輸出到受控設(shè)備,從而對相應(yīng)設(shè)備起到控制的功能。在本調(diào)制器的硬件電路中使用FPGA,提高了系統(tǒng)的通用性。
1總體結(jié)構(gòu)
該調(diào)制器實現(xiàn)的功能主要包括:識別并接收總線發(fā)送的數(shù)據(jù);根據(jù)不同地址控制信號將數(shù)據(jù)按路區(qū)分(共四路);每路分別將數(shù)據(jù)按照連續(xù)調(diào)制的方式進(jìn)行2FSK調(diào)制;對調(diào)制后的信號進(jìn)行放大整形并發(fā)送到端口。
因此,該調(diào)制器的電路部分分別包括數(shù)據(jù)接收部分、FPGA及外圍電路(實現(xiàn)數(shù)據(jù)分路及數(shù)字調(diào)制功能)、D/A轉(zhuǎn)換電路、放大濾波電路等。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
2 PC104總線及數(shù)據(jù)接收電路
PC104總線是專門為嵌入式系統(tǒng)開發(fā)的系統(tǒng)總線,是一種自堆棧式、模塊化的總線,它基于ISA總線發(fā)展而來,有16位和8位兩種接口方式(分別為64+40引腳和 64引腳端口結(jié)構(gòu)),該總線具有結(jié)構(gòu)緊湊、便攜、可靠、功耗低、易擴(kuò)展等優(yōu)點。對于工程開發(fā)而言,常用的引腳主要有以下幾個:
SD0~SD7,SD8~SD15:數(shù)據(jù)總線,當(dāng)采用8位接口方式時,只有SD0~SD7工作;
SA0~SA19,LA17~LA23:地址信號,對端口進(jìn)行操作時使用SA0~SA9;
AEN:DMA選通信號,為高電平時表示處于DMA模式;
IOW,IOR:端口寫、讀信號,低電平有效;
SYSCLK:系統(tǒng)提供的基準(zhǔn)時鐘信號,是標(biāo)準(zhǔn)的方波信號,約為8 MHz;
VCC,GND,+12 V,-12 V:系統(tǒng)提供的電源接口。[!--empirenews.page--]
數(shù)據(jù)接收電路就是要在正確的時序上將所需的數(shù)據(jù)進(jìn)行提取,還要實現(xiàn)將電路工作狀態(tài)傳送回總線,以便總線決定是否發(fā)送下組數(shù)據(jù)的功能。由于PC104總線最高支持約8 MHz的時鐘頻率,而受控設(shè)備所需的2FSK信號頻率為幾千赫茲,因此這里只用8位數(shù)據(jù)總線就完全能夠滿足要求。
總線接收電路如圖2所示。其中SD0~SD9,SA0~SA9是從總線發(fā)來的數(shù)據(jù)、地址信號,SEL0~SEL3為分路選擇信號, ANSWER0~ANSWER3為FPGA的狀態(tài)返回信號,由于總線速度要比2FSK輸出速度高得多,因此,總線要對FPGA數(shù)據(jù)緩存器是否為空進(jìn)行查詢,當(dāng)FPGA沒有完成數(shù)據(jù)轉(zhuǎn)換時,總線要等下個周期,直到狀態(tài)返回信號顯示FPGA內(nèi)部為空時,總線才可以發(fā)送下組數(shù)據(jù)到FPGA。74LS273負(fù)責(zé)將每路的數(shù)據(jù)分別進(jìn)行鎖存,4路數(shù)據(jù)共使用4個。OUT1D0~D7為第一路8位數(shù)據(jù)輸出,LOCK0為其控制信號,表示數(shù)據(jù)的更新。
3 FPGA及其外圍電路
FPGA具有集成度高、設(shè)計靈活、易于修改、節(jié)省空間、通用性高等優(yōu)點。本調(diào)制器中FPGA采用的是Altera公司的EPF10K20TC144-4器件,該器件具有20 000個典型門,1 153個邏輯單元,144引腳,包括2個全局輸入時鐘,4個全局輸入,86個通用可編程I/O引腳。該芯片采用TQFP封裝,芯片面積較小,功耗低,其輸入、輸出與TTL,與PC104總線電平完全兼容。FPGA電路主要實現(xiàn)的功能為:接收數(shù)據(jù)提取電路發(fā)送的分路數(shù)據(jù);以總線上的SYSCLK時鐘為基準(zhǔn),通過分頻產(chǎn)生受控設(shè)備能識別的頻率;為每路輸出進(jìn)行2FSK的數(shù)字調(diào)制,保證信號的連續(xù)性;完成本身的FPGA電路配置。[!--empirenews.page--]
FPGA配置電路如圖3所示。
FPGA的配置使用PS和JTAG兩種方式,既能實現(xiàn)JTAG方式下電路在線調(diào)試,又能保證調(diào)試完成后能夠正確使用相應(yīng)的配置器件。其中 JP5*2插座為JTAG配置端口,TDI、TDO、TMS、TCK為JTAG配置引腳,該配置方式采用BlasterMV線,通過配置計算機(jī)的并口與電路板配置端口進(jìn)行連接,用于將編寫好的配置數(shù)據(jù)實時傳送到FPGA,該方式主要用于電路調(diào)試;EPC1PC8為FPGA配置器件,采用PS(被動串行)配置方式,由于FPGA內(nèi)部存儲器屬于易失性RAM存儲,因此每次加電后都要將程序重新寫入FPGA,配置器件本身就是存儲器,其主要作用就是在每次加電后將程序?qū)懭隖PGA,保證調(diào)試完畢的電路能夠正常單獨進(jìn)行工作。
來自前級電路的數(shù)據(jù)及控制信號、發(fā)到D/A轉(zhuǎn)換電路的數(shù)據(jù)都連接到FPGA芯片的通用I/O引腳,通過編程實現(xiàn)所需功能。對FPGA的編程使用 Altera公司的QuartusⅡ軟件,該軟件采用圖形化與VHDL語言混合編程,易于調(diào)試修改。編程實現(xiàn)的主要功能為:對輸入數(shù)據(jù)進(jìn)行鎖存移位,確保每位數(shù)據(jù)都能得到正確處理;產(chǎn)生兩組分頻時鐘參與2FSK調(diào)制,并使分頻后的時鐘按照時序進(jìn)入數(shù)字調(diào)制器;數(shù)字調(diào)制器負(fù)責(zé)將不同頻率始終按照順序依次產(chǎn)生連續(xù)量化的8位正弦波數(shù)字量輸出到端口。
本設(shè)計中由于采用兩種頻率分時產(chǎn)生,按時序進(jìn)入調(diào)制器,而正弦波數(shù)字調(diào)制器單獨工作的方法,保證了輸出正弦波具有連續(xù)的相位,不會產(chǎn)生相位突變。
4 D/A轉(zhuǎn)換電路
D/A轉(zhuǎn)換共包括四路,其主要功能是將FPGA輸出的已調(diào)制好的2FSK數(shù)字信號轉(zhuǎn)換為正弦波信號。由于FPGA在進(jìn)行數(shù)字調(diào)制時產(chǎn)生的是連續(xù)量化的正弦波形,兩個頻率之間不存在相位的突變,不會存在大量的高頻雜波,因此,后期的信號處理電路使用放大電路與簡單的π型濾波器對信號進(jìn)行處理即可得到比較理想的2FSK信號。[!--empirenews.page--]
D/A轉(zhuǎn)換電路如圖4所示。
此電路采用AD7524作為D/A轉(zhuǎn)換器,AD7524屬于T型電阻網(wǎng)絡(luò)型DAC,電流輸出,8位數(shù)字輸入,輸出建立時間0.2μs/0.15μs,其數(shù)字輸入端可采用5 V/15 V兩種輸入,本電路采用兼容TTL電平的5 V輸入。電路中將其輸入控制端CS、WR同時接地,當(dāng)有來自FPGA的數(shù)據(jù)AD101~7輸入時無需鎖存,直接進(jìn)行轉(zhuǎn)換,因此要求FPGA的輸出要具有鎖存功能,此接法可減少輸出控制線,減少時序干擾。R1AD1和R1AD2為D/A輸出波形調(diào)整電阻,主要用于調(diào)整波形位置,不致產(chǎn)生失真。D/A輸出采用雙極性接法,通過兩路LM324通用放大器進(jìn)行電壓放大,輸出2FSK信號。圖5(a)為經(jīng)過D/A轉(zhuǎn)換后輸出的波形在示波器上的截圖,由圖中可以看到,數(shù)字調(diào)制并經(jīng)D/A轉(zhuǎn)換后,波形是一種階梯狀正弦波,且波形連續(xù),頻率變換交界處無相位突變。該信號經(jīng)過雙極性放大器放大并通過π型濾波器后變成如圖5(b)所示的連續(xù)正弦波。
5結(jié)語
采用FPGA進(jìn)行2FSK調(diào)制不但能產(chǎn)生連續(xù)相位,還能通過軟件直接修改其調(diào)制方式、產(chǎn)生頻率等一系列參數(shù),具有很好的通用性。
本電路中數(shù)據(jù)提取電路屬于原理性電路,實際設(shè)計中可將該部分電路置于FPGA內(nèi)部進(jìn)行設(shè)計,而系統(tǒng)參考時鐘SYSCLK可接在FPGA的全局時鐘輸入端,減少延遲差異。