楊亦紅
摘 要:文章使用FPGA器件,結(jié)合包括TSK51等多種IP軟核實現(xiàn)了基于FPGA的嵌入式電子系統(tǒng)的基本人機接口(HMI)的硬件設(shè)計。在線纜檢測系統(tǒng)的應用證明,該系統(tǒng)能夠?qū)⒃趩涡酒暇徒鉀Q人機界面硬件電路的驅(qū)動,有助于完成傳統(tǒng)51單片機系統(tǒng)的包括人機接口界面的完整平臺移植,對有效地降低系統(tǒng)硬件成本。
關(guān)鍵詞:人機接口界面HMI;FPGA的嵌入式系統(tǒng);研究
引言
隨著大規(guī)模邏輯集成電路設(shè)計技術(shù)的進步和制造工藝水平的提高,單個芯片上的邏輯門數(shù)的增加,基于FPGA為控制核心的嵌入式系統(tǒng)的設(shè)計已逐漸流行。這時,人機接口界面(HMI)在傳統(tǒng)嵌入式系統(tǒng)中,基于微處理器CPU管理的工作方式能否沿用到基于FPGA的嵌入式系統(tǒng)中來,將會影響到系統(tǒng)開發(fā)的效率。文章在Altium電子設(shè)計軟件平臺上,通過從FPGA中引入IP核進行單芯片系統(tǒng)(SOC)電路設(shè)計,可用來完成傳統(tǒng)51單片機系統(tǒng)的包括人機接口界面的完整平臺移植,具有一定的實踐意義。
1 結(jié)構(gòu)與工作原理
電子電路設(shè)計軟件Altium允許在FPGA中設(shè)計、實現(xiàn)及調(diào)試基于微處理的數(shù)字設(shè)計。這可以通過采用原理圖輸入、VHDL設(shè)計輸入或混合輸入方法設(shè)計電路,經(jīng)綜合和適配等編譯動作,并下載到處理器中后,F(xiàn)PGA中就可實現(xiàn)一個基于微處理器的電子系統(tǒng)。文章采用該軟件提供的TSK51 IP核、RS232 IP核、PS2 IP核及LCD IP核等完成了包括鍵盤、通信、顯示等模塊人機接口的基本嵌入式系統(tǒng)的設(shè)計,該設(shè)計可以完美復用傳統(tǒng)基于51單片機的系統(tǒng)電路。
1.1 IP核模塊
1.1.1 TSK51核
TSK51核是一個全功能的采用哈佛結(jié)構(gòu)的8位微處理器,它執(zhí)行ASM51匯編語言指令,其指令系統(tǒng)與傳統(tǒng)80C31兼容,具有軟件和硬件中斷、一個全雙工串行通信接口和一個定時器系統(tǒng)。其技術(shù)特性包括:(1)控制器:8位指令解碼器。算術(shù)邏輯單元:8位算術(shù)運算、8位邏輯運算、布爾運算、8×8乘法運算、8/8除法運算。(2)32位輸入輸出端口:4個8位輸入輸出端口。兩個16位定時器/計數(shù)器。(3)全雙工模式串行接口:固定波特率的同步模式、可變波特率的8位UART模式、固定波特率的UART模式、可變波特率的9位UART模式、多處理器通信。(4)中斷控制器:兩組優(yōu)先級。(5)內(nèi)部存儲器接口:可尋址多達64KB的內(nèi)部程序存儲器空間、可尋址多達256B的讀/寫數(shù)據(jù)存儲器空間。外部存儲器接口:可尋址多達64KB的外部程序存儲器空間、可尋址多達64KB的外部數(shù)據(jù)存儲器空間。
因此可以使用TSK51進行設(shè)計的FPGA電路,可以完全使用8051單片機的編程知識進行設(shè)計。
1.1.2 PS2控制器IP核
PS2控制器IP核,可以實現(xiàn)PS2控制器與PS2設(shè)備之間的雙向通信:
(1)PS/2設(shè)備向PS2控制器傳輸數(shù)據(jù)。當控制器在空閑狀態(tài)(PS2DATA=1,PS2CLK=1)時,PS/2設(shè)備隨時可以向控制器發(fā)送數(shù)據(jù),然后PS/2設(shè)備在等半個PS2CLK周期后才開始傳輸。傳輸按數(shù)據(jù)幀方式進行,每幀包括一字節(jié)數(shù)據(jù),幀數(shù)據(jù)取決于需要傳輸?shù)南⒌淖止?jié)數(shù)。
(2)PS2控制器向PS/2設(shè)備傳輸數(shù)據(jù)。當主MCU要通過PS2控制器向PS/2設(shè)備發(fā)送一個命令時,STROBE引腳要至少維持一個外部系統(tǒng)時鐘周期(CLK input),這將使PS2控制器從DATAI線上取得要傳輸?shù)臄?shù)據(jù)。要激活傳輸,PS2控制器需要進入"主機發(fā)送請求狀態(tài)",這將通過以下步驟達成:a.首先PS2CLK維持至少一個時鐘周期(進入禁止傳輸狀態(tài));b.PS2DATA然后變低(提供欲發(fā)送幀的Start位);c.然后釋放PS2CLK線(仍然保持PS2DATA為低)。
1.1.3 LCD 16×2A控制器
采用有限狀態(tài)機實現(xiàn),當設(shè)備復位后,將執(zhí)行一系列LCD初始化動作??刂谱畲蟮牟僮黝l率是80MHz。其工作過程如下:
(1)控制器復位。當RST信號有效時,BUSY信號也變?yōu)橛行В灾甘究刂破魈幱趶臀粻顟B(tài),不可以被使用。當RST無效時,控制將執(zhí)行KS0066U兼容LCD面板的標準初始化動作序列。
(2)LCD初始化動作序列。全部初始化階段下BUSY信號是有效的,結(jié)果是所有寫到控制器的數(shù)據(jù)將被忽略。a.定義指令集-這一狀態(tài)下,LCD控制器被編程設(shè)置數(shù)據(jù)長度、使用幾行、及使用什么字體。控制器分別設(shè)置這些值為8位、2行、和5×8像素。b.等待39us。c.顯示ON/OFF控制-在這一狀態(tài)下,LCD控制器被編程設(shè)置顯示、光標和光標閃爍設(shè)置:Display-ON、Cursor-OFF、光標閃爍-OFF。d.等待39us。e.清顯示-這一狀態(tài)下,ASCII碼20h(空格字符)將寫入到LCD 面板。f.DDRAM(數(shù)據(jù)存儲器)和字符地址設(shè)為0h(面板的左上角)。這一位置后,所有地址有一個空格字節(jié),因此LCD面板被清空。g.等待39us。g.初始化完成-BUSY變無效。之后可以使用LCD面板了。
(3)將數(shù)據(jù)顯示在LCD面板上。當BUSY無效時,LCD控制器等待數(shù)據(jù),準備在LCD面板上顯示一個新的字符,這就是等待數(shù)據(jù)狀態(tài)。要發(fā)起顯示操作,ADDR, DATA 和 LINE信號必須是穩(wěn)定的,且STROBE 端口用于觸發(fā)操作。當STROBE信號有效時,將進行如下動作:a.LCD面板上的字符位置(由4-bit ADDR總線定義),被裝入到控制器的地址寄存器 (ADDREG)。b.字符顯示的行(由LINE信號定義),被裝入到控制器行選擇寄存器(LINESEL)。c.實際要顯示的字符(由8位數(shù)據(jù)總線定義), 被裝入到控制器數(shù)據(jù)寄存器(DATREG)。d.控制器FSM然后進入‘設(shè)置地址狀態(tài),BUSY信號同時變?yōu)橛行АDDREG和LINSEL寄存器的內(nèi)容被傳遞到LCD面板。e.控制器然后等待39us,接著,F(xiàn)SM進入‘顯示字符狀態(tài)。f.這時無論DATREG中的什么數(shù)據(jù)也都能寫入到LCD字符存儲器中。g.控制器等待LCD面板完成操作,然后回到‘等待數(shù)據(jù)狀態(tài),等待顯示下一字符。BUSY信號這時變?yōu)闊o效。
2 系統(tǒng)軟件設(shè)計
所有IP核都作為FPGA內(nèi)部的組成模塊,TSK51核作為兼容80C31指令系統(tǒng)的CPU核,起到主處理器的作用。RAMS_8*2K是其內(nèi)部RAM,在其上可以移植傳統(tǒng)51系統(tǒng)的所有代碼。程序的主體結(jié)構(gòu)如下所示。
void main(void)
{
……
InitInterrupt0();
InitLCD(); LCDClear(0); LCDClear(1);
LCDDisplayLine("Init KBRD...", 0, 12, 0);
KeyboardInit();
while (keyboard_sent_init_sequence == 0) { }
LCDDisplayLine("KBRD Initialized",0, 16, 0);
while (1)
{
//在些檢測按鍵并顯示
LCDClear(0);
displaychar = KeyboardMapKey(key);
LCDDisplayChar(displaychar);
//……類似方式顯示其它內(nèi)容
}
}
3 結(jié)束語
文章通過IP核,在基于FPGA的嵌入式系統(tǒng)中實現(xiàn)了基本人機接口界面(HMI)的設(shè)計,由于其具有兼容51系統(tǒng)的指令集的特點,可以完美地實現(xiàn)傳統(tǒng)基本51CPU的嵌入式系統(tǒng)的平臺移植,本系統(tǒng)承擔了線纜檢測系統(tǒng)中的主控制器,運行效果良好。這一方案對于早期設(shè)備的改進和再創(chuàng)新具有實際意義。
參考文獻
[1]葉明.基于HMI控制系統(tǒng)中數(shù)據(jù)采集技術(shù)的應用與研究[D].武漢理工大學,2006.
[2]劉凱.基于FPGA的系統(tǒng)設(shè)計和應用研究[D].國防科學技術(shù)大學,2005.
[3]龔宇潔.嵌入式HMI組態(tài)軟件研究與設(shè)計[D].武漢理工大學,2009.
[4]馬偉民.基于組件技術(shù)的人機界面(HMI)研究[D].杭州電子科技大學,2009.