<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

基于SOPC的調制解調器設計

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/201706/349230.htm

1 系統簡(jiǎn)介

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

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

2 DM9000A簡(jiǎn)介

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

2.1 DM9000A數據幀發(fā)送過(guò)程

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

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

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

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

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

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

2.2 DM9000A數據幀接收過(guò)程

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

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

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

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

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

3 系統硬件設計

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

3.1 ENET接口設計

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

3.2 調制與解調單元的設計

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

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

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

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

3.3 硬件結構的生成

3.3.1 用SOPC Builder生成軟核

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

3.3.2 調制解調單元Sysmbol的生成

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

3.3.3 在QuartusⅡ下進(jìn)行原理圖編輯

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

4 系統軟件設計

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

4.1 發(fā)送中斷響應程序的設計

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

4.2 接收中斷響應程序設計

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

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>