??? 摘? 要: 介紹了一種基于FPGA的QPSK高速數(shù)字" title="高速數(shù)字">高速數(shù)字調(diào)制系統(tǒng)的實(shí)現(xiàn)方案。先從調(diào)制系統(tǒng)的基本框圖入手,簡要介紹其實(shí)現(xiàn)原理及流程;然后著重介紹FPGA功能模塊的軟件編程、優(yōu)化及整個系統(tǒng)的性能。
??? 關(guān)鍵詞: FPGA? QPSK? 直接序列擴(kuò)頻" title="擴(kuò)頻">擴(kuò)頻? 高速調(diào)制
?
1 系統(tǒng)實(shí)現(xiàn)原理及流程
??? 本調(diào)制系統(tǒng)的設(shè)計(jì)目的是實(shí)現(xiàn)高速數(shù)字圖像傳輸。系統(tǒng)的硬件部分主要包括FPGA、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、正交調(diào)制器、輸出電路等。根據(jù)數(shù)字圖像傳輸?shù)奶攸c(diǎn),采用擴(kuò)頻調(diào)制技術(shù)。這是因?yàn)閿U(kuò)頻方式的抗干擾、抗衰落及抗阻塞能力強(qiáng),而且擴(kuò)頻信號的功率譜密度很低,有利于隱蔽。同時(shí),為了提高數(shù)據(jù)傳輸?shù)目煽啃院陀行?,降低信號失真度,減少碼間干擾,在調(diào)制系統(tǒng)中還加入編碼、交織及匹配濾波" title="匹配濾波">匹配濾波。這些處理都在FPGA中實(shí)現(xiàn),使整個調(diào)制系統(tǒng)具有可編程的特點(diǎn),易于根據(jù)實(shí)際要求進(jìn)行功能上的擴(kuò)展和縮減。系統(tǒng)的原理框圖如圖1所示。
?
??? 電路的具體工作過程為:圖像信號經(jīng)過A/D轉(zhuǎn)換器AD9214完成模/數(shù)轉(zhuǎn)換,輸出信號送入FPGA。由FPGA對信號進(jìn)行編碼、交織、串/并變換、擴(kuò)頻調(diào)制及匹配濾波。FPGA輸出兩路數(shù)字信號,經(jīng)過雙D/A轉(zhuǎn)換器AD9763實(shí)現(xiàn)數(shù)/模轉(zhuǎn)換,輸出兩路模擬信號。這兩路信號經(jīng)過正交調(diào)制器AD8346正交調(diào)制輸出,實(shí)現(xiàn)QPSK調(diào)制。因?yàn)檎徽{(diào)制器輸出的信號功率較小,所以將其經(jīng)過模擬放大器放大和帶通濾波,之后再送到輸出。
??? 在整個調(diào)制系統(tǒng)中,F(xiàn)PGA模塊的軟件設(shè)計(jì)是最為重要的,也是進(jìn)行系統(tǒng)優(yōu)化的主要部分,它的優(yōu)劣會直接影響整個系統(tǒng)的性能。下面對這部分進(jìn)行詳細(xì)的介紹。
2 軟件部分實(shí)現(xiàn)原理
??? FPGA模塊的軟件設(shè)計(jì)部分包括以下幾個方面:編碼、交織、串并變換、擴(kuò)頻、匹配濾波以及復(fù)位和時(shí)鐘。
2.1 編碼和交織
??? 數(shù)字通信中經(jīng)常使用信道編碼加交織模塊來提高數(shù)據(jù)傳輸?shù)目煽啃院陀行浴?BR>??? 為了達(dá)到一定的增益要求,選擇卷積碼中純編碼增益為3.01的(2,1,6)碼(在大信噪比下),并對其進(jìn)行增信刪余。這樣既可以發(fā)揮(2,1,6)碼純編碼增益大、能夠解決接收信道符號極性上的模糊性、實(shí)現(xiàn)最佳和準(zhǔn)最佳譯碼容易的良好性能,又能提高信道編碼的碼速率。該碼增信刪余成為2/3碼率的碼,最佳生成多項(xiàng)式為(171,133)(八進(jìn)制),即:
??? G(D)=[1+D2+D5+D6+D3? 1+D+D2+D3+D6]。由生成多項(xiàng)式可得到編碼框圖(如圖2所示)。在刪除比特分布圖中,“1”表示這位不刪除,“0”表示這位刪除。
?
??? 交織是將數(shù)據(jù)的序列打亂,使交織前后數(shù)據(jù)序列的相關(guān)性減弱,這樣可以大大降低數(shù)據(jù)突發(fā)錯誤產(chǎn)生的影響。而且,如果交織器設(shè)計(jì)良好,那么傳送時(shí)的突發(fā)錯誤將隨機(jī)地分布,這樣采用編譯碼技術(shù)就更容易糾正。交織技術(shù)主要分為塊交織和卷積交織。因?yàn)楸鞠到y(tǒng)的數(shù)據(jù)分幀傳輸,所以交織部分選用塊交織,一幀數(shù)據(jù)為1764個bit,交織塊為42bit×42bit。
2.2 串/并變換及擴(kuò)頻模塊
??? 經(jīng)過交織器輸出的數(shù)據(jù)為一路串行數(shù)據(jù),要實(shí)現(xiàn)QPSK正交調(diào)制必須產(chǎn)生兩路并行數(shù)據(jù),因此需要進(jìn)行串/并變換。輸入端口每輸入兩比特?cái)?shù)據(jù),兩個輸出端口同時(shí)輸出一比特?cái)?shù)據(jù)。串/并變換的輸出數(shù)據(jù)要進(jìn)行擴(kuò)頻調(diào)制,每輸入兩比特的信息時(shí)便輸出與之對應(yīng)的一組64位PN序列。擴(kuò)頻序列應(yīng)具有良好的偽隨機(jī)特性和相關(guān)特性,擴(kuò)頻通信系統(tǒng)的許多優(yōu)異特性都與擴(kuò)頻碼的設(shè)計(jì)密切相關(guān)。這里選擇平衡Gold碼序列作為系統(tǒng)的擴(kuò)頻序列。Gold碼繼承了m序列的許多優(yōu)點(diǎn),而可用的條數(shù)又遠(yuǎn)遠(yuǎn)大于m序列,是作為擴(kuò)頻碼的良好碼型。
2.3 濾波模塊
??? 擴(kuò)頻以后的碼元為方波,其頻譜是無限寬的,通過有限帶寬的信道傳輸,方波會在時(shí)間上擴(kuò)展,造成碼間干擾,導(dǎo)致接收機(jī)在檢測一個碼元時(shí)發(fā)生錯誤的概率增大。所以在調(diào)制系統(tǒng)中需要對信號進(jìn)行濾波,以減少失真和符號間干擾(ISI)。在這里,選擇具有均方升余弦滾降特性的濾波器。具有升余弦滾降特性的H(ω)可表示為:
???
??? 發(fā)送濾波器的頻率響應(yīng)為GT(f),接收端" title="接收端">接收端濾波器的頻率響應(yīng)為GR(f),則GT(f)·GR(f)=H(ω)。對于線性相位的FIR濾波器來說,使用窗函數(shù)法,則發(fā)送端匹配濾波器的傳輸函數(shù)為:
???
??? 取不同的窗函數(shù),濾波器的頻譜特性不同。這里選擇哈明窗作為窗函數(shù),這樣可以避免產(chǎn)生吉布斯現(xiàn)象。取滾降系數(shù)α=0.4,抽樣步長Ts=Tc/6,階數(shù)N=48。圖3為濾波器頻譜特性的仿真結(jié)果。
?
?
2.4 時(shí)鐘和復(fù)位模塊
??? 整個系統(tǒng)都是在時(shí)鐘的控制下進(jìn)行工作的。系統(tǒng)外部有一個時(shí)鐘源,通過芯片內(nèi)部的CLKPLL模塊對外部時(shí)鐘進(jìn)行倍頻,然后根據(jù)FPGA各個模塊的需要進(jìn)行分頻。系統(tǒng)在加電時(shí)需要對信號和變量進(jìn)行初始化,特別是當(dāng)信號和變量的初始值不為零時(shí),復(fù)位模塊就不可缺少。
3 具體實(shí)現(xiàn)及技巧
3.1 編碼模塊的簡化
??? 在編碼過程中,使用(2,1,6)碼進(jìn)行編碼,刪去編碼輸出第四位。經(jīng)過仔細(xì)的研究發(fā)現(xiàn),由于數(shù)據(jù)是分幀傳輸?shù)?,所以刪去哪一位并不重要,只要能保證幀頭和相應(yīng)的數(shù)據(jù)位對齊,在解卷積的時(shí)候就能得到正確的結(jié)果。這樣就使得編碼的程序得到簡化。例如,編碼后,刪余前的數(shù)據(jù)為1,2,3,4,5,6,7,8,9,10,11,12,幀頭與數(shù)據(jù)1對齊。刪除第四位后成為1,2,3,5,6,7,9,10,11。在接收端,補(bǔ)位后的數(shù)據(jù)為1,2,3,X,5,6,7,X,9,10,11,X。可正確解調(diào)為1,2,3,4,5,6,7,8, 9,10,11,12。若刪除第三位,則成為1,2,4, 5,6,8, 9,10,12。若幀頭與數(shù)據(jù)1之前的那一位(假設(shè)為0)對齊,則補(bǔ)位后的數(shù)據(jù)為0,1,2,X,4,5,6,X,8,9,10,X,12;亦可正確解調(diào)。所以在編寫程序的時(shí)候,可以根據(jù)輸入信號和輸出信號時(shí)鐘之間的關(guān)系,選擇最簡單的刪除位,然后調(diào)整幀頭的位置,就可以實(shí)現(xiàn)接收端所要求的對第4位的刪除。
3.2 交織模塊的優(yōu)化設(shè)計(jì)
??? 交織分為兩個模塊:寫入模塊和讀出模塊,二者共用一個存儲模塊。存儲模塊的大小為1764bit,42行×42列。首先,寫入模塊從第1行開始按行寫入,在寫完第41行后,讀出模塊從第1列開始按列逐列讀出,直至讀完所有列,改換成按行讀出,寫入模塊在寫完第42行以后,改換成按列寫入。這樣,交織模塊的延時(shí)約為(1764-42)/576k=2.99ms(576k為時(shí)鐘頻率)。無論讀模塊還是寫模塊,在完成一整塊數(shù)據(jù)的操作以后,改變讀寫方式(行換列,列換行),這樣做的目的是為了節(jié)省存儲容量。因?yàn)镕PGA內(nèi)部的存儲器容量有限,用相對復(fù)雜的地址計(jì)算,來換取占用較小的存儲容量。
3.3 濾波器的優(yōu)化設(shè)計(jì)
??? 濾波器的傳輸函數(shù)選擇好后,通過Matlab計(jì)算濾波器的各個抽頭系數(shù),然后將抽頭系數(shù)量化為16位的二進(jìn)制定點(diǎn)數(shù),寫成一個VHDL可調(diào)用的包文件。
??? 實(shí)現(xiàn)對信號的濾波,實(shí)際上就是完成每個信號和各個抽頭系數(shù)之間的加乘運(yùn)算。由于濾波器的輸入為1或0,故加乘運(yùn)算可簡化為抽頭系數(shù)之間的加減運(yùn)算。具體實(shí)現(xiàn)時(shí),48階的濾波器是由48個相似的小模塊級聯(lián)而成的,每一個小模塊有四個輸入,一個輸出。四個輸入分別為時(shí)鐘clk、數(shù)據(jù)data、復(fù)位信號rst和前一個小模塊的輸出preout。復(fù)位信號rst初始化后,在時(shí)鐘的控制下讀入data和preout,根據(jù)data的極性決定對preout加上還是減去包文件中與此模塊對應(yīng)的濾波器的系數(shù),將運(yùn)算結(jié)果輸出,作為下一級的preout。級聯(lián)時(shí),采用倒置的連接方式,即輸入的數(shù)據(jù)data將同時(shí)到達(dá)每一個小模塊,這樣就不存在抽頭時(shí)延" title="時(shí)延">時(shí)延,其時(shí)延存在于加法鏈中。這樣可以減少資源的占有數(shù)。濾波模塊的原理圖如圖4所示。
?
4 系統(tǒng)性能
??? 該系統(tǒng)的主要性能指標(biāo)為:
??? 信號中頻為70MHz;
??? 信號帶寬≤20MHz;
??? 處理時(shí)延≤20ms(調(diào)制系統(tǒng)和解調(diào)系統(tǒng)的總處理時(shí)延);
??? 編碼增益為4dB。
??? 由圖5可以看出信號帶寬約為18MHz,已滿足系統(tǒng)要求。
?
??? 圖6為調(diào)制系統(tǒng)和解調(diào)系統(tǒng)的總處理延時(shí),其中CH1為調(diào)制系統(tǒng),CH2為解調(diào)系統(tǒng)。從調(diào)制端接收到一個下脈沖,到解調(diào)端將其解調(diào)出來總延時(shí)為9.36ms。調(diào)制系統(tǒng)的時(shí)延主要存在于交織模塊,約為(1764-42)/576k=2.99ms。解調(diào)系統(tǒng)的時(shí)延主要存在于解交織和譯碼,約為(1764-42)/576k+(1176+32)/384k=6.14ms。2.99+6.14=9.13ms,再加上其它模塊的延時(shí),與實(shí)測的結(jié)果相符合,也滿足系統(tǒng)要求。
?
??? (2,1,6)碼理論上的純編碼增益在大信噪比下為3.01。實(shí)際上,編碼增益的大小還與譯碼的算法有關(guān)。本編譯碼系統(tǒng)的編碼增益為3.01+2(軟判決)-0.5(增信刪余),為4.51,滿足系統(tǒng)要求。
??? 該QPSK高速調(diào)制系統(tǒng)包含了編碼、交織、擴(kuò)頻調(diào)制等現(xiàn)代調(diào)制系統(tǒng)中常用的技術(shù),是一個比較完整的調(diào)制系統(tǒng)。同時(shí),使用FPGA加以實(shí)現(xiàn),使得對于該系統(tǒng)的功能擴(kuò)展和縮減變得容易。FPGA的容量有限,而且一般燒到片子里的程序最好不要超過總?cè)萘康?0%,所以,對于程序的優(yōu)化是非常必要的。例如,通過優(yōu)化設(shè)計(jì),可使最耗費(fèi)資源的濾波器模塊的資源占用量從80%下降到40%(XC2S200的總?cè)萘繛?0萬門),這是相當(dāng)可觀的。不僅使整個系統(tǒng)的實(shí)現(xiàn)成為可能,而且為以后功能擴(kuò)展預(yù)留下比較多的資源。該系統(tǒng)已應(yīng)用于圖像傳輸系統(tǒng),并且工作穩(wěn)定可靠。
參考文獻(xiàn)
1 張 輝,曹麗娜.現(xiàn)代通信原理與技術(shù).西安:西安電子科技大學(xué)出版社,2002.1
2 Stefan Sjoholm,Lennart Lindh著,邊計(jì)年,薛宏熙譯.用VHDL設(shè)計(jì)電子線路.北京:清華大學(xué)出版社,2000