基于FPGA的ARM并行總線(xiàn)研究與仿真
0 引言
本文引用地址:http://dyxdggzs.com/article/189552.htm在數字系統的設計中,FPGA+ARM 的系統架構得到了越來(lái)越廣泛的應用,FPGA 主要實(shí)現高速數據的處理;ARM 主要實(shí)現系統的流程控制.人機交互.外部通信以及FPGA 控制等功能.I2C.SPI 等串行總線(xiàn)接口只能實(shí)現FPGA 和ARM 之間的低速通信 ;當傳輸的數據量較大.要求高速傳輸時(shí),就需要用并行總線(xiàn)來(lái)進(jìn)行兩者之間的高速數據傳輸.
下面基于A(yíng)RM 處理器LPC2478 以及FPGA 器件EP2C20Q240,以ARM 外部總線(xiàn)的讀操作時(shí)序為例,研究?jì)烧咧g高速傳輸的并行總線(xiàn);其中,數據總線(xiàn)為32 位;并在FPGA 內部構造了1024x32bits 的SRAM 高速存儲緩沖器,以便于A(yíng)RM 處理器快速讀寫(xiě)FPGA 內部數據.
1 ARM 并行總線(xiàn)的工作原理
ARM 處理器LPC2478 的外部并行總線(xiàn)由24 根地址總線(xiàn).32根數據總線(xiàn)和若干讀寫(xiě).片選等控制信號線(xiàn)組成.根據系統需求,數據總線(xiàn)寬度還可以配置為8 位.16 位和32 位等幾種工作模式.
在本設計中,用到ARM 外部總線(xiàn)的信號有:CS.WE.OE.DATA[310].ADDR[230].BLS 等.CS 為片選信號,WE 為寫(xiě)使能信號,OE 為讀使能信號,DATA 為數據總線(xiàn),ADDR 地址總線(xiàn),BLS 為字節組選擇信號.ARM 的外部總線(xiàn)讀操作時(shí)序圖,分別如圖1 所示.

根據ARM 外部并行總線(xiàn)操作的時(shí)序,ARM 外部總線(xiàn)的讀寫(xiě)操作均在CS 為低電平有效的情況下進(jìn)行.由于讀操作和寫(xiě)操作不可能同時(shí)進(jìn)行,因此WE 和OE 信號不能同時(shí)出現低電平的情況.
數據總線(xiàn)DATA 是雙向的總線(xiàn),要求FPGA 也要實(shí)現雙向數據的傳輸.在時(shí)序圖中給出了時(shí)序之間的制約關(guān)系,設計FPGA 時(shí)應該滿(mǎn)足ARM 信號的建立時(shí)間和保持時(shí)間的要求,否則可能出現讀寫(xiě)不穩定的情況.
2 FPGA 的并行總線(xiàn)設計
2.1 FPGA 的端口設計
FPGA 和ARM 之間的外部并行總線(xiàn)連接框圖,如圖2 所示.由于FPGA 內部的SRAM 存儲單元為32 位,不需要進(jìn)行字節組的選擇,因此BLS 信號可以不連接.為了便于實(shí)現ARM 和FPGA 之間數據的快速傳輸,FPGA 內部的SRAM 既要與ARM 處理器進(jìn)行讀寫(xiě)處理,還要跟FPGA 內部的其他邏輯模塊進(jìn)行數據交換,因此SRAM 采用雙口RAM 來(lái)實(shí)現.

從端口的方向特性看,DATA 端口是INOUT(雙向)方式,其余端口均為IN(輸入)方式.從端口的功能看,clk20m 是全局時(shí)鐘,在實(shí)現時(shí)應采用FPGA 的全局時(shí)鐘網(wǎng)絡(luò ),這樣可以有效減少時(shí)鐘延時(shí),保證FPGA 時(shí)序的正確性.ADDR 是16 位的地址總線(xiàn),由ARM 器件輸入到FPGA.DATA 是32 位的雙向數據總線(xiàn),雙向總線(xiàn)的設計是整個(gè)設計的重點(diǎn).OE 為ARM 輸入到FPGA 的讀使能信號.
WE 為ARM 輸入到FPGA 的寫(xiě)使能信號.CS 為ARM 輸入到FPGA 的片選信號,FPGA 沒(méi)有被ARM 選中時(shí)必須輸出高阻態(tài),以避免總線(xiàn)沖突.
2.2 FPGA 的雙向總線(xiàn)設計
在FPGA 的并行總線(xiàn)設計中,如果頂層和底層的模塊都要用到雙向的IO 端口,則要遵守設計原則;否則不利于VHDL 程序的綜合.雙向IO 端口的設計原則是:只有頂層設計才能用INOUT類(lèi)型的端口,在底層模塊中應把頂層的INOUT 端口轉化為獨立的IN(輸入).OUT(輸出)端口并加上方向控制端口.頂層設計的VHDL 代碼如下:

其中,DATA_i.DATA_o 和output_en 均為FPGA 內部的信號,在內部的各層次模塊中,通過(guò)這三個(gè)信號就可以進(jìn)行單向的IO 控制.這樣,頂層設計中雙向的DATA 端口轉化為了內部單向的DATA_i(輸入).DATA_o(輸出)和output_en(輸出使能).在內部各模塊中,結合這三個(gè)信號以及 ADDR.OE.WE.CS 等信號,則可方便地實(shí)現ARM 總線(xiàn)接口的功能.實(shí)現的VHDL 關(guān)鍵代碼如下:

3 仿真結果分析
通過(guò)Quartus II 仿真工具,對FPGA 并行總線(xiàn)進(jìn)行時(shí)序仿真;仿真結果如圖3 所示.根據ARM 并行總線(xiàn)的讀寫(xiě)時(shí)序圖要求,從仿真結果可以看出FPGA 的總線(xiàn)接口設計滿(mǎn)足了設計的要求.由于選用的FPGA 器件內部帶有邏輯分析儀的功能模塊,通過(guò)Quartus II 軟件中的SignalTap II 邏輯分析工具,對FPGA的設計模塊進(jìn)行在線(xiàn)測試,發(fā)現總線(xiàn)時(shí)序了滿(mǎn)足ARM 并行總線(xiàn)的要求,且工作穩定,從另一個(gè)角度驗證了設計和仿真結果的正確性.

4 結論
由于FPGA 技術(shù)和ARM 技術(shù)應用越來(lái)越廣泛,通過(guò)設計并行總線(xiàn)接口來(lái)實(shí)現兩者之間的數據交換,可以較容易地解決快速傳輸數據的需求,因此設計滿(mǎn)足系統要求的FPGA 并行總線(xiàn)顯得尤為重要.本文設計的FPGA 的ARM 外部并行總線(xiàn)接口,滿(mǎn)足了總線(xiàn)的時(shí)序要求,并在某航空機載雷達應答機中進(jìn)行了應用,系統運行穩定,性能良好.以上的設計和仿真方法,對其他類(lèi)似的設計也有 一定的參考作用.
評論