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