樊 峰,陳西曲,葉艷艷
(武漢工業(yè)學(xué)院電氣與電子工程學(xué)院,湖北武漢430023)
隨著數(shù)字集成電路的應(yīng)用越來越廣泛,微電子技術(shù)以及EDA(Electronic Design Automation,電子設(shè)計自動化)技術(shù)的快速發(fā)展,利用FPGA(Field-Programmable Gate Array,現(xiàn)場可編程邏輯門陣列)來進行ASIC(Application Specific Integrated Circuit,專用集成電路)的設(shè)計也越來越流行;不僅僅如此,得益于半導(dǎo)體工藝技術(shù)的不斷發(fā)展,可集成的晶體管數(shù)目已經(jīng)可達到幾千萬個,從而使得微電子及其應(yīng)用領(lǐng)域又發(fā)生了一場革命性變革——SOC(System On Chip,片上系統(tǒng))技術(shù)的研究應(yīng)用和發(fā)展。SOC技術(shù)是以IP(Intellectual Property,知識產(chǎn)權(quán))核復(fù)用技術(shù)為支撐[1],基于IP核的SOC設(shè)計具有易于增加新功能和縮短上市時間的顯著特點,是IC設(shè)計當(dāng)前,乃至以后的主流設(shè)計方式,因此開發(fā)研究可綜合的IP核對SOC技術(shù)的發(fā)展有著很重要的意義。
基于VerilogHDL語言設(shè)計綜合的8051IP核,其指令集和標準的8051微控制器完全兼容[2];同時兼容匯編程序和C語言程序,其指令執(zhí)行時間為1—4個時鐘周期,執(zhí)行性能卻大大優(yōu)于8051MCU;并且與標準的8051擁有基本相同的內(nèi)部機構(gòu),都是由8-bit微處理器(CPU)、128字節(jié)的片上數(shù)據(jù)存儲器(RAM)、4K字節(jié)的片上程序存儲器(ROM)、兩個16位的定時計數(shù)器、全雙工的通用異步接收發(fā)送器(UART)、兩個優(yōu)先級的5個中斷源、4個I/O口(P0、P1、P2、P3)這8 個主要模塊組成。
自頂向下(Top—Down)的設(shè)計方法正是EDA技術(shù)相對傳統(tǒng)電子設(shè)計方法的優(yōu)勢所在,Top—Down設(shè)計方法的第一步就是要繪制頂層設(shè)計圖[3]。圖1所示為MC8051 IP核的頂層結(jié)構(gòu)圖,它顯示了MC8051 IP核的頂層結(jié)構(gòu)與三個存儲模塊的連接關(guān)系,以及輸入/輸出口。在MC8051 IP核的設(shè)計中,微處理模塊由運算器(ALU)模塊和控制器模塊組成,并且為了便于IC設(shè)計,MC8051 IP核的I/O口并沒有提供復(fù)用功能,包括4個8位輸入輸出口、串行接口、計數(shù)器輸入口和外部中斷輸入口。各I/O信號的描述如表1所示。
圖1 MC8051 IP核頂層結(jié)構(gòu)圖
表1 頂層信號名
mc8051 IP核的內(nèi)部結(jié)構(gòu)模塊主要是存儲模塊和控制模塊,存儲模塊包括RAM、RAMX和ROM,控制模塊包括處理模塊和數(shù)據(jù)輸出模塊,即頂層結(jié)構(gòu)中的mc8051_core模塊。
1.2.1 ROM和RAM模塊的生成
MC8051 IP中所需要的存儲模塊有RAM、外擴RAM、ROM,其中內(nèi)部RAM和ROM是必要的,內(nèi)部RAM固定為128 Bytes,ROM最大可選64 Kbytes,并且外部擴展RAM可選,最大可達64 Kbytes。
RAM和ROM的生成都是利用QuartusII軟件自帶的功能模塊,通過【Tools】>>【MegeWizard Plug-In Manager..】生成。首先新建一個QuartusII工程,進入功能模塊創(chuàng)建向?qū)?,通過功能模塊創(chuàng)建向?qū)ё罱K創(chuàng)建的RAM和ROM模塊如圖2所示。
圖2 RAM、ROM模塊電路圖
RAM和ROM的創(chuàng)建沒有太大的區(qū)別,ROM的創(chuàng)建過程中,需要對其進行初始化,可以添加測試代碼,而RAM不需要初始化。
1.2.2 mc8051_core模塊的創(chuàng)建
mc8051_core模塊包含了處理模塊和數(shù)據(jù)傳輸模塊,是整個模塊的核心;模塊的封裝需要通過第三方的綜合軟件,如Synplify Pro軟件實現(xiàn);首先將前面創(chuàng)建的存儲器模塊添加到工程中;然后利用綜合軟件進行綜合生成 mc8051_top.vqm文件[4],綜合編譯后通過RTL圖來檢查模塊之間連接情況,綜合后得到的RTL圖如圖3所示。
圖3 mc8051_core RTL圖
首先打開QuartusII軟件,新建一個工程,將上面創(chuàng)建好的mc8051_top.vqm添加到工程中,打開創(chuàng)建的應(yīng)用設(shè)計頂層圖形設(shè)計文件mc8051_top.bsf,為了更好地進行板級測試,并為51核提供合適的時鐘,需要為系統(tǒng)添加一個PLL模塊,以便輸出合適時鐘頻率;添加PLL模塊和添加存儲器RAM一樣,通過【Tools】>>【MegeWizard Plug-In Manager..】生成,只需要設(shè)置好輸入時鐘和輸出時鐘即可;模塊添加完后根據(jù)開發(fā)板引腳連接設(shè)置模塊引腳分配,最后進行編譯;編譯成功后,得到應(yīng)用系統(tǒng)頂層原理圖如圖4所示。
圖4 系統(tǒng)頂層原理圖
MC8051 IP核完全兼容標準8051指令集,編程語言可以采用C語言,也可采用匯編語言,且可以采用熟悉的開發(fā)工具進行應(yīng)用程序的編寫。本系統(tǒng)采用C語言來編寫測試程序,且在Keil平臺下開發(fā)軟件。主要測試MC8051 IP核的串口、定時/計數(shù)器、中斷、I/O等模塊,將通過Keil軟件編譯后生成的.HEX文件加載到QuartusII工程文件目錄中,并將其初始化到8051IP核的ROM中,然后重新編譯工程生成的配置文件.sof,最后利用QuartusII的下載工具將配置文件下載到EP2C20實驗板中實現(xiàn)8051現(xiàn)實應(yīng)用系統(tǒng)的測試。
2.2.1 外部中斷0的測試程序
void key_down()interrupt 0
{
EX0=0;//關(guān)閉外部中斷0,進行中斷處理
led<<=1;//led左移以為,實現(xiàn)下一個燈點亮
P1=led;//將led值賦值給P1口,P1口連接led燈
if(led==0x00)
{
led=0xff;
}
EX0=1;//打開外部中斷0,繼續(xù)接收外部中斷0的中斷請求
}
利用按鍵來產(chǎn)生外部中斷,P1口讀取led的數(shù)據(jù)來實現(xiàn)按鍵控制流水燈的控制。
2.2.2 串口接收發(fā)送測試程序
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)建好的測試系統(tǒng)初始化到IP核的ROM中,并對整個系統(tǒng)進行編譯調(diào)試,并下載到EP2C20F484N7開發(fā)板中,利用程序控制,當(dāng)有按鍵按下后,觸發(fā)外部中斷0,點亮第一個LED,再次按鍵,點亮第二個LED燈,從而實現(xiàn)流水燈操作。
串口通信測試結(jié)果如圖5所示,利用定時器1產(chǎn)生115200的波特率來實現(xiàn)串口數(shù)據(jù)的發(fā)送和接收,利用串口調(diào)試助手通過串口發(fā)送數(shù)據(jù)到開發(fā)板上,開發(fā)板接收數(shù)據(jù)后再次發(fā)回給PC機,從而實現(xiàn)8051IP核的串口通信控制。
圖5 串口通信控制圖
基于EP2C20F484N7的8051 IP核的測試結(jié)果可知,8051 IP核的串口、I/O口、定時器、中斷系統(tǒng)、運算單元、存儲器單元都能夠穩(wěn)定的運行。運用FPGA實現(xiàn)的8051IP核,在高時鐘頻率、穩(wěn)定程度、易于升級、易于擴展使用等諸多方面相對傳統(tǒng)的8051都有了很大的提高,從而大大提高以8051單片機為控制系統(tǒng)的各種應(yīng)用系統(tǒng)的性能參數(shù)。研究8051IP核不僅可以更好的擴展存儲模塊的大小,更能夠利用FPGA系統(tǒng)的豐富資源和IP核的復(fù)用技術(shù),開發(fā)大規(guī)模的工程設(shè)計以及和其它模塊的集成融合,例如移植簡單的TCP/IP協(xié)議,實現(xiàn)一個完整的SOC功能。由此可知8051 IP核良好的復(fù)用性和可移植性在實際應(yīng)用中有重大的意義。
[1] 史江義.基于IP核的SOC設(shè)計關(guān)鍵技術(shù)研究[D].西安:西安電子科技大學(xué),2007.
[2] 張毅剛,彭喜元,董繼成.單片機原理及應(yīng)用[M].北京:高等教育出版社,2003.
[3] 劉小俊.基于EDA技術(shù)的兼容MCS-51單片機IP核的設(shè)計[D].武漢:武漢理工大學(xué),2005.
[4] 李洪偉,袁斯華.基于 QuartusII的 FPGA/CPLD設(shè)計[M].北京:電子工業(yè)出版社,2006.