基于SOPC的調(diào)制解調(diào)器設(shè)計
為解決“最后一公里”的接入問題,上世紀末出現(xiàn)了數(shù)字用戶線環(huán)路DSL(Digital Subscriber Loop)寬帶技術(shù)。DSL在2公里內(nèi)不失為好的雙絞線數(shù)據(jù)傳輸方案,但當隨著距離的增加,DSL的數(shù)據(jù)傳輸能力會急劇下降,其原因在于:作為DSL核心的離散多音DMT(Discrete Multitone)技術(shù),子通道內(nèi)采用了與幅度有關(guān)的QAM調(diào)制,隨著傳輸距離的加大,線路對信號的衰減使幅度的區(qū)分變得越來越困難??梢?,DSL為實現(xiàn)高速率數(shù)據(jù)傳輸,降低了對有效傳輸距離的要求,所以對要求遠距離傳輸?shù)膱龊?,就不得不采用其他技術(shù)方案了。SOPC(System On Programmable Chip)技術(shù)是以FPGA為載體的系統(tǒng)芯片設(shè)計技術(shù),由于具有軟硬件可裁減、現(xiàn)場可編程和開發(fā)周期短等特點,使該技術(shù)在通信領(lǐng)域及嵌入式系統(tǒng)設(shè)計中有著廣泛的應(yīng)用??紤]到傳統(tǒng)的連續(xù)相位移頻鍵控(2CPFSK)調(diào)制具有抗噪聲性能好、相位連續(xù)、包絡(luò)恒定、旁瓣收斂快等優(yōu)點,故SOPC技術(shù)和2CPFSK調(diào)制方式的結(jié)合,就為遠距離調(diào)制解調(diào)器的實現(xiàn)提供了可能。本文所介紹的即是基于SOPC技術(shù),采用2CPFSK的調(diào)制解調(diào)器系統(tǒng)設(shè)計。
本文引用地址:http://m.butianyuan.cn/article/201706/349230.htm1 系統(tǒng)簡介
本設(shè)計采用ALTERA公司的CYCLONEII芯片實現(xiàn),使用以太網(wǎng)控制器DM9000A作為調(diào)制解調(diào)器與主機間的數(shù)據(jù)接口。主機發(fā)送數(shù)據(jù)由FPGA實現(xiàn)調(diào)制后,由線路驅(qū)動器放大經(jīng)混合電路送上雙絞線;同時由雙絞線傳來的接收信號經(jīng)放大、濾波、解調(diào)等處理后,數(shù)據(jù)封裝成以太網(wǎng)數(shù)據(jù)包送至主機。系統(tǒng)整體框圖如圖1所示。
圖1中,存儲器模塊包含有SDRAM、SRAM、Flash,進行各種程序的存儲及堆棧保存等。LED顯示當前系統(tǒng)工作狀態(tài),如正常工作顯示、數(shù)據(jù)發(fā)送進行中顯示、數(shù)據(jù)接收進行中顯示等;按鍵用來實現(xiàn)系統(tǒng)的硬復(fù)位功能;發(fā)送方向上,F(xiàn)PGA讀出DM9000A接收緩沖區(qū)數(shù)據(jù)、將調(diào)制后的數(shù)字已調(diào)信號送往D/A器件;接收方向上,F(xiàn)PGA將A/D輸出的數(shù)字待解調(diào)信號解調(diào)后送至DM9000A的發(fā)送緩沖區(qū);線路驅(qū)動器對輸入的模擬差分信號放大,以適應(yīng)長距離傳輸線的衰減;接收方向濾波模塊濾除通帶外信號,以降低干擾;混合電路將發(fā)射回路和接收回路連接在同一對雙絞線上,并抑制發(fā)射和接收之間的相互干擾。
2 DM9000A簡介
DM9000A是一低功耗、高集成的以太網(wǎng)控制器,可實現(xiàn)以太網(wǎng)媒體介質(zhì)訪問層(MAC)和物理層(PHY)的功能,包括MAC數(shù)據(jù)幀的組裝/拆分與收發(fā)、地址識別、CRC編碼/校驗、MLT-3編碼、接收噪聲抑制、輸出脈沖成形、超時重傳、鏈路完整性測試、信號極性檢測與糾正等。DM9000A最高可實現(xiàn)100Mb/s的傳輸速率,能夠充分滿足遠距離調(diào)制解調(diào)器的傳輸速率需求。
2.1 DM9000A數(shù)據(jù)幀發(fā)送過程
DM9000A中3KB的發(fā)送緩沖區(qū)TX_SRAM可以同時存儲兩幀數(shù)據(jù),按照先后順序命名為幀I、幀II。DM9000A初始化后,發(fā)送緩存區(qū)的起始地址為00H,當前數(shù)據(jù)幀為幀I。數(shù)據(jù)發(fā)送過程如下:
(1)在待發(fā)數(shù)據(jù)前加入各6B的目的和源MAC地址,組成數(shù)據(jù)幀。
(2)利用寫操作寄存器MWCMD(REG_F8)向TX_SRAM中寫入發(fā)送數(shù)據(jù)幀。
(3)利用寫操作寄存器MWCMD(REG_F8)將數(shù)據(jù)幀長度寫入寄存器FCH和FDH。
(4)通過發(fā)送控制寄存器TCR(REG_02)設(shè)置發(fā)送請求TXREQ,向DM9000A發(fā)出發(fā)送數(shù)據(jù)指令。
發(fā)出發(fā)送數(shù)據(jù)指令后,DM9000A即開始發(fā)送幀I,在發(fā)送幀I的同時,幀Ⅱ的數(shù)據(jù)即可寫入發(fā)送緩存區(qū)。在幀I發(fā)送完后,將幀Ⅱ的數(shù)據(jù)長度寫入寄存器FCH和FDH,最后將發(fā)送控制寄存器TCR(REG_02)設(shè)置發(fā)送請求TXREQ,即可開始幀Ⅱ的發(fā)送。依此類推,可實現(xiàn)幀I、幀Ⅱ,幀I、幀Ⅱ……的連續(xù)發(fā)送。
2.2 DM9000A數(shù)據(jù)幀接收過程
DM9000A中的接收緩存區(qū)RX_SRAM是一個13KB的環(huán)形結(jié)構(gòu),初始化后的起始地址為0C00H,緩沖區(qū)內(nèi)每幀數(shù)據(jù)都有4B長的首部。第一個字節(jié)用來檢測接收緩存區(qū)中是否有數(shù)據(jù),如果這個字節(jié)為01H,表明接收到了數(shù)據(jù);如果為00H,則說明沒有數(shù)據(jù)。但是,如果第一個字節(jié)既不是01H,也不是00H,DM9000A就必須做一次軟復(fù)位來從這種異常狀態(tài)中恢復(fù)。第二個字節(jié)存儲了以太網(wǎng)幀狀態(tài),由此可判斷所接收幀是否正確。第三和第四字節(jié)存儲了以太網(wǎng)幀長度,后續(xù)字節(jié)為有效數(shù)據(jù)。數(shù)據(jù)接收過程如下:
(1) 查看中斷狀態(tài)寄存器ISR,如果接收到新數(shù)據(jù),ISR的PR位將被置為0。
(2) 如果檢測到PR=0,則清除PR。
(3) FPGA開始讀接收緩存區(qū)數(shù)據(jù)。
如果第一字節(jié)是01H,則說明有數(shù)據(jù),若是00H說明無數(shù)據(jù),否則復(fù)位;根據(jù)獲取的長度信息,判斷是否讀完一幀,如果讀完,接著讀下一幀,直到遇到首字節(jié)是00H的幀,說明接收數(shù)據(jù)已讀完。FPGA可以重新查看中斷狀態(tài)寄存器,等待新的有效數(shù)據(jù)幀。
3 系統(tǒng)硬件設(shè)計
系統(tǒng)硬件設(shè)計包括ENET接口設(shè)計、調(diào)制解調(diào)單元的設(shè)計和硬件結(jié)構(gòu)的生成三部分。硬件結(jié)構(gòu)的生成主要使用QuartusII7.1的系統(tǒng)設(shè)計工具軟件SOPC Builder 來完成。圖2為FPGA內(nèi)所實現(xiàn)的各功能模塊示意圖。
3.1 ENET接口設(shè)計
本系統(tǒng)用到的基于DM9000A的ENET接口并非SOPC Builder所提供的標準組件,故必須進行自定義組件設(shè)計。經(jīng)查閱參考文獻[1]中圖2.1(和處理器接口的信號連接圖)可知:只需針對與處理器有關(guān)的管腳(SD0~15、CMD、INT、IOR#、IOW#、CS#、PWRST#)設(shè)計相應(yīng)接口模塊即可。圖3為基于DM9000A的ENET接口設(shè)計示意圖,圖右側(cè)表示接口與DM9000A管腳對應(yīng)關(guān)系;NIOSII側(cè)的寫入數(shù)據(jù)IDATA只有在寫入信號IWR_N有效時才會把數(shù)據(jù)傳至DM9000A側(cè)。根據(jù)圖3所示的信號端口映射及邏輯關(guān)系,寫出Verilog或VHDL文件,利用SOPC Builder中的Interface to User Logic導(dǎo)入即可創(chuàng)建基于DM9000A的ENET接口。
3.2 調(diào)制與解調(diào)單元的設(shè)計
調(diào)制和解調(diào)單元的設(shè)計采用基于SOPC的DSP實現(xiàn)方案,根據(jù)不同的應(yīng)用目標,其實現(xiàn)方案有兩種選擇:純硬件方案和軟硬件結(jié)合方案。純硬件方案是指按照Matlab→DSP Builder→QuartusⅡ的流程直接實現(xiàn)。而軟硬結(jié)合的方案是指利用前一種方案為NIOSⅡ處理器設(shè)計自定義指令的硬件加速器接口模塊,生成能夠完成DSP功能的NIOSⅡ處理器,最后DSP功能的實現(xiàn)則通過軟件來完成??紤]到調(diào)制解調(diào)器的傳輸速率要求,如果用軟硬結(jié)合的方案,200MIPS的處理速度可能滿足不了要求,故采用純硬件方案。本設(shè)計中調(diào)制單元包括了調(diào)制器和緩沖器1。為保證連續(xù)性發(fā)送,DM9000A接收緩沖區(qū)的數(shù)據(jù)要先經(jīng)緩沖器1緩存后再進行調(diào)制。調(diào)制單元的電路模型圖如圖4所示。
在圖4中,調(diào)制器每調(diào)制完一字節(jié)的數(shù)據(jù),要讀入的下一字節(jié)地址Next_add會自動加1,將該地址送至緩沖器1的讀出地址輸入端Rd_add,即可開始下一字節(jié)的調(diào)制;當調(diào)制器從Next_add判斷出已經(jīng)讀完一幀數(shù)據(jù)后,給出中斷信號,此中斷信號由DSP Builder的Interface庫的AVALON_MM Slave 組件(選中Output IRQ,地址類型設(shè)為Write)提供的存儲映射功能經(jīng)由三態(tài)橋送至NIOSⅡ。處理器接到此信號后,向緩沖器1發(fā)送寫使能信號,并傳送要寫入的數(shù)據(jù),開始寫入過程。緩沖器1采用Storage Library 庫中的Dual-port RAM實現(xiàn),雙口RAM可隨時輸出緩存內(nèi)部的剩余數(shù)據(jù)量,可實現(xiàn)讀出、寫入操作的靈活控制。
本設(shè)計采用2CPFSK調(diào)制方式,圖5為用DSP Builder建立的調(diào)制器電路模型。圖中,8位并行數(shù)據(jù)由輸入端口DataIn輸入,經(jīng)并串轉(zhuǎn)換后逐位送往多路器的數(shù)據(jù)輸入端sel[0:0]。FWORD1和FWORD2是頻率字設(shè)置端口,當數(shù)據(jù)輸入端sel輸入不同的值時,多路器會根據(jù)設(shè)置的頻率字輸出對應(yīng)的相位值。將輸出相位值的累加結(jié)果送入BusConversion1,抽取出相位值的高14位,將此相位信號通過查找表SinLUT后,在數(shù)據(jù)輸出端即可得到2CPFSK已調(diào)信號。圖中并串轉(zhuǎn)換器的load輸入端用來控制字節(jié)數(shù)據(jù)的輸入,每當一字節(jié)調(diào)制完畢,load端口會輸入數(shù)據(jù)載入信號進行下一字節(jié)數(shù)據(jù)的調(diào)制。
同樣,解調(diào)單元包括解調(diào)器和緩沖器2兩部分。解調(diào)單元的設(shè)計與調(diào)制單元類似,所不同的是: AVALON_MM Slave 組件將地址類型設(shè)置為Read。
3.3 硬件結(jié)構(gòu)的生成
3.3.1 用SOPC Builder生成軟核
SOPC Builder提供了豐富多樣的組件庫,用戶可以按需要自定義系統(tǒng),同時可利用SOPC Builder的用戶邏輯接口生成系統(tǒng)未提供的外部器件接口。本設(shè)計中加入了如下組件:cpu_0、三態(tài)橋、Flash控制器、SRAM控制器、SDRAM控制器、jtag_uart、led_pio、anjian_pio以及自定義組件ENET接口。值得注意的是:軟核的生成過程必須在電路模型文件轉(zhuǎn)換為RTL級的VHDL代碼時生成的QuartusⅡ工程下進行,這樣SOPC Builder在生成軟核時會自動檢測到調(diào)制解調(diào)單元的AVALON_MM Slave組件,會在三態(tài)橋下生成相應(yīng)的信號線,把調(diào)制解調(diào)單元同NIOSII連接起來,其中包括數(shù)據(jù)線、地址線、讀/寫命令線和中斷信號線等。
3.3.2 調(diào)制解調(diào)單元Sysmbol的生成
在Simulink中完成仿真驗證后,就需要把設(shè)計轉(zhuǎn)到硬件上加以實現(xiàn),這是DSP Builder設(shè)計流程中最為關(guān)鍵的一步,轉(zhuǎn)換后可以獲得針對特定FPGA芯片的VHDL代碼。Symbol的生成過程:對模型的分析、設(shè)置Signalcompiler、把MDL模型文件轉(zhuǎn)換成VHDL、綜合、適配。上述過程完成后,把調(diào)制、解調(diào)模型的VHDL文件在QuartusⅡ下各自生成相應(yīng)的Symbol。該Symbol會自動加載到工程庫中,可以如工程庫中自帶組件一樣調(diào)用。
3.3.3 在QuartusⅡ下進行原理圖編輯
在BDF文件的編輯狀態(tài)下,加入NIOSⅡ軟核、調(diào)制單元、解調(diào)單元;根據(jù)需要,DM9000A和SDRAM還需單獨的時鐘信號,可利用Mega Wizard Plug-Manager創(chuàng)建一個ALTPLL,即可為DM9000A和SDRAM提供合適的時鐘信號。原理圖文件編輯后,即可進行全編譯,生成POF和SOF二進制格式的門級網(wǎng)表文件。
4 系統(tǒng)軟件設(shè)計
系統(tǒng)主程序首先進行DM9000A的初始化,然后進行中斷檢測,依據(jù)優(yōu)先級順序依次響應(yīng)。主要的中斷響應(yīng)程序有DM9000A接收緩沖區(qū)已有數(shù)據(jù)包時的發(fā)送中斷響應(yīng)程序和接收單元緩沖器2中已存有待發(fā)送數(shù)據(jù)時的接收中斷響應(yīng)。
4.1 發(fā)送中斷響應(yīng)程序的設(shè)計
當DM9000A的RX_SRAM接收到數(shù)據(jù)包后,會給出中斷信號通知處理器讀取數(shù)據(jù)包。此時,中斷狀態(tài)寄存器(ISR)的PR位會給出收到數(shù)據(jù)包的信號。在發(fā)送響應(yīng)程序設(shè)計中,以ISR寄存器的PR位為0為中斷觸發(fā)條件,完成將RX_SRAM的相應(yīng)數(shù)據(jù)寫入緩沖器1和調(diào)制的過程,具體程序流程圖如圖6所示。
4.2 接收中斷響應(yīng)程序設(shè)計
當接收緩沖器2已存入數(shù)據(jù)達到一定數(shù)量時,緩沖器2會通過AVALON_MM Slave 組件產(chǎn)生中斷信號,可把此信號作為接收中斷程序觸發(fā)信號。中斷信號產(chǎn)生后,響應(yīng)程序主要完成兩項工作:(1)將緩沖器2的數(shù)據(jù)按幀加入目的和源MAC地址后寫入DM9000A的發(fā)送緩沖區(qū)TX_SRAM; (2)將DM9000A發(fā)送緩沖區(qū)的數(shù)據(jù)幀發(fā)送給主機。但應(yīng)注意,當ISR寄存器的PT位為0時,表示數(shù)據(jù)幀發(fā)送完畢,要及時清除該標志位以便發(fā)送新的數(shù)據(jù)幀。接收中斷響應(yīng)程序的信號流程圖如圖7所示。
實驗表明,基于SOPC的調(diào)制解調(diào)器設(shè)計方案,在兩相距近8km的主機之間,可靠地實現(xiàn)了雙絞線數(shù)據(jù)傳輸,較DSL而言,其通信距離有大幅提高。該設(shè)計方案為系統(tǒng)設(shè)計帶來了較大的靈活性和實用性,在實際應(yīng)用中,可針對不同的環(huán)境條件以及需求側(cè)重點的不同,更換調(diào)制解調(diào)模塊,從而靈活地實現(xiàn)各種調(diào)制方式。本設(shè)計具有整體方案改動量小、開發(fā)周期短、資源利用率高等優(yōu)點。
評論