精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用超高速閃存微控制器實現快速內存傳輸

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-21 16:43 ? 次閱讀

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

概述

嵌入式系統設計人員和程序員一直在尋找巧妙的方法來突破其 8051 微控制器設計的性能極限。如果您的應用受到微控制器復制外部數據存儲器緩沖器或讀/寫存儲器映射外設的速率的限制,則可能會受益于使用更多片上硬件和更少軟件的方案。本應用筆記介紹了使用定時器/計數器作為終止固定長度復制例程的方法。將這種方法與達拉斯的超高速 8051 架構及其數據指針增強功能結合使用,可以以超過 2MBps 的速率復制數據,比以相同時鐘頻率運行并配備單個數據指針的標準 20 內核快 8051 倍以上。

XDATA 復制例程 - 原始 8051

最初的8051架構僅包含一個數據指針(DPTR = DPH + DPL),但提供了兩種間接訪問外部數據存儲器的不同方式。MOVX指令可以使用16位數據指針(例如,MOVX @DPTR,A)或8位工作寄存器(例如,MOVX @R0,A)來訪問MOVX數據空間。請注意,后一條指令使用 8 位寄存器指針,因此要求在執行指令之前使用指針的最高有效地址字節寫入端口 2。只有一個數據指針,在復制超過 256 字節的數據時管理源指針和目標指針需要大量使用工作寄存器進行臨時存儲。下面是使用單個數據指針復制數據時通常執行的代碼示例。

; 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 復制例程-超高速微控制器

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

; 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 復制例程 - 使用計時器/計數器

若要使用計時器/計數器,應用程序必須在復制例程期間提供計時器/計數器及其關聯的輸入引腳。基本思想是使用片內計數器來跟蹤和終止復制環路,而不是使用工作寄存器。/WR選通用作計數器的輸入信號。圖 1 顯示了一個硬件配置示例。

圖1.低電平有效WR選通計數的硬件圖。

圖1.低電平有效WR選通計數的硬件圖。

所有超高速微控制器定時器/計數器輸入引腳(T0、T1、T2)都能夠對相當于系統時鐘頻率四分之一的輸入頻率進行采樣。這意味著要采樣的輸入信號必須具有最小高電平和低電平時間,每個周期為2個系統時鐘周期。除了 1 周期或 2 周期尋呼模式 1 中最快的 MOVX 外,/WR 選通器還滿足所有其他外部 MOVX 操作的此標準。在進入復制循環之前,16 位計數器加載適當的值 (216- #bytes復制),定時器/計數器中斷被啟用,并且增強的數據指針配置為最快速的復制。復制的最后一個字節會導致計數器翻轉并生成計時器中斷,從而允許將代碼執行返回到主程序。

使用定時器/計數器方法的好處

使用計時器/計數器的主要好處是提高了性能,同時允許更寬容的 xdata 訪問時間。已經注意到,最快的復制循環執行時間是通過將外部總線結構配置為尋呼模式 1(端口 2 = 多路復用地址 MSB/LSB 和端口 0 = 數據)來實現的。盡管頁面模式 1 提供了終極性能,但它也需要最快的 xdata 訪問時間 (tRLDV < 中聯).計時器/計數器方法提供幾乎相同的性能,同時使最大 xdata 訪問時間幾乎翻倍。

此外,預計并非所有超高速微控制器設計都將使用新的總線結構。一些系統設計人員可能希望保留傳統的8051總線接口,甚至可能將超高速微控制器放入現有插座中。在這些情況下,計數器端接復制環路提供了高性能折衷方案。

由于定時器/計數器端接復制環路依賴于內部 16 位定時器硬件來計算外部讀/寫事件的數量,因此不需要單獨的 DJNZ 指令來跟蹤 16 位環路控制變量。這允許應用程序對大于 256 字節的數據長度執行高速同步傳輸。

表1比較了原始8051架構的復制環路與三種可能的超高速微控制器配置。計數器終止的復制循環已突出顯示。下表是計時器/計數器終止副本的示例代碼清單。代碼中突出顯示了復制循環,以便與前兩個示例進行比較。

微控制器選項 持續時間(毫秒)(1kbyte xdata copy-loop, sysclk=25MHz) 快速的 XDATA 訪問時間 (tRLDV)3 同步傳輸? 使用的特殊功能
超高速微控制器1 0.441 < 1 x tCLCL 頁面模式 1 總線結構
超高速微控制器1 0.480 < 2 x tCLC 是的 定時器/計數器和定時器輸入引腳
超高速微控制器1 0.601 < 2 x tCLC -
標準 80512 10.568 < 5 x tCLC -
1機器周期 = 1 x t中聯;增強型雙數據指針,具有自動 Inc/Dec、自動切換功能
2機器周期 = 12 x t中聯;單個數據指針
3參考單個器件數據表的精確數據RLDV最大值。

計數器終止復制方法(代碼示例)

;------------------------------------------------------------
; 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

使用內部 XRAM 實現更高的傳輸速率

使用定時器/計數器提高執行效率的基本原理不僅適用于外部數據復制例程,還可用于外部數據讀取或寫入內部數據存儲器。例如,如果應用要求從外部存儲器(或從并行外設)讀取或寫入不超過1024字節,則可以使用DS1C89/430的內部450kB數據存儲器進一步提高傳輸速率。

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

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

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7489

    瀏覽量

    151047
  • 計數器
    +關注

    關注

    32

    文章

    2253

    瀏覽量

    94353
  • 定時器
    +關注

    關注

    23

    文章

    3237

    瀏覽量

    114467
收藏 人收藏

    評論

    相關推薦

    調試MSP430系列微控制器上的閃存問題

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

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

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

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

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

    RM48Lx40 16/32-位RISC閃存微控制器數據表

    電子發燒友網站提供《RM48Lx40 16/32-位RISC閃存微控制器數據表.pdf》資料免費下載
    發表于 08-08 10:58 ?0次下載
    RM48Lx40 16/32-位RISC<b class='flag-5'>閃存</b><b class='flag-5'>微控制器</b>數據表

    RM42L432 16/32位RISC閃存微控制器數據表

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

    超高速直線模組究竟有多快?飛創直線模組最快速度是多少?

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

    超高速電機的氣隙為什么較大?

    ? ? ? ?超高速電機的氣隙較大的原因主要包括機械強度、減小定轉子之間的耦合電容、?振動噪聲方面、抑制共模軸電流和電磁兼容等方面的考慮。? ? ? ? ?1、機械強度原因。超高速電機由于轉速非常高
    的頭像 發表于 08-02 18:32 ?902次閱讀

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

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

    為什么無法通過modus ide恢復和閃存微控制器

    我面臨著將生成的 ELF 文件導入 modus ide 的問題。 之后,設置配置調試 elf 文件,沒有出錯,但無法通過 modus ide 恢復和閃存微控制器
    發表于 05-31 08:57

    如何在TC36x微控制器實現冗余閃存

    我需要在英飛凌 TC36x 微控制器實現冗余閃存。 實施過程中我需要做哪些事情?
    發表于 05-30 07:36

    16和32位RISC閃存微控制器TMS570LS0914數據表

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

    16和32位RISC閃存微控制器TMS570LS0714數據表

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

    在TC387微控制器實現內存映射,負載增加的原因是什么?

    我正在 TC387 微控制器實現內存映射。 關于內存映射,在 Linker 腳本中定義了新區域,并將數據映射到這些區域。 從功能上看,在有內存
    發表于 03-04 07:43

    微控制器基礎】——從歷史切入,了解微控制器的五個要素(上)

    微控制器基礎】——從歷史切入,了解微控制器的五個要素(上)
    的頭像 發表于 12-07 10:55 ?547次閱讀
    【<b class='flag-5'>微控制器</b>基礎】——從歷史切入,了解<b class='flag-5'>微控制器</b>的五個要素(上)

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

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