基于FPGA的1553B總線接口板設(shè)計(jì)
引言
本文引用地址:http://butianyuan.cn/article/201706/360482.htm目前國(guó)內(nèi)對(duì)1553B總線接口板的設(shè)計(jì)一般基于DDC公司BU-61580協(xié)議芯片完成,但只能完成協(xié)議處理部分,應(yīng)用時(shí)還需外圍的存貯器和微處理器等輔助芯片。故采用現(xiàn)場(chǎng)可編程門陣列(FPGA)實(shí)現(xiàn)整個(gè)接口板核心的設(shè)計(jì)。
1 系統(tǒng)總體架構(gòu)
1553B總線信號(hào)進(jìn)入接口板后,首先通過隔離變壓器進(jìn)行電平轉(zhuǎn)化,使之匹配后面收發(fā)器的工作電壓。收發(fā)器再把電平轉(zhuǎn)化后1553B差分信號(hào)轉(zhuǎn)化為可識(shí)別的TTL電平。但此時(shí)的信號(hào)仍然是曼徹斯特Ⅱ型碼,故需經(jīng)解碼和串并轉(zhuǎn)換,同時(shí)完成數(shù)據(jù)字的同步、數(shù)據(jù)、曼徹斯特碼錯(cuò)誤的檢出、奇偶檢測(cè)和位/ 字計(jì)數(shù)等,處理后的數(shù)據(jù)串并轉(zhuǎn)換后存入內(nèi)存再對(duì)其進(jìn)行相關(guān)的協(xié)議處理。發(fā)送數(shù)據(jù)時(shí),將終端接收的數(shù)據(jù)暫存于內(nèi)存中,等待發(fā)送命令。一旦收到發(fā)送命令,即發(fā)送數(shù)據(jù)并通過并串轉(zhuǎn)換后進(jìn)行曼徹斯特編碼且調(diào)制解調(diào)后發(fā)送到1553B的雙余度總線上。
2 系統(tǒng)硬件構(gòu)成及其實(shí)現(xiàn)
信號(hào)調(diào)制解調(diào)用隔離變壓器和收發(fā)器,分別采用的是HOLT公司PM-DB2725EX和HI-1570芯片。而從曼徹斯特編解碼后的部分都可在一片FPGA芯片內(nèi)實(shí)現(xiàn),選定Altera公司CyclONe系列的EP1C12作為主芯片。其中FPGA與總線間接口部分的電路如圖2。
FPGA與總線間接口部分的電路
3 FPGA內(nèi)部的模塊構(gòu)成及實(shí)現(xiàn)
FPGA片內(nèi)的實(shí)現(xiàn),通過Verilog程序和調(diào)用QuartusII軟件內(nèi)部宏模塊完成,可分為雙冗余曼徹斯特II編解碼及串并轉(zhuǎn)換、總線傳輸邏輯、終端協(xié)議和消息處理、內(nèi)存及控制器和子系統(tǒng)等模塊。
3.1 雙冗余曼徹斯特II編解碼及串并轉(zhuǎn)換模塊
該模塊實(shí)現(xiàn)曼徹斯特碼的編解碼,串并轉(zhuǎn)換后同總線傳輸邏輯模塊進(jìn)行通信。原始數(shù)據(jù)采樣采用16M時(shí)鐘頻率。
3.2 總線傳輸邏輯模塊
該模塊對(duì)上一模塊的16位并行數(shù)據(jù)按1553B協(xié)議定義進(jìn)行分解、存儲(chǔ),并給協(xié)議模塊響應(yīng)信號(hào)及對(duì)其命令執(zhí)行,發(fā)出相應(yīng)狀態(tài)字和數(shù)據(jù)字。
3.3 內(nèi)存及控制器模塊
用作系統(tǒng)寄存器和與下級(jí)子系統(tǒng)進(jìn)行數(shù)據(jù)交換的數(shù)據(jù)存貯區(qū),以響應(yīng)其它各模塊可能存在的寄存器和數(shù)據(jù)訪問,該模塊由以下3個(gè)子模塊組成:
DPSRAM模塊:為Quartus軟件宏模塊altsyncram的實(shí)例化調(diào)用,在物理上為FPGA芯片片內(nèi)SRAM的調(diào)用。實(shí)例化調(diào)用后為雙端口可同時(shí)讀寫的同步SRAM內(nèi)存,以滿足總線傳輸邏輯,協(xié)議處理模塊,初始化自檢模塊之一和子系統(tǒng)模塊可能同時(shí)存在的訪問請(qǐng)求。
RAM_Control模塊:為上一模塊DPSRAM的內(nèi)存控制器,根據(jù)上游(user_interface模塊)信號(hào)產(chǎn)生符合DPSRAM時(shí)序的讀寫使能,地址,數(shù)據(jù)和讀寫確認(rèn)信號(hào)。
user_interface模塊:解決多端口輸入不能直接線與和定向輸出從DPSRAM讀取的數(shù)據(jù)的問題。
3.4 終端協(xié)議和消息處理模塊
該模塊解析接收到的命令并通知總線傳輸模塊做出相應(yīng)的響應(yīng)。可分為以下4個(gè)子模塊:①read模塊完成指令字的讀取;②protocol模塊完成指令字分析和協(xié)議的處理;③write模塊根據(jù)protocol模塊解析命令后發(fā)過來的指令完成對(duì)應(yīng)狀態(tài)字的修改;④choose模塊將對(duì)read和 write兩個(gè)模塊發(fā)給ram的命令和地址進(jìn)行選通。
3.5 子系統(tǒng)模塊
子系統(tǒng)含收發(fā)、終端地址產(chǎn)生和校驗(yàn)等模塊。①收發(fā)模塊:完成存貯器16位的并行數(shù)據(jù)和2400bit串行數(shù)據(jù)的轉(zhuǎn)換;②終端地址產(chǎn)生和校驗(yàn)?zāi)K:終端地址由子系統(tǒng)的撥碼開關(guān)設(shè)定,即讀取撥碼開關(guān)的電平值并產(chǎn)生相應(yīng)的地址奇校驗(yàn)位后存貯到內(nèi)存的終端地址寄存器中,并初始化狀態(tài)字。編寫以上各模塊代碼時(shí),狀態(tài)機(jī)跳轉(zhuǎn)的條件原來是檢測(cè)電平值,但在仿真過程中發(fā)現(xiàn)有時(shí)檢測(cè)不到或多次檢測(cè)到從而導(dǎo)致狀態(tài)機(jī)誤操作,改用如下跳變沿檢測(cè)后問題得到解決,對(duì)應(yīng)代碼為:
對(duì)應(yīng)代碼
其原理為:將需檢測(cè)的信號(hào)不斷地通過2個(gè)D觸發(fā)器連續(xù)鎖存2次,當(dāng)檢測(cè)到2次鎖存的值符合跳變沿條件時(shí)才執(zhí)行動(dòng)作如圖3。采用該檢測(cè)方式后程序仿真不出現(xiàn)類似不穩(wěn)定問題,但同時(shí)也造成1個(gè)時(shí)鐘周期的額外延時(shí)。
3.6 仿真及FPGA實(shí)現(xiàn)
以上各功能模塊采用Verilog編寫,內(nèi)存則調(diào)用QuartusII宏模塊。整個(gè)程序的功能仿真,綜合布線和最后的時(shí)序仿真均用ALTERA公司的QuartusII完成。各模塊綜合后在QuartusII中編譯后生成symbol。
為某型號(hào)調(diào)諧濾波器與1553總線通信的消息仿真波形。其中:RT地址設(shè)定為00101,即圖4中撥碼開關(guān)pat4~pat0的電平值,子地址為00001。復(fù)位后第1條消息為RT不發(fā)送數(shù)據(jù)請(qǐng)求時(shí)發(fā)送矢量字模式命令及其響應(yīng),狀態(tài)字所帶的數(shù)據(jù)字為&H0000,該命令循環(huán)發(fā)送至 RT直到有請(qǐng)求第3條消息的情況;第2條消息為RT接收1個(gè)數(shù)據(jù)字命令及其響應(yīng);第3條是當(dāng)RT有發(fā)送數(shù)據(jù)請(qǐng)求時(shí)的發(fā)送矢量字及其響應(yīng),狀態(tài)字所帶的數(shù)據(jù)字為&H0001;第4條是RT發(fā)送兩個(gè)數(shù)據(jù)字命令及其響應(yīng);第5條是帶數(shù)據(jù)字的同步模式命令及其響應(yīng)。
由仿真波形可見,該系統(tǒng)基本滿足該濾波器的應(yīng)用,為進(jìn)一步驗(yàn)證其實(shí)際應(yīng)用和其他協(xié)議,將其下載至FPGA中進(jìn)行測(cè)試。FPGA內(nèi)部是基于 SRAM結(jié)構(gòu)的,因此需要1片配置芯片固化其內(nèi)部結(jié)構(gòu),故采用JTAG模式和主動(dòng)串行模式(AS)2種配置模式。調(diào)試時(shí)使用JTAG模式直接將邏輯寫入 FPGA內(nèi)部,調(diào)試好后再用AS模式將程序?qū)懭肱渲眯酒珽PCS4中,經(jīng)測(cè)試通過。
4 結(jié)語(yǔ)
基于FPGA技術(shù)的總線接口板設(shè)計(jì),已通過某軍用飛機(jī)的測(cè)試,實(shí)現(xiàn)1553總線和子系統(tǒng)的通訊。將FPGA技術(shù)應(yīng)用于1553B總線接口,設(shè)計(jì)成本降低,設(shè)計(jì)周期縮短,系統(tǒng)的集成度提高,擴(kuò)展能力增強(qiáng),具有重要的現(xiàn)實(shí)意義和應(yīng)用前景。
評(píng)論