1引言
IEEE1394是一種高速串行總線,它最初是由Apple公司與20世紀80年代中期開發的FireWire總線。1995年,IEEE制定并頒布了IEEE 1394-1995標準,并在2000年推出了IEEE 1394a標準,可以支持100Mbps、200Mbps和400Mbps的傳輸速率。在最新的IEEE1394B標準中,支持的傳輸速率提高到了800Mbps、1.6Gbps和3.2Gbps。IEEE1394總線以其高傳輸速率的特點已經在視頻傳輸、網絡互聯及計算機外設等領域有了廣泛的應用[1]。目前在航空[2]及航天應用中對大量數據的高速實時傳輸要求不斷提高,IEEE1394具有數據傳輸速率高、支持等時傳輸等特點,因而成為未來星載數據總線的選擇之一。
在星載應用中,由于任務的多樣性,對星載總線接口的需求多種多樣。譬如部分載荷本身沒有集成1394接口卻需要用1394總線來傳輸數據;或者幾個載荷需要共用一個1394總線接口;或者是載荷自身沒有帶微控制器等控制單元。并且各種載荷對外的數據接口也是各不相同的。這時就需要一種體積小,簡單并且易于擴充接口能的智能終端配合載荷一起工作。由于IEEE1394總線協議比較復雜,實際應用中大多數采用專用的1394總線芯片,面向專用系統的1394芯片都支持微處理器接口。常見的1394總線設計采用的是微處理器加上1394總線芯片及外圍邏輯芯片,這種設計方案需要的芯片數量多,接口設備體積大,擴充接口功能實現起來比較復雜。
針對IEEE1394星載應用的實際需要,本文基于MC8051軟核,提出一種簡單、低功耗、小型化和易于擴展的IEEE1394智能終端設計方案,克服了以往1394總線接口硬件電路復雜、使用芯片多、體積大等缺點,并且可以很方便地擴展接口的其他功能。
2 系統實現方案
整個1934接口系統的框圖如圖1所示。采用的是Actel公司基于FLASH技術的ProASIC Plus系列FPGA芯片APA600。它具有單芯片上電即用、高性能和低功耗等特點[2]。由于上電即用,減小了電路板體積,有助于簡化電路設計。在方案試驗中使用的是TI公司的鏈路層芯片TSB12LV32[3]和物理層芯片TSB41AB[4]。TSB12LV32是一款高性能的通用IEEE1394a鏈路層芯片,用于在主控制器和1394物理層芯片以及連接到鏈路層DM口的外部設備之間的數據傳輸。它兼容IEEE1394-1995和P1394a標準,支持400、200和100Mbps的傳輸速率。提供可選的具有多種操作模式的8位/16位微控制器接口,最大支持60MHz。芯片內部分別內置了2K字節大小的通用接口FIFO和異步傳輸FIFO,用于微控制器接口和物理層接口之間的數據包傳送,8位/16位數據移動端口支持25MHZ下的等時、異步和數據流包的發送和接收。TSB41AB3是一款三端口兼容IEEE 1394-1995和P1394a標準400Mbps的物理層芯片.
在FPGA中整合了開源的兼容標準8051的微控制器IP核MC8051,將程序存儲器、程序存儲器、外部數據存儲器以及UART和定時器都集成在一片FPGA中。可以根據任務需要很方便地在FPGA內定制其他所需要的接口和邏輯單元,譬如AD/DA控制,CAN總線等。
通過上述三個部分可以構成面向特定應用的完整的1394總線接口系統。
3 基于MC8051 IP的1394總線接口設計
3.1 Oregano Systems MC8051 IP Core¬[5]
Oregano Systems公司發布的MC8051 IP Core是一個基于GUN LGPL的開源IP Core。它完全兼容標準的8051控制器,并且對其體系結構作了改進,在使用相同時鐘頻率情況下,將指令的執行時間下降到1到4個時鐘周期,因此速度得到了十幾倍的提升,并且降低了功耗。MC8051模型是可綜合RTL風格,完全的同步設計,具有單一時鐘網絡,通過調整和修改VHDL代碼可以輕松地擴展其功能。具有128字節的片內RAM,最高可以支持64K的ROM和RAM,并且集成了UART、定時器、中斷和4組8位的I/O口。
3.2 MC8051設計要點
3.2.1 MC8051參數配置
MC8051提供了參數化設計,通過修改VHDL中的參數值可以很輕易的修改內部模型,例如UART個數,Timer個數,選擇乘法器等。在本應用系統中不需要涉及乘除法運算,因此在配置文件mc8051_p.vhd中將常數C_IMPL_MUL, C_IMPL_DIV以及C_IMPL_DA的設置為0。
3.2.2時鐘和RAM設計
MC8051 IP核在Actel的APA600上綜合得到的最高時鐘頻率為15MHZ左右,為了使用于調試的串口波特率誤差最小,用Actel Libero內的SmartGen產生11.0592MHz的時鐘作為系統時鐘。
MC8051所需要的內部RAM和RAM都應該調用器件的底層單元來實現。以128字節的內部RAM為例。用SmartGen產生一個128*8大小的雙口RAM ram128_8.vhd,然后在mc8051_ram.vhd中例化。
3.2.3 ROM設計
MC8051完全兼容標準8051芯片,可采用KEIL uVision開發環境,建立工程文件時候Select Device選擇 Oregano Systems的8051 IP Core, 然后編譯寫好的51程序,產生HEX文件。需要從HEX文件中得到程序數據,這里簡單介紹一下HEX文件格式。HEX文件是由任意數量的十六進制記錄組成的,每個記錄包含5個域,他們以下面的格式排列[6]:
:llaaaatt[dd…]cc
HEX文件都是由冒號開頭的,ll是數據長度域,表示記錄中數據字節的個數;aaaa為地址域,標識記錄中數據字節的開始地址;tt是記錄類型域,51程序產生的hex文件只有兩種記錄類型,包括數據記錄(00)和文件結束記錄(01);dd是數據域,表示一個字節的數據
選用的Actel APA系列FPGA沒有底層的ROM單元,因此用VHDL設計實現ROM。通過了解了HEX文件的格式,編寫了從HEX文件讀取數據和地址信息,然后生成mc8051_rom.vhd文件,其中程序數據以常數的形式存在數組文件中。
3.2.4 MC8051與TSB32LV32之間的接口
鏈路層芯片微處理器接口包括16位寬的數據總線以及7位寬的地址總線??梢酝ㄟ^設置鏈路層芯片的COLDFIRE,M8BIT_SIZ0,MCMODE_SIZE這三個端口的狀態,可以得到微處理器接口的各種不同操作模式,本設計中設置成16位MCS-MCA握手模式。
在系統頂層文件中對MC8051_top進行例化,連接MC8051與1394鏈路層芯片TSB12LV32。
MC8051的4組I/O口都是將輸入和輸出分開的,所以每組都可以配置成輸入和輸出。我們通過MCS和MWR來控制DM 和P1、P2口的連接。
3.3 基于MC8051的1394總線控制實現
MC8051通過TSB12LV32的微控制器接口實現對鏈路層和物理層內部寄存器的讀取和設置,其中對鏈路層芯片的寄存器讀寫直接通過微控制器接口操作,而對物理層芯片寄存器讀寫是通過對鏈路層24H的Phy Access Register讀寫實現。
1394芯片部分內部寄存器需要在系統上電的時候初始化或者在運行時候進行設置,一些則需要在運行時被監視以決定系統狀態,而鏈路層內部的異步發送FIFO和通用接收FIFO也是通過讀寫寄存器來訪問的。因此正確讀寫寄存器是1394接口實現中非常重要的一步。
通過正確設置控制寄存器,DM口控制器寄存器等內部寄存器便可以實現1394總線的各種傳輸模式的收發。
對1394芯片的控制另外一個主要部分是對中斷的響應和處理。將TSB12LV32芯片的INT管腳與MC8051的int0相連,通過int0的下跳沿檢測中斷發生。TSB12LV32芯片中有兩個寄存器是和中斷相關的。設置10H的中斷屏蔽寄存器中相應的某一位為1,則的0CH中斷寄存器響應位便跳變為高電平,同時產生相應的中斷。當有中斷發生的時候,INT管腳變低電平,而清除中斷則需要往中斷寄存器相應位寫入1。因此我們在中斷發生時候,可以通過讀取中斷寄存器的值查看發生了哪種中斷,然后做出正確的響應。
主要程序的流程圖如下:
4 結論
我們根據本文介紹的方案,設計和研制了基于mc8051的1394總線接口。經過測試,1394總線系統工作正常。該總線接口具有集成度高,體積小,傳輸速率高等特點,同時可以根據實際任務需要很方便的擴充接口功能。本文介紹的方案對與1394總線接口的研究開發具有借鑒意義。
本文作者創新點:將MC8051軟核應用與星載智能1394終端設計。