唐 續(xù), 王 嘉, 蒲曉蓉
(電子科技大學 a.電子工程學院;b.英才實驗學院,四川成都 611731)
8051及其兼容的單片機是目前最普及的8位單片機,在我校國家級實驗教學示范中心及其它高校實踐教學中被廣泛采用[1-6]。隨著現場可編程門陣列(FPGA)及EDA技術的發(fā)展,微處理器(MCU)有了新的應用形式——IP核,也出現了多種針對8051 MCU的軟核,如DW8051核,OC8051核、T51核及MC805l核等[7-8]。這些MCU軟核促進了各種嵌入式系統(tǒng)和片上可編程系統(tǒng)(SOPC)的應用[9-11]。
本文提出一種對8051 MCU軟核中應用程序在線調試的方法,以期促進EDA、單片機和SOPC綜合實踐教學的改革。
當前,8051軟核的應用開發(fā)流程一般如圖1所示:使用 Keil μVision[12]等常用單片機開發(fā)平臺編寫應用程序并離線初步調試。之后編譯生成hex格式的目標文件,并將其轉換為FPGA的ROM初始化文件格式。然后執(zhí)行FPGA開發(fā)平臺上的項目流程,生成FPGA配置數據,經JTAG接口下載到FPGA目標板,作上電驗證。若結果與設計不符,將重新執(zhí)行所有流程。
圖1 51軟核應用的開發(fā)流程
不難看出,該流程需在單片機和FPGA兩類開發(fā)平臺上切換。而實際應用開發(fā)中,特別是實踐教學中,應用程序往往需多次修改,使得多次反復執(zhí)行上述流程,相當費時。這嚴重制約了8051軟核在實踐教學和學生科技活動(如電子設計競賽)中的運用。
為此,文獻[13]提出一種在PC機上修改和編譯單片機應用程序,再通過RS232串口將目標代碼下載到FPGA的程序存儲器中的方法。它省去了FPGA項目流程部分的工作量,但程序編制和修改仍然是離線的,未能實現在目標板上對應用作在線仿真調試。
下文以MC8051軟核[14]為例,介紹一種基于在線仿真調試工具Monitor-51[12],對軟核中應用程序作在線調試的方法。
MC8051是Oregano Systems公司提供的8051 MCU軟核。它提供VHDL語言設計源代碼,可配合各種設計平臺進行綜合實現??筛鶕嶋H應用需求進行配置。非常適合SOPC應用設計和實踐教學[15]。
采用全同步設計,指令集和標準8051單片機全兼容。指令執(zhí)行時間為1~4個時鐘周期,性能優(yōu)于標準8051單片機8倍左右。用戶可選定時/計數器和串行接口單元的數量;可選是否提供乘法(指令MUL)、除法(指令DIV)以及十進制調整(指令DA)功能;I/O口不復用以便于靈活定制;帶256 B的內部RAM;最多可擴展至64KB的ROM和64KB的外部RAM。
圖2 MC8051組成結構
MC8051的組成結構如圖2所示。頂層MC8051_top包括處理器核心MC8051_core和三個存儲模塊:內部存儲模塊MC8051_ram、外部代碼存儲模塊MC8051_rom和外部數據存儲模塊MC8051_ramx。存儲模塊處于設計的頂層而不包括于核心內,可便于不同FPGA平臺的仿真及應用設計。處理器核心MC8051_core由定時/計數器MC8051_tmrctr、算術邏輯運算單元MC8051_alu、串行接口MC8051_siu和控制單元等模塊組成。定時/計數器和串行接口單元的數量N可調。圖2中還給出了頂層的I/O接口。
Monitor-51是Keil μVision自帶的一種利用PC機與51單片機串口通信的侵入式在線調試工具[12]。該工具在單片機系統(tǒng)的應用開發(fā)和教學中被廣泛使用。
基于Monitor-51的調試方法對硬件有以下要求:
●硬件系統(tǒng)為51系列MCU。
●5KB外部程序存儲器,存Monitor-51監(jiān)控程序。
●256 B外部數據存儲器,存監(jiān)控數據;
東莞理工學院理工科學生數學課程歷年成績分析 劉群鋒,姚嘉茹,趙子瑛,尹燕君,李健儀,徐珍樹,白樂(100)
●外部數據存儲器總容量必須足夠容納所有應用程序代碼及數據,且必須為馮·諾伊曼存儲結構,即能統(tǒng)一尋址外部數據空間與代碼空間,以實現載入執(zhí)行和修改用戶代碼的功能。
●占用一個定時器作為串口波特率發(fā)生器。
●6 B的空余堆棧。
標準51單片機采用的是代碼空間和數據空間相互獨立的哈佛存儲結構。為獲得馮·諾伊曼存儲結構,標準做法如圖3所示,把目標單片機的PSEN引腳和RD引腳取邏輯“與”,再接外部存儲器的OE端,從而合并了外部程序空間和外部數據空間。由此,PC機端運行于Keil μVision集成開發(fā)環(huán)境(IDE)的應用程序和調試信息,通過Monitor-51驅動程序,經RS-232接口傳送給目標板上的51單片機,由Monitor-51監(jiān)控程序分析處理并反饋回PC機,實現單步、全速和斷點等方式執(zhí)行,并能觀察各變量和寄存器的值。
圖3 Monitor-51調試51單片機系統(tǒng)的電路結構
下面提出利用Monitor-51工具,通過標準串口對定制于FPGA中的51軟核的用戶程序進行在線調試的方法。該方法工作原理如圖4所示,和Monitor-51標準用法相似。實現該方法的步驟包括Monitor-51配置和51軟核定制兩部分。
如圖4所示,Monitor-51需駐留一段監(jiān)控程序代碼在目標系統(tǒng)的存儲空間。為能使該監(jiān)控程序根據不同目標系統(tǒng)而定制,Keil軟件提供兩部分文件:INSTALL.A51和 MON51.DLL(與生成監(jiān)控程序相關的文件均位于Keil軟件安裝路徑下的C51MON51目錄中)。其中MON51.DLL為完成 Monitor-51所有功能的庫文件,INSTALL.A51則以51匯編源代碼的形式提供了定制的接口。最終的目標代碼(hex格式)通過參數化腳本文件INSTALL.BAT編譯生成。
圖4 51軟核中用戶程序在線調試原理示意
這里,目標系統(tǒng)是MC8051核,需定制的內容有:
(2)配置單片機的外部存儲空間。本方法為用戶提供直接的零地址仿真調試方式[16],使用戶程序不做特別更改就能開展仿真調試。為此,對MC8051軟核的外部存儲空間,從零地址開始,依次分配給用戶程序、用戶數據、Monitor-51監(jiān)視程序和監(jiān)視程序外部數據。
(1)定制馮·諾依曼存儲結構。MC8051軟核也采用哈佛存儲結構。為使用Monitor-51,需要合并其代碼空間與外部數據空間,定制成馮·諾依曼存儲結構。具體來說,即是去掉圖2中的MC8051_rom空間,只設一個代碼和用戶數據統(tǒng)一編址的可讀可寫的MC8051_ramx空間。但由于MC8051沒有提供標準8051單片機的PSEN和RD信號,不能直接套用已有的合并方式。需要修改MC8051_core相關代碼來定制。
通過分析MC8051的源代碼得知,MC8051_core內部具有獨立的代碼空間地址總線和數據空間地址總線。定制的工作可歸結為把MC8051_core內部總線與外部數據空間MC8051_ramx的地址總線和數據總線分別重新連接,形成和圖3中等效的統(tǒng)一尋址效果。
為此,在MC8051_core外添加一個兩路復用器,其輸入端分別接代碼空間地址總線信號rom_adr_o和外部數據空間地址總線信號adrx_o。復用器的選擇信號由MC8051核中指示當前存儲器訪問類型(為代碼空間訪問或數據空間訪問)的信號s_adrx_mux提供。這使得MC8051對代碼空間或對數據空間各自的訪問都實質上是對單一的MC8051_ramx塊的訪問。
而對于數據總線,這里只需將MC8051_ramx的數據線在保持與原內部數據總線連接的同時,也連接至代碼空間訪問的內部數據總線。這樣,實際的傳送操作將由MC8051_core對各指令譯碼來判斷完成。定制MC8051核的電路原理如圖5所示。
圖5 定制MC8051的馮·諾依曼存儲結構
(2)增加定時器。串口將占用一個定時器作為其波特率發(fā)生器。為給用戶提供完整的51單片機功能,修改mc8051_p.vhd文件中如圖6的配置代碼,可方便地補充一組定時器。
圖6 設置定時器數量為2的代碼
(3)修改復位向量。我們知道,Monitor-51工作方式下,單片機復位后需首先進入Monitor-51監(jiān)控程序,這就要求把單片機標準的復位向量(零地址)修改為監(jiān)控代碼首地址:修改control_mem_rtl.vhd文件中pc< =conv_unsigned(0,16)為 pc< =conv_unsigned(10240,16),其中10240為監(jiān)控代碼的首地址。
以基于 Xilinx的 FPGA實驗教學平臺(采用Spartan3E系列芯片XC3S250-144)為例,給出可在線調試的MC8051核生成步驟如下:
(1)通過配置INSTALL.A51,添加定時器,設置監(jiān)控串口波特率9600bps;執(zhí)行INSTALL.BAT,設置監(jiān)控程序首地址為0x2800,監(jiān)控程序的外部數據空間首地址為0x3F00,并編譯生成mon51.hex目標文件。
(2)為能加載mon51.hex文件,通過 HEX_BIN.exe和 CoeGenerator.exe將 mon51.hex文件轉換為Xilinx FPGA中塊RAM的初始化數據文件MON51.coe(兩個小軟件使用簡單,不作贅述)。
(3)MC8051核中的內部MC8051_ram及MC8051_ramx采用FPGA的塊RAM核實現。先建立ISE項目,再調用其IP核庫的Block Memory Generator(內存塊生成工具)來實現。其中MC8051_ramx生成時,以MON51.coe為其初始化數據文件。
(4)根據4.2小節(jié),定制MC8051_core。
(5)根據實驗板時鐘,生成FPGA內的時鐘模塊(DCM)為MC8051核提供工作時鐘為18 MHz。
(6)在一個ISE項目中,將生成的DCM模塊、MC8051_ram、MC8051_ramx和 MC8051_core等部分,添加管腳約束ucf文件,進行綜合和布局布線,最后生成包含MC8051核的FPGA配置文件(.bit文件)。
(7)用JTAG接口下載.bit文件到FPGA。
至此,該FPGA平臺上建立了一個可在線調試8051單片機的程序。在實際的實驗教學中,可進一步形成更加標準的引腳封裝,如圖7所示。這樣,學生可方便地配合平臺外設,開展各單片機實驗項目。
圖7 MC8051封裝
以MC8051單片機P0口驅動8個LED的流水燈實驗為例。中間還設置了一個除法運算,驗證18MHz主頻下除法功能的正常運行。應用Keil μVision4對其在線調試的過程如下:
(1)μVision2設置。新建工程,在工程中可選擇目標器件為標準8051單片機,如Atmel->89C51,再進行options設置。在其中的“Debug”欄中選用“Keil Monitor-51 Driver”,并設置串口“Baudrate”為9600。
(2)調試界面。在項目中創(chuàng)建C51源程序文件,成功編譯后,點擊工具條中圖標進入調試界面。其中,單片機的內部寄存器、各局部變量和觀察窗口中的變量都在線可見。所有程序修改和調試都只需PC端的操作,無需對FPGA及其中的51軟核作重配置。
本文提出基于Monitor-51和MC8051軟核定制,實現在FPGA平臺中在線調試單片機應用程序的方法。該方法有效解決了當前8051軟核在單片機實驗、EDA實驗和SOPC實驗等實踐教學中運用的瓶頸問題,為三者的融合提供了可能,有力地支撐了本校電子技術綜合實踐教學的改革,也期望對其他高校的相關工作有所幫助。
[1]李 穎,習友寶.實驗教學示范中心實驗室運行機制與管理模式的探索與實踐[J].實驗室研究與探索,2009,28(4):88-90.
LI Yin,XI You-bao.Exploration and Practice on the Operational and Managerial Mode of Experimental Center[J]. Research and Exploration in Laboratory,2009,28(4):88-90.
[2]余 魅,習友寶.建設國家級實驗教學示范中心構建創(chuàng)新人才培養(yǎng)平臺[J].實驗技術與管理,2006,23(12):10-11.
YU Mei,XI You-bao.Constructing a National Representative Center of Laboratory Education,and Building a Platform for Training Creative Students[J].Experimental Technology and Management,2006,23(12):10-11.
[3]陳學英.電子技術綜合實驗教學方法研究與實踐[J].實驗科學與技術,2011,9(2):127-130.
CHENG Xue-ying.Teaching Methods Research and Practice on Electronic Technique Comprehensive Experiments[J].Experiment Science and Technology,2011,9(2):127-130.
[4]劉京銳,袁惠梅,王 瑩,等.MCU應用系統(tǒng)實驗教學裝置設計與實現[J].實驗技術與管理,2010,27(8):71-74.
LIU Jing-rui,YUAN Hui-mei,WANG Ying,et al.The Projection and Achievement of Practical Teaching Devices of MCU Application System[J].Experimental Technology and Management,2010,27(8):71-74.
[5]宋蘊璞,周文泳,徐鳴謙,等.高校單片機教學實驗設備與方式探討[J].實驗室研究與探索,2009,28(11):6-9.
SONG Yun-pu,ZHOU Wen-yong,XU Ming-qian,et al.Exploration on the Ways and Facilities of Single-Chip Computer Experiment in Universities[J].Research and Exploration in Laboratory,2009,28(11):6-9.
[6]萬光毅,嚴義.單片機實驗與實踐教程[M].北京:北京航空航天大學出版社,2005:149-258.
[7]王 瑞,游志宇,杜 楊,等.MC8051單片機 IP核的FPGA實現與應用[J].電子設計工程,2009,17(1):57-60.
WANG Rui,YIU Zhi-yu,DU Yang,et al.FPGA Implementation and Application of MC8051 MCU IP Core[J].Electronic Design Engineering,2009,17(1):57-60.
[8]徐 慧,王金海,王 巍.基于FPGA的8051 IP核的設計與實現[J].計算機技術與發(fā)展,2009,19(3):42-45.
XU Hui,WANG Jin-hai,WANG Wei.Design and Implementation of 8051 IP Core Based on FPGA[J].Computer Technology and Development,2009,19(3):42-45.
[9]丁 昊,莊貴敏,宋 杰,等.基于MC8051內核的便攜幅頻特性測試儀設計[J].電子技術應用,2011,37(4):29-32.
DING Hao,ZHUANG Gui-min,SONG Jie.Design of Portable Frequency Characteristics Test Instrument Based on MC8051 IP Core[J].Application of Electronic Technique,2011,37(4):29-32.
[10]潘明方,李慧軍.基于MC8051軟核的星載智能1394終端[J].微計算機信息,2007,23(6):193-195.
PAN Min-fang,LI Hun-jun.On-board Intellectual 1394 Terminal Based on MC8051 IP[J].2007,23(6):193-195.Control&Automation,2007,23(6):193-195.
[11]羅侄敬.在嵌入FPGA的IP核8051上實現TCP/IP的設計[J].電子元器件應用,2007,9(4):44-46.LUO Zhi-jing.Implementation of TCP/IP for 8051 core in FPGA[J].Electonic Component& Device Applications,2007,9(4):44-46.
[12]尹 勇.μVision2單片機應用程序開發(fā)指南[M].北京:科學出版社,2005.3,300-306.
[13]陳明義,李 彬.串行通信接口實現MC8051軟核在線編程[J].電子科技,2009,22(6):29-32.
CHEN Ming-yi,LI Bin.Implementation of MC8051 Soft-core Insystem Programming Using the Serial Communications Interface[J].Electronic Science and Technology,2009,22(6):29-32.
[14]MC8051 IP CoreUserGuide [EB/OL]. http://www.oreganosystems.at/?page_id=96.[2012-7-1].
[15]高 昀.EDA技術在教學實踐中的研究與應用[D].成都:電子科技大學,2009.
[16]陳興文,劉 燕.基于KEIL 51的單片機開發(fā)系統(tǒng)設計[J].微計算機信息,2005,21(5):112-113.
CHEN Xing-wen,LIU Yan The Design of MCU Development System Based on KEIL 51[J].Control& Automation,2005,21(5):112-113.