單片機(jī)外文翻譯-基于MCS-51單片機(jī)結(jié)構(gòu)中16MB尋址空間的設(shè)計(jì)【中文4345字】【PDF+中文WOrd
單片機(jī)外文翻譯-基于MCS-51單片機(jī)結(jié)構(gòu)中16MB尋址空間的設(shè)計(jì)【中文4345字】【PDF+中文WOrd,中文4345字,單片機(jī),外文,翻譯,基于,MCS,51,結(jié)構(gòu),16,MB,尋址,空間,設(shè)計(jì),中文,4345,PDF,WOrd
【中文4345字】
基于MCS-51單片機(jī)結(jié)構(gòu)中16MB尋址空間的設(shè)計(jì)
景偉良,胡越利,曹家林(音譯)
上海大學(xué)微電子研究與開(kāi)發(fā)中心
中國(guó)上海市延長(zhǎng)路149號(hào),郵編200072
郵編:huyueli@shumchip.com ,電話(huà):086- 021- 56331271
翻譯:武俊宏 191001班,103568號(hào)
摘要:
本文所介紹的是一種基于MCS-51結(jié)構(gòu)的MCU(微處理器,即單片機(jī))進(jìn)行16M字節(jié)尋址空間的設(shè)計(jì)。外部數(shù)據(jù)和程序存儲(chǔ)容量從64KB擴(kuò)大到到16MB而時(shí)分復(fù)用地址總線(xiàn)卻沒(méi)有增量這樣的改變使得整個(gè)指令集趨于更好。因此,一個(gè)有著大量數(shù)據(jù)和復(fù)雜算法的程序可以在這個(gè)單片機(jī)上處理和運(yùn)行。在前邊的設(shè)計(jì)成功模擬之后, 在Nios(軟核處理器)開(kāi)發(fā)板實(shí)地實(shí)驗(yàn)驗(yàn)證了該設(shè)計(jì)是正確的。此外,此設(shè)計(jì)的增益在實(shí)際應(yīng)用中效果良好,并允許單片機(jī)來(lái)控制一個(gè)擁有超過(guò)64KB的程序和巨大的數(shù)據(jù)的圖像處理系統(tǒng)。
關(guān)鍵字:MCS51單片機(jī),單片機(jī),程序地址,尋址空間
1. 簡(jiǎn)介
一個(gè)SCMP(單芯片多處理器)架構(gòu)在我們的“皮膚診斷“機(jī)器視覺(jué)芯片得到應(yīng)用。它的每一個(gè)子處理器都有自己的責(zé)任,包括機(jī)器視覺(jué)的常用算法,數(shù)據(jù)庫(kù)和知識(shí)庫(kù)管理等,無(wú)需用戶(hù)參與,而主處理器直接面向用戶(hù)。其指令集與MCS-51系列完全兼容,可同樣執(zhí)行MCS-51的指令為用戶(hù)處理某些圖像處理算法。由于系統(tǒng)應(yīng)用工程師不再需要學(xué)習(xí)專(zhuān)業(yè)的圖像處理知識(shí),而有關(guān)機(jī)器視覺(jué)的培訓(xùn)和編程就可以實(shí)現(xiàn)某些相關(guān)功能,因此機(jī)器視覺(jué)技術(shù)可以很容易的使用在各種單片機(jī)領(lǐng)域。
為了實(shí)現(xiàn)上述目標(biāo),一個(gè)單片機(jī)必須能夠控制和處理復(fù)雜的計(jì)算。它機(jī)器視覺(jué)芯片的核心和基本組成部分。眾所周知,,MCS-51的使用歷史悠久,為滿(mǎn)足各種各樣的應(yīng)用領(lǐng)域并且數(shù)量眾多的第三方軟件和仿真工具,因此,一個(gè)MCS-51結(jié)構(gòu)的單片機(jī)被設(shè)計(jì)了出來(lái)。但MCS-51的程序空間和數(shù)據(jù)容量分別只有64 Kb[1]。這樣的尺寸不能滿(mǎn)足圖像處理所需求的巨大數(shù)據(jù)量和復(fù)雜算法。如果51單片機(jī)的尋址空間可擴(kuò)大而并不改變指令集和端口或引腳的定義, 那么MCS-51結(jié)構(gòu)的單片機(jī)性能會(huì)在很大程度上得到改善和增強(qiáng)。本文提出了一種時(shí)分復(fù)用方法設(shè)計(jì)并實(shí)現(xiàn)16MB的數(shù)據(jù)空間和16MB程序地址空間。
2.16MB尋址空間的設(shè)計(jì)
2.1方案
2.1.1數(shù)據(jù)存儲(chǔ)器
一個(gè)8位的SFR(特殊功能寄存器)“DPTR_PAGE”數(shù)據(jù)指針到被添加的一個(gè)16MB的外部數(shù)據(jù)存儲(chǔ)器的頁(yè)面地址,以便單片機(jī)訪(fǎng)問(wèn)這個(gè)16MB的空間。每一頁(yè)的大小是64KB而16MB的數(shù)據(jù)存儲(chǔ)器被分為256(28)頁(yè)。作為一個(gè)標(biāo)準(zhǔn)的MCS-51單片機(jī)的尋址方法在每一頁(yè)都是一樣的。頁(yè)面地址發(fā)出的Port2為最高的8位,通過(guò)Port0和Port2發(fā)送的中8位地址和低8位地址,就是作為一個(gè)標(biāo)準(zhǔn)的8051發(fā)送的16位地址。
圖 1 外部數(shù)據(jù)存儲(chǔ)器與單片機(jī)連接
單片機(jī)的連接方法及其外部數(shù)據(jù)存儲(chǔ)器如圖1所示。地址鎖存1鎖存低8位地址,地址鎖存2鎖存高8位地址。在高8位地址被鎖存后,中8位地址會(huì)發(fā)送出去。
2.1.2程序存儲(chǔ)器
開(kāi)始前構(gòu)思的關(guān)于使得單片機(jī)能夠訪(fǎng)問(wèn)16MB程序存儲(chǔ)器的兩個(gè)設(shè)計(jì)想法:
其一是改變指令集。例如,原LCALL/LJMP addr16指令有16位操作數(shù),我們可以改變它們?yōu)橛?4位操作數(shù)LCALL/LJMP addr24指令,而且在16MB的尋址空間中允許一個(gè)PA(程序地址)跳到另一個(gè)程序模塊或者調(diào)用另一個(gè)任意子模塊。這是在此設(shè)計(jì)議題下相對(duì)容易的修改,但標(biāo)準(zhǔn)的MCS-51編譯程序必須進(jìn)行修改,甚至重新設(shè)計(jì)。否則,原指令在標(biāo)準(zhǔn)的編譯器下不能被正確解碼。因此,這樣修改指令集后的單片機(jī)難以廣泛使用,也不利于它們的傳播和兼容性使用。
另一種方案是對(duì)一個(gè)程序存儲(chǔ)器進(jìn)行邏輯分割,而不改變MCS-51的任何指令。一個(gè)可尋址的16MB程序存儲(chǔ)空間包括256個(gè)數(shù)據(jù)塊,而每一個(gè)數(shù)據(jù)塊地址可確定24位地址中最高的8位。在每一個(gè)64KB的數(shù)據(jù)塊中任何特定的地址包含了一個(gè)24位程序地址的中8位和低8位,而一個(gè)PC(程序計(jì)數(shù)器)保存這個(gè)程序地址中的低16位數(shù)據(jù)。
圖 2 程序存儲(chǔ)器的空間結(jié)構(gòu)
為了使單片機(jī)設(shè)計(jì)具有更好的兼容性,我們采用第二種方法,即標(biāo)準(zhǔn)的MCS-51指令集是不變的還有額外的8位地址線(xiàn)也不添加。圖2顯示了擴(kuò)展程序存儲(chǔ)器的內(nèi)存尋址空間結(jié)構(gòu)。
2.2一個(gè)數(shù)據(jù)存儲(chǔ)器的16MB尋址空間
2.2.1數(shù)據(jù)指針寄存器(DPTR)
一個(gè)數(shù)據(jù)指針由三個(gè)八位寄存器組成,分別是:DPTR_PAGE,DPTR_LOW和DPTR_HIGH。
DPTR_PAGE的地址為95H,該寄存器可以由用戶(hù)自定義,它存儲(chǔ)一個(gè)24位程序地址的高8位。
DPTR_LOW/DPTR_HIGH的地址是82H和83H,這兩個(gè)寄存器也可以由用戶(hù)自定義。它們保持一個(gè)24位程序地址的低8位和中8位。
2.2.2自動(dòng)檢測(cè)邏輯
這項(xiàng)工作提出了自動(dòng)檢測(cè)邏輯實(shí)現(xiàn)跨頁(yè)的方式。
“ DEC DPTR ”指令,其地址為A5H ,是添加到單片機(jī)的。當(dāng)單片機(jī)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí), INC DPTR / DEC DPTR指令可能導(dǎo)致DPTR的低16位的值從FFFFH改變?yōu)?000H或從0000H變成FFFFH以及跨頁(yè)的情況業(yè)可能發(fā)生。在這樣的情況下一個(gè)自動(dòng)檢測(cè)邏輯將會(huì)增加或減少DPTR_PAGE的內(nèi)容,因此,數(shù)據(jù)可以被正確地寫(xiě)入或讀出在16MB的數(shù)據(jù)存儲(chǔ)器中的上一個(gè)或下一個(gè)頁(yè)面。編碼中實(shí)現(xiàn)跨頁(yè)功能一些部分會(huì)在圖3中顯示 。其中,PC_CON [0]是“INC_DPTR”指令的一個(gè)解碼信號(hào)而PC_CON [1]是“DEC_DPTR”指令的是一個(gè)解碼信號(hào)。 CCLK信號(hào)是單片機(jī)的一個(gè)工作時(shí)鐘。
圖 3 一個(gè)自動(dòng)檢測(cè)邏輯的部分代碼
2.3程序存儲(chǔ)器的16M尋址空間
在單片機(jī)中, PC / PA / PRO_BLOCK / DPTR控制模塊的設(shè)計(jì)計(jì)算和存下一個(gè)指令存儲(chǔ)單元的地址。生成一個(gè)8位數(shù)據(jù)塊地址,形成一個(gè)24位的程序地址和一個(gè)16位的程序計(jì)數(shù)器而DPTR就被這四個(gè)部分控制和管理。
2.3.1 PA(程序地址)和PC(程序計(jì)數(shù)器)
為了加快單片機(jī)的處理速度,就采取了一種預(yù)取技術(shù)。讀取下一個(gè)指令的24位地址的第三階段處于當(dāng)前指令的最后一個(gè)機(jī)器周期。而程序存儲(chǔ)器的每個(gè)內(nèi)部單元地址來(lái)自一個(gè)PA根據(jù)所有被傳輸和存儲(chǔ)的指令操作碼和操作數(shù)這二者的地址。當(dāng)MCU復(fù)位或電源供電時(shí),24位PA的初始值是000000H 。
程序計(jì)數(shù)器(PC)是一個(gè)16位專(zhuān)用寄存器,并且可以使單片機(jī)處理一個(gè)64KB的空間。當(dāng)MCU復(fù)位或電源供能時(shí),一個(gè)16位PC的初始值為0000H 。 PC寄存器獨(dú)立寄存器且不能訪(fǎng)問(wèn)用戶(hù)[2]。
一個(gè)PA的低16位地址和整個(gè)PC的16位地址是一樣的,除了當(dāng)MOVCS指令執(zhí)行時(shí)。例如,就像“ MOVC A,@A+PC”或“MOVC A,@A+DPTR”指令正在執(zhí)行時(shí),PC不發(fā)生變化,而PA的內(nèi)容必須更改為(A+PC)或(A+DPTR)的值,以使MCU可以在更新后的地址讀取數(shù)據(jù)并分配它們到累加器。因此,PC的控制邏輯電路和PA的有一些細(xì)微的不同之處。
2.3.2塊地址生成器
塊地址發(fā)生器負(fù)責(zé)產(chǎn)生PA的高8位地址,因此,塊地址源順的序設(shè)計(jì)正確與否將直接決定程序是否可以正常運(yùn)行。塊地址有三個(gè)來(lái)源除了默認(rèn)值“00H”還有:用戶(hù)可以自定義數(shù)據(jù);RET / RETI指令執(zhí)行后,從外部或內(nèi)部PA的堆棧數(shù)據(jù);程序跳轉(zhuǎn)到相鄰塊后程序塊地址的更新。請(qǐng)看圖4:塊地址生成器結(jié)構(gòu)。
圖 4 塊地址生成器的結(jié)構(gòu)
2.3.2.1 PRO_BLOCK 特殊功能寄存器
用戶(hù)應(yīng)該在LJMP/LCALL指令處理前定義確定的塊地址,這是為了跳過(guò)其他模塊或調(diào)用位于其它塊的子模塊。實(shí)現(xiàn)這一目標(biāo)的具體方法是在單片機(jī)中添加一個(gè)名為PRO_BLOCK的新的特殊功能寄存器,其地址為FFH ,并且系統(tǒng)復(fù)位后,它的值將會(huì)被設(shè)置為00H。用戶(hù)可以在運(yùn)行LJMP / LCALL指令前寫(xiě)一個(gè)8位的塊地址到這個(gè)SFR(特殊功能寄存器)中。在圖4中,PRO_BLOCK_W是一個(gè)允許寫(xiě)入信號(hào)而REG_RESULT則存儲(chǔ)由用戶(hù)自定義的塊地址。
2.3.2.2中斷/調(diào)用后的塊地址
如圖4所示,Xramdi存儲(chǔ)的塊地址是從堆棧中彈出的一個(gè)外部數(shù)據(jù)存儲(chǔ)器中的值,而Source_di中存儲(chǔ)的塊地址是從堆棧中彈出的一個(gè)內(nèi)部數(shù)據(jù)存儲(chǔ)器中的值。RET/RETI指令結(jié)束時(shí),最初存儲(chǔ)在外部或內(nèi)部存儲(chǔ)器中的塊地址從堆棧中彈出并發(fā)送PRO_BLOCK SFR。
2.3.2.3一個(gè)塊地址的自動(dòng)增量
在圖4中,下一個(gè)塊地址(PRO_BLOCK+1)被存儲(chǔ)在ROM_0。當(dāng)程序運(yùn)行時(shí)有序通過(guò)兩個(gè)相鄰的塊,PRO_BLOCK SFR的值會(huì)自動(dòng)更新到的ROM_0使得單片機(jī)在下一個(gè)塊初就可以正確讀取下一個(gè)操作碼或操作數(shù)。
2.3.2.4相對(duì)跳轉(zhuǎn)后的塊地址
上一個(gè)塊地址值( PRO_BLOCK - 1 )被存儲(chǔ)在圖4所示ROM_1中。當(dāng)程序跳轉(zhuǎn)到相對(duì)前一個(gè)塊時(shí), PRO_BLOCK SFR的值會(huì)自動(dòng)更新到ROM_1。而當(dāng)程序跳轉(zhuǎn)到下一個(gè)塊的相對(duì)塊時(shí), PRO_BLOCK的值更改到ROM_0。
3.仿真和驗(yàn)證
3.1在工作站上的仿真
工作站上對(duì)軟核進(jìn)行的仿真相對(duì)徹底(SUNW SUNW, ULTRA-60;SPARC SUN4U)。該工作站上的仿真工具是Verilog -XL(Cadence)。匯編語(yǔ)言代碼測(cè)試CJNE指令的部分如圖5中所描述。Test_bench的目的是驗(yàn)證16MB程序?qū)ぶ房臻g的設(shè)計(jì)方案是正確的。當(dāng)某個(gè)程序運(yùn)行有序的通過(guò)兩個(gè)相鄰塊時(shí),PRO_BLOCK的值會(huì)自動(dòng)增一。任何程序都可以在每塊或整個(gè)區(qū)塊不僅自由而且準(zhǔn)確的進(jìn)行相對(duì)跳躍。
圖 5 CJNE指令的測(cè)試代碼
測(cè)試結(jié)果的波形圖如下所示。STATE是MCU狀態(tài)機(jī)的一個(gè)信號(hào)和PROGA一樣是24位PA 。
圖 6 CPL 0D3H
圖6是測(cè)試代碼的起始波形,PORT0發(fā)送數(shù)據(jù)和一個(gè)PA的低8位的每一個(gè)其他階段數(shù)?!癇2 D3”是“CPL 0D3H”的機(jī)器代碼。
圖 7 CJNE @ R0, #01H, ADD0
在圖7中,“B6 01 66”是“CJNE @ R0,#01H,ADD0”的機(jī)器代碼。在該指令結(jié)束時(shí),PROGA顯示ADD0“1900C4H”的地址和“MOV P1,0D0H '將被處理。
圖 8 MOV P1, 11H
在圖8中,“B5 11 90”是“MOV P1,11H”的機(jī)器代碼。由于如跳躍或調(diào)用這類(lèi)指令沒(méi)有處理,PROGA 從BLOCK_19到BLOCK_1A將會(huì)自增一。
圖 9 CJNE @R1, #0E7H, ADD4
在圖9中,“B7 E7 F2”是“CJNE @R1,#0E7H,ADD4”的機(jī)器代碼。在該指令結(jié)束時(shí),PRO_BLOCK從BLOCK_1A到BLOCK_19自減一,相對(duì)相鄰塊的跳轉(zhuǎn)實(shí)現(xiàn)。
3.2 FPGA驗(yàn)證
軟核在Altera Nios FPGA開(kāi)發(fā)板上也被驗(yàn)證。一個(gè)特定的測(cè)試環(huán)境的描述如下:
外部中斷源為零(IT0)設(shè)置為優(yōu)先于外部中斷源一(IT1)。該主程序運(yùn)行時(shí),IT1的有效信號(hào)比IT0的更早出現(xiàn)。而隨著IT1子模塊被處理,IT0產(chǎn)生有效信號(hào)。IT1的優(yōu)先級(jí)較低,所以它的中斷子模塊將暫停而IT0的中斷子模塊將被執(zhí)行。當(dāng)IT0的子模塊完成后,PA將會(huì)被改變到IT1子模塊已被停止處而該模塊將繼續(xù)執(zhí)行,直到執(zhí)行到該子模塊的底部。到那時(shí),主程序?qū)⒈辉俅渭せ睢?IT0和IT1由一個(gè)Nios板上的兩個(gè)乒乓鍵提供。該IT1子模塊的作用是使LED的數(shù)字'1'有序的顯示M次,而IT0子模塊可以讓LED的數(shù)字“0”有序的顯示N次(M>>N)。主程序的功能是激活電路板上的蜂鳴器。中斷入口的地址均位于block_0上和這三個(gè)模塊被放在不同的塊中。
在設(shè)計(jì)通過(guò)在Quartus平臺(tái)(阿爾特拉公司)上的編譯和仿真后,RTL(寄存器傳輸?shù)燃?jí)級(jí))單片機(jī)的RTL(寄存器傳輸?shù)燃?jí)級(jí))代碼就是FPGA中的代碼它和測(cè)試機(jī)代碼被放在一個(gè)主板上的閃存里。
這個(gè)實(shí)驗(yàn)的目的是驗(yàn)證程序可以返回block_0以及24位的指針可以正確地推入或彈出堆棧。實(shí)驗(yàn)結(jié)果與我們預(yù)期的一樣,實(shí)現(xiàn)這一功能的設(shè)計(jì)被證明是正確的。
4.結(jié)論
這個(gè)擁有16MB的數(shù)據(jù)和16MB尋址空間的單片機(jī)是基于MCS-51結(jié)構(gòu)的單片機(jī)所設(shè)計(jì)的。該指令集與標(biāo)準(zhǔn)8051完全兼容,因此那些支持51系列的工具和第三方軟件都可以使用。工作站和FPGA的仿真已驗(yàn)證了該設(shè)計(jì)是正確的。作為IP (知識(shí)產(chǎn)權(quán))內(nèi)核, MCU已被嵌入到SCMP(單芯片多處理器)結(jié)構(gòu)的圖像處理系統(tǒng)芯片中。成本低,功能強(qiáng)大,兼容性好和巨大的尋址空間,這些優(yōu)點(diǎn)使這種MCU具有非常廣泛的應(yīng)用領(lǐng)域。
致謝
作者感謝包括邏輯、合成、位置、線(xiàn)路、CAD和測(cè)試產(chǎn)品工程師為整個(gè)設(shè)計(jì)團(tuán)隊(duì)所做的貢獻(xiàn)。
參考資料
[1] 英特爾公司單片機(jī)手冊(cè),MCS-51Family,英特爾公司 (1984), pp. 6-8.
[2] Myke Predko,8051單片機(jī)的編程和自定義, McGraw-Hill (1999), pp. 7-8.
景偉良,1980出生于中國(guó)上海。2003年在中國(guó)上海大學(xué)獲得電氣工程工學(xué)學(xué)士學(xué)位。
他目前就讀于上海大學(xué),攻讀微電子和固體電子學(xué)碩士學(xué)位,他的研究興趣是具有高設(shè)計(jì)性能和圖像處理系統(tǒng)的SCMP結(jié)構(gòu)單片機(jī)。
胡越利,1982年在上??萍即髮W(xué)獲得應(yīng)用物理的理學(xué)學(xué)士學(xué)位,1989年獲得電氣工程專(zhuān)業(yè)的工程碩士學(xué)位。
目前他以副教授的身份工作于上海大學(xué)微電子研發(fā)中心。他的研究領(lǐng)域包括數(shù)字IC設(shè)計(jì),影像處理與機(jī)器視覺(jué)。
曹家林,上海大學(xué)微電子研發(fā)中心主任,上海大學(xué)副校長(zhǎng)。
作為一位教授,他的研究領(lǐng)域包括圖案識(shí)別和VLSI電路。
收藏
編號(hào):233075393
類(lèi)型:共享資源
大小:197.77KB
格式:ZIP
上傳時(shí)間:2023-10-02
12
積分
- 關(guān) 鍵 詞:
-
中文4345字
單片機(jī)
外文
翻譯
基于
MCS
51
結(jié)構(gòu)
16
MB
尋址
空間
設(shè)計(jì)
中文
4345
PDF
WOrd
- 資源描述:
-
單片機(jī)外文翻譯-基于MCS-51單片機(jī)結(jié)構(gòu)中16MB尋址空間的設(shè)計(jì)【中文4345字】【PDF+中文WOrd,中文4345字,單片機(jī),外文,翻譯,基于,MCS,51,結(jié)構(gòu),16,MB,尋址,空間,設(shè)計(jì),中文,4345,PDF,WOrd
展開(kāi)閱讀全文
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶(hù)自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶(hù)書(shū)面授權(quán),請(qǐng)勿作他用。