文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)10-0057-03
高速調(diào)制解調(diào)器集成化設(shè)計(jì)[1,2]面臨的挑戰(zhàn)之一是高速邏輯電路的設(shè)計(jì)與調(diào)試。在符號(hào)速率為幾百兆的情況下,時(shí)鐘周期僅為幾個(gè)納秒,這對(duì)數(shù)據(jù)傳輸、信號(hào)處理都提出了嚴(yán)格要求。同時(shí),設(shè)計(jì)高速調(diào)制解調(diào)器是一項(xiàng)復(fù)雜的系統(tǒng)工程,其間難免的邏輯錯(cuò)誤和設(shè)計(jì)缺陷需要通過反復(fù)的在線調(diào)試才能發(fā)現(xiàn)。調(diào)試高速數(shù)字電路需要高速率邏輯分析儀、高采樣率數(shù)字示波器等高檔儀器的支持,這在很大程度上增加了項(xiàng)目開發(fā)成本。基于邏輯分析儀調(diào)試數(shù)字電路時(shí),每一個(gè)待觀測數(shù)據(jù)位對(duì)應(yīng)一根數(shù)據(jù)線,同時(shí)觀測多組信號(hào)時(shí),需要在電路板上引出大量的測試引腳,既浪費(fèi)芯片的引腳資源又不夠靈活,使調(diào)試過程繁瑣不堪。
基于芯片內(nèi)部的數(shù)據(jù)采集和分析是一種先進(jìn)的調(diào)試技術(shù),尤其適用于高速、復(fù)雜系統(tǒng)的在線調(diào)試。Xilinx公司的ChipScope軟件可以在多個(gè)系列的FPGA內(nèi)部嵌入關(guān)鍵的邏輯分析模塊,通過這些功能模塊,為設(shè)計(jì)者提供一套完整的邏輯分析方案。
先進(jìn)的軟硬件提供了解決問題的一般化工具。如何利用這些技術(shù)解決工程中遇到的實(shí)際問題依然是設(shè)計(jì)者必須面對(duì)的難題。結(jié)合高速率8PSK信號(hào)的數(shù)字鎖相環(huán)設(shè)計(jì),給出了一種有效的高速全數(shù)字解調(diào)器的在線調(diào)試方法。
1 基于ChipScope的FPGA調(diào)試
圖1為基于ChipScope進(jìn)行FPGA調(diào)試的實(shí)現(xiàn)框圖[3],僅包含一臺(tái)安裝Xilinx FPGA集成開發(fā)軟件包的高檔微機(jī)、一根FPGA配置電纜以及待調(diào)試的用戶板,不需要任何其他測量儀器。
通過ChipScope Pro Core Generator/Inserter軟件包,放置ICON、ILA等IP核至用戶HDL源程序中,經(jīng)Xilinx ISE編譯、綜合生成二進(jìn)制比特流,配置到待調(diào)試的目標(biāo)器件中。基于ChipScope Pro Analyzer軟件,用戶計(jì)算機(jī)通過JTAG邊界掃描端口讀回采集的數(shù)據(jù),即可以測試和分析用戶的設(shè)計(jì)?;谠撜{(diào)試方案,用戶可以同時(shí)觀測256通道的實(shí)時(shí)數(shù)據(jù),單一通道的最大緩存深度達(dá)2 M采樣。
2 一種有效的在線調(diào)試方法
高速數(shù)字邏輯的調(diào)試過程就是尋找設(shè)計(jì)缺陷并克服缺陷的過程,其中發(fā)現(xiàn)設(shè)計(jì)缺陷是關(guān)鍵,特別是對(duì)于高速數(shù)字解調(diào)器的調(diào)試。
提出的調(diào)試方法如圖2所示,基本思想是即使符號(hào)速率高達(dá)幾百兆,若能夠?qū)崟r(shí)檢測錯(cuò)誤事件的發(fā)生,并將該時(shí)刻前后一小段時(shí)間內(nèi)的所有相關(guān)數(shù)據(jù)保存下來,則可以對(duì)高速數(shù)字邏輯進(jìn)行調(diào)試,即在線捕獲錯(cuò)誤數(shù)據(jù),非在線分析設(shè)計(jì)缺陷。由此可見,在FPGA內(nèi)部實(shí)現(xiàn)有效調(diào)試的技術(shù)關(guān)鍵在于兩點(diǎn):一是錯(cuò)誤事件的有效檢測;二是包含錯(cuò)誤信息的相關(guān)數(shù)據(jù)的緩存。
圖2給出了在線調(diào)試原理圖,下面結(jié)合高速率8PSK信號(hào)的載波同步設(shè)計(jì)進(jìn)行說明。
2.1 錯(cuò)誤檢測
在沒有信道噪聲的情況下,對(duì)于正確的設(shè)計(jì),解調(diào)器輸出沒有誤碼;如果存在設(shè)計(jì)錯(cuò)誤,則解調(diào)器輸出必然存在誤碼。調(diào)制端發(fā)送周期性的信息序列,全數(shù)字解調(diào)器的錯(cuò)誤檢測在數(shù)字鎖相環(huán)之后進(jìn)行,一旦檢測到誤碼,則當(dāng)前時(shí)刻采樣點(diǎn)附近已經(jīng)發(fā)生錯(cuò)誤,此時(shí)立即產(chǎn)生觸發(fā)信號(hào)En,經(jīng)先進(jìn)先出邏輯(FIFO2)延時(shí)后接FIFO1的寫使能端。以碼長L的周期信息序列為例,誤碼檢測可采用兩種方式:
(1)粗檢測,如果當(dāng)前時(shí)刻(n)判決結(jié)果與n-L時(shí)刻判決結(jié)果不一致,則產(chǎn)生誤碼,粗檢測存在漏檢。
(2)精檢測,首先將周期信息序列與判決序列滑動(dòng)相關(guān)進(jìn)行碼序列同步,然后檢測后續(xù)判決結(jié)果的誤碼。
2.2 數(shù)據(jù)存儲(chǔ)
如果解調(diào)器輸出端沒有檢測到誤碼,則En為FIFO1的“寫有效”控制信號(hào),數(shù)字鎖相環(huán)的前端輸入x(n)和后端輸出y(n)經(jīng)FIFO1緩存后丟棄;如果解調(diào)器輸出端檢測到誤碼,則En由“寫有效”變成“寫無效”,F(xiàn)IFO1停止寫入新的數(shù)據(jù),與錯(cuò)誤相對(duì)應(yīng)的x(n)、y(n)以及錯(cuò)誤發(fā)生前后一段時(shí)間內(nèi)的采樣均保存在FIFO1內(nèi)部,不再被后續(xù)的數(shù)據(jù)所覆蓋(采樣的多少與FIFO1的深度和FIFO2的緩存時(shí)間相關(guān))。FIFO2緩存En的目的是將錯(cuò)誤對(duì)應(yīng)的數(shù)據(jù)放到最終采集數(shù)據(jù)段的中間。定義數(shù)字鎖相環(huán)輸入、輸出之間的延時(shí)為T0,F(xiàn)IFO2的緩存深度為T2,則FIFO1的緩存深度T1要大于2(T0+T2)。
2.3 上傳數(shù)據(jù)
FIFO1停止寫操作后,點(diǎn)亮FPGA外圍指示燈,指示錯(cuò)誤事件發(fā)生并已經(jīng)捕獲錯(cuò)誤,由于FIFO1的讀使能信號(hào)始終有效,捕獲的數(shù)據(jù)從FIFO1輸出端循環(huán)讀出。設(shè)計(jì)者啟動(dòng)ChipScope抓包進(jìn)程,ICON控制芯片內(nèi)部塊RAM保存FIFO1循環(huán)輸出的數(shù)據(jù),然后由JTAG口低速讀入計(jì)算機(jī)。
2.4 數(shù)據(jù)分析
圖2標(biāo)記的所有設(shè)計(jì)者關(guān)心的內(nèi)部信號(hào)均可以作為觀測對(duì)象。ChipScope采集數(shù)據(jù)后,存至擴(kuò)展名為“prn”的文本文件中,基于Matlab編程可以對(duì)數(shù)據(jù)進(jìn)行任意比較、分析,大大提高了分析海量數(shù)據(jù)的效率,方便對(duì)FPGA內(nèi)部不完善邏輯的調(diào)試。
3 應(yīng)用舉例
數(shù)字鎖相環(huán)是載波同步的核心,其性能直接決定了載波同步的質(zhì)量。圖3為判決輔助的數(shù)字鎖相環(huán),在信號(hào)的相位域進(jìn)行相位鎖定,其中判決模塊基于FPGA-RAM查表實(shí)現(xiàn)。初步設(shè)計(jì)的相位累加器如圖4所示,在[-π,π]范圍內(nèi)進(jìn)行相位累加,同時(shí)執(zhí)行防溢出控制,累加位數(shù)可擴(kuò)展,執(zhí)行速度很容易達(dá)到200 MHz以上。
測試過程中,發(fā)現(xiàn)解調(diào)器輸出存在偶發(fā)性的非合理誤碼,為此采用前面的調(diào)試方法對(duì)高速全數(shù)字解調(diào)器進(jìn)行在線調(diào)試,例如數(shù)字鎖相環(huán)模塊的調(diào)試流程如圖5所示。
對(duì)捕獲數(shù)據(jù)的分析表明,圖4的相位累加器仍然存在溢出現(xiàn)象,這是產(chǎn)生偶發(fā)性非合理誤碼的原因所在,改進(jìn)后的防溢出相位累加器如圖6所示。
對(duì)于相位累加器溢出導(dǎo)致的這類海量數(shù)據(jù)流中的偶發(fā)性錯(cuò)誤,若采用常規(guī)手段調(diào)試,則如同“大海撈針”,本文給出的調(diào)試方法很好地解決了這一難題。
在高速全數(shù)字解調(diào)器的后期調(diào)試中,發(fā)現(xiàn)程序缺陷往往花費(fèi)大量時(shí)間,特別是對(duì)于全數(shù)字解調(diào)器這類實(shí)時(shí)、高速邏輯,大量中間數(shù)據(jù)具有隨機(jī)性,不利于程序缺陷診斷,但是大多數(shù)程序缺陷會(huì)導(dǎo)致最終誤碼輸出。本文結(jié)合數(shù)字鎖相環(huán)的設(shè)計(jì),靈活運(yùn)用FIFO捕獲并緩存包含錯(cuò)誤信息的所有設(shè)計(jì)者關(guān)心的相關(guān)數(shù)據(jù),解決了高速、海量數(shù)據(jù)流中捕獲偶發(fā)性錯(cuò)誤信息困難這一難題,為程序缺陷分析創(chuàng)造條件。該方法效率高、實(shí)用性強(qiáng),可直接用于高速全數(shù)字解調(diào)器的后期調(diào)試,其基本思想也適應(yīng)于其他高速邏輯的FPGA調(diào)試。
參考文獻(xiàn)
[1] GRAY A A,HOY S D,GHUMAN P.Parallel VLSI equalizer architectures for multi-Gbps satellite communications[A]. IEEE Global Telecommunications Conference (GLOBECOM′ 01),2001(10):315-319.
[2] GREBOWSK G,GRAY A A,SRINIVASAN M.Method and appuratus for high data rate demodulation[P].US Patent 6177835,2001,23(1).
[3] Chipscope pro software and cores user guide[EB].Xilinx Help,UG029(v7.1),2005(2):1-11.