當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]首先對(duì)比分析在執(zhí)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移時(shí),傳統(tǒng)805l單片機(jī)和進(jìn)行DPTR擴(kuò)展后的805l單片機(jī)在數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率上的差別。通過(guò)詳細(xì)分析DPTR操作所涉及的因素,具體實(shí)現(xiàn)對(duì)DPTR的擴(kuò)展,并進(jìn)行實(shí)際仿真測(cè)試。

摘要 首先對(duì)比分析在執(zhí)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移時(shí),傳統(tǒng)805l單片機(jī)和進(jìn)行DPTR擴(kuò)展后的805l單片機(jī)在數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率上的差別。通過(guò)詳細(xì)分析DPTR操作所涉及的因素,具體實(shí)現(xiàn)對(duì)DPTR的擴(kuò)展,并進(jìn)行實(shí)際仿真測(cè)試。
關(guān)鍵詞 805l單片機(jī)DPTR 數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率


    單片機(jī)的出現(xiàn)是計(jì)算機(jī)技術(shù)發(fā)展史上的一個(gè)里程碑,它使計(jì)算機(jī)從海量數(shù)值計(jì)算進(jìn)入到控制領(lǐng)域。在單片機(jī)中,以8051系列最為經(jīng)典,至今仍是最普及、廣泛使用的8位MUC架構(gòu)。北界許多技術(shù)人員在其基礎(chǔ)上不斷進(jìn)行性能擴(kuò)展,使得805l系列芯片不斷完善,從而形成一個(gè)龐大的體系。在傳統(tǒng)的8051系列單片機(jī)中,設(shè)置了一組雙字節(jié)寄存器(數(shù)據(jù)指針DPTR),用于訪問(wèn)外接的64 KB數(shù)據(jù)存儲(chǔ)器和I/O接口電路;但在現(xiàn)今的8051單片機(jī)應(yīng)用中,特別是在嵌入式系統(tǒng)中,往往涉及大規(guī)模的數(shù)據(jù)轉(zhuǎn)移操作,而傳統(tǒng)805l的一組數(shù)據(jù)指針使用起來(lái)則顯得捉襟見(jiàn)肘,因此若在8051設(shè)計(jì)中將數(shù)據(jù)指針設(shè)計(jì)為兩組或多組,則在執(zhí)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移操作時(shí)會(huì)相當(dāng)簡(jiǎn)便、迅速。在這種背景下,本文首先以數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率為衡量標(biāo)準(zhǔn),分析了DPTR擴(kuò)展的意義,并在Oregano公司的MCS8051核上實(shí)現(xiàn)了DPTR擴(kuò)展。


1 DPTR擴(kuò)展意義
   
為描述8051中的DPTR擴(kuò)展的意義,我們針對(duì)實(shí)現(xiàn)大規(guī)模數(shù)據(jù)轉(zhuǎn)移,分別對(duì)DPTR擴(kuò)展前后作了對(duì)比。為使對(duì)比更加清晰明了,提出了數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率的概念。
    數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率v定義為進(jìn)行單字節(jié)數(shù)據(jù)轉(zhuǎn)移所耗費(fèi)的機(jī)器周期數(shù),即XXXX其中,n表示所轉(zhuǎn)移數(shù)據(jù)字節(jié)數(shù);t表示所耗費(fèi)的機(jī)器周期,可設(shè)定其單位為字節(jié)/機(jī)器周期。
    在未進(jìn)行DPTR擴(kuò)展的8051中,可通過(guò)設(shè)置地址緩沖區(qū)的方法來(lái)實(shí)現(xiàn)大規(guī)模的數(shù)據(jù)轉(zhuǎn)移。具體的例程如下:

   
    在此例程中,50H、5lH用于存放數(shù)據(jù)源地址s_adr(s_adrh為高字節(jié),s_adrl為低字節(jié)),52H、53H用于存放數(shù)據(jù)目的地址t_adr(t_adrh為高字節(jié),t_adr1為低字節(jié)),實(shí)現(xiàn)將源地址起始64字節(jié)數(shù)據(jù)轉(zhuǎn)移至目的地址。在8051中,執(zhí)行”字節(jié)數(shù)據(jù)移位操作耗費(fèi)(14+28×n+2)個(gè)機(jī)器周期,數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率為v=n/(14+28×n+2)。在本例程中,n為64,計(jì)算得出共需耗費(fèi)1 808個(gè)機(jī)器周期,執(zhí)行效率v約為O.0354字節(jié)/機(jī)器周期,而且在此實(shí)現(xiàn)方法中需占用8051的4個(gè)片內(nèi)存儲(chǔ)器(RAM)單元。
    如8051中擁有兩組DPTR,并可通過(guò)特殊指令來(lái)實(shí)現(xiàn)DPTR選取??稍O(shè)定SETDPTR0指令表示選取DPTR0,SETDPTRl指令表示選取DPTRl,#s_adr表示數(shù)據(jù)源地址,#t_adr表示數(shù)據(jù)目的地址,則程序可設(shè)計(jì)為:

   
    程序中,對(duì)于特殊指令SETDPTR0和SETDPTRl,可通過(guò)設(shè)置特殊功能寄存器(SFR)以表示DPTR狀態(tài),并對(duì)此SFR進(jìn)行操作,以實(shí)現(xiàn)DPTR選取。因此DPTR選取指令可由3字節(jié)指令實(shí)現(xiàn),則在兩組DPTR情況下執(zhí)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移需耗費(fèi)(14+12×n+2)個(gè)機(jī)器周期,數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率為v=n/(14+12×n+2)。在本例程中,執(zhí)行64字節(jié)數(shù)據(jù)轉(zhuǎn)移需耗費(fèi)784個(gè)機(jī)器周期,執(zhí)行效率約為0.085 64字節(jié)/機(jī)器周期。
    通過(guò)以上對(duì)比發(fā)現(xiàn),擁用兩組DPTR的8051比傳統(tǒng)8051在大規(guī)模數(shù)據(jù)傳輸時(shí)的數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率比為(14+28×n+2)/(14+12×n+2)。由圖1可知,隨著所轉(zhuǎn)移數(shù)據(jù)量的不斷加大,即n值增大時(shí),執(zhí)行效率比也不斷增大,且最后趨近于2.33。

    經(jīng)過(guò)以上分析得出:在805l中設(shè)置兩組DPTR將會(huì)使其在數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率上有很大提高。從資源占用方面考慮,使用擴(kuò)展DPTR的方式來(lái)實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)移,僅需在8051中添加一個(gè)SFR,因此在805l中實(shí)現(xiàn)DPTR擴(kuò)展,可在資源占用很少的條件下,明顯加快數(shù)據(jù)轉(zhuǎn)移速率。這對(duì)于在嵌入式系統(tǒng)應(yīng)用中,進(jìn)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移意義重大。

2 具體設(shè)計(jì)實(shí)現(xiàn)
   
在8051中對(duì)DPTR實(shí)現(xiàn)擴(kuò)展,首先需要對(duì)DPTR的相關(guān)指令進(jìn)行分析,再確定對(duì)其進(jìn)行擴(kuò)展會(huì)影響到哪些指令操作;并根據(jù)其所涉及的指令,分析相應(yīng)的模塊,最后針對(duì)各模塊分別進(jìn)行設(shè)計(jì)修改。
2.1 相關(guān)指令分析
   
在8051標(biāo)準(zhǔn)指令集的111條指令中,與DPTR有關(guān)的指令共有5類,分別為:
    ①程序存儲(chǔ)器查表指令,“MOVC A,@A+DPTR”;
    ②片外RAM傳送指令,“MOVX A,@DPTR”和“MOVX@DPTR,A”;
    ③寄存器數(shù)據(jù)傳送指令,即可對(duì)DPTR進(jìn)行讀寫(xiě)操作,在8051中DPTR由DPFI(DPTR高8位字節(jié))和DPL(DPTR低8位字節(jié))構(gòu)成,且DPH和DPL與一般的SFR一樣,都可作為寄存器進(jìn)行讀寫(xiě)、壓棧等操作;
    ④程序轉(zhuǎn)移指令,“JMP@A+DPTR”;
    ⑤運(yùn)算指令,可分別對(duì)DPH和DPL進(jìn)行運(yùn)算操作。
    通過(guò)對(duì)以上與DPTR相關(guān)的5類指令分析可知:第③類指令和第⑤類指令是將DPTR作為SFR進(jìn)行操作的。第①類指令和第④類指令都是DPTR與PC指針進(jìn)行的數(shù)據(jù)傳送操作;第②類指令是對(duì)片外RAM地址寄存器進(jìn)行的數(shù)據(jù)傳送操作。因此,DPTR的操作具體涉及8051中以下3個(gè)模塊:SFR讀寫(xiě)模塊、PC指針模塊及片外RAM地址模塊,故對(duì)DPTR的擴(kuò)展也在這3個(gè)模塊中進(jìn)行。
2.2 具體模塊設(shè)計(jì)
   
對(duì)于DPTR狀態(tài)寄存器可設(shè)為dptr_sel,通過(guò)對(duì)DPTR狀態(tài)標(biāo)志位dps操作,實(shí)現(xiàn)DPTR選取。當(dāng)dps=0時(shí),選取DPTR0當(dāng)dps=1時(shí),選取DPTRl。在805l中,DPTR分別由DPH和DPL組成,因此對(duì)DPTR的選取實(shí)際上是對(duì)特殊功能寄存器DPH0、DPLO和DPHl、DPLl的選取。
    基于以上的設(shè)計(jì)思路,筆者分別在涉及DPTR操作的3個(gè)模塊中進(jìn)行了相應(yīng)的修改。本設(shè)計(jì)所選用MCS8051核由VHDL語(yǔ)言設(shè)計(jì),完全兼容標(biāo)準(zhǔn)8051指令集。
    在SFR讀寫(xiě)模塊中,應(yīng)針對(duì)讀、寫(xiě)模塊分別進(jìn)行修改。通過(guò)分析MCS8051設(shè)計(jì)代碼可知,對(duì)于DPTR的讀操作,是通過(guò)將DPTR中數(shù)據(jù)傳送給數(shù)據(jù)暫存寄存器S_REGDATA,再通過(guò)對(duì)S_REGDATA進(jìn)行讀操作來(lái)實(shí)現(xiàn)的,因此可在進(jìn)行DPTR數(shù)據(jù)暫存前,利用選擇位dps來(lái)對(duì)DPTR進(jìn)行選取。具體示意如圖2所示。

    在對(duì)DPTR進(jìn)行寫(xiě)操作時(shí),實(shí)際上是對(duì)DPH和DPL進(jìn)行操作(DPH地址為83H,DPL地址為82H),因此對(duì)DPTR進(jìn)行寫(xiě)操作時(shí)需對(duì)DPH和DPL分別進(jìn)行操作。在MCS8051中對(duì)SFR的寫(xiě)操作,實(shí)際上是先將要寫(xiě)入的數(shù)據(jù)暫存在S_DATA寄存器中,再通過(guò)將S_DATA數(shù)據(jù)分別寫(xiě)入DPH和DPL來(lái)實(shí)現(xiàn)的。因此可在S_DATA數(shù)據(jù)寫(xiě)入前對(duì)DPTR0和DPTRl進(jìn)行選擇判斷,來(lái)實(shí)現(xiàn)對(duì)DPTR0和DPTRl的寫(xiě)操作,即dps=l時(shí),將S_DATA數(shù)據(jù)寫(xiě)入DPHl和DPLl;dps=0時(shí),將S_DATA數(shù)據(jù)寫(xiě)入DPH0和DPLO,具體結(jié)構(gòu)如圖3所示。
    在PC指針模塊和片外RAM地址模塊中,由于也是涉及DPTR的讀操作,因此該模塊的修改與SFR讀模塊中的修改類似,也是利用dps來(lái)實(shí)現(xiàn)DPTR0、DPTRl的選取。

3 仿真測(cè)試
   
在MCS8051中,針對(duì)以上3個(gè)模塊分別作了修改,將DPTR擴(kuò)展為兩組,通過(guò)對(duì)DPTR_SEK(設(shè)定為SFR的E1H)中DPTR狀態(tài)標(biāo)志位dps進(jìn)行操作,來(lái)實(shí)現(xiàn)對(duì)DPTR0和DPTRl的選取,并利用仿真軟件Modelsim6.0進(jìn)行了仿真測(cè)試。由于在實(shí)現(xiàn)DPTR擴(kuò)展時(shí)主要針對(duì)SFR讀寫(xiě)模塊、PC指針模塊和片外RAM地址模塊這3個(gè)模塊進(jìn)行了修改,因此對(duì)于DPTR擴(kuò)展的仿真測(cè)試也分3個(gè)模塊進(jìn)行。
3.1 針對(duì)SFR讀寫(xiě)模塊的測(cè)試
   
該模塊的測(cè)試主要為測(cè)試DPTR0和DPTRl的數(shù)據(jù)傳輸。首先對(duì)DPTR狀態(tài)標(biāo)志dps位進(jìn)行操作,分別選取DPTR0和DPTRl;其次分別對(duì)其進(jìn)行寫(xiě)操作;最后將DPTR0和DPTRl中數(shù)據(jù)值依次輸出寄存器A中。具體波形如圖4所示。

    由圖4可知,在執(zhí)行指令75E100前后(即將dps復(fù)位,選取DPTR0),DPH和DPL輸出(執(zhí)行指令E583,E582)到寄存器A中的值不同。指令75E100執(zhí)行前DPH輸出為55,DPL輸出為66,執(zhí)行后輸出分別為11和22,因此表明通過(guò)dps進(jìn)行DPTR選取,讀寫(xiě)操作無(wú)誤,即對(duì)SFR讀寫(xiě)模塊的修改無(wú)誤。
3.2 針對(duì)PC指針的數(shù)據(jù)查表測(cè)試
   
針對(duì)此模塊,進(jìn)行了一個(gè)查表測(cè)試,即向DPTR0和DPTRl中分別寫(xiě)入datal和data2兩個(gè)數(shù)據(jù)表的地址;而后利用dps選取DPTR0和DPTRl,再分別對(duì)其進(jìn)行數(shù)據(jù)查表輸出。具體波形如圖5所示。

    選取DPTRl(已存入data2地址,執(zhí)行指令75E180)后,將寄存器A清零(執(zhí)行指令7400),并將查表數(shù)據(jù)輸出(執(zhí)行指令93),輸出數(shù)據(jù)為11H;而后選取DPTR0,再次將寄存器A清零,并進(jìn)行查表輸出,輸出數(shù)據(jù)為44H。對(duì)比可發(fā)現(xiàn)輸出數(shù)據(jù)與表中數(shù)據(jù)一致。由此表明,通過(guò)dps選取DPTR0和DPTRl,進(jìn)行數(shù)據(jù)查表操作無(wú)誤,即對(duì)PC指針模塊的修改無(wú)誤。
3.3 片外RAM數(shù)據(jù)讀寫(xiě)測(cè)試
   
對(duì)于片外RAM數(shù)據(jù)讀寫(xiě)測(cè)試,即大規(guī)模數(shù)據(jù)轉(zhuǎn)移,測(cè)試方案為:首先將DPTR0和DPTRl中分別寫(xiě)入地址actr0和adrl,再分別對(duì)這兩個(gè)地址寫(xiě)人數(shù)據(jù),最后將這兩個(gè)地址的數(shù)據(jù)通過(guò)DPTRO和DPTRl讀出,將讀出的結(jié)果與寫(xiě)入結(jié)果對(duì)比,具體測(cè)試波形如圖6所示。

    將dps置位(執(zhí)行指令75E180)選取DPR1后,將片外RAM中adrl數(shù)據(jù)讀出,輸出數(shù)據(jù)為77H;將dps復(fù)位(執(zhí)行指令75E100)選取DPTR0后,將adr0數(shù)據(jù)讀出,輸出數(shù)據(jù)為44H。經(jīng)對(duì)比可發(fā)現(xiàn)與所寫(xiě)入的數(shù)據(jù)一致。由此可表明,通過(guò)dps選擇DPTR0和DPTRl對(duì)片外RAM進(jìn)行數(shù)據(jù)讀寫(xiě)無(wú)誤,即表明對(duì)片外RAM地址模塊的修改無(wú)誤。
3.4 FPGA仿真測(cè)試
    基于MCS805l這款8051微控制器,我們還進(jìn)行了實(shí)際的FPGA仿真測(cè)試。首先利用RS232接口,在從計(jì)算機(jī)上將太規(guī)模數(shù)據(jù)接收并寫(xiě)入到MCS8051片外RAM的地址adr0中;再利用例程2所給方法,進(jìn)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移,將數(shù)據(jù)轉(zhuǎn)移寫(xiě)入到地址adrl中;最后通過(guò)RS232接口將adrl中數(shù)據(jù)發(fā)送到計(jì)算機(jī)。通過(guò)對(duì)比發(fā)送和接收的數(shù)據(jù)發(fā)現(xiàn),筆者對(duì)于DPTR的擴(kuò)展無(wú)誤。


結(jié)語(yǔ)
   
通過(guò)擴(kuò)展DPTR可使8051在大規(guī)模數(shù)據(jù)轉(zhuǎn)移時(shí)的執(zhí)行效率大大提高,這使得采用擴(kuò)展805l作為微控制器的嵌入式系統(tǒng),在大規(guī)模數(shù)據(jù)轉(zhuǎn)移時(shí),其處理速度將大大提高。利用文中所闡述的方法也可將DPTR擴(kuò)展為多組,但其具體應(yīng)用意義尚需進(jìn)一步探討。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉