基于Nios II系統的1553B總線(xiàn)網(wǎng)絡(luò )存儲器設計(圖)
本文設計了1553B總線(xiàn)上的網(wǎng)絡(luò )存儲器。整個(gè)系統基于NIOS II內核設計,利用SoPC技術(shù)將接口部分的邏輯控制全部集成于FPGA片內,系統的存儲量、結點(diǎn)數量均可擴展。
20世紀70年代誕生的1553B總線(xiàn),是一種主從式多余度總線(xiàn),對總線(xiàn)硬件有嚴格的規定,可靠性和實(shí)時(shí)性好,已經(jīng)成為當今軍用電子總線(xiàn)的首選。類(lèi)似于以太網(wǎng),1553B組網(wǎng)中也有“網(wǎng)絡(luò )硬盤(pán)”這樣的存儲需求,來(lái)減輕本地的存儲壓力,并可作為數據中繼供其他部分甚至其他組網(wǎng)使用。
Nios II嵌入式處理器是Altera公司于2004年6月推出的第二代用于可編程邏輯器件的可配置的軟核處理器,性能超過(guò)200 DMIPS。Nios II是基于哈佛結構的RISC通用嵌入式處理器軟核,能與用戶(hù)邏輯相結合,編程至Altera的FPGA中。處理器具有32位指令集,32位數據通道和可配置的指令以及數據緩沖。它特別為可編程邏輯進(jìn)行了優(yōu)化設計,也為可編程單芯片系統(SoPC)設計了一套綜合解決方案。
圖1 系統硬件結構框圖
系統總體方案
本系統的主要功能為接收1553B網(wǎng)絡(luò )發(fā)來(lái)的命令、數據,管理后級存儲器,提供一個(gè)訪(fǎng)問(wèn)存儲器的網(wǎng)絡(luò )接口。系統的存儲器接口作為1553B總線(xiàn)中的從結點(diǎn),平時(shí)處于待機狀態(tài),當總線(xiàn)上有讀寫(xiě)命令發(fā)來(lái)時(shí),總線(xiàn)轉換接口根據命令從后級存儲器讀取數據或向其寫(xiě)入數據。對于總線(xiàn)協(xié)議,最方便的是使用現成的協(xié)議芯片,但這樣做的成本非常高,1553B協(xié)議芯片的單片價(jià)格在6000元以上,這對于普通應用來(lái)說(shuō)是一個(gè)不小的負擔,如果能使用FPGA進(jìn)行協(xié)議管理,將使成本大大降低,另外,Quartus內包含有很多存儲器管理的IP核可供使用,對于1553B的協(xié)議則需要自行定制組件。
系統程序為兩部分,一部分為接受網(wǎng)絡(luò )命令及數據,另一部分為存儲器的讀寫(xiě)。在NIOS IDE環(huán)境中,使用C語(yǔ)言作為編程語(yǔ)言。
系統硬件設計
系統的硬件模塊框圖見(jiàn)圖1所示。
系統的核心芯片采用Altera公司的CYCLONE III系列FPGA EP3C25F324。它采用了65nm低功耗工藝技術(shù)進(jìn)行生產(chǎn),其集成度及性能有了明顯地提高,但功耗卻非常低,加上CYCLONE系列一直定位于低成本器件,芯片整體的性?xún)r(jià)比很高。
通過(guò)Quartus II 7.2集成的SOPC軟件向FPGA內部移植Nios II內核,所需組件如下。
● CPU:選用標準型CPU核,Debugger為L(cháng)evel 1,在滿(mǎn)足需求的情況下盡量節約片內資源的使用。
● System_ID:下載時(shí)系統認證時(shí)使用。
● Jtag_uart:FPGA與PC的通信接口,NIOS IDE軟件中使用會(huì )很方便。
● onchip_memory:片內存儲器,中轉數據時(shí)使用。
● FLASH:Quartus軟件內部集成
圖2 1553B總線(xiàn)的三種幀結構
有Intel公司生產(chǎn)的128P308的控制組件,便于開(kāi)發(fā),若需要更大量的存儲,加大FLASH容量即可,如果有需要,可多掛幾片。
● FLASH_Bus:FLASH的數據是三態(tài)的,需要在CPU和FLASH之間加入Avalon三態(tài)總線(xiàn)橋。
● 1553B接口組件:與外部1553B總線(xiàn)通信的接口,Quartus軟件內部未集成有該組件,需要自行開(kāi)發(fā)。
在1553B的網(wǎng)絡(luò )上,本系統是作為從結點(diǎn)設計的。在系統內部,1553B的接口組件需要作為Alavon總線(xiàn)上的主端口,其余存儲器控制模塊作為從端口。由于其余的端口在Quartus軟件內部均有集成,所以,系統軟件設計的主要工作量就是1553B接口的組件開(kāi)發(fā)。
存儲芯片采用Intel公司生產(chǎn)的128P308的FLASH芯片,符合通用接口標準,便于后續功能容量的更新升級。
圖3 FPGA內部工作流程
系統軟件設計
定制1553B組件的核心任務(wù)就是將1553B的總線(xiàn)信號轉換到NIOS II內部的Avalon總線(xiàn)上。
1553B組件作為Avalon總線(xiàn)上的主端口,選用的信號有clk、address、read、write、data、irq、reset、irqnumber等。傳輸方式為基本的主端口讀傳輸和寫(xiě)傳輸。產(chǎn)生這些信號就需要從1553B總線(xiàn)上讀取的幀信號來(lái)實(shí)現。1553B總線(xiàn)上共有三種幀,命令幀、狀態(tài)幀和數據幀。這三種幀的結構如圖2所示。
對于這三種幀,命令幀、數據幀和狀態(tài)幀可以使用同一個(gè)緩存,因為作為存儲的從結點(diǎn)不會(huì )主動(dòng)向主結點(diǎn)發(fā)送數據,整個(gè)工作都是被動(dòng)接收主結點(diǎn)的命令,等待主結點(diǎn)讀取或寫(xiě)入數據,系統只有單一的狀態(tài),不會(huì )出現沖突。
對于A(yíng)valon總線(xiàn)中的信號,對應于幀內信號關(guān)系如下。
● read/write信號:命令幀內的發(fā)送/接收位。
● address信號:命令幀內的子地址以及數據長(cháng)度位。
● data信號:數據幀內的數據位。
● irq信號:狀態(tài)幀內的標志位引起。
● irqnumber信號:狀態(tài)幀內的具體位置。
1553B組件的API函數包括有:
● altera_avalon_1553B_init()
● altera_avalon_1553B_enable()
● altera_avalon_1553B_disable()
● altera_avalon_1553B_getframe()
● altera_avalon_1553B_sendframe()
其余定制組件的步驟不再贅述。將組件通過(guò)SoPC定義完成后,命名為1553B,添加至NIOS II內核中。
FPGA內部的工作流程如圖3所示。
系統平時(shí)處于待機狀態(tài),當命令幀到來(lái)時(shí)會(huì )引起中斷,中斷子程即通過(guò)altera_avalon_1553B_getframe()解讀命令幀的內容,確定是讀取還是寫(xiě)入,讀取或寫(xiě)入數據的長(cháng)度,數據的特征作為下次讀取的標志,確實(shí)無(wú)誤后,開(kāi)始讀取或寫(xiě)入。
存儲器的管理與其他應用中不同的有兩點(diǎn):在每次寫(xiě)入后,必須將寫(xiě)入的數據作一個(gè)標志,以方便以后讀??;另外,還要計算剩余存儲的容量,在下一次需要寫(xiě)入數據時(shí)判斷是否可以容納下本次存儲。1553B的主結點(diǎn)在使用完畢數據后也需要提供信號來(lái)清空存儲以釋放資源。
評論