1.引言
隨著現(xiàn)代通信向著多業(yè)務(wù)方向發(fā)展,為了節(jié)省信道資源、降低調(diào)制解調(diào)設(shè)備的復(fù)雜度,數(shù)據(jù)復(fù)接設(shè)備得到了更充分的利用。它能將多路不同類(lèi)型的數(shù)據(jù)流復(fù)接成一路高速數(shù)據(jù)流,通過(guò)信道傳輸,在收端分接出發(fā)端對(duì)應(yīng)的數(shù)據(jù)流,以實(shí)現(xiàn)多業(yè)務(wù)雙向通信。
這里利用了XILINX公司的VIRTEX-ⅡPRO系列FPGA實(shí)現(xiàn)了數(shù)據(jù)復(fù)接、數(shù)據(jù)分接及幀同步過(guò)程。之所以選用FPGA完成設(shè)計(jì)功能,是由于數(shù)據(jù)復(fù)接、分接涉及大量的時(shí)序過(guò)程,F(xiàn)PGA綜合工具應(yīng)用了廣泛的時(shí)序調(diào)整與流水處理技術(shù)以改善時(shí)序電路性能。巧妙地應(yīng)用流水處理技術(shù),可以實(shí)現(xiàn)輸入輸出端口之間寄存器的移動(dòng)和均衡實(shí)現(xiàn)邏輯的分隔,并且不會(huì)對(duì)原有設(shè)計(jì)引入額外的處理等待延遲,可以實(shí)現(xiàn)高性能設(shè)計(jì)的高效率綜合,確保最優(yōu)的時(shí)序性能。該設(shè)備輸入端是8路話音,16路數(shù)據(jù),其中8路并行輸入的話音均分為V1、V2,16路并行輸入的異步數(shù)據(jù)均分為d1、d2,設(shè)備完成將并行輸入復(fù)接為一路高速數(shù)據(jù)流(復(fù)接后的幀格式見(jiàn)圖3)經(jīng)過(guò)信道傳送后再由分接模塊分解出各個(gè)支路。設(shè)計(jì)流程圖見(jiàn)圖1所示。
本文結(jié)構(gòu)安排如下:首先,介紹引言部分;其次,對(duì)數(shù)據(jù)復(fù)接分接、幀頭同步捕獲以及由DDS進(jìn)行時(shí)鐘分頻做了詳細(xì)的設(shè)計(jì)分析,并給出了相應(yīng)的設(shè)計(jì)流程圖和原理圖;再次,分析仿真結(jié)果,從結(jié)論對(duì)設(shè)計(jì)過(guò)程進(jìn)行驗(yàn)證;最后,總結(jié)全文。
2.?dāng)?shù)據(jù)復(fù)接方法與實(shí)現(xiàn)
數(shù)字復(fù)接的方法主要有按位復(fù)接、按字復(fù)接和按幀復(fù)接三種。按位復(fù)接又叫比特復(fù)接,即復(fù)接時(shí)每支路依次復(fù)接一個(gè)比特。按位復(fù)接方法簡(jiǎn)單易行,設(shè)備也簡(jiǎn)單,存儲(chǔ)器容量小,目前被廣泛采用,其缺點(diǎn)是對(duì)信號(hào)交換不利。按字復(fù)接,一個(gè)碼字有8位碼,它是將8位碼先儲(chǔ)存起來(lái),在規(guī)定時(shí)間對(duì)各個(gè)支路輪流復(fù)接,這種方法比較復(fù)雜,具體原因后續(xù)分析。還有一種是按幀復(fù)接,這種方法的存儲(chǔ)容量要求太大,而且不適用于同步與異步復(fù)接情況。這里選用按字復(fù)接,原因是經(jīng)過(guò)ADPCM編碼后進(jìn)入的話音數(shù)據(jù)為4bit并入(共2路),這里將一組V1,V2看為8bit(1個(gè)字),數(shù)據(jù)異步接收后出來(lái)的數(shù)據(jù),每組也為8bit。
在設(shè)計(jì)數(shù)據(jù)復(fù)接與分接設(shè)備過(guò)程中,主要有用DDS生成所需時(shí)鐘、幀結(jié)構(gòu)定義、碼速調(diào)整、控制模塊設(shè)計(jì)、幀同步頭捕獲設(shè)計(jì)幾大難點(diǎn),現(xiàn)分別做一說(shuō)明:
1) DDS生成時(shí)鐘:本設(shè)計(jì)的晶振為30MHz,由總體考慮所需的話音時(shí)鐘為8kHz,異步數(shù)據(jù)為117kHz。所以可以先由30MHz時(shí)鐘源由DDS得到4.096MHz的時(shí)鐘,再由4.096MHz這個(gè)時(shí)鐘進(jìn)行512分頻得到8kHz時(shí)鐘,由4.096MHz時(shí)鐘進(jìn)行35分頻得到117kHz時(shí)鐘,具體原理圖見(jiàn)圖2。對(duì)于DDS控制字的求解針對(duì)此設(shè)計(jì)可由以下公式得到32位碼字:(見(jiàn)書(shū)P50)
其中g(shù)en_constant為生成控制字的模塊,clk_512和clk_35為分頻模塊。
2) 幀結(jié)構(gòu)定義:對(duì)于輸入話音V1和V2其寫(xiě)入時(shí)鐘為8kHz的同步時(shí)鐘,數(shù)據(jù)d1和d2其寫(xiě)入時(shí)鐘為117kHz的異步時(shí)鐘。幀同步頭選用2個(gè)255bit的m序列后補(bǔ)一個(gè)0作為256bit同步頭,并存放在ROM中。他們經(jīng)過(guò)復(fù)接后得到117kHz的高速數(shù)據(jù)流,送入信道,接收端通過(guò)同步頭捕獲模塊進(jìn)行幀同步,捕獲后由數(shù)據(jù)分接模塊進(jìn)行分路,得到發(fā)端對(duì)應(yīng)的8路話音,16路數(shù)據(jù)。由于本設(shè)計(jì)輸入端還需要插入數(shù)據(jù)指示、話音信令等碼元(以供區(qū)分業(yè)務(wù)類(lèi)別),在此,我分析了復(fù)接端多路輸入時(shí)鐘與合路后讀取時(shí)鐘的關(guān)系,同時(shí)綜合考慮同步話音的解復(fù)接后的連續(xù)性以及異步數(shù)據(jù)的重要性等問(wèn)題,定義如圖2的幀格式。
這里需要強(qiáng)調(diào)的是異步數(shù)據(jù)在幀格式里的定義,數(shù)據(jù)是突發(fā)性質(zhì)的異步數(shù)據(jù),雖然數(shù)據(jù)的傳輸速率很高為117kbps,但是其平均速率很低,經(jīng)過(guò)實(shí)際分析其平均速率約0.6K×8bps,而且該數(shù)據(jù)作為控制指令所以在幀格式設(shè)計(jì)時(shí)要特別注意,此處定義幀格式時(shí)對(duì)數(shù)據(jù)每字重復(fù)傳送3次以提高可靠性。
3) 碼速調(diào)整:碼速調(diào)整部分主要是緩沖存儲(chǔ)器,還包括一些必要的控制電路,這里緩沖器選用Asynchronous FIFO。在很多設(shè)計(jì)中,是通過(guò)扣除一個(gè)讀取脈沖的方法來(lái)防止緩存器的信息被取空,這樣做的問(wèn)題是需要判斷寫(xiě)入寫(xiě)出時(shí)鐘的相位關(guān)系,并且輸出同類(lèi)型數(shù)據(jù)將存在不連續(xù)性。在設(shè)計(jì)中通過(guò)利用幀定義格式以及設(shè)計(jì)一個(gè)讀時(shí)鐘控制模塊來(lái)避免緩沖讀空問(wèn)題,保證了各類(lèi)數(shù)據(jù)的連續(xù)性。緩沖的深度與輸入有很大關(guān)系。現(xiàn)計(jì)算FIFO要求具備的最低深度(其寬度話音為4bit,數(shù)據(jù)為8bit):
首先對(duì)FIFO的工作過(guò)程做一個(gè)簡(jiǎn)要說(shuō)明,Asynchronous FIFO是一個(gè)先入先出存儲(chǔ)器,并具有支持讀寫(xiě)時(shí)鐘不同步的功能,在輸出口有empty指示(empty=1,表示下一時(shí)鐘所讀的數(shù)據(jù)為無(wú)效數(shù)據(jù),反之為有效)。這里在控制模塊中要求在最后一位即第211個(gè)bit處對(duì)設(shè)備中所有FIFO復(fù)位,目的是防止緩沖存儲(chǔ)器被取空。
輸入端單路話音是以8×4(Kbit)傳送,成幀后每個(gè)數(shù)據(jù)包512(bit)中包含單路話音40×4(bit),數(shù)據(jù)包以117kbps傳送,則話音寫(xiě)入FIFO的速率與讀取FIFO的速率可以表示為(1)、(2)兩式所示。
V話音=8×4(kbps) (2)
Vread=[40/(512/117)]×4=9.14×4(kbps) (3)
ΔV=1.14×4(kbps) (4)
設(shè)緩沖區(qū)深度為X,則在7個(gè)數(shù)據(jù)包完成時(shí)間內(nèi)由速率差完成的深度為:
ΔX=1.14×7×512/117=34.92 (5)
這個(gè)即話音FIFO的最小深度,這里選擇深度為64,寬度為4bit的Asynchronous FIFO。
對(duì)于異步數(shù)據(jù)在每個(gè)數(shù)據(jù)包512bit中留出了8×3×3bit空間,由于數(shù)據(jù)量很小,且考慮到每幀開(kāi)始會(huì)對(duì)設(shè)備所有FIFO復(fù)位一次,在此不需要考慮寫(xiě)入讀出的時(shí)鐘問(wèn)題,F(xiàn)IFO的深度只要大于7×3就可以。對(duì)于加強(qiáng)數(shù)據(jù)可靠性,重傳3次的問(wèn)題在FIFO中不加考慮,由控制模塊完成。最后定義數(shù)據(jù)FIFO深度32,寬度8bit的Asynchronous FIFO。
4) 控制模塊的設(shè)計(jì):這部分設(shè)計(jì)關(guān)鍵是對(duì)時(shí)鐘的控制以及時(shí)隙的安排,這個(gè)也是整個(gè)復(fù)接設(shè)備設(shè)計(jì)的主要難點(diǎn),同步報(bào)頭的插入使能信號(hào)、幀格式的定義都有控制模塊中一個(gè)12位計(jì)數(shù)器來(lái)統(tǒng)一控制。對(duì)于異步數(shù)據(jù)每個(gè)字節(jié)重復(fù)3次傳送這個(gè)過(guò)程的設(shè)計(jì),這里主要引入模塊設(shè)計(jì),它通過(guò)前后時(shí)隙空余期間,利用時(shí)鐘上升沿與下降沿一起促發(fā),將FIFO的輸出擴(kuò)展為1個(gè)與FIFO輸出同相的信號(hào)并存入本地RAM,這樣解決了FIFO的先入先出的工作特點(diǎn)(同個(gè)數(shù)據(jù)無(wú)法返回再讀)。對(duì)于分接模塊,難點(diǎn)同樣也是在異步數(shù)據(jù)部分,由于在幀格式中預(yù)定了數(shù)據(jù)重復(fù)3次發(fā)送,所以在分解模塊中采取的是3中取2的方法,對(duì)異步數(shù)據(jù)進(jìn)行判決。
5) 幀頭同步捕獲模塊的設(shè)計(jì):由于m序列具有很強(qiáng)的自相關(guān)性,利用255的m序列末尾加1個(gè)0作為同步頭。當(dāng)輸入序列匹配與本地碼相匹配時(shí)將出現(xiàn)相關(guān)峰值(輸入序列存放在移位寄存器中),當(dāng)不匹配時(shí)相關(guān)值很小。這里用2個(gè)上述碼字,分別作為幀同步頭和保密機(jī)同步頭,其相關(guān)捕獲過(guò)程的MATLAB仿真圖如圖3所示。這里在256和512處出現(xiàn)了相關(guān)峰值,即在這2點(diǎn)處本地碼與寄存器中數(shù)據(jù)匹配相關(guān)。相關(guān)檢測(cè)技術(shù)在很多文獻(xiàn)都有介紹,這里采取的也是通用的方法,只是在具體實(shí)現(xiàn)時(shí),根據(jù)256bit來(lái)設(shè)計(jì)了一個(gè)移位寄存方法,采取2個(gè)4×64bit的移位寄存器作為輸入序列的存放地點(diǎn),分別用于幀同步頭和保密機(jī)同步頭捕獲時(shí)輸入序列與本地碼元的自相關(guān)。由于在設(shè)計(jì)中需要捕獲成功的使能信號(hào)提前一個(gè)時(shí)鐘周期,因此本文的解決方法是將本地碼沿著輸入序列的反方向循環(huán)移動(dòng)1bit,這樣可以在序列進(jìn)入255bit時(shí)得到相關(guān)峰,以提前1個(gè)時(shí)鐘周期給出捕獲成功的使能信號(hào)。
由于信道中存在干擾,在控制模塊中不可以用m序列的自相關(guān)大小作為捕獲判斷基準(zhǔn)值,這里設(shè)置的捕獲環(huán)路的基準(zhǔn)值,它是通過(guò)相關(guān)峰值加上一定的偏移值而定的,這樣可使得同步的誤判率減小。用戶還可以通過(guò)設(shè)定軟基準(zhǔn)值,即通過(guò)信噪比來(lái)自適應(yīng)決定偏移值,這樣可以更加可靠的達(dá)到同步狀態(tài)。
3.仿真結(jié)果分析
通過(guò)在ISE軟件中編寫(xiě)UCF文件,把程序下載到xc2vp20-fg676中測(cè)試通過(guò),已經(jīng)作為總體設(shè)計(jì)的一部分投入使用,并使用正常。在此,對(duì)整個(gè)設(shè)計(jì)用Modesim進(jìn)行仿真一下,并給出結(jié)果:當(dāng)話音輸入為圖5所示,從0000到0110,寫(xiě)入FIFO時(shí)鐘如圖v_in_buff_w為8kHz,則輸出見(jiàn)圖6所示,當(dāng)時(shí)鐘下降沿促發(fā)得empty為0后,下一時(shí)鐘下降沿所抽取的數(shù)據(jù)為開(kāi)始的有效值。
需要說(shuō)明的是話音是同步的,必須保證話音輸出要連續(xù),確保這個(gè)連續(xù)性跟定義的幀格式大小以及信道傳送的速據(jù)速率等因數(shù)有關(guān)。
對(duì)于異步數(shù)據(jù)部分需要不斷的對(duì)empty信號(hào)進(jìn)行判斷,以確定下個(gè)時(shí)鐘下降沿抽取的數(shù)據(jù)是否有效,根據(jù)FIFO工作特點(diǎn)輸出指示empty為0后,下一個(gè)時(shí)鐘下降沿取得的數(shù)據(jù)有效,輸入數(shù)據(jù)見(jiàn)圖7,相應(yīng)的輸出結(jié)果見(jiàn)圖8。
4.總結(jié)
數(shù)據(jù)復(fù)接在多業(yè)務(wù)通行中應(yīng)用廣泛,它能將多路不同類(lèi)型的數(shù)據(jù)流復(fù)接成一路高速數(shù)據(jù)流,通過(guò)信道傳輸,在收端分接出發(fā)端對(duì)應(yīng)的數(shù)據(jù)流,以實(shí)現(xiàn)多業(yè)務(wù)雙向通信。數(shù)據(jù)復(fù)接設(shè)備的設(shè)計(jì)方法多樣,這里所做的設(shè)計(jì)方法具有一定的通用性與實(shí)用性,給出了同步、異步合路的解決方案,并且介紹了利用DDS進(jìn)行產(chǎn)生所需時(shí)鐘的方法。在設(shè)計(jì)幀結(jié)構(gòu)以及FIFO深度方面,本文也做了較詳細(xì)的推理。由于在設(shè)計(jì)數(shù)據(jù)復(fù)接、分解過(guò)程中,大量涉及進(jìn)程概念,時(shí)序性很強(qiáng),所以選用FPGA去完成軟過(guò)程,這相比其他器件可以進(jìn)行更有效的時(shí)序調(diào)整與流水處理技術(shù),進(jìn)而改善時(shí)序電路性能。
責(zé)任編輯:gt
評(píng)論
查看更多