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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于FPGA的1553B總線接口板設(shè)計

          基于FPGA的1553B總線接口板設(shè)計

          作者: 時間:2012-01-03 來源:網(wǎng)絡 收藏
            引言

            目前國內(nèi)對接口板的設(shè)計一般基于DDC公司BU-61580協(xié)議芯片完成,但只能完成協(xié)議處理部分,應用時還需外圍的存貯器和微處理器等輔助芯片。故采用現(xiàn)場可編程門陣列()實現(xiàn)整個接口板核心的設(shè)計。

            1 系統(tǒng)總體架構(gòu)

            信號進入接口板后,首先通過隔離變壓器進行電平轉(zhuǎn)化,使之匹配后面收發(fā)器的工作電壓。收發(fā)器再把電平轉(zhuǎn)化后1553B差分信號轉(zhuǎn)化為可識別的TTL電平。但此時的信號仍然是曼徹斯特Ⅱ型碼,故需經(jīng)解碼和串并轉(zhuǎn)換,同時完成數(shù)據(jù)字的同步、數(shù)據(jù)、曼徹斯特碼錯誤的檢出、奇偶檢測和位/ 字計數(shù)等,處理后的數(shù)據(jù)串并轉(zhuǎn)換后存入內(nèi)存再對其進行相關(guān)的協(xié)議處理。發(fā)送數(shù)據(jù)時,將終端接收的數(shù)據(jù)暫存于內(nèi)存中,等待發(fā)送命令。一旦收到發(fā)送命令,即發(fā)送數(shù)據(jù)并通過并串轉(zhuǎn)換后進行曼徹斯特編碼且調(diào)制解調(diào)后發(fā)送到1553B的雙余度總線上。

            2 系統(tǒng)硬件構(gòu)成及其實現(xiàn)

            信號調(diào)制解調(diào)用隔離變壓器和收發(fā)器,分別采用的是HOLT公司PM-DB2725EX和HI-1570芯片。而從曼徹斯特編解碼后的部分都可在一片芯片內(nèi)實現(xiàn),選定Altera公司CyclONe系列的EP1C12作為主芯片。其中與總線間接口部分的電路如圖2。

            FPGA與總線間接口部分的電路

            3 FPGA內(nèi)部的模塊構(gòu)成及實現(xiàn)

            FPGA片內(nèi)的實現(xiàn),通過Verilog程序和調(diào)用QuartusII軟件內(nèi)部宏模塊完成,可分為雙冗余曼徹斯特II編解碼及串并轉(zhuǎn)換、總線傳輸邏輯、終端協(xié)議和消息處理、內(nèi)存及控制器和子系統(tǒng)等模塊。

            3.1 雙冗余曼徹斯特II編解碼及串并轉(zhuǎn)換模塊

            該模塊實現(xiàn)曼徹斯特碼的編解碼,串并轉(zhuǎn)換后同總線傳輸邏輯模塊進行通信。原始數(shù)據(jù)采樣采用16M時鐘頻率。

            3.2 總線傳輸邏輯模塊

            該模塊對上一模塊的16位并行數(shù)據(jù)按1553B協(xié)議定義進行分解、存儲,并給協(xié)議模塊響應信號及對其命令執(zhí)行,發(fā)出相應狀態(tài)字和數(shù)據(jù)字。

            3.3 內(nèi)存及控制器模塊

            用作系統(tǒng)寄存器和與下級子系統(tǒng)進行數(shù)據(jù)交換的數(shù)據(jù)存貯區(qū),以響應其它各模塊可能存在的寄存器和數(shù)據(jù)訪問,該模塊由以下3個子模塊組成:

            DPSRAM模塊:為Quartus軟件宏模塊altsyncram的實例化調(diào)用,在物理上為FPGA芯片片內(nèi)SRAM的調(diào)用。實例化調(diào)用后為雙端口可同時讀寫的同步SRAM內(nèi)存,以滿足總線傳輸邏輯,協(xié)議處理模塊,初始化自檢模塊之一和子系統(tǒng)模塊可能同時存在的訪問請求。

            RAM_Control模塊:為上一模塊DPSRAM的內(nèi)存控制器,根據(jù)上游(user_interface模塊)信號產(chǎn)生符合DPSRAM時序的讀寫使能,地址,數(shù)據(jù)和讀寫確認信號。

            user_interface模塊:解決多端口輸入不能直接線與和定向輸出從DPSRAM讀取的數(shù)據(jù)的問題。

            3.4 終端協(xié)議和消息處理模塊

            該模塊解析接收到的命令并通知總線傳輸模塊做出相應的響應??煞譃橐韵?個子模塊:①read模塊完成指令字的讀??;②protocol模塊完成指令字分析和協(xié)議的處理;③write模塊根據(jù)protocol模塊解析命令后發(fā)過來的指令完成對應狀態(tài)字的修改;④choose模塊將對read和 write兩個模塊發(fā)給ram的命令和地址進行選通。

            3.5 子系統(tǒng)模塊

            子系統(tǒng)含收發(fā)、終端地址產(chǎn)生和校驗等模塊。①收發(fā)模塊:完成存貯器16位的并行數(shù)據(jù)和2400bit串行數(shù)據(jù)的轉(zhuǎn)換;②終端地址產(chǎn)生和校驗模塊:終端地址由子系統(tǒng)的撥碼開關(guān)設(shè)定,即讀取撥碼開關(guān)的電平值并產(chǎn)生相應的地址奇校驗位后存貯到內(nèi)存的終端地址寄存器中,并初始化狀態(tài)字。編寫以上各模塊代碼時,狀態(tài)機跳轉(zhuǎn)的條件原來是檢測電平值,但在仿真過程中發(fā)現(xiàn)有時檢測不到或多次檢測到從而導致狀態(tài)機誤操作,改用如下跳變沿檢測后問題得到解決,對應代碼為:

            對應代碼

            其原理為:將需檢測的信號不斷地通過2個D觸發(fā)器連續(xù)鎖存2次,當檢測到2次鎖存的值符合跳變沿條件時才執(zhí)行動作如圖3。采用該檢測方式后程序仿真不出現(xiàn)類似不穩(wěn)定問題,但同時也造成1個時鐘周期的額外延時。

            3.6 仿真及FPGA實現(xiàn)

            以上各功能模塊采用Verilog編寫,內(nèi)存則調(diào)用QuartusII宏模塊。整個程序的功能仿真,綜合布線和最后的時序仿真均用ALTERA公司的QuartusII完成。各模塊綜合后在QuartusII中編譯后生成symbol。

            為某型號調(diào)諧濾波器與1553總線通信的消息仿真波形。其中:RT地址設(shè)定為00101,即圖4中撥碼開關(guān)pat4~pat0的電平值,子地址為00001。復位后第1條消息為RT不發(fā)送數(shù)據(jù)請求時發(fā)送矢量字模式命令及其響應,狀態(tài)字所帶的數(shù)據(jù)字為H0000,該命令循環(huán)發(fā)送至 RT直到有請求第3條消息的情況;第2條消息為RT接收1個數(shù)據(jù)字命令及其響應;第3條是當RT有發(fā)送數(shù)據(jù)請求時的發(fā)送矢量字及其響應,狀態(tài)字所帶的數(shù)據(jù)字為H0001;第4條是RT發(fā)送兩個數(shù)據(jù)字命令及其響應;第5條是帶數(shù)據(jù)字的同步模式命令及其響應。

            由仿真波形可見,該系統(tǒng)基本滿足該濾波器的應用,為進一步驗證其實際應用和其他協(xié)議,將其下載至FPGA中進行測試。FPGA內(nèi)部是基于 SRAM結(jié)構(gòu)的,因此需要1片配置芯片固化其內(nèi)部結(jié)構(gòu),故采用JTAG模式和主動串行模式(AS)2種配置模式。調(diào)試時使用JTAG模式直接將邏輯寫入 FPGA內(nèi)部,調(diào)試好后再用AS模式將程序?qū)懭肱渲眯酒珽PCS4中,經(jīng)測試通過。

            4 結(jié)語

            基于FPGA技術(shù)的總線接口板設(shè)計,已通過某軍用飛機的測試,實現(xiàn)1553總線和子系統(tǒng)的通訊。將FPGA技術(shù)應用于接口,設(shè)計成本降低,設(shè)計周期縮短,系統(tǒng)的集成度提高,擴展能力增強,具有重要的現(xiàn)實意義和應用前景。



          關(guān)鍵詞: FPGA 1553B總線

          評論


          相關(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); })();