樊 峰,陳西曲,葉艷艷
(武漢工業(yè)學(xué)院電氣與電子工程學(xué)院,湖北武漢430023)
隨著數(shù)字集成電路的應(yīng)用越來越廣泛,微電子技術(shù)以及EDA(Electronic Design Automation,電子設(shè)計(jì)自動(dòng)化)技術(shù)的快速發(fā)展,利用FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程邏輯門陣列)來進(jìn)行ASIC(Application Specific Integrated Circuit,專用集成電路)的設(shè)計(jì)也越來越流行;不僅僅如此,得益于半導(dǎo)體工藝技術(shù)的不斷發(fā)展,可集成的晶體管數(shù)目已經(jīng)可達(dá)到幾千萬個(gè),從而使得微電子及其應(yīng)用領(lǐng)域又發(fā)生了一場(chǎng)革命性變革——SOC(System On Chip,片上系統(tǒng))技術(shù)的研究應(yīng)用和發(fā)展。SOC技術(shù)是以IP(Intellectual Property,知識(shí)產(chǎn)權(quán))核復(fù)用技術(shù)為支撐[1],基于IP核的SOC設(shè)計(jì)具有易于增加新功能和縮短上市時(shí)間的顯著特點(diǎn),是IC設(shè)計(jì)當(dāng)前,乃至以后的主流設(shè)計(jì)方式,因此開發(fā)研究可綜合的IP核對(duì)SOC技術(shù)的發(fā)展有著很重要的意義。
基于VerilogHDL語言設(shè)計(jì)綜合的8051IP核,其指令集和標(biāo)準(zhǔn)的8051微控制器完全兼容[2];同時(shí)兼容匯編程序和C語言程序,其指令執(zhí)行時(shí)間為1—4個(gè)時(shí)鐘周期,執(zhí)行性能卻大大優(yōu)于8051MCU;并且與標(biāo)準(zhǔn)的8051擁有基本相同的內(nèi)部機(jī)構(gòu),都是由8-bit微處理器(CPU)、128字節(jié)的片上數(shù)據(jù)存儲(chǔ)器(RAM)、4K字節(jié)的片上程序存儲(chǔ)器(ROM)、兩個(gè)16位的定時(shí)計(jì)數(shù)器、全雙工的通用異步接收發(fā)送器(UART)、兩個(gè)優(yōu)先級(jí)的5個(gè)中斷源、4個(gè)I/O口(P0、P1、P2、P3)這8 個(gè)主要模塊組成。
自頂向下(Top—Down)的設(shè)計(jì)方法正是EDA技術(shù)相對(duì)傳統(tǒng)電子設(shè)計(jì)方法的優(yōu)勢(shì)所在,Top—Down設(shè)計(jì)方法的第一步就是要繪制頂層設(shè)計(jì)圖[3]。圖1所示為MC8051 IP核的頂層結(jié)構(gòu)圖,它顯示了MC8051 IP核的頂層結(jié)構(gòu)與三個(gè)存儲(chǔ)模塊的連接關(guān)系,以及輸入/輸出口。在MC8051 IP核的設(shè)計(jì)中,微處理模塊由運(yùn)算器(ALU)模塊和控制器模塊組成,并且為了便于IC設(shè)計(jì),MC8051 IP核的I/O口并沒有提供復(fù)用功能,包括4個(gè)8位輸入輸出口、串行接口、計(jì)數(shù)器輸入口和外部中斷輸入口。各I/O信號(hào)的描述如表1所示。

圖1 MC8051 IP核頂層結(jié)構(gòu)圖

表1 頂層信號(hào)名
mc8051 IP核的內(nèi)部結(jié)構(gòu)模塊主要是存儲(chǔ)模塊和控制模塊,存儲(chǔ)模塊包括RAM、RAMX和ROM,控制模塊包括處理模塊和數(shù)據(jù)輸出模塊,即頂層結(jié)構(gòu)中的mc8051_core模塊。
1.2.1 ROM和RAM模塊的生成
MC8051 IP中所需要的存儲(chǔ)模塊有RAM、外擴(kuò)RAM、ROM,其中內(nèi)部RAM和ROM是必要的,內(nèi)部RAM固定為128 Bytes,ROM最大可選64 Kbytes,并且外部擴(kuò)展RAM可選,最大可達(dá)64 Kbytes。
RAM和ROM的生成都是利用QuartusII軟件自帶的功能模塊,通過【Tools】>>【MegeWizard Plug-In Manager..】生成。首先新建一個(gè)QuartusII工程,進(jìn)入功能模塊創(chuàng)建向?qū)Вㄟ^功能模塊創(chuàng)建向?qū)ё罱K創(chuàng)建的RAM和ROM模塊如圖2所示。

圖2 RAM、ROM模塊電路圖
RAM和ROM的創(chuàng)建沒有太大的區(qū)別,ROM的創(chuàng)建過程中,需要對(duì)其進(jìn)行初始化,可以添加測(cè)試代碼,而RAM不需要初始化。
1.2.2 mc8051_core模塊的創(chuàng)建
mc8051_core模塊包含了處理模塊和數(shù)據(jù)傳輸模塊,是整個(gè)模塊的核心;模塊的封裝需要通過第三方的綜合軟件,如Synplify Pro軟件實(shí)現(xiàn);首先將前面創(chuàng)建的存儲(chǔ)器模塊添加到工程中;然后利用綜合軟件進(jìn)行綜合生成 mc8051_top.vqm文件[4],綜合編譯后通過RTL圖來檢查模塊之間連接情況,綜合后得到的RTL圖如圖3所示。

圖3 mc8051_core RTL圖
首先打開QuartusII軟件,新建一個(gè)工程,將上面創(chuàng)建好的mc8051_top.vqm添加到工程中,打開創(chuàng)建的應(yīng)用設(shè)計(jì)頂層圖形設(shè)計(jì)文件mc8051_top.bsf,為了更好地進(jìn)行板級(jí)測(cè)試,并為51核提供合適的時(shí)鐘,需要為系統(tǒng)添加一個(gè)PLL模塊,以便輸出合適時(shí)鐘頻率;添加PLL模塊和添加存儲(chǔ)器RAM一樣,通過【Tools】>>【MegeWizard Plug-In Manager..】生成,只需要設(shè)置好輸入時(shí)鐘和輸出時(shí)鐘即可;模塊添加完后根據(jù)開發(fā)板引腳連接設(shè)置模塊引腳分配,最后進(jìn)行編譯;編譯成功后,得到應(yīng)用系統(tǒng)頂層原理圖如圖4所示。

圖4 系統(tǒng)頂層原理圖
MC8051 IP核完全兼容標(biāo)準(zhǔn)8051指令集,編程語言可以采用C語言,也可采用匯編語言,且可以采用熟悉的開發(fā)工具進(jìn)行應(yīng)用程序的編寫。本系統(tǒng)采用C語言來編寫測(cè)試程序,且在Keil平臺(tái)下開發(fā)軟件。主要測(cè)試MC8051 IP核的串口、定時(shí)/計(jì)數(shù)器、中斷、I/O等模塊,將通過Keil軟件編譯后生成的.HEX文件加載到QuartusII工程文件目錄中,并將其初始化到8051IP核的ROM中,然后重新編譯工程生成的配置文件.sof,最后利用QuartusII的下載工具將配置文件下載到EP2C20實(shí)驗(yàn)板中實(shí)現(xiàn)8051現(xiàn)實(shí)應(yīng)用系統(tǒng)的測(cè)試。
2.2.1 外部中斷0的測(cè)試程序
void key_down()interrupt 0
{
EX0=0;//關(guān)閉外部中斷0,進(jìn)行中斷處理
led<<=1;//led左移以為,實(shí)現(xiàn)下一個(gè)燈點(diǎn)亮
P1=led;//將led值賦值給P1口,P1口連接led燈
if(led==0x00)
{
led=0xff;
}
EX0=1;//打開外部中斷0,繼續(xù)接收外部中斷0的中斷請(qǐng)求
}
利用按鍵來產(chǎn)生外部中斷,P1口讀取led的數(shù)據(jù)來實(shí)現(xiàn)按鍵控制流水燈的控制。
2.2.2 串口接收發(fā)送測(cè)試程序
char putchar(char ucWriteData)//串口發(fā)送程序
{
SBUF=ucWriteData;//將要發(fā)送的數(shù)據(jù)讀入SBUF寄存器
while(TI);
TI=0;//判斷數(shù)據(jù)是否讀完
return(ucWriteData);//發(fā)送數(shù)據(jù)
}
void UartIsr(void)interrupt 4//串口中斷
{
if(TI)//發(fā)送中斷
{
TI=0;
}
if(RI)//接收中斷
{
RI=0;
Rev=SBUF;
flag=1;
}
}
將構(gòu)建好的測(cè)試系統(tǒng)初始化到IP核的ROM中,并對(duì)整個(gè)系統(tǒng)進(jìn)行編譯調(diào)試,并下載到EP2C20F484N7開發(fā)板中,利用程序控制,當(dāng)有按鍵按下后,觸發(fā)外部中斷0,點(diǎn)亮第一個(gè)LED,再次按鍵,點(diǎn)亮第二個(gè)LED燈,從而實(shí)現(xiàn)流水燈操作。
串口通信測(cè)試結(jié)果如圖5所示,利用定時(shí)器1產(chǎn)生115200的波特率來實(shí)現(xiàn)串口數(shù)據(jù)的發(fā)送和接收,利用串口調(diào)試助手通過串口發(fā)送數(shù)據(jù)到開發(fā)板上,開發(fā)板接收數(shù)據(jù)后再次發(fā)回給PC機(jī),從而實(shí)現(xiàn)8051IP核的串口通信控制。

圖5 串口通信控制圖
基于EP2C20F484N7的8051 IP核的測(cè)試結(jié)果可知,8051 IP核的串口、I/O口、定時(shí)器、中斷系統(tǒng)、運(yùn)算單元、存儲(chǔ)器單元都能夠穩(wěn)定的運(yùn)行。運(yùn)用FPGA實(shí)現(xiàn)的8051IP核,在高時(shí)鐘頻率、穩(wěn)定程度、易于升級(jí)、易于擴(kuò)展使用等諸多方面相對(duì)傳統(tǒng)的8051都有了很大的提高,從而大大提高以8051單片機(jī)為控制系統(tǒng)的各種應(yīng)用系統(tǒng)的性能參數(shù)。研究8051IP核不僅可以更好的擴(kuò)展存儲(chǔ)模塊的大小,更能夠利用FPGA系統(tǒng)的豐富資源和IP核的復(fù)用技術(shù),開發(fā)大規(guī)模的工程設(shè)計(jì)以及和其它模塊的集成融合,例如移植簡(jiǎn)單的TCP/IP協(xié)議,實(shí)現(xiàn)一個(gè)完整的SOC功能。由此可知8051 IP核良好的復(fù)用性和可移植性在實(shí)際應(yīng)用中有重大的意義。
[1] 史江義.基于IP核的SOC設(shè)計(jì)關(guān)鍵技術(shù)研究[D].西安:西安電子科技大學(xué),2007.
[2] 張毅剛,彭喜元,董繼成.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2003.
[3] 劉小俊.基于EDA技術(shù)的兼容MCS-51單片機(jī)IP核的設(shè)計(jì)[D].武漢:武漢理工大學(xué),2005.
[4] 李洪偉,袁斯華.基于 QuartusII的 FPGA/CPLD設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006.