基于1553B總線協(xié)議的解碼器設計和FPGA實現(xiàn)
摘要:文章通過對1553B總線協(xié)議的研究,結合現(xiàn)代EDA技術,介紹了一種使用現(xiàn)場可編程邏輯器件(FPGA)設計1553B,總線協(xié)議用的manches-ter II型碼解碼器的方法。通過采用Verilog HDL硬件描述語言和原理圖混合輸入法,使設計簡潔有效。通過OuartusII開發(fā)軟件對設計進行了時序約束和分析,最后給出了時序仿真圖,從而證明了這種設計是可行和可靠的。
關鍵詞:1553B總線協(xié)議;ManehesterII型碼;現(xiàn)場可編程門陣列
0 引言
MIL-STD-1553B是關于數(shù)據(jù)總線電氣特性和協(xié)議規(guī)范的美國軍用標準,它的全稱為“飛機內(nèi)部時分制指令/響應性多路傳輸數(shù)據(jù)總線”(Aircraft Internal Time Division Command/Response Multiplex Data Bus),該標準規(guī)定了飛機內(nèi)部數(shù)字式的命令/相應時分制多路數(shù)據(jù)總線的技術要求。
在軍用機載數(shù)據(jù)總線方面,MIL-STD-1553B是應用時間最早,也最為持久的,它為適應工業(yè)和軍事的需要而提出,具有很高的可靠性和靈活性,加之技術比較成熟,所以應用比較廣泛。目前,MIL-STD-1553B已廣泛應用于軍事、工業(yè)和科技領域,從大型運輸艦、空間補給站、轟炸機到各種戰(zhàn)斗機,以及直升機,都有其應用,它甚至用于導彈系統(tǒng),以及用作飛行器和導彈之間的基本通信協(xié)議。我國于1987年頒布了相應的軍標,目前,1553B總線已成為國內(nèi)軍用飛機航電系統(tǒng)的主流數(shù)據(jù)總線。
本文論述了一種運用Verilog HDL語言,并結合現(xiàn)在EDA技術設計的可靠性強的1553B總線用ManchesterII型碼解碼器模塊。
1 1553B數(shù)據(jù)格式
1553B數(shù)據(jù)總線以異步、命令/響應方式執(zhí)行數(shù)據(jù)信息的傳輸,其通信方式采用半雙工方式,總線控制器初始化所有個信息位、一個奇偶校驗位和3個位長的傳輸,并控制數(shù)據(jù)總線上所有數(shù)據(jù)信息的傳輸,并控制數(shù)據(jù)總線上所有數(shù)據(jù)信息的傳輸,數(shù)據(jù)總線上的信息流有信息組成,而信息有三種類型的字組成:命令字、數(shù)據(jù)字和狀態(tài)字。有10種信息格式,每個信息格式至少包含兩個字,每個字有16的同步頭,所有的信息字都采用ManchesterlI型碼。
如圖1所示,1553B的數(shù)據(jù)傳輸速率是1Mbit/s。按照ManchesterII型碼規(guī)則,將邏輯“0”用編碼“01”來表示,其中“0”和“1”各占0.5 μs,也即用一個由低到高的跳變來表示;將邏輯“1”用編碼“10”來表示,其中“1”和“0”各占0.5 μs,也即用一個由高到低的跳變來表示。
MIL-STD-1553B總線標準定義了三種字類型:命令字、數(shù)據(jù)字和狀態(tài)字。每一種字類型都有唯一的格式,但三種字類型有相同的數(shù)據(jù)結構,如圖2所示。每個字有20比特,最前面三個比特是同步字頭,標志新字的開始,同步字頭波形是無效的Manchester碼,因為其跳變僅僅發(fā)生在第二比特時間的正中。使用這種不同的模式,是為了讓解碼器在每個字的開頭重新建立同步,以及保持發(fā)送的整體穩(wěn)定性;接下去的十六比特是信息字段,三種類型的字有不同的含義;最后一個比特是該字的奇偶校驗位,標準規(guī)定為奇校驗。
2 EDA設計
本文設計的ManchesterII型碼解碼器選擇ALTERA公司的Cyclone系列的EPlC6Q240C6芯片作為目標器件,在QuartusII9.0集成環(huán)境中,使用Verilog HDL硬件描述語言和原理圖混合輸入方法實現(xiàn),使設計簡潔有效。
解碼器的功能是將1553B總線中串行輸入的數(shù)據(jù)轉變成并行數(shù)據(jù),并檢查數(shù)據(jù)和奇偶校驗位是否正確,為下游的1553B處理器提供正確的數(shù)據(jù)。如圖3所示,解碼器包括同步模塊、同步頭檢出模塊、數(shù)據(jù)處理模塊、狀態(tài)機模塊。設計采用16M時鐘的工作頻率。
數(shù)據(jù)信號和使能信號可以在時鐘信號的一個周期之內(nèi)的任意時間來領,也就是說無法定位數(shù)據(jù)信號和使能信號對于時鐘信號上升沿的時間間隔,這將使各模塊內(nèi)部的時鐘計數(shù)器無法準確地計時,使狀態(tài)機無法準確地進行狀態(tài)跳變。
同步模塊的作用相當于一個D觸發(fā)器,它可以使數(shù)據(jù)信號和使能信號相對于時鐘信號的上升沿有固定的時間間隔,這個時間間隔就是同步模塊的tco,即時鐘輸出延時。這樣就為下游模塊的時鐘計算和時序約束提供了一個固定的參數(shù),為各模塊的時鐘計數(shù)器準確計時和狀態(tài)機正確跳變奠定了基礎。
如圖4所示,同步模塊中Din和Din_n管腳(Din_n為Din的方向輸入信號)接收來自1553B模擬收發(fā)器的數(shù)據(jù)信號,read管腳接收模擬收發(fā)器發(fā)出的使能信號。產(chǎn)生與16MHz時鐘的上升沿同步的數(shù)據(jù)信號和使能信號。
同步頭檢出模塊是檢測1553B三種類型字的同步頭。如圖2所示,命令字和狀態(tài)字的同步頭是先高電平后低電平,數(shù)據(jù)字的同步頭是先低電平后高電平,三種字的同步頭的高低電平各占1.5 μs。在用Verilog HDL硬件描述語言設計中,本文通過設置兩個計數(shù)器,分別在時鐘信號上升沿的時候給高低電平計數(shù),理論上說兩個計數(shù)器都等于24的時候,同步頭才算檢出。但是要考慮到tco的影響,設計中當兩個計數(shù)器到等于22的時候,就說同步頭檢出,這時產(chǎn)生message ready信號,告訴狀態(tài)機要開啟數(shù)據(jù)處理模塊。如圖5所示,是同步頭檢出頂層圖。
數(shù)據(jù)處理模塊是正確解碼后面的有效信息位,包括串并轉換、數(shù)據(jù)錯誤檢測、校驗位檢測。如圖6所示,利用把16MHz時鐘8分頻產(chǎn)生的2MHz的采樣信號對總線數(shù)據(jù)進行采樣,可以在每一碼位的1/4周期處和3/4周期處采樣,這樣采樣的信號最可靠。當一碼位兩次采樣的值不一樣時,就認為數(shù)據(jù)正確,并將第一次采樣的值發(fā)送給數(shù)據(jù)寄存器。如果一碼位兩次采樣的值相等,就認為數(shù)據(jù)錯誤,產(chǎn)生數(shù)據(jù)錯誤信號dataerror。當數(shù)據(jù)寄存器的前十六位的和除以2的余數(shù)等于第十七的數(shù)據(jù)時,就認為奇校驗正確。否則就認為錯誤,并產(chǎn)生奇校驗錯誤信號verify_error信號。圖7所示為數(shù)據(jù)處理頂層圖。
狀態(tài)機模塊是要正確地協(xié)調(diào)工作同步頭檢出模塊和數(shù)據(jù)處理模塊,如圖8所示狀態(tài)機模塊的狀態(tài)轉移圖。當狀態(tài)機被使能時,說明1553B總線數(shù)據(jù)來臨,此時狀態(tài)機產(chǎn)生SyncV end信號告訴同步頭檢出模塊開始工作。當同步頭檢出模塊工作結束時,產(chǎn)生Sync ready信號,告訴狀態(tài)機要開啟數(shù)據(jù)處理??臁.敂?shù)據(jù)處理模塊工作到一定時間時會產(chǎn)生一個sync head信號,這個信號的意義是要讓狀態(tài)機告訴同步頭檢出模塊開始檢測下一個字的同步頭。而此時數(shù)據(jù)處理模塊還沒有工作完,只有當數(shù)據(jù)處理模塊產(chǎn)生finish信號時,才表示數(shù)據(jù)處理模塊工作完成,告訴狀態(tài)機關閉數(shù)據(jù)處理模塊。圖9所示是狀態(tài)機頂層圖。
在QuartuslI中的原理圖輸入界面中,將以上各模塊正確地連接在一起,如圖10所示為1553B總線的manchesterII型碼解碼器的頂層設計原理圖。
3 時序約束與驗證
時序約束是FPGA設計中非常重要的環(huán)節(jié),只有建立了合理的時序約束,設計才能正常地工作。如今的FPGA中一般都有全銅層的全局時鐘驅(qū)動網(wǎng)絡,本設計中16MHz的時鐘設置成全局時鐘,可以有效地避免這些時鐘信號到達各寄存器時鐘短的時鐘偏斜。將時鐘的最高頻率設置成16.8MHz。圖11所示為解碼器的仿真時序圖,解碼器在一個字周期之后,解碼出數(shù)據(jù)為1110111011111011。
文章詳細介紹了一種利用FPGA實現(xiàn)的1553B總線用的ManchesterlI型碼解碼器,文章給出了解碼器各模塊的功能和實現(xiàn)方法,最后給出了頂層設計原理圖。給出的仿真時序圖證明這是一種可靠的實現(xiàn)方法。