新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 利用FPGA實現(xiàn)多路話音/數(shù)據(jù)復(fù)接設(shè)備

利用FPGA實現(xiàn)多路話音/數(shù)據(jù)復(fù)接設(shè)備

作者: 時間:2006-10-24 來源:網(wǎng)絡(luò) 收藏

摘 要: 本文利用完成了8路同步及16路異步數(shù)據(jù)的復(fù)接與分接過程,并且實現(xiàn)了復(fù)接前的幀同步捕獲和利用DDS對時鐘源進(jìn)行分頻得到所需時鐘的過程。該設(shè)計的控制模塊由VHDL語言完成,最后利用Xilinx公司的ISE工具和Modelsim工具完成了該設(shè)計的行為仿真、布局布線仿真及時序仿真。仿真結(jié)果驗證了輸入輸出的邏輯關(guān)系。
關(guān)鍵詞;DDS;數(shù)據(jù)分接;m序列;

1.引言

隨著現(xiàn)代通信向著多業(yè)務(wù)方向發(fā)展,為了節(jié)省信道資源、降低調(diào)制解調(diào)設(shè)備的復(fù)雜度,設(shè)備得到了更充分的利用。它能將不同類型的數(shù)據(jù)流復(fù)接成一路高速數(shù)據(jù)流,通過信道傳輸,在收端分接出發(fā)端對應(yīng)的數(shù)據(jù)流,以實現(xiàn)多業(yè)務(wù)雙向通信。

這里利用了XILINX公司的VIRTEX-ⅡPRO系列實現(xiàn)了、數(shù)據(jù)分接及幀同步過程。之所以選用FPGA完成設(shè)計功能,是由于數(shù)據(jù)復(fù)接、分接涉及大量的時序過程,F(xiàn)PGA綜合工具應(yīng)用了廣泛的時序調(diào)整與流水處理技術(shù)以改善時序電路性能。巧妙地應(yīng)用流水處理技術(shù),可以實現(xiàn)輸入輸出端口之間寄存器的移動和均衡實現(xiàn)邏輯的分隔,并且不會對原有設(shè)計引入額外的處理等待延遲,可以實現(xiàn)高性能設(shè)計的高效率綜合,確保最優(yōu)的時序性能。該設(shè)備輸入端是8路,16路數(shù)據(jù),其中8路并行輸入的均分為V1、V2,16路并行輸入的異步數(shù)據(jù)均分為d1、d2,設(shè)備完成將并行輸入復(fù)接為一路高速數(shù)據(jù)流(復(fù)接后的幀格式見圖3)經(jīng)過信道傳送后再由分接模塊分解出各個支路。設(shè)計流程圖見圖1所示。

本文結(jié)構(gòu)安排如下:首先,介紹引言部分;其次,對數(shù)據(jù)復(fù)接分接、幀頭同步捕獲以及由DDS進(jìn)行時鐘分頻做了詳細(xì)的設(shè)計分析,并給出了相應(yīng)的設(shè)計流程圖和原理圖;再次,分析仿真結(jié)果,從結(jié)論對設(shè)計過程進(jìn)行驗證;最后,總結(jié)全文。

2.?dāng)?shù)據(jù)復(fù)接方法與實現(xiàn)
數(shù)字復(fù)接的方法主要有按位復(fù)接、按字復(fù)接和按幀復(fù)接三種。按位復(fù)接又叫比特復(fù)接,即復(fù)接時每支路依次復(fù)接一個比特。按位復(fù)接方法簡單易行,設(shè)備也簡單,存儲器容量小,目前被廣泛采用,其缺點是對信號交換不利。按字復(fù)接,一個碼字有8位碼,它是將8位碼先儲存起來,在規(guī)定時間對各個支路輪流復(fù)接,這種方法比較復(fù)雜,具體原因后續(xù)分析。還有一種是按幀復(fù)接,這種方法的存儲容量要求太大,而且不適用于同步與異步復(fù)接情況。這里選用按字復(fù)接,原因是經(jīng)過ADPCM編碼后進(jìn)入的話音數(shù)據(jù)為4bit并入(共2路),這里將一組V1,V2看為8bit(1個字),數(shù)據(jù)異步接收后出來的數(shù)據(jù),每組也為8bit。

在設(shè)計數(shù)據(jù)復(fù)接與分接設(shè)備過程中,主要有用DDS生成所需時鐘、幀結(jié)構(gòu)定義、碼速調(diào)整、控制模塊設(shè)計、幀同步頭捕獲設(shè)計幾大難點,現(xiàn)分別做一說明:

1) DDS生成時鐘:本設(shè)計的晶振為30MHz,由總體考慮所需的話音時鐘為8kHz,異步數(shù)據(jù)為117kHz。所以可以先由30MHz時鐘源由DDS得到4.096MHz的時鐘,再由4.096MHz這個時鐘進(jìn)行512分頻得到8kHz時鐘,由4.096MHz時鐘進(jìn)行35分頻得到117kHz時鐘,具體原理圖見圖2。對于DDS控制字的求解針對此設(shè)計可由以下公式得到32位碼字:(見書P50)

其中g(shù)en_constant為生成控制字的模塊,clk_512和clk_35為分頻模塊。

2) 幀結(jié)構(gòu)定義:對于輸入話音V1和V2其寫入時鐘為8kHz的同步時鐘,數(shù)據(jù)d1和d2其寫入時鐘為117kHz的異步時鐘。幀同步頭選用2個255bit的m序列后補(bǔ)一個0作為256bit同步頭,并存放在ROM中。他們經(jīng)過復(fù)接后得到117kHz的高速數(shù)據(jù)流,送入信道,接收端通過同步頭捕獲模塊進(jìn)行幀同步,捕獲后由數(shù)據(jù)分接模塊進(jìn)行分路,得到發(fā)端對應(yīng)的8路話音,16路數(shù)據(jù)。由于本設(shè)計輸入端還需要插入數(shù)據(jù)指示、話音信令等碼元(以供區(qū)分業(yè)務(wù)類別),在此,我分析了復(fù)接端輸入時鐘與合路后讀取時鐘的關(guān)系,同時綜合考慮同步話音的解復(fù)接后的連續(xù)性以及異步數(shù)據(jù)的重要性等問題,定義如圖2的幀格式。

這里需要強(qiáng)調(diào)的是異步數(shù)據(jù)在幀格式里的定義,數(shù)據(jù)是突發(fā)性質(zhì)的異步數(shù)據(jù),雖然數(shù)據(jù)的傳輸速率很高為117kbps,但是其平均速率很低,經(jīng)過實際分析其平均速率約0.6K8bps,而且該數(shù)據(jù)作為控制指令所以在幀格式設(shè)計時要特別注意,此處定義幀格式時對數(shù)據(jù)每字重復(fù)傳送3次以提高可靠性。

3) 碼速調(diào)整:碼速調(diào)整部分主要是緩沖存儲器,還包括一些必要的控制電路,這里緩沖器選用Asynchronous FIFO。在很多設(shè)計中,是通過扣除一個讀取脈沖的方法來防止緩存器的信息被取空,這樣做的問題是需要判斷寫入寫出時鐘的相位關(guān)系,并且輸出同類型數(shù)據(jù)將存在不連續(xù)性。在設(shè)計中通過利用幀定義格式以及設(shè)計一個讀時鐘控制模塊來避免緩沖讀空問題,保證了各類數(shù)據(jù)的連續(xù)性。緩沖的深度與輸入有很大關(guān)系?,F(xiàn)計算FIFO要求具備的最低深度(其寬度話音為4bit,數(shù)據(jù)為8bit):

首先對FIFO的工作過程做一個簡要說明,Asynchronous FIFO是一個先入先出存儲器,并具有支持讀寫時鐘不同步的功能,在輸出口有empty指示(empty=1,表示下一時鐘所讀的數(shù)據(jù)為無效數(shù)據(jù),反之為有效)。這里在控制模塊中要求在最后一位即第211個bit處對設(shè)備中所有FIFO復(fù)位,目的是防止緩沖存儲器被取空。

輸入端單路話音是以84(Kbit)傳送,成幀后每個數(shù)據(jù)包512(bit)中包含單路話音404(bit),數(shù)據(jù)包以117kbps傳送,則話音寫入FIFO的速率與讀取FIFO的速率可以表示為(1)、(2)兩式所示。
V話音=84(kbps) (2)
Vread=[40/(512/117)]4=9.144(kbps) (3)
ΔV=1.144(kbps) (4)

設(shè)緩沖區(qū)深度為X,則在7個數(shù)據(jù)包完成時間內(nèi)由速率差完成的深度為:
ΔX=1.147512/117=34.92 (5)

這個即話音FIFO的最小深度,這里選擇深度為64,寬度為4bit的Asynchronous FIFO。

對于異步數(shù)據(jù)在每個數(shù)據(jù)包512bit中留出了833bit空間,由于數(shù)據(jù)量很小,且考慮到每幀開始會對設(shè)備所有FIFO復(fù)位一次,在此不需要考慮寫入讀出的時鐘問題,F(xiàn)IFO的深度只要大于73就可以。對于加強(qiáng)數(shù)據(jù)可靠性,重傳3次的問題在FIFO中不加考慮,由控制模塊完成。最后定義數(shù)據(jù)FIFO深度32,寬度8bit的Asynchronous FIFO。









4) 控制模塊的設(shè)計:這部分設(shè)計關(guān)鍵是對時鐘的控制以及時隙的安排,這個也是整個復(fù)接設(shè)備設(shè)計的主要難點,同步報頭的插入使能信號、幀格式的定義都有控制模塊中一個12位計數(shù)器來統(tǒng)一控制。對于異步數(shù)據(jù)每個字節(jié)重復(fù)3次傳送這個過程的設(shè)計,這里主要引入模塊設(shè)計,它通過前后時隙空余期間,利用時鐘上升沿與下降沿一起促發(fā),將FIFO的輸出擴(kuò)展為1個與FIFO輸出同相的信號并存入本地RAM,這樣解決了FIFO的先入先出的工作特點(同個數(shù)據(jù)無法返回再讀)。對于分接模塊,難點同樣也是在異步數(shù)據(jù)部分,由于在幀格式中預(yù)定了數(shù)據(jù)重復(fù)3次發(fā)送,所以在分解模塊中采取的是3中取2的方法,對異步數(shù)據(jù)進(jìn)行判決。

5) 幀頭同步捕獲模塊的設(shè)計:由于m序列具有很強(qiáng)的自相關(guān)性,利用255的m序列末尾加1個0作為同步頭。當(dāng)輸入序列匹配與本地碼相匹配時將出現(xiàn)相關(guān)峰值(輸入序列存放在移位寄存器中),當(dāng)不匹配時相關(guān)值很小。這里用2個上述碼字,分別作為幀同步頭和保密機(jī)同步頭,其相關(guān)捕獲過程的MATLAB仿真圖如圖3所示。這里在256和512處出現(xiàn)了相關(guān)峰值,即在這2點處本地碼與寄存器中數(shù)據(jù)匹配相關(guān)。相關(guān)檢測技術(shù)在很多文獻(xiàn)都有介紹,這里采取的也是通用的方法,只是在具體實現(xiàn)時,根據(jù)256bit來設(shè)計了一個移位寄存方法,采取2個464bit的移位寄存器作為輸入序列的存放地點,分別用于幀同步頭和保密機(jī)同步頭捕獲時輸入序列與本地碼元的自相關(guān)。由于在設(shè)計中需要捕獲成功的使能信號提前一個時鐘周期,因此本文的解決方法是將本地碼沿著輸入序列的反方向循環(huán)移動1bit,這樣可以在序列進(jìn)入255bit時得到相關(guān)峰,以提前1個時鐘周期給出捕獲成功的使能信號。

由于信道中存在干擾,在控制模塊中不可以用m序列的自相關(guān)大小作為捕獲判斷基準(zhǔn)值,這里設(shè)置的捕獲環(huán)路的基準(zhǔn)值,它是通過相關(guān)峰值加上一定的偏移值而定的,這樣可使得同步的誤判率減小。用戶還可以通過設(shè)定軟基準(zhǔn)值,即通過信噪比來自適應(yīng)決定偏移值,這樣可以更加可靠的達(dá)到同步狀態(tài)。

3.仿真結(jié)果分析

通過在ISE軟件中編寫UCF文件,把程序下載到xc2vp20-fg676中測試通過,已經(jīng)作為總體設(shè)計的一部分投入使用,并使用正常。在此,對整個設(shè)計用Modesim進(jìn)行仿真一下,并給出結(jié)果:當(dāng)話音輸入為圖5所示,從0000到0110,寫入FIFO時鐘如圖v_in_buff_w為8kHz,則輸出見圖6所示,當(dāng)時鐘下降沿促發(fā)得empty為0后,下一時鐘下降沿所抽取的數(shù)據(jù)為開始的有效值。

需要說明的是話音是同步的,必須保證話音輸出要連續(xù),確保這個連續(xù)性跟定義的幀格式大小以及信道傳送的速據(jù)速率等因數(shù)有關(guān)。

對于異步數(shù)據(jù)部分需要不斷的對empty信號進(jìn)行判斷,以確定下個時鐘下降沿抽取的數(shù)據(jù)是否有效,根據(jù)FIFO工作特點輸出指示empty為0后,下一個時鐘下降沿取得的數(shù)據(jù)有效,輸入數(shù)據(jù)見圖7,相應(yīng)的輸出結(jié)果見圖8。

4.總結(jié)

數(shù)據(jù)復(fù)接在多業(yè)務(wù)通行中應(yīng)用廣泛,它能將不同類型的數(shù)據(jù)流復(fù)接成一路高速數(shù)據(jù)流,通過信道傳輸,在收端分接出發(fā)端對應(yīng)的數(shù)據(jù)流,以實現(xiàn)多業(yè)務(wù)雙向通信。數(shù)據(jù)復(fù)接設(shè)備的設(shè)計方法多樣,這里所做的設(shè)計方法具有一定的通用性與實用性,給出了同步、異步合路的解決方案,并且介紹了利用DDS進(jìn)行產(chǎn)生所需時鐘的方法。在設(shè)計幀結(jié)構(gòu)以及FIFO深度方面,本文也做了較詳細(xì)的推理。由于在設(shè)計數(shù)據(jù)復(fù)接、分解過程中,大量涉及進(jìn)程概念,時序性很強(qiáng),所以選用FPGA去完成軟過程,這相比其他器件可以進(jìn)行更有效的時序調(diào)整與流水處理技術(shù),進(jìn)而改善時序電路性能。

參考文獻(xiàn)
1 曾凡鑫.關(guān)于本原M序列的一些自相關(guān)函數(shù)取值.通信學(xué)報,1997,第9期,26-30
2 “異步傳輸模式交換機(jī)的復(fù)接設(shè)備”技術(shù)指標(biāo) 專利號:972458913 [美] Bob Zeidman著, 趙宏圖譯.基于FPGA CPLD的數(shù)字IC設(shè)計方法.北京航空航天出版社



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉