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