基于MC8051軟核的星載智能1394終端
MC8051提供了參數化設計,通過(guò)修改VHDL中的參數值可以很輕易的修改內部模型,例如UART個(gè)數,Timer個(gè)數,選擇乘法器等。在本應用系統中不需要涉及乘除法運算,因此在配置文件mc8051_p.vhd中將常數C_IMPL_MUL, C_IMPL_DIV以及C_IMPL_DA的設置為0。
3.2.2時(shí)鐘和RAM設計
MC8051 IP核在A(yíng)ctel的APA600上綜合得到的最高時(shí)鐘頻率為15MHZ左右,為了使用于調試的串口波特率誤差最小,用Actel Libero內的SmartGen產(chǎn)生11.0592MHz的時(shí)鐘作為系統時(shí)鐘。
MC8051所需要的內部RAM和RAM都應該調用器件的底層單元來(lái)實(shí)現。以128字節的內部RAM為例。用SmartGen產(chǎn)生一個(gè)128*8大小的雙口RAM ram128_8.vhd,然后在mc8051_ram.vhd中例化。
3.2.3 ROM設計
MC8051完全兼容標準8051芯片,可采用KEIL uVision開(kāi)發(fā)環(huán)境,建立工程文件時(shí)候Select Device選擇 Oregano Systems的8051 IP Core, 然后編譯寫(xiě)好的51程序,產(chǎn)生HEX文件。需要從HEX文件中得到程序數據,這里簡(jiǎn)單介紹一下HEX文件格式。HEX文件是由任意數量的十六進(jìn)制記錄組成的,每個(gè)記錄包含5個(gè)域,他們以下面的格式排列[6]:
:llaaaatt[dd…]cc
HEX文件都是由冒號開(kāi)頭的,ll是數據長(cháng)度域,表示記錄中數據字節的個(gè)數;aaaa為地址域,標識記錄中數據字節的開(kāi)始地址;tt是記錄類(lèi)型域,51程序產(chǎn)生的hex文件只有兩種記錄類(lèi)型,包括數據記錄(00)和文件結束記錄(01);dd是數據域,表示一個(gè)字節的數據
選用的Actel APA系列FPGA沒(méi)有底層的ROM單元,因此用VHDL設計實(shí)現ROM。通過(guò)了解了HEX文件的格式,編寫(xiě)了從HEX文件讀取數據和地址信息,然后生成mc8051_rom.vhd文件,其中程序數據以常數的形式存在數組文件中。
3.2.4 MC8051與TSB32LV32之間的接口
鏈路層芯片微處理器接口包括16位寬的數據總線(xiàn)以及7位寬的地址總線(xiàn)??梢酝ㄟ^(guò)設置鏈路層芯片的COLDFIRE,M8BIT_SIZ0,MCMODE_SIZE這三個(gè)端口的狀態(tài),可以得到微處理器接口的各種不同操作模式,本設計中設置成16位MCS-MCA握手模式。
在系統頂層文件中對MC8051_top進(jìn)行例化,連接MC8051與1394鏈路層芯片TSB12LV32。
MC8051的4組I/O口都是將輸入和輸出分開(kāi)的,所以每組都可以配置成輸入和輸出。我們通過(guò)MCS和MWR來(lái)控制DM 和P1、P2口的連接。
3.3 基于MC8051的1394總線(xiàn)控制實(shí)現
MC8051通過(guò)TSB12LV32的微控制器接口實(shí)現對鏈路層和物理層內部寄存器的讀取和設置,其中對鏈路層芯片的寄存器讀寫(xiě)直接通過(guò)微控制器接口操作,而對物理層芯片寄存器讀寫(xiě)是通過(guò)對鏈路層24H的Phy Access Register讀寫(xiě)實(shí)現。
1394芯片部分內部寄存器需要在系統上電的時(shí)候初始化或者在運行時(shí)候進(jìn)行設置,一些則需要在運行時(shí)被監視以決定系統狀態(tài),而鏈路層內部的異步發(fā)送FIFO和通用接收FIFO也是通過(guò)讀寫(xiě)寄存器來(lái)訪(fǎng)問(wèn)的。因此正確讀寫(xiě)寄存器是1394接口實(shí)現中非常重要的一步。
通過(guò)正確設置控制寄存器,DM口控制器寄存器等內部寄存器便可以實(shí)現1394總線(xiàn)的各種傳輸模式的收發(fā)。
對1394芯片的控制另外一個(gè)主要部分是對中斷的響應和處理。將TSB12LV32芯片的INT管腳與MC8051的int0相連,通過(guò)int0的下跳沿檢測中斷發(fā)生。TSB12LV32芯片中有兩個(gè)寄存器是和中斷相關(guān)的。設置10H的中斷屏蔽寄存器中相應的某一位為1,則的0CH中斷寄存器響應位便跳變?yōu)楦唠娖?,同時(shí)產(chǎn)生相應的中斷。當有中斷發(fā)生的時(shí)候,INT管腳變低電平,而清除中斷則需要往中斷寄存器相應位寫(xiě)入1。因此我們在中斷發(fā)生時(shí)候,可以通過(guò)讀取中斷寄存器的值查看發(fā)生了哪種中斷,然后做出正確的響應。
4 結論
我們根據本文介紹的方案,設計和研制了基于mc8051的1394總線(xiàn)接口。經(jīng)過(guò)測試,1394總線(xiàn)系統工作正常。該總線(xiàn)接口具有集成度高,體積小,傳輸速率高等特點(diǎn),同時(shí)可以根據實(shí)際任務(wù)需要很方便的擴充接口功能。本文介紹的方案對與1394總線(xiàn)接口的研究開(kāi)發(fā)具有借鑒意義。
評論