基于SOPC 的1553B 總線(xiàn)接口邏輯設計
1553B 總線(xiàn)協(xié)議開(kāi)發(fā)主要在FPGA 芯片中開(kāi)發(fā),因此FPGA 本身性能的好壞將影響系統的開(kāi)發(fā)。XC2VP30 內部具有兩個(gè)PowerPC 405 處理器核、13969 個(gè)Slices、分布式RAM 為428Kb、136 個(gè)乘法器單元、塊RAM 為2448Kb、8 個(gè)DCM、8 個(gè)多吉比特收發(fā)器。由此可見(jiàn),系統選用的FPGA 完全可以滿(mǎn)足1553B 總線(xiàn)邏輯開(kāi)發(fā)的需求。基于Xilinx 公司的Virtex-IIPro 開(kāi)發(fā)板搭建起來(lái)的1553B 總線(xiàn)開(kāi)發(fā)平臺共分為4 個(gè)部分。其中各部分的功能說(shuō)明如下:Virtex-II Pro 開(kāi)發(fā)板:主要完成與PC 機通信功能,接收或向總線(xiàn)終端設備發(fā)送數據并將其轉換成1553B 總線(xiàn)協(xié)議格式。
PC 機:系統通過(guò)PC 機對整個(gè)系統運行進(jìn)行控制,如開(kāi)始、運行、結束等命令都是通過(guò)PC 機由串口發(fā)送給開(kāi)發(fā)板。
總線(xiàn)終端設備:采用單片機作為總線(xiàn)終端設備的核心,它與 FPGA 采用8 位并行數據總線(xiàn)進(jìn)行數據傳遞。由總線(xiàn)終端設備向開(kāi)發(fā)板發(fā)送數據,通過(guò)1553B 總線(xiàn)協(xié)議模塊轉換成協(xié)議格式,同時(shí)1553B 總線(xiàn)協(xié)議模塊也可以接收來(lái)自總線(xiàn)的數據,并將其轉換成總線(xiàn)終端設備可以接收的數據格式,總線(xiàn)終端設備通過(guò)判斷發(fā)送數據與接收數據,可以確定
1553B 總線(xiàn)協(xié)議轉換模塊的有效性。
總線(xiàn)轉換器:由于 1553B 總線(xiàn)上傳輸的是雙極性的差分信號,因此,開(kāi)發(fā)板在收發(fā)數據時(shí)首先要進(jìn)行電平轉換以及相應的調制解調,總線(xiàn)轉換器就是完成這部分功能的。
SOPC 的開(kāi)發(fā)過(guò)程與傳統的嵌入式系統設計不同,可以分為硬件開(kāi)發(fā)和軟件開(kāi)發(fā)兩個(gè)流程。Xilinx 公司的嵌入式開(kāi)發(fā)工具EDK(Embeded Development Kit)SOPC 開(kāi)發(fā)套件,可以進(jìn)行Power PC 硬核嵌入式微處理器的開(kāi)發(fā)工作,使用靈活方便,帶有豐富的IP 資源,是目前性能比較優(yōu)異的嵌入式微處理器開(kāi)發(fā)工具,系統設計中使用的為EDK8.2 版本。應用EDK開(kāi)發(fā)SOPC 系統過(guò)程中可以與ISE(Integrated Software Environment)軟件配合使用,ISE 是Xilinx 公司FPGA/CPLD 的集成開(kāi)發(fā)環(huán)境,該軟件環(huán)境集成了FPGA 的整個(gè)開(kāi)發(fā)過(guò)程所用到的工具。在本文1553B 總線(xiàn)接口邏輯的設計過(guò)程中,對于1553B 的編碼、解碼等核心模塊,就是在ISE 環(huán)境下利用Verilog HDL 編寫(xiě)并調試通過(guò),然后通過(guò)EDK 嵌入到系統當中的。
4.1 編碼/解碼模塊
曼徹斯*編碼/解碼是1553B 總線(xiàn)接口重要的組成部分,曼徹斯*編解碼模塊設計的好壞直接影響總線(xiàn)接口的性能。系統編碼模塊完成的是曼徹斯*的編碼及解碼,并檢測錯誤。它能夠接收具有有效同步字頭的曼徹斯*,并進(jìn)行譯碼,以及識別其類(lèi)型和串并轉換、奇偶校驗等;編碼模塊能將處理器輸出的并行二進(jìn)制數據進(jìn)行曼徹斯*編碼,再加上同步字頭及奇偶位,從而滿(mǎn)足符合1553B 標準的字進(jìn)行輸出。
曼徹斯*是一種廣泛應用于航空電子綜合系統中的總線(xiàn)數據傳輸的雙極性碼。它在每個(gè)碼位中點(diǎn)存在一個(gè)跳變,1 信號是一個(gè)由1 到0 的負跳沿,而0 信號是由0 到1 的正跳沿。在MIL-STD-1553B 協(xié)議中其數據格式如圖2 所示。
在系統的編碼/解碼模塊設計中采用同步設計的方法,這樣,所有的觸發(fā)器都由一個(gè)公共時(shí)鐘信號來(lái)同步。因此,可以很好的解決毛刺和一些競爭與冒險。
編碼模塊主要分為三個(gè)部分,分別為檢測編碼周期是否開(kāi)始并產(chǎn)生同步字頭、串并轉換并產(chǎn)生奇偶校驗位、對數據和奇偶校驗位進(jìn)行編碼。下面給出了部分編碼模塊的源代碼:
always @(posedge enc_clk or negedge rst_n)//檢測編碼周期開(kāi)始,根據字型確定同步頭
begin
if (!rst_n)
sync_bits = 6'b000_000 ;
else if (tx_csw)
sync_bits = 6'b111_000 ;//當寫(xiě)入命令字,同步頭為111000
else if (tx_dw)
sync_bits = 6'b000_111 ;//當寫(xiě)入數據字,同步頭為000111
else
sync_bits = sync_bits ;
end
評論