利用賽靈思Spartan-6器件和一些外設(shè)組件輕松為學(xué)生和新手構(gòu)建一款有趣的演示平臺(tái)。
我們近期打算北京理工大學(xué)開發(fā)一款數(shù)字設(shè)計(jì)教學(xué)平臺(tái),它能展現(xiàn)FPGA在通信和信號(hào)處理領(lǐng)域的實(shí)際效用。這個(gè)平臺(tái)要直觀易用,能幫助學(xué)生了解數(shù)字設(shè)計(jì)的各個(gè)方面,同時(shí)還要便于學(xué)生針對(duì)自己獨(dú)特的系統(tǒng)設(shè)計(jì)進(jìn)行定制。
當(dāng)時(shí)我們電子工程系進(jìn)就能否用FPGA的I/O引腳作為比較器或直接采用1位模數(shù)轉(zhuǎn)換器展開了一場激烈辯論。我們決定驗(yàn)證一下前提條件,試圖在XRadio平臺(tái)設(shè)計(jì)中采用FPGA比較器。該平臺(tái)就是我們采用賽靈思低成本Spartan?-6 FPGA和一些常見外設(shè)組件設(shè)計(jì)而成的一個(gè)全數(shù)字FM無線電接收器。去年賽靈思大學(xué)計(jì)劃(XUP)總監(jiān)Patrick Lysaght剛好來北京理工大學(xué)訪問,我們借機(jī)向其演示了這款能正常工作的無線電。這款設(shè)計(jì)的簡易性給他留下了深刻印象,他鼓勵(lì)我們?cè)谌驅(qū)W術(shù)社區(qū)上分享XRadio設(shè)計(jì)經(jīng)歷。
系統(tǒng)架構(gòu)
我們幾乎完全用FPGA來構(gòu)建XRadio平臺(tái),省略了放大器或分立濾波器等傳統(tǒng)模擬組件的使用(如圖1所示)。首先,我們將用電線連接成的簡單耦合電路鏈接至FPGA的I/O引腳,創(chuàng)建出基本天線。該天線用于發(fā)射RF信號(hào)到FPGA,F(xiàn)PGA通過數(shù)字下變頻和頻率解調(diào)實(shí)現(xiàn)FM接收器的信號(hào)處理。我們隨后通過I/O引腳向耳機(jī)輸出音頻信號(hào)。我們添加機(jī)械旋轉(zhuǎn)增量解碼器來控制XRadio的調(diào)頻和音量。我們?cè)O(shè)計(jì)該系統(tǒng)可讓調(diào)頻和音量信息顯示在7段LED模塊上。
圖2顯示了FPGA的頂層邏輯方框圖。在這個(gè)設(shè)計(jì)中,耦合到FPGA輸入緩沖器的RF信號(hào)量化為1位數(shù)字信號(hào)。量化的信號(hào)乘以數(shù)控震蕩器(NCO)生成的本地震蕩信號(hào),倍頻后的信號(hào)經(jīng)濾波可得到正交IQ(同相正交)基帶信號(hào)。它隨后通過頻率解調(diào)器和低通濾波器從IQ信號(hào)獲得音頻數(shù)據(jù)流。
?
實(shí)現(xiàn)細(xì)節(jié)
我們要解決的第一大難題就是如何將天線接收到的信號(hào)耦合到FPGA。在首次試驗(yàn)性設(shè)計(jì)中,我們將FPGA I/O配置為標(biāo)準(zhǔn)單端I/O,然后我們用電阻R1和R2構(gòu)建分壓器,以在FPGA引腳處的VIH和VIL之間生成偏置電壓。天線接收的信號(hào)可通過耦合電容C1來驅(qū)動(dòng)輸入緩沖器。由內(nèi)部240MHz時(shí)鐘驅(qū)動(dòng)的D觸發(fā)器的兩級(jí)負(fù)責(zé)對(duì)該信號(hào)進(jìn)行采樣。觸發(fā)器輸出端獲得等間隔的1位采樣數(shù)據(jù)流。
數(shù)據(jù)流隨后進(jìn)入脈寬調(diào)制(PWM)模塊,在其輸出端上生成脈沖信號(hào)。脈沖信號(hào)經(jīng)過濾波,可得到驅(qū)動(dòng)耳機(jī)的比例模擬值。我們將控制器模塊連接到機(jī)械旋轉(zhuǎn)增量編碼器和LED。該模塊從增量編碼器獲得脈沖信號(hào),以調(diào)節(jié)NCO的輸出頻率以及PWM模塊控制的音頻音量。
為了測試這個(gè)電路,我們將結(jié)果饋送給另一個(gè)FPGA引腳并用頻譜分析儀進(jìn)行測量,看看FPGA是否能準(zhǔn)確接收信號(hào)。不過,它工作得并不好,因?yàn)榉治銎黠@示Spartan-6 FPGA的輸入緩沖器有一個(gè)較小的120毫伏磁滯電壓。雖然磁滯一般來說有利于避免噪聲,但在本應(yīng)用中我們并不希望有磁滯。我們必須想辦法提高信號(hào)強(qiáng)度。
該設(shè)計(jì)大幅降低了信噪比,這是因?yàn)?位采樣生成的噪聲量化的結(jié)果。不過4個(gè)臺(tái)在背景噪聲下仍能正常收到。因此我們能證明這樣一個(gè)理論,那就是FPGA的I/O引腳能用作比較器或XRadio中的1位模數(shù)轉(zhuǎn)換器。
為了解決這一問題,我們發(fā)現(xiàn)差分輸入緩沖器(IBUFDS)原語在正負(fù)終端之間靈敏度極高。我們的測試顯示低至1 mV的峰至峰差分電壓足以讓IBUFDS在0和1之間擺動(dòng)。圖3顯示了所設(shè)計(jì)的輸入電路。在本實(shí)現(xiàn)方案中,電阻R1、R2和R3在IBUFDS的終端P和終端N處生成普通電壓。接收到的信號(hào)通過耦合電容C1饋送給終端P(sidefile:///app/ds/)。AC信號(hào)經(jīng)N側(cè)的C2電容濾波后,其可用作AC基準(zhǔn)信號(hào)。就此電路而言,F(xiàn)PGA將FM廣播信號(hào)成功轉(zhuǎn)換為1位數(shù)據(jù)流。
無線電能收到強(qiáng)度不同的大約7個(gè)FM頻道,包括103.9MHz北京交通臺(tái)。該設(shè)計(jì)大幅降低了信噪比,這是因?yàn)?位采樣生成的噪聲量化的結(jié)果。不過4個(gè)臺(tái)在背景噪聲下仍能正常收到。因此我們能證明這樣一個(gè)理論,那就是FPGA的I/O引腳能有效用作比較器或XRadio中的1位模數(shù)轉(zhuǎn)換器。
就數(shù)字下變頻而言,我們采用DDS Compiler 4.0 IP核構(gòu)建數(shù)控振蕩器,其系統(tǒng)時(shí)鐘為240-MHz。正弦和余弦輸出頻率介于87MHz—108 MHz之間。NCO生成的本地振蕩器信號(hào)乘以1位采樣流,并通過低通濾波器獲得正交基帶信號(hào)。這里,我們采用CIC Compiler 2.0 IP核來構(gòu)建三階低通CIC抽取濾波器,其向下采樣率R=240。由于濾波的基帶正交信號(hào)為窄帶信號(hào),采樣率降至1 MSPS。
圖4顯示了可將IQ基帶信號(hào)頻率轉(zhuǎn)換為音頻信號(hào)的頻率解調(diào)器。我們用ROM中的查找表提取IQ數(shù)據(jù)的瞬時(shí)相位角。整合IQ數(shù)據(jù)并用作ROM地址。隨后ROM輸出相應(yīng)復(fù)角(complex angle)的實(shí)部和虛部。接下來我們進(jìn)行差異操作,按一下觸發(fā)器,就會(huì)延遲相角數(shù)據(jù)。從原始數(shù)據(jù)中減去非實(shí)時(shí)數(shù)據(jù),所得結(jié)果剛好為所需的音頻數(shù)據(jù)。為了改進(jìn)輸出信噪比,我們通過低通濾波器用簡單平均法對(duì)音頻信號(hào)進(jìn)行濾波。
頻率解調(diào)器的8位音頻數(shù)據(jù)流輸出可根據(jù)音量控制參數(shù)縮放,并發(fā)送到8位PWM模塊。PWM脈沖的占空比反映了音頻信號(hào)的強(qiáng)度。脈沖在FPGA的I/O引腳處輸出,且通過電容驅(qū)動(dòng)耳機(jī)。這里,耳機(jī)發(fā)揮低通濾波器的作用,去除音頻信號(hào)中殘余的脈沖的高頻成分。
兩個(gè)旋轉(zhuǎn)增量編碼器控制無線電的頻率和音量。每個(gè)編碼器輸出兩個(gè)脈沖信號(hào)。旋轉(zhuǎn)方向和速度可由脈沖寬度和相位確定。狀態(tài)機(jī)和計(jì)數(shù)器可將旋轉(zhuǎn)狀態(tài)轉(zhuǎn)變?yōu)轭l率控制字和音量控制字。與此同時(shí),對(duì)頻率音量值進(jìn)行解碼,并顯示在7段LED上。
定制余地
XRadio平臺(tái)的印刷電路板如圖5所示。利用Spartan-6 XC6SLX9 FPGA,您可設(shè)計(jì)出一個(gè)只占很少一部分FPGA邏輯資源的廣播節(jié)目,如表1所示。這就意味著學(xué)生們可以定制設(shè)計(jì)并加以改善。舉例來說,就1位采樣而言,XRadio的音質(zhì)不如標(biāo)準(zhǔn)FM無線電,不過這給學(xué)生們留下了很大的遐想空間,讓他們?cè)O(shè)法如何改進(jìn)XRadio音質(zhì)以及如何實(shí)現(xiàn)立體聲。
圖5 – 合著者、研究生Xingran Yang展示工作模型
?
評(píng)論
查看更多