<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > DS/FH混合擴(kuò)頻接收機(jī)解擴(kuò)及同步技術(shù)的FPGA實(shí)現(xiàn)

          DS/FH混合擴(kuò)頻接收機(jī)解擴(kuò)及同步技術(shù)的FPGA實(shí)現(xiàn)

          作者: 時(shí)間:2009-10-27 來源:網(wǎng)絡(luò) 收藏
          通信系統(tǒng)中,需要數(shù)字下變頻器、相關(guān)累加器及碼發(fā)生器等完成下變頻、相關(guān)解擴(kuò)等運(yùn)算。通常采用專用芯片來完成這些功能,導(dǎo)致系統(tǒng)體積增大,不便于小型化?,F(xiàn)代的EDA(電子設(shè)計(jì)自動(dòng)化)工具已突破了早期僅能進(jìn)行PCB版圖設(shè)計(jì)或電路功能模擬、純軟件范圍的局限,以最終可靠的硬件系統(tǒng)為目標(biāo),配備了系統(tǒng)自動(dòng)設(shè)計(jì)的全部工具,如各種常用的硬件描述語言平臺VHDL、Verilog HDL、AHDL等;配置了多種能兼容和使用的邏輯描述輸入工具,如硬件描述語言文本輸入法(其中包括布爾方程描述方式、原理圖描述方式、狀態(tài)圖描述方式等)以及原理圖輸入法、波形輸入法等;同時(shí)還配置了高性能的邏輯綜合、優(yōu)化和仿真模擬工具。是在PAL、GAL等邏輯器件的基礎(chǔ)上發(fā)展起來的。與PAL、GAL等相比較,的規(guī)模大,更適合于時(shí)序、組合等邏輯電路應(yīng)用場合,它可以替代幾十甚至上百塊通用IC芯片。具有可編程性和設(shè)計(jì)方案容易改動(dòng)等特點(diǎn),芯片內(nèi)部硬件連接關(guān)系的描述可以存放在下載芯片中,因而在可編程門陣列芯片及外圍電路保持不動(dòng)的情況下,更換下載芯片,就能新的功能。FPGA芯片及其開發(fā)系統(tǒng)問世不久,就受到世界范圍內(nèi)電子工程設(shè)計(jì)人員的廣泛關(guān)注和普遍歡迎[1~5]。本文主要討論一種基于編碼過程的結(jié)構(gòu),采用ALTERA公司的APEX20K200RC240-1器件及其開發(fā)平臺Quartus II實(shí)現(xiàn)混合擴(kuò)頻的核心――解模塊。

          1 混合擴(kuò)頻解擴(kuò)模塊的FPAG設(shè)計(jì)

          本文引用地址:http://www.ex-cimer.com/article/157799.htm

            解擴(kuò)模塊是混合擴(kuò)頻接收機(jī)的核心。該模塊實(shí)現(xiàn)對接收信號的解擴(kuò)處理,主要包括數(shù)字下變頻器、數(shù)控振蕩器(NCO)、碼發(fā)生器、相關(guān)累加器和偽碼移相電路等,通常各模塊采用專用芯片。利用FPGA將這些功能集成在一塊芯片中,大大縮小了接收機(jī)的體積,便于實(shí)現(xiàn)系統(tǒng)的小型化和集成化。下面分別介紹該模塊各部分的FPGA實(shí)現(xiàn)結(jié)構(gòu)。

          1.1 數(shù)控振蕩器(NCO)

            數(shù)控振蕩器是解擴(kuò)模塊中的重要組成部分,主要用于為碼發(fā)生器提供精確的時(shí)鐘信號,從而實(shí)現(xiàn)對接收信號的捕獲和跟蹤。碼發(fā)生器由相位累加器和查找表構(gòu)成。若使用字長為40位寬的累加器,對于某一頻率控制字A,輸出頻率fout與輸入頻率控制字A的關(guān)系為:

            

          其中,fclk為系統(tǒng)時(shí)鐘。只要改變控制字A的大小,就可以控制輸出頻率fout。fout變化的最小步長Δf由累加器的數(shù)據(jù)寬度決定。若數(shù)據(jù)寬度取40位,則:

            

            利用上述原理,可以通過精確分頻得到所需頻率。原理圖如圖1所示。

            圖1中頻率控制字A由DSP寫入??紤]到FPGA內(nèi)部存儲資源限制,取40位相位累加值result[39..0]的高八位作為查找表LUT(look-up table)的輸入,查找表由ROM構(gòu)成,存儲各相位所對應(yīng)采樣值。當(dāng)查找表輸入端為某一相位phase時(shí),則輸出對應(yīng)采樣值。若輸出數(shù)據(jù)寬度為6位,輸出信號格式為余弦信號,則LUT輸出為[6]:

            

            若取ROM的并行6位out[5..0]作為輸出,則輸出信號為每周期采樣256點(diǎn)的數(shù)字化余弦信號;如果取最高位out[5]作為輸出,則輸出為系統(tǒng)時(shí)鐘的分頻信號。

          1.2 數(shù)字下變頻器

            數(shù)字下變頻器將A/D采樣得到的中頻信號進(jìn)行下變頻處理,去除中頻,得到基帶信號。利用本地NCO產(chǎn)生與輸入中頻信號頻率相同的正弦和余弦信號,并與輸入信號進(jìn)行復(fù)乘法運(yùn)算,然后對運(yùn)算結(jié)果做低通濾波,即可完成對中頻信號的下變頻操作。正交采樣模式下,兩路A/D提供正交輸入IIN及QIN,數(shù)字下變頻器的復(fù)乘法器輸出IOUT、QOUT為:

            

            本振信號、復(fù)乘法器、低通濾波器均采用數(shù)字化設(shè)計(jì)。數(shù)字下變頻器采用ALTERA公司的APEX20K200RC240-1

          器件。該器件典型門數(shù)為20萬,有豐富的邏輯單元和RAM單元,開發(fā)平臺Quartus II 自帶的宏模塊,如lpm_mult(乘法器宏模塊)、lpm_rom(ROM宏模塊)、lpm_add_sub(加法器宏模塊)等,給設(shè)計(jì)帶來了極大的方便。數(shù)字下變頻器原理圖如圖2所示。

            圖2中的數(shù)字表示相應(yīng)模塊的數(shù)據(jù)寬度。濾波模塊是1個(gè)二階的低通濾波器,濾除混頻后的高頻分量。在一些專用的數(shù)字下變頻器件如STEL-2130中,濾波器的階數(shù)是可編程的,可以根據(jù)需要設(shè)置不同的階數(shù),從而得到不同的濾波效果??紤]到FPGA的資源問題,設(shè)置濾波器的階數(shù)為固定的二階。濾波器輸入x[n]與輸出y[n]關(guān)系為:

            

            該低通濾波器將相鄰的兩個(gè)輸入數(shù)據(jù)相加后作為輸出,即每兩個(gè)輸入數(shù)據(jù)對應(yīng)一個(gè)輸出數(shù)據(jù),輸入數(shù)據(jù)時(shí)鐘節(jié)拍為輸出數(shù)據(jù)時(shí)鐘節(jié)拍的2倍。

            經(jīng)過低通濾波后的數(shù)據(jù)經(jīng)過滑動(dòng)窗處理,滑動(dòng)窗對輸入數(shù)據(jù)進(jìn)行選擇輸出,用來動(dòng)態(tài)調(diào)整相關(guān)峰的大小。在捕獲過程中觀察相關(guān)峰值時(shí),通過調(diào)整滑動(dòng)窗口,可以獲得不同幅度的相關(guān)峰值。選擇控制端由DSP寫控制字來決定,結(jié)構(gòu)如圖3所示?;瑒?dòng)窗控制邏輯關(guān)系為:

            

            符號擴(kuò)展是為了與后面的相關(guān)累加器數(shù)據(jù)寬度保持一致,符號位擴(kuò)展時(shí)需與輸入數(shù)據(jù)最高位的符號保持一致。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();