俞小平,唐映強,李世偉
(無錫中微愛芯電子有限公司,江蘇 無錫 214072)
電路設計
基于C8051的片上調(diào)試單元設計
俞小平,唐映強,李世偉
(無錫中微愛芯電子有限公司,江蘇 無錫 214072)
隨著半導體工藝與集成電路技術(shù)的快速發(fā)展,微處理器的集成度越來越高,在設計中開發(fā)比較大的應用程序時,強勁的調(diào)試手段是非常重要的。當 bug 復雜到無法分析時,只能用調(diào)試來追蹤它,集成片上調(diào)試功能更顯得尤為重要?;贑8051 IP設計了一個片上調(diào)試單元,將調(diào)試功能集成到單片機內(nèi)部。通過配置不同的操作指令,該片上調(diào)試單元可實現(xiàn)斷點指令、地址斷點、停止及單步執(zhí)行程序、數(shù)據(jù)觀察點、運行到光標處等調(diào)試功能。
集成電路;片上調(diào)試;C8051
8051 單片機市場一直應用很廣泛,無論是低端市場還是中高端市場,單片機調(diào)試功能都不可或缺[1]。常見的調(diào)試方法有軟件模擬調(diào)試方法、基于仿真器(在線仿真)調(diào)試以及基于片上調(diào)試器的調(diào)試方法。
軟件模擬調(diào)試是通過軟件模擬+在線反復編程的方式,直接檢查運行結(jié)果,以此達到調(diào)試功能。該調(diào)試方法只能用于模擬片上外設,不能模擬實際芯片工作狀態(tài)。
基于仿真器(在線仿真)調(diào)試是通過仿真器上處理器或FPGA模擬某一單片機的特性,該調(diào)試方法相較于軟件模擬調(diào)試,可以較為真實地模擬實際芯片的工作。但是該調(diào)試方法花費的成本較高,并且不利于整機調(diào)試。
片上調(diào)試器是通過在芯片內(nèi)部集成支持調(diào)試功能的硬件模塊,通過通信接口控制處理器的運行以及實現(xiàn)調(diào)試功能,由于其低成本及高效性,目前在集成電路調(diào)試系統(tǒng)中得到廣泛運用。在針對低成本的單片機市場,單片機往往沒有很富裕的管腳資源(如8腳/10腳封裝),如果采用帶JATG接口的片上調(diào)試結(jié)構(gòu)(占用4個引腳)[2],占用的引腳較多,對程序開發(fā)難度較大,本文采用比 JTAG 接口引腳更少的2線串行線來實現(xiàn)片上調(diào)試功能。
本文設計的片上調(diào)試單元基于C8051單片機平臺,集成在C8051CPU核中。C8051 是Cast公司開發(fā)的一款51系列單片機軟核,該軟核同工業(yè)標準51單片機兼容。該單片機比工業(yè)標準 51單片機有更高的性能。
該片上調(diào)試單元主要由串行接口模塊C2和在線仿真 ICE 模塊組成,如圖1所示。串行總線控制器 C2模塊通過2線接口與片外調(diào)試器傳輸調(diào)試數(shù)據(jù),ICE模塊監(jiān)控處理器指令的執(zhí)行情況,并產(chǎn)生各種調(diào)試控制信號以及對存儲器的讀寫訪問。
圖1 片上調(diào)試單元結(jié)構(gòu)框圖
圖1中ocdTosfr_interface指OCD產(chǎn)生的特殊功能寄存器接口信號( 含數(shù)據(jù)/地址/控制 );cpuTosfr_interface 指 CPU產(chǎn)生的特殊功能寄存器 接口信號(含數(shù)據(jù)/地址/控制)。
串行接口模塊主要包括輸入數(shù)據(jù)同步模塊、開始/停止條件檢測模塊、移位寄存器及狀態(tài)機模塊,如圖2所示。該模塊的端口包括時鐘端口(clk)、復位端口(rst)、串行輸入時 鐘(scl)、串行輸入數(shù)據(jù)(sda)、串行 輸出數(shù)據(jù)(sda_data)及串口輸出數(shù)據(jù)使能(sda_oe)。
輸入數(shù)據(jù)同步模塊主要負責對輸入端口 sda、scl進行2級觸發(fā)器同步。
開始/停止條件檢測模塊則對同步后的信號sda_sync、scl_sync 檢測起始條件和停止條件的發(fā)生。
圖2 串行接口模塊C2框圖
狀態(tài)機模塊為該系統(tǒng)的核心,根據(jù)識別到的命令碼跳轉(zhuǎn)到不同狀態(tài),控制調(diào)試中的各個功能,如單步運行、斷點設置、存儲器編程及讀取。狀態(tài)機設計圖見圖3。
圖3 狀態(tài)機設計圖
各狀態(tài)名稱及含義如下。
IDLE:空閑狀態(tài),用于等待串行通信接口輸入并轉(zhuǎn)換到相應的狀態(tài),其他各狀態(tài)最終將會回到此狀態(tài);
STOP:系統(tǒng)停止運行;
RUN:系統(tǒng)開始運行;
CURSOR_ADDR:運行到指定地址處;
READ_STATUS:讀取系統(tǒng)所處狀態(tài)指令;
STEP_?:單步運行;
STEP_OVER:單步運行子程序指令;
STEP_OUT:單步運行跳出子程序指令;
SPACE_SET:存儲器空間設置,可配置為內(nèi)部數(shù)據(jù)存儲器IRAM,外部數(shù)據(jù)存儲器XRAM,程序存儲器FLASH,特殊功能寄存器SFR;
ADDR_SET:地址載入設置;
READ_?:讀取存儲器指令;
WRITE_?:寫入存儲器指令;
BREAK_TYPE:斷點類型設置;
BREAK_DATA:斷點數(shù)據(jù)設置;
BREAK_ADDR:斷點地址設置。
ICE 模塊由調(diào)試控制模塊和存儲器讀寫控制模塊(如圖4 )組成,存儲器讀寫控制模塊主要負責對狀態(tài)機狀態(tài)碼 ocd_state、調(diào)試緩存地址寄存器 ocd_addr、調(diào)試緩存數(shù)據(jù)寄存器ocd_din、調(diào)試存儲器區(qū)域配置寄存器ocd_space進行組合控制,產(chǎn)生各存儲器模塊的接口信號。
圖4 存儲器讀寫控制模塊
存儲器讀寫訪問的工作過程如下:在調(diào)試模式下通過占用存儲器的地址總線、數(shù)據(jù)總線、控制總線來實現(xiàn)對存儲器的讀寫,在占用總線過程中,存儲器的總線均來源于調(diào)試模塊。
采用Verilog HDL語言作為實現(xiàn)工具,對片上調(diào)試單元進行描述;并將該模塊與C8051IP 集成在同一芯片內(nèi),利用Cadence公司的仿真軟件NC-Verilog對片上調(diào)試單元設計的所有功能進行仿真驗證,下文以地址斷點仿真驗證、存儲器讀寫仿真為例,其他功能仿真說明在此不一一贅述。
地址斷點仿真驗證示例:
通過串行引腳輸入數(shù)據(jù)配置斷點為地址斷點(即程序計數(shù)器斷點), 設置斷點地址為0x0000a(ocd_irom_bk_addr=0x000a),斷點配置完成后,通過串行引腳串入 RUN 命令(ocd_state跳轉(zhuǎn)至 RUN狀態(tài)后又返回IDLE狀態(tài)),CPU開始執(zhí)行指令。當CPU執(zhí)行指令到程序0x000a 地址處(memaddr=0x000a),斷點功能觸發(fā),調(diào)試系統(tǒng)將調(diào)試請求信ocd_debugreq由0置1,這時調(diào)試系統(tǒng)程序存儲器斷點觸發(fā)完成,等待CPU停止運行,CPU停止運行后給調(diào)試信號一個應答信號,調(diào)試的輸入引腳debugack由0置1,此時調(diào)試系統(tǒng)可以接收其他命令,仿真圖見圖5。
匯編驗證代碼如下:
ORG 0000H
MOV R0,#01H
MOV DPTR,#0000H
TEST_00:
MOV @R0,#00H
MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
CJNE R0,#80H,TEST_00
STOP:
SJMP $
END
圖5 程序存儲器地址斷點仿真圖
存儲器讀寫仿真驗證示例:
假定用戶需要改寫內(nèi)部 RAM 地址0x10、0x11、0x12 的數(shù)據(jù),待寫入數(shù)據(jù)依次為0x0a、0xa0、0xaa。通過串行引腳串入數(shù)據(jù),配置存儲區(qū)域為內(nèi)部數(shù)據(jù)存儲器,配置起始地址后,依次串入待寫入的數(shù)據(jù)0x0a、0xa0、0xaa。如圖6 所示,RAM 的地址總線被依次配置成0x10、0x11、0x12,對應的數(shù)據(jù)配置成0x0a、0xa0、0xaa,在狀態(tài)機的控制下將3個數(shù)據(jù)寫入內(nèi)部 RAM。
圖6 存儲器編程操作仿真圖
讀操作時,配置完首地址0x10 后連續(xù)讀取3次,如圖7 所示,內(nèi)部 RAM 輸出總線 databuso 數(shù)據(jù)分別為0x0a、0xa0、0xaa,與寫入的數(shù)據(jù)一致。
應用于一款內(nèi)嵌 8051 的 SOC 芯片中。
圖7 存儲器讀取操作仿真圖
[1]張偉,李兆麟.一種基于 JTAG 的嵌入式微處理器片上調(diào)試系統(tǒng)[J].計算機工程與應用,2004,40(12):1-4.
[2]常志恒,肖鐵軍,史順波.基于 JIAG 的片上調(diào)試器與調(diào)試系統(tǒng)設計[J].計算機工程與應用,2012,48(30):1-5.
本文基于C8051設計了一種片上調(diào)試單元,并將片上調(diào)試功能集成到芯片內(nèi)部,通過仿真和 XiLinx 公司的FPGA驗證,驗證了該設計的正確性,該設計已
Design of On-chip Debug Unit Based on C8051
YU Xiaoping,TANG Yingqiang,LIShiwei
(Wuxi I-core Electronics Co.,Ltd,Wuxi214072,China)
With the rapid development of semiconductor and integrated circuit technology,the integration level ofmicroprocessor isbecom ing higher and higher.A strong debugging tool is very important during the development of large applications,especially when the bugs are too complicated to analyze.Based on theC8051IP,the article presentsan on-chip debug unitand integrates the debugging function into theMCU.W ith different configuration instructions,the on-chip debug unit can realize breakpoint instruction,address breakpoint,stop or single step execution procedures,data observation point,run to the cursor and other debugging functions.
integrated circuit;on-chip debug;C8051
TN402
A
1681-1070 (2017) 03-0019-03
俞小平(1986—),男,江蘇高郵人,本科,助理工程師,主要從事數(shù)?;旌霞呻娐吩O計研究。
2016-11-15