盧韋平
(中興通訊,陜西 西安 710065)
1553B 總線是飛機(jī)內(nèi)部時(shí)分制指令響應(yīng)式多路傳輸數(shù)據(jù)總線[1-5],最早應(yīng)用于20世紀(jì)70年代末美國(guó)軍用飛機(jī),近年來(lái)逐步擴(kuò)展到航天、坦克、艦船等領(lǐng)域。我國(guó)從20世紀(jì)80年代開(kāi)始對(duì)1553B 總線接口進(jìn)行研究,由于早期研究受工藝和器件的限制,設(shè)計(jì)的產(chǎn)品體積大、集成度不高。隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,特別是大規(guī)模集成電路的應(yīng)用,設(shè)計(jì)的1553B 總線產(chǎn)品體積減小、集成度有所提高。本文采用FMQL[6]中的PL 部分配置HT-61843GB 器件,讀取BC 端發(fā)送的數(shù)據(jù);然后再通過(guò)AXI 總線傳遞給PS 端進(jìn)一步處理,實(shí)現(xiàn)了1553B 總線RT 端[7]的功能。
硬件關(guān)鍵器件包括FMQL、HT-61843GB、變壓器。
FMQL 芯片采用復(fù)旦微電子的全可編程PSOC 芯片,它在單芯片集成了四核高性能處理器(Processing System,PS)和可編程邏輯(Programmable Logic,PL),PL 部分為PS 部分的可擴(kuò)展單元,它既可以配合PS 完成一些外部邏輯的處理,也可以利用PL 部分并行、硬件處理的特點(diǎn),構(gòu)成PS 中算法的一個(gè)外部協(xié)處理單元,形成一個(gè)強(qiáng)大的算法加速器。
HT-61843GB 是國(guó)微電子的一款傳輸速率為4 Mb/s 的1553B 總線通信控制器,可實(shí)現(xiàn)1553B 總線數(shù)據(jù)傳輸方向控制、遠(yuǎn)程終端節(jié)點(diǎn)間的數(shù)據(jù)傳輸,以及總線數(shù)據(jù)監(jiān)控,主要應(yīng)用于航天航空、導(dǎo)彈等領(lǐng)域[8]。HT-61843GB 的讀寫(xiě)時(shí)序如圖1、圖2所示。信號(hào)說(shuō)明見(jiàn)表1所列。HT-61843GB 內(nèi)部寄存器見(jiàn)表2所列。
表1 信號(hào)說(shuō)明
表2 內(nèi)部寄存器
圖1 讀時(shí)序
圖2 寫(xiě)時(shí)序
PL 部分軟件實(shí)現(xiàn)采用Verilog 語(yǔ)言編寫(xiě)[9-10]。RT 協(xié)議處理消息的基本流程如圖3所示。
圖3 RT 協(xié)議處理消息的基本流程
實(shí)驗(yàn)驗(yàn)證在Vivado 開(kāi)發(fā)環(huán)境上實(shí)現(xiàn)[11-12],分為讀寫(xiě)寄存器、讀寫(xiě)內(nèi)部存儲(chǔ)器、接收BC 發(fā)送的數(shù)據(jù)三部分。上電后,復(fù)位端口(mstclr_1553b_temp)輸出低電平,10 ms 后輸出高電平,復(fù)位HT-61843GB 芯片。ssflag_1553b 輸出高電平,極性選擇端口polarity_sel_1553b 輸出高電平,rtad_1553b輸出“11010”,rtap_1553b 輸出低電平,配置本地模塊地址為26。
FMQL 寫(xiě)HT-61843GB 寄存器時(shí)序如圖4所示。圖中寄存器存儲(chǔ)器選擇信號(hào)(mem_reg_1553b_temp)輸出低電平,讀寫(xiě)選擇信號(hào)(re_wr_1553b_temp)輸出低電平,配置為寫(xiě)寄存器模式,片選信號(hào)(select_strbd_1553b_temp)輸出低電平,地址線(address_1553b_temp)輸出十六進(jìn)制3、7、0、2 等地址;數(shù)據(jù)線(data_1553b_temp)輸出十六進(jìn)制1、8000、6294、b87b 等數(shù)據(jù);數(shù)據(jù)有效信號(hào)(data_1553b_select)輸出高電平。在數(shù)據(jù)寫(xiě)完成信號(hào)(ready_1553b)電平上升沿時(shí)刻,片選信號(hào)(select_strbd_1553b_temp)輸出高電平,數(shù)據(jù)有效信號(hào)(data_1553b_select)輸出低電平。
圖4 寫(xiě)寄存器
FMQL 讀HT-61843GB 寄存器時(shí)序如圖5所示。圖中寄存器存儲(chǔ)器選擇信號(hào)(mem_reg_1553b_temp)輸出低電平,讀寫(xiě)選擇信號(hào)(re_wr_1553b_temp)輸出高電平,配置為讀寄存器模式,片選信號(hào)(select_strbd_1553b_temp)輸出低電平,地址線(address_1553b_temp)輸出十六進(jìn)制3、7、0、2、7 等地址;在數(shù)據(jù)讀完成信號(hào)(ready_1553b)上升沿時(shí)刻將HT-61843GB芯片數(shù)據(jù)線上數(shù)據(jù)鎖存入data_temp,片選信號(hào)(select_strbd_1553b_temp)輸出高電平,從圖中觀察讀出數(shù)據(jù)為十六進(jìn)制8099、6294、b87b,數(shù)據(jù)正確。
圖5 讀寄存器
FMQL 寫(xiě)HT-61843GB 存儲(chǔ)器時(shí)序如圖6所示。圖中寄存器存儲(chǔ)器選擇信號(hào)(mem_reg_1553b_temp)輸出高電平,讀寫(xiě)選擇信號(hào)(re_wr_1553b_temp)輸出低電平,配置為寫(xiě)存儲(chǔ)器模式,片選信號(hào)(select_strbd_1553b_temp)輸出低電平,地址線(address_1553b_temp)輸出十六進(jìn)制140、141、142、143 等地址;數(shù)據(jù)線(data_1553b_temp)輸出十六進(jìn)制400、420、440、460 等數(shù)據(jù);數(shù)據(jù)有效信號(hào)(data_1553b_select)輸出高電平。在數(shù)據(jù)寫(xiě)完成信號(hào)(ready_1553b)電平上升沿時(shí)刻,片選信號(hào)(select_strbd_1553b_temp)輸出高電平,數(shù)據(jù)有效信號(hào)(data_1553b_select)輸出低電平。
圖6 寫(xiě)存儲(chǔ)器
FMQL 讀HT-61843GB 存儲(chǔ)器時(shí)序如圖7所示。圖中寄存器存儲(chǔ)器選擇信號(hào)(mem_reg_1553b_temp)輸出高電平,讀寫(xiě)選擇信號(hào)(re_wr_1553b_temp)輸出高電平,配置為讀存儲(chǔ)器模式,片選信號(hào)(select_strbd_1553b_temp)輸出低電平,地址線(address_1553b_temp)輸出十六進(jìn)制140、141、142、143、144 等地址;在數(shù)據(jù)讀完成信號(hào)(ready_1553b)上升沿時(shí)刻將HT-61843GB 芯片數(shù)據(jù)線上數(shù)據(jù)鎖存入data_temp,片選信號(hào)(select_strbd_1553b_temp)輸出高電平,從圖中觀察讀出數(shù)據(jù)為十六進(jìn)制400、420、440、460,讀出數(shù)據(jù)正確。
圖7 讀存儲(chǔ)器
初始化配置完成后等待中斷,準(zhǔn)備接收BC 數(shù)據(jù)。中斷信號(hào)(int_1553b)輸入高電平后,讀命令堆棧寄存器、中斷狀態(tài)寄存器、消息命令存儲(chǔ)器、消息數(shù)據(jù)塊地址、消息時(shí)間、消息塊狀態(tài)、拆解子地址、數(shù)據(jù)長(zhǎng)度。如果為發(fā)送數(shù)據(jù)指令,則完成發(fā)送數(shù)據(jù);如果為接收數(shù)據(jù)指令,則根據(jù)子地址讀取接收數(shù)據(jù)查找表指針,根據(jù)數(shù)據(jù)查找表指針讀取數(shù)據(jù)。本文需要接收BC 數(shù)據(jù),接收BC 數(shù)據(jù)時(shí)序如圖8所示。圖中寄存器存儲(chǔ)器選擇信號(hào)(mem_reg_1553b_temp)輸出低電平,讀寫(xiě)選擇信號(hào)(re_wr_1553b_temp)輸出高電平,配置為讀寄存器模式,片選信號(hào)(select_strbd_1553b_temp)輸出低電平,地址線(address_1553b_temp)輸出十六進(jìn)制6、3 地址;在數(shù)據(jù)讀完成信號(hào)(ready_1553b)上升沿時(shí)刻將HT-61843GB芯片輸出數(shù)據(jù)線上數(shù)據(jù)鎖存入rtcommandstackpointer,值為十六進(jìn)制8041、0054,片選信號(hào)(select_strbd_1553b_temp)輸出高電平。同理讀取消息命令存儲(chǔ)器(message_command)54、消息數(shù)據(jù)塊地址存儲(chǔ)器(message_datablockaddr)55、消息時(shí)標(biāo)存儲(chǔ)器(message_timetag)56、消息塊狀態(tài)存儲(chǔ)器(message_blockstatus)57,其值為十六進(jìn)制d020、0600、905b、800,從中解析出命令信息(message_command[10])為0,判斷為接收命令,子地址(subaddress)為1,長(zhǎng)度(message_command[4:0])為0,因?yàn)橛? 位數(shù)據(jù)只能表示0~31,因此用0 代表32個(gè)數(shù)據(jù),讀存儲(chǔ)器141,輸出接收查找表(receivelookuppointer)值為十六進(jìn)制600,從存儲(chǔ)器地址600~620 中讀取接收數(shù)據(jù)(data_temp)為0~31,讀出數(shù)據(jù)與發(fā)送數(shù)據(jù)一致,數(shù)據(jù)接收正確。
圖8 接收數(shù)據(jù)
本文采用國(guó)產(chǎn)化FMQL、HT-61843GB 芯片,通過(guò)Verilog 編程,實(shí)現(xiàn)了1553B 總線RT 端關(guān)鍵器件國(guó)產(chǎn)芯片化,提高了1553B 總線RT 端模塊國(guó)產(chǎn)芯片率,降低了對(duì)進(jìn)口芯片的依賴,對(duì)促進(jìn)國(guó)產(chǎn)芯片[13-14]的推廣應(yīng)用具有一定意義。