新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于SOPC的調制解調器設計

        基于SOPC的調制解調器設計

        作者: 時間:2017-06-05 來源:網絡 收藏

        為解決“最后一公里”的接入問題,上世紀末出現了數字用戶線環路DSL(Digital Subscriber Loop)寬帶技術。DSL在2公里內不失為好的雙絞線數據傳輸方案,但當隨著距離的增加,DSL的數據傳輸能力會急劇下降,其原因在于:作為DSL核心的離散多音DMT(Discrete Multitone)技術,子通道內采用了與幅度有關的QAM調制,隨著傳輸距離的加大,線路對信號的衰減使幅度的區分變得越來越困難。可見,DSL為實現高速率數據傳輸,降低了對有效傳輸距離的要求,所以對要求遠距離傳輸的場合,就不得不采用其他技術方案了。(System On Programmable Chip)技術是以FPGA為載體的系統芯片設計技術,由于具有軟硬件可裁減、現場可編程和開發周期短等特點,使該技術在通信領域及嵌入式系統設計中有著廣泛的應用。考慮到傳統的連續相位移頻鍵控(2CPFSK)調制具有抗噪聲性能好、相位連續、包絡恒定、旁瓣收斂快等優點,故技術和2CPFSK調制方式的結合,就為遠距離的實現提供了可能。本文所介紹的即是基于技術,采用2CPFSK的系統設計。

        本文引用地址:http://www.104case.com/article/201706/349230.htm

        1 系統簡介

        本設計采用ALTERA公司的CYCLONEII芯片實現,使用以太網控制器DM9000A作為與主機間的數據接口。主機發送數據由FPGA實現調制后,由線路驅動器放大經混合電路送上雙絞線;同時由雙絞線傳來的接收信號經放大、濾波、解調等處理后,數據封裝成以太網數據包送至主機。系統整體框圖如圖1所示。

        圖1中,存儲器模塊包含有SDRAM、SRAM、Flash,進行各種程序的存儲及堆棧保存等。LED顯示當前系統工作狀態,如正常工作顯示、數據發送進行中顯示、數據接收進行中顯示等;按鍵用來實現系統的硬復位功能;發送方向上,FPGA讀出DM9000A接收緩沖區數據、將調制后的數字已調信號送往D/A器件;接收方向上,FPGA將A/D輸出的數字待解調信號解調后送至DM9000A的發送緩沖區;線路驅動器對輸入的模擬差分信號放大,以適應長距離傳輸線的衰減;接收方向濾波模塊濾除通帶外信號,以降低干擾;混合電路將發射回路和接收回路連接在同一對雙絞線上,并抑制發射和接收之間的相互干擾。

        2 DM9000A簡介

        DM9000A是一低功耗、高集成的以太網控制器,可實現以太網媒體介質訪問層(MAC)和物理層(PHY)的功能,包括MAC數據幀的組裝/拆分與收發、地址識別、CRC編碼/校驗、MLT-3編碼、接收噪聲抑制、輸出脈沖成形、超時重傳、鏈路完整性測試、信號極性檢測與糾正等。DM9000A最高可實現100Mb/s的傳輸速率,能夠充分滿足遠距離調制解調器的傳輸速率需求。

        2.1 DM9000A數據幀發送過程

        DM9000A中3KB的發送緩沖區TX_SRAM可以同時存儲兩幀數據,按照先后順序命名為幀I、幀II。DM9000A初始化后,發送緩存區的起始地址為00H,當前數據幀為幀I。數據發送過程如下:

        (1)在待發數據前加入各6B的目的和源MAC地址,組成數據幀。

        (2)利用寫操作寄存器MWCMD(REG_F8)向TX_SRAM中寫入發送數據幀。

        (3)利用寫操作寄存器MWCMD(REG_F8)將數據幀長度寫入寄存器FCH和FDH。

        (4)通過發送控制寄存器TCR(REG_02)設置發送請求TXREQ,向DM9000A發出發送數據指令。

        發出發送數據指令后,DM9000A即開始發送幀I,在發送幀I的同時,幀Ⅱ的數據即可寫入發送緩存區。在幀I發送完后,將幀Ⅱ的數據長度寫入寄存器FCH和FDH,最后將發送控制寄存器TCR(REG_02)設置發送請求TXREQ,即可開始幀Ⅱ的發送。依此類推,可實現幀I、幀Ⅱ,幀I、幀Ⅱ……的連續發送。

        2.2 DM9000A數據幀接收過程

        DM9000A中的接收緩存區RX_SRAM是一個13KB的環形結構,初始化后的起始地址為0C00H,緩沖區內每幀數據都有4B長的首部。第一個字節用來檢測接收緩存區中是否有數據,如果這個字節為01H,表明接收到了數據;如果為00H,則說明沒有數據。但是,如果第一個字節既不是01H,也不是00H,DM9000A就必須做一次軟復位來從這種異常狀態中恢復。第二個字節存儲了以太網幀狀態,由此可判斷所接收幀是否正確。第三和第四字節存儲了以太網幀長度,后續字節為有效數據。數據接收過程如下:

        (1) 查看中斷狀態寄存器ISR,如果接收到新數據,ISR的PR位將被置為0。

        (2) 如果檢測到PR=0,則清除PR。

        (3) FPGA開始讀接收緩存區數據。

        如果第一字節是01H,則說明有數據,若是00H說明無數據,否則復位;根據獲取的長度信息,判斷是否讀完一幀,如果讀完,接著讀下一幀,直到遇到首字節是00H的幀,說明接收數據已讀完。FPGA可以重新查看中斷狀態寄存器,等待新的有效數據幀。

        3 系統硬件設計

        系統硬件設計包括ENET接口設計、調制解調單元的設計和硬件結構的生成三部分。硬件結構的生成主要使用QuartusII7.1的系統設計工具軟件SOPC Builder 來完成。圖2為FPGA內所實現的各功能模塊示意圖。

        3.1 ENET接口設計

        本系統用到的基于DM9000A的ENET接口并非SOPC Builder所提供的標準組件,故必須進行自定義組件設計。經查閱參考文獻[1]中圖2.1(和處理器接口的信號連接圖)可知:只需針對與處理器有關的管腳(SD0~15、CMD、INT、IOR#、IOW#、CS#、PWRST#)設計相應接口模塊即可。圖3為基于DM9000A的ENET接口設計示意圖,圖右側表示接口與DM9000A管腳對應關系;NIOSII側的寫入數據IDATA只有在寫入信號IWR_N有效時才會把數據傳至DM9000A側。根據圖3所示的信號端口映射及邏輯關系,寫出Verilog或VHDL文件,利用SOPC Builder中的Interface to User Logic導入即可創建基于DM9000A的ENET接口。

        3.2 調制與解調單元的設計

        調制和解調單元的設計采用基于SOPC的DSP實現方案,根據不同的應用目標,其實現方案有兩種選擇:純硬件方案和軟硬件結合方案。純硬件方案是指按照Matlab→DSP Builder→QuartusⅡ的流程直接實現。而軟硬結合的方案是指利用前一種方案為NIOSⅡ處理器設計自定義指令的硬件加速器接口模塊,生成能夠完成DSP功能的NIOSⅡ處理器,最后DSP功能的實現則通過軟件來完成。考慮到調制解調器的傳輸速率要求,如果用軟硬結合的方案,200MIPS的處理速度可能滿足不了要求,故采用純硬件方案。本設計中調制單元包括了調制器和緩沖器1。為保證連續性發送,DM9000A接收緩沖區的數據要先經緩沖器1緩存后再進行調制。調制單元的電路模型圖如圖4所示。

        在圖4中,調制器每調制完一字節的數據,要讀入的下一字節地址Next_add會自動加1,將該地址送至緩沖器1的讀出地址輸入端Rd_add,即可開始下一字節的調制;當調制器從Next_add判斷出已經讀完一幀數據后,給出中斷信號,此中斷信號由DSP Builder的Interface庫的AVALON_MM Slave 組件(選中Output IRQ,地址類型設為Write)提供的存儲映射功能經由三態橋送至NIOSⅡ。處理器接到此信號后,向緩沖器1發送寫使能信號,并傳送要寫入的數據,開始寫入過程。緩沖器1采用Storage Library 庫中的Dual-port RAM實現,雙口RAM可隨時輸出緩存內部的剩余數據量,可實現讀出、寫入操作的靈活控制。

        本設計采用2CPFSK調制方式,圖5為用DSP Builder建立的調制器電路模型。圖中,8位并行數據由輸入端口DataIn輸入,經并串轉換后逐位送往多路器的數據輸入端sel[0:0]。FWORD1和FWORD2是頻率字設置端口,當數據輸入端sel輸入不同的值時,多路器會根據設置的頻率字輸出對應的相位值。將輸出相位值的累加結果送入BusConversion1,抽取出相位值的高14位,將此相位信號通過查找表SinLUT后,在數據輸出端即可得到2CPFSK已調信號。圖中并串轉換器的load輸入端用來控制字節數據的輸入,每當一字節調制完畢,load端口會輸入數據載入信號進行下一字節數據的調制。

        同樣,解調單元包括解調器和緩沖器2兩部分。解調單元的設計與調制單元類似,所不同的是: AVALON_MM Slave 組件將地址類型設置為Read。

        3.3 硬件結構的生成

        3.3.1 用SOPC Builder生成軟核

        SOPC Builder提供了豐富多樣的組件庫,用戶可以按需要自定義系統,同時可利用SOPC Builder的用戶邏輯接口生成系統未提供的外部器件接口。本設計中加入了如下組件:cpu_0、三態橋、Flash控制器、SRAM控制器、SDRAM控制器、jtag_uart、led_pio、anjian_pio以及自定義組件ENET接口。值得注意的是:軟核的生成過程必須在電路模型文件轉換為RTL級的VHDL代碼時生成的QuartusⅡ工程下進行,這樣SOPC Builder在生成軟核時會自動檢測到調制解調單元的AVALON_MM Slave組件,會在三態橋下生成相應的信號線,把調制解調單元同NIOSII連接起來,其中包括數據線、地址線、讀/寫命令線和中斷信號線等。

        3.3.2 調制解調單元Sysmbol的生成

        在Simulink中完成仿真驗證后,就需要把設計轉到硬件上加以實現,這是DSP Builder設計流程中最為關鍵的一步,轉換后可以獲得針對特定FPGA芯片的VHDL代碼。Symbol的生成過程:對模型的分析、設置Signalcompiler、把MDL模型文件轉換成VHDL、綜合、適配。上述過程完成后,把調制、解調模型的VHDL文件在QuartusⅡ下各自生成相應的Symbol。該Symbol會自動加載到工程庫中,可以如工程庫中自帶組件一樣調用。

        3.3.3 在QuartusⅡ下進行原理圖編輯

        在BDF文件的編輯狀態下,加入NIOSⅡ軟核、調制單元、解調單元;根據需要,DM9000A和SDRAM還需單獨的時鐘信號,可利用Mega Wizard Plug-Manager創建一個ALTPLL,即可為DM9000A和SDRAM提供合適的時鐘信號。原理圖文件編輯后,即可進行全編譯,生成POF和SOF二進制格式的門級網表文件。

        4 系統軟件設計

        系統主程序首先進行DM9000A的初始化,然后進行中斷檢測,依據優先級順序依次響應。主要的中斷響應程序有DM9000A接收緩沖區已有數據包時的發送中斷響應程序和接收單元緩沖器2中已存有待發送數據時的接收中斷響應。

        4.1 發送中斷響應程序的設計

        當DM9000A的RX_SRAM接收到數據包后,會給出中斷信號通知處理器讀取數據包。此時,中斷狀態寄存器(ISR)的PR位會給出收到數據包的信號。在發送響應程序設計中,以ISR寄存器的PR位為0為中斷觸發條件,完成將RX_SRAM的相應數據寫入緩沖器1和調制的過程,具體程序流程圖如圖6所示。

        4.2 接收中斷響應程序設計

        當接收緩沖器2已存入數據達到一定數量時,緩沖器2會通過AVALON_MM Slave 組件產生中斷信號,可把此信號作為接收中斷程序觸發信號。中斷信號產生后,響應程序主要完成兩項工作:(1)將緩沖器2的數據按幀加入目的和源MAC地址后寫入DM9000A的發送緩沖區TX_SRAM; (2)將DM9000A發送緩沖區的數據幀發送給主機。但應注意,當ISR寄存器的PT位為0時,表示數據幀發送完畢,要及時清除該標志位以便發送新的數據幀。接收中斷響應程序的信號流程圖如圖7所示。

        實驗表明,基于SOPC的調制解調器設計方案,在兩相距近8km的主機之間,可靠地實現了雙絞線數據傳輸,較DSL而言,其通信距離有大幅提高。該設計方案為系統設計帶來了較大的靈活性和實用性,在實際應用中,可針對不同的環境條件以及需求側重點的不同,更換調制解調模塊,從而靈活地實現各種調制方式。本設計具有整體方案改動量小、開發周期短、資源利用率高等優點。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 成安县| 惠州市| 萨嘎县| 昌乐县| 且末县| 监利县| 离岛区| 永城市| 武冈市| 阜城县| 海宁市| 西昌市| 日喀则市| 东阳市| 岑溪市| 清新县| 蒲江县| 巴中市| 虞城县| 金坛市| 博野县| 曲阳县| 湟中县| 洛扎县| 个旧市| 舒城县| 太仆寺旗| 荔波县| 临湘市| 临猗县| 盘锦市| 阜南县| 布尔津县| 紫云| 庆城县| 灵寿县| 南澳县| 旬阳县| 仪征市| 建始县| 巫溪县|