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