0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用超高速閃存微控制器實(shí)現(xiàn)快速內(nèi)存?zhèn)鬏?/h1>

達(dá)拉斯半導(dǎo)體超高速閃存微控制器具有雙數(shù)據(jù)指針,具有自動(dòng)遞增/遞減和切換選擇功能。本應(yīng)用筆記將采用一個(gè)數(shù)據(jù)指針的原始8051架構(gòu)與DS89C430和DS89C450的新架構(gòu)及其更高的數(shù)據(jù)移動(dòng)效率進(jìn)行了比較。本文提供了大量代碼示例,以幫助理解該超高速微控制器的雙數(shù)據(jù)指針的使用。

概述

嵌入式系統(tǒng)設(shè)計(jì)人員和程序員一直在尋找巧妙的方法來(lái)突破其 8051 微控制器設(shè)計(jì)的性能極限。如果您的應(yīng)用受到微控制器復(fù)制外部數(shù)據(jù)存儲(chǔ)器緩沖器或讀/寫(xiě)存儲(chǔ)器映射外設(shè)的速率的限制,則可能會(huì)受益于使用更多片上硬件和更少軟件的方案。本應(yīng)用筆記介紹了使用定時(shí)器/計(jì)數(shù)器作為終止固定長(zhǎng)度復(fù)制例程的方法。將這種方法與達(dá)拉斯的超高速 8051 架構(gòu)及其數(shù)據(jù)指針增強(qiáng)功能結(jié)合使用,可以以超過(guò) 2MBps 的速率復(fù)制數(shù)據(jù),比以相同時(shí)鐘頻率運(yùn)行并配備單個(gè)數(shù)據(jù)指針的標(biāo)準(zhǔn) 20 內(nèi)核快 8051 倍以上。

XDATA 復(fù)制例程 - 原始 8051

最初的8051架構(gòu)僅包含一個(gè)數(shù)據(jù)指針(DPTR = DPH + DPL),但提供了兩種間接訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器的不同方式。MOVX指令可以使用16位數(shù)據(jù)指針(例如,MOVX @DPTR,A)或8位工作寄存器(例如,MOVX @R0,A)來(lái)訪(fǎng)問(wèn)MOVX數(shù)據(jù)空間。請(qǐng)注意,后一條指令使用 8 位寄存器指針,因此要求在執(zhí)行指令之前使用指針的最高有效地址字節(jié)寫(xiě)入端口 2。只有一個(gè)數(shù)據(jù)指針,在復(fù)制超過(guò) 256 字節(jié)的數(shù)據(jù)時(shí)管理源指針和目標(biāo)指針需要大量使用工作寄存器進(jìn)行臨時(shí)存儲(chǔ)。下面是使用單個(gè)數(shù)據(jù)指針復(fù)制數(shù)據(jù)時(shí)通常執(zhí)行的代碼示例。

; Original 8051 Copy - Single DPTR
; R6:R7 control copy length
; R4:R0 used for source/dest DPTR hi/lo temp storage
loop: ; Cycle Count @ 12clks/cycle
movx a,@dptr ; 2
inc dptr ; 2
xch a,r0 ; 1
xch a,dpl ; 1
xch a,r0 ; 1
xch a,r4 ; 1
xch a,dph ; 1
xch a,r4 ; 1
movx @dptr,a ; 2
inc dptr ; 2
xch a,r0 ; 1
xch a,dpl ; 1
xch a,r0 ; 1
xch a,r4 ; 1
xch a,dph ; 1
xch a,r4 ; 1
djnz r7,loop ; 2 => 22cycles * length
djnz r6,loop ; 2 => 2cycles * (1 + (length/256))

XDATA 復(fù)制例程-超高速微控制器

超高速微控制器包含兩個(gè)數(shù)據(jù)指針(DPTR = DPH + DPL;DPTR1 = DPH1 + DPL1),允許單獨(dú)的源和目標(biāo)數(shù)據(jù)指針。此外,它還實(shí)現(xiàn)了硬件控件,以在數(shù)據(jù)指針之間自動(dòng)切換,并自動(dòng)遞增或遞減活動(dòng)數(shù)據(jù)指針,以響應(yīng)某些與 DPTR 相關(guān)的指令。有關(guān)增強(qiáng)型雙數(shù)據(jù)指針的完整詳細(xì)信息,請(qǐng)參閱超高速微控制器用戶(hù)指南。下面的代碼演示了增強(qiáng)的雙數(shù)據(jù)指針如何簡(jiǎn)化復(fù)制例程。自動(dòng)切換活動(dòng)數(shù)據(jù)指針的指令標(biāo)有 [T],自動(dòng)前進(jìn)數(shù)據(jù)指針的指令標(biāo)有 [+/-]。為了與原始8051架構(gòu)進(jìn)行比較,假設(shè)了標(biāo)準(zhǔn)的8051外部P2,P0存儲(chǔ)器總線(xiàn)結(jié)構(gòu),從而給出了5個(gè)時(shí)鐘周期的最小MOVX持續(xù)時(shí)間(1個(gè)時(shí)鐘周期用于MOVX操作碼提取,4個(gè)時(shí)鐘周期用于數(shù)據(jù)存儲(chǔ)器訪(fǎng)問(wèn))。雖然頁(yè)面模式 1 外部總線(xiàn)配置的周期計(jì)數(shù)未反映在下面的代碼示例中,但應(yīng)該注意的是,頁(yè)面模式 1 確實(shí)提供了絕對(duì)的最小外部 MOVX 持續(xù)時(shí)間(3 個(gè)時(shí)鐘周期 = MOVX 操作碼提取的 1 個(gè)時(shí)鐘周期 + 數(shù)據(jù)存儲(chǔ)器訪(fǎng)問(wèn)的 2 個(gè)時(shí)鐘周期)。

; Ultra High-Speed Micro Copy - Enhanced Dual DPTRs
; DPS.4 (AID) = 1; DPS.5 (TSL) = 1;
; R6:R7 control copy length
loop: ; Cycle Count @ 1clk/cycle
movx a,@dptr ; 5 [T][+/-]
movx @dptr,a ; 5 [T][+/-]
djnz r7,loop ; 5 => 15 cycles * length
djnz r6,loop ; 5 => 5 cycles * (1 +(length/256))

XDATA 復(fù)制例程 - 使用計(jì)時(shí)器/計(jì)數(shù)器

若要使用計(jì)時(shí)器/計(jì)數(shù)器,應(yīng)用程序必須在復(fù)制例程期間提供計(jì)時(shí)器/計(jì)數(shù)器及其關(guān)聯(lián)的輸入引腳?;舅枷胧鞘褂闷瑑?nèi)計(jì)數(shù)器來(lái)跟蹤和終止復(fù)制環(huán)路,而不是使用工作寄存器。/WR選通用作計(jì)數(shù)器的輸入信號(hào)。圖 1 顯示了一個(gè)硬件配置示例。

圖1.低電平有效WR選通計(jì)數(shù)的硬件圖。

圖1.低電平有效WR選通計(jì)數(shù)的硬件圖。

所有超高速微控制器定時(shí)器/計(jì)數(shù)器輸入引腳(T0、T1、T2)都能夠?qū)ο喈?dāng)于系統(tǒng)時(shí)鐘頻率四分之一的輸入頻率進(jìn)行采樣。這意味著要采樣的輸入信號(hào)必須具有最小高電平和低電平時(shí)間,每個(gè)周期為2個(gè)系統(tǒng)時(shí)鐘周期。除了 1 周期或 2 周期尋呼模式 1 中最快的 MOVX 外,/WR 選通器還滿(mǎn)足所有其他外部 MOVX 操作的此標(biāo)準(zhǔn)。在進(jìn)入復(fù)制循環(huán)之前,16 位計(jì)數(shù)器加載適當(dāng)?shù)闹?(216- #bytes復(fù)制),定時(shí)器/計(jì)數(shù)器中斷被啟用,并且增強(qiáng)的數(shù)據(jù)指針配置為最快速的復(fù)制。復(fù)制的最后一個(gè)字節(jié)會(huì)導(dǎo)致計(jì)數(shù)器翻轉(zhuǎn)并生成計(jì)時(shí)器中斷,從而允許將代碼執(zhí)行返回到主程序。

使用定時(shí)器/計(jì)數(shù)器方法的好處

使用計(jì)時(shí)器/計(jì)數(shù)器的主要好處是提高了性能,同時(shí)允許更寬容的 xdata 訪(fǎng)問(wèn)時(shí)間。已經(jīng)注意到,最快的復(fù)制循環(huán)執(zhí)行時(shí)間是通過(guò)將外部總線(xiàn)結(jié)構(gòu)配置為尋呼模式 1(端口 2 = 多路復(fù)用地址 MSB/LSB 和端口 0 = 數(shù)據(jù))來(lái)實(shí)現(xiàn)的。盡管頁(yè)面模式 1 提供了終極性能,但它也需要最快的 xdata 訪(fǎng)問(wèn)時(shí)間 (tRLDV < 中聯(lián)).計(jì)時(shí)器/計(jì)數(shù)器方法提供幾乎相同的性能,同時(shí)使最大 xdata 訪(fǎng)問(wèn)時(shí)間幾乎翻倍。

此外,預(yù)計(jì)并非所有超高速微控制器設(shè)計(jì)都將使用新的總線(xiàn)結(jié)構(gòu)。一些系統(tǒng)設(shè)計(jì)人員可能希望保留傳統(tǒng)的8051總線(xiàn)接口,甚至可能將超高速微控制器放入現(xiàn)有插座中。在這些情況下,計(jì)數(shù)器端接復(fù)制環(huán)路提供了高性能折衷方案。

由于定時(shí)器/計(jì)數(shù)器端接復(fù)制環(huán)路依賴(lài)于內(nèi)部 16 位定時(shí)器硬件來(lái)計(jì)算外部讀/寫(xiě)事件的數(shù)量,因此不需要單獨(dú)的 DJNZ 指令來(lái)跟蹤 16 位環(huán)路控制變量。這允許應(yīng)用程序?qū)Υ笥?256 字節(jié)的數(shù)據(jù)長(zhǎng)度執(zhí)行高速同步傳輸。

表1比較了原始8051架構(gòu)的復(fù)制環(huán)路與三種可能的超高速微控制器配置。計(jì)數(shù)器終止的復(fù)制循環(huán)已突出顯示。下表是計(jì)時(shí)器/計(jì)數(shù)器終止副本的示例代碼清單。代碼中突出顯示了復(fù)制循環(huán),以便與前兩個(gè)示例進(jìn)行比較。

微控制器選項(xiàng) 持續(xù)時(shí)間(毫秒)(1kbyte xdata copy-loop, sysclk=25MHz) 快速的 XDATA 訪(fǎng)問(wèn)時(shí)間 (tRLDV)3 同步傳輸? 使用的特殊功能
超高速微控制器1 0.441 < 1 x tCLCL 頁(yè)面模式 1 總線(xiàn)結(jié)構(gòu)
超高速微控制器1 0.480 < 2 x tCLC 是的 定時(shí)器/計(jì)數(shù)器和定時(shí)器輸入引腳
超高速微控制器1 0.601 < 2 x tCLC -
標(biāo)準(zhǔn) 80512 10.568 < 5 x tCLC -
1機(jī)器周期 = 1 x t中聯(lián);增強(qiáng)型雙數(shù)據(jù)指針,具有自動(dòng) Inc/Dec、自動(dòng)切換功能
2機(jī)器周期 = 12 x t中聯(lián);單個(gè)數(shù)據(jù)指針
3參考單個(gè)器件數(shù)據(jù)表的精確數(shù)據(jù)RLDV最大值。

計(jì)數(shù)器終止復(fù)制方法(代碼示例)

;------------------------------------------------------------
; Demonstrate use of Timer/Counter 1 to terminate copy loop
; Use P3.6 (Active-Low WR) as an input to Timer/Counter 1 (P3.5)
; In this example:
; 1) Source, dest, and length defined as constants.
; 2) Code saves only DPTR0 state under the assumption that a
; single DPTR is normally used and that the second (DPTR1)
; is enabled only for certain routines (such as this one).
; 3) Code disables all other interrupts during the copy.
; 4) External non-overlapping xdata to xdata transfer
;------------------------------------------------------------
$include(420.def) ; include file w/SFRs
source equ 0100h ; source xdata address
dest equ 0200h ; dest xdata address
length equ 256d ; #bytes to copy
;------------------------------------------------------------
org 0h
ljmp 0100h
;------------------------------------------------------------
;Timer/Counter 1 interrupt
;------------------------------------------------------------
org 1bh
clr tr1 ; disable timer/counter 1
pop acc ; pop 'ajmp' loop addr
pop acc ; from the stack
pop dps ; return pre-transfer
pop dph ; DPTR state
pop dpl
pop ie ; return interrupt config
pop eie
reti ; back to instruction
; after "xmemcpy_.." call
;------------------------------------------------------------
; Main
;------------------------------------------------------------
org 0100h
orl tmod, #50h ; 16-bit counter
anl ckcon, #0F8h ; fast 2-cycle MOVX
call xmemcpy_count ; call xdata copy code
sjmp $
;------------------------------------------------------------
; 1) Save interrupt enable registers, make only T/C#1 enabled
; 2) Save DPTR0
; 3) Timer/Counter 1 loaded with (2^16-#bytes to copy)
; 4) Configure source/destination pointers
; 5) Execute copy loop
; - last write rolls the Counter
; - Timer/Counter 1 Interrupt breaks the loop
;------------------------------------------------------------
xmemcpy_count:
push eie
push ie
mov eie, #00h ; disable other ints
mov ie, #88h ; EA=1, ET1=1
push dpl ;save DPTR state
push dph
push dps
mov th1, #high(-length) ; copy length
mov tl1, #low(-length)
setb tr1 ; enable Timer1
orl dps, #30h ; SEL=0,TSL=1, AID=1
mov dptr, #source ; DPTR0 = source addr
mov dptr, #dest ; DTPR1 = dest addr
transfer:
movx a, @dptr ;[5] read from @DPTR0
movx @dptr, a ;[5] write to @DPTR1
ajmp transfer ;[2] in loop etil int
; ----
; [12] total
end

使用內(nèi)部 XRAM 實(shí)現(xiàn)更高的傳輸速率

使用定時(shí)器/計(jì)數(shù)器提高執(zhí)行效率的基本原理不僅適用于外部數(shù)據(jù)復(fù)制例程,還可用于外部數(shù)據(jù)讀取或?qū)懭雰?nèi)部數(shù)據(jù)存儲(chǔ)器。例如,如果應(yīng)用要求從外部存儲(chǔ)器(或從并行外設(shè))讀取或?qū)懭氩怀^(guò)1024字節(jié),則可以使用DS1C89/430的內(nèi)部450kB數(shù)據(jù)存儲(chǔ)器進(jìn)一步提高傳輸速率。

由于內(nèi)部MOVX操作只需要2個(gè)周期,因此讀/寫(xiě)傳輸環(huán)路(到目前為止一直是討論的主題)可以減少到9個(gè)周期,有效傳輸速率為3.67MBps(@33MHz),并且僅占用4B的代碼空間(下面的代碼)。請(qǐng)記住,兩個(gè)MOVX操作之一,無(wú)論是讀取還是寫(xiě)入,都必須在外部存儲(chǔ)器上執(zhí)行,以便/RD或/WR選通遞遞增加定時(shí)器/計(jì)數(shù)器,最終終止傳輸環(huán)路。下面的第一個(gè)代碼示例給出了對(duì)應(yīng)于外部 MOVX 寫(xiě)入的周期計(jì)數(shù),第二個(gè)示例顯示了外部 MOVX 讀取。另請(qǐng)注意,當(dāng)計(jì)數(shù)/RD信號(hào)時(shí),計(jì)數(shù)器應(yīng)初始化為[216- (#bytes復(fù)制 +1)],以便在循環(huán)中斷之前進(jìn)行最終的字節(jié)寫(xiě)入。

loop: ; Ultra High-Speed Microcontroller User's Guide Cycle Count / Byte Count
movx a,@dptr ; 2 (internal MOVX) / 1
movx @dptr,a ; 5 (external MOVX) / 1
ajmp loop ; 2 / 2
; 9 cycles / 4 bytes
-- OR --
loop: ; Ultra High-Speed Microcontroller User's Guide Cycle Count / Byte Count
movx a,@dptr ; 5 (external MOVX) / 1
movx @dptr,a ; 2 (internal MOVX) / 1
ajmp loop ; 2 / 2
; 9 cycles / 4 bytes

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7396

    瀏覽量

    150636
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2248

    瀏覽量

    94181
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3228

    瀏覽量

    114155
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    調(diào)試MSP430系列微控制器上的閃存問(wèn)題

    電子發(fā)燒友網(wǎng)站提供《調(diào)試MSP430系列微控制器上的閃存問(wèn)題.pdf》資料免費(fèi)下載
    發(fā)表于 10-09 10:27 ?0次下載
    調(diào)試MSP430系列<b class='flag-5'>微控制器</b>上的<b class='flag-5'>閃存</b>問(wèn)題

    C2000?微控制器的USB閃存編程

    電子發(fā)燒友網(wǎng)站提供《C2000?微控制器的USB閃存編程.pdf》資料免費(fèi)下載
    發(fā)表于 09-26 11:30 ?0次下載
    C2000?<b class='flag-5'>微控制器</b>的USB<b class='flag-5'>閃存</b>編程

    C2000?微控制器的串行閃存編程

    電子發(fā)燒友網(wǎng)站提供《C2000?微控制器的串行閃存編程.pdf》資料免費(fèi)下載
    發(fā)表于 09-03 10:15 ?0次下載
    C2000?<b class='flag-5'>微控制器</b>的串行<b class='flag-5'>閃存</b>編程

    RM42L432 16/32位RISC閃存微控制器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《RM42L432 16/32位RISC閃存微控制器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-08 09:52 ?0次下載
    RM42L432 16/32位RISC<b class='flag-5'>閃存</b><b class='flag-5'>微控制器</b>數(shù)據(jù)表

    超高速直線(xiàn)模組究竟有多快?飛創(chuàng)直線(xiàn)模組最快速度是多少?

    超高速直線(xiàn)模組速度每秒幾毫米至幾十米。飛創(chuàng)直線(xiàn)模組速度快,提供定制化服務(wù)。選擇時(shí)需考慮負(fù)載、行程、精度等因素,不同品牌和型號(hào)性能各異。
    的頭像 發(fā)表于 08-07 09:57 ?220次閱讀
    <b class='flag-5'>超高速</b>直線(xiàn)模組究竟有多快?飛創(chuàng)直線(xiàn)模組最<b class='flag-5'>快速</b>度是多少?

    如何通過(guò)Miniwiggler V3將labview程序閃存微控制器

    我正試圖通過(guò) Miniwiggler V3 將 labview 程序閃存微控制器中,但我找不到任何說(shuō)明如何操作的文檔。 我是新手,有沒(méi)有什么方法可以直接閃存程序?
    發(fā)表于 07-04 06:00

    為什么無(wú)法通過(guò)modus ide恢復(fù)和閃存微控制器?

    我面臨著將生成的 ELF 文件導(dǎo)入 modus ide 的問(wèn)題。 之后,設(shè)置配置調(diào)試 elf 文件,沒(méi)有出錯(cuò),但無(wú)法通過(guò) modus ide 恢復(fù)和閃存微控制器
    發(fā)表于 05-31 08:57

    如何在TC36x微控制器實(shí)現(xiàn)冗余閃存?

    我需要在英飛凌 TC36x 微控制器實(shí)現(xiàn)冗余閃存。 實(shí)施過(guò)程中我需要做哪些事情?
    發(fā)表于 05-30 07:36

    16和32位RISC閃存微控制器TMS570LS0914數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《16和32位RISC閃存微控制器TMS570LS0914數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-20 14:41 ?0次下載
    16和32位RISC<b class='flag-5'>閃存</b><b class='flag-5'>微控制器</b>TMS570LS0914數(shù)據(jù)表

    16和32位RISC閃存微控制器TMS570LS0714數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《16和32位RISC閃存微控制器TMS570LS0714數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-20 14:39 ?0次下載
    16和32位RISC<b class='flag-5'>閃存</b><b class='flag-5'>微控制器</b>TMS570LS0714數(shù)據(jù)表

    在TC387微控制器實(shí)現(xiàn)內(nèi)存映射,負(fù)載增加的原因是什么?

    我正在 TC387 微控制器實(shí)現(xiàn)內(nèi)存映射。 關(guān)于內(nèi)存映射,在 Linker 腳本中定義了新區(qū)域,并將數(shù)據(jù)映射到這些區(qū)域。 從功能上看,在有內(nèi)存
    發(fā)表于 03-04 07:43

    微控制器基礎(chǔ)】—— 從歷史切入,了解微控制器的五個(gè)要素(下)

    微控制器基礎(chǔ)】—— 從歷史切入,了解微控制器的五個(gè)要素(下)
    的頭像 發(fā)表于 12-06 17:23 ?489次閱讀
    【<b class='flag-5'>微控制器</b>基礎(chǔ)】—— 從歷史切入,了解<b class='flag-5'>微控制器</b>的五個(gè)要素(下)

    性能超群的含閃存存儲(chǔ)、8引腳PIC微控制器

    電子發(fā)燒友網(wǎng)站提供《性能超群的含閃存存儲(chǔ)、8引腳PIC微控制器.pdf》資料免費(fèi)下載
    發(fā)表于 11-17 11:02 ?0次下載
    性能超群的含<b class='flag-5'>閃存</b>存儲(chǔ)<b class='flag-5'>器</b>、8引腳PIC<b class='flag-5'>微控制器</b>

    EtherCAT超高速實(shí)時(shí)運(yùn)動(dòng)控制卡XPCIE1032H上位機(jī)C#開(kāi)發(fā)(一):驅(qū)動(dòng)安裝與建立連接

    超高速實(shí)時(shí)運(yùn)動(dòng)控制卡XPCIE1032H硬件介紹、交互原理以及指令說(shuō)明。
    的頭像 發(fā)表于 11-10 14:00 ?689次閱讀
    EtherCAT<b class='flag-5'>超高速</b>實(shí)時(shí)運(yùn)動(dòng)<b class='flag-5'>控制</b>卡XPCIE1032H上位機(jī)C#開(kāi)發(fā)(一):驅(qū)動(dòng)安裝與建立連接

    如何檢測(cè)復(fù)雜的超高速調(diào)制光信號(hào)?

    如何檢測(cè)復(fù)雜的超高速調(diào)制光信號(hào)? 1. 背景介紹 隨著通信技術(shù)的不斷發(fā)展,越來(lái)越多的通信系統(tǒng)采用了超高速調(diào)制光信號(hào)傳輸數(shù)據(jù)。超高速調(diào)制光信號(hào)的傳輸
    的頭像 發(fā)表于 10-30 11:01 ?457次閱讀