精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

ZYNQ-AXI DMA IP簡介

學(xué)習(xí)內(nèi)容

本文主要介紹關(guān)于AXI DMA的IP核相關(guān)內(nèi)容。

DMA簡介

DMA(Direct Memory Access,直接存儲器訪問)是計算機中一種內(nèi)存訪問技術(shù)。它允許某些硬件子系統(tǒng)可以獨立地直接讀寫系統(tǒng)內(nèi)存,而不需中央處理器( CPU)介入處理。

DMA 是用硬件實現(xiàn)存儲器與存儲器之間或存儲器與 I/O 設(shè)備之間直接進行高速數(shù)據(jù)傳輸。使用 DMA時, CPU 向 DMA 控制器發(fā)出一個存儲傳輸請求, 這樣當(dāng) DMA 控制器在傳輸?shù)臅r候, CPU 執(zhí)行其它操作,傳輸操作完成時 DMA 以中斷的方式通知 CPU。

為了發(fā)起傳輸事務(wù), DMA 控制器必須得到以下數(shù)據(jù):

  • 源地址 — 數(shù)據(jù)被讀出的地址。
  • 目的地址 — 數(shù)據(jù)被寫入的地址。
  • 傳輸長度 — 應(yīng)被傳輸?shù)淖止?jié)數(shù)。

    DMA 存儲傳輸?shù)倪^程如下:
  1. 配置用 DMA 傳輸數(shù)據(jù)到存儲器,處理器發(fā)出操作DMA的指令/代碼。
  2. DMA 控制器把數(shù)據(jù)從外設(shè)傳輸?shù)酱鎯ζ骰驈拇鎯ζ鞯酱鎯ζ?,而?CPU 騰出手來做其它操作。
  3. 數(shù)據(jù)傳輸完成后,向 CPU 發(fā)出一個中斷信號來通知它 DMA 傳輸可以關(guān)閉了。

AXI DMA IP簡介

ZYNQ 提供了兩種 DMA,一種是集成在 PS 中的硬核 DMA,另一種是 PL 中使用的軟核 AXI DMA IP。AXI DMA IP提供內(nèi)存和AX14-Stream接口的目標(biāo)外設(shè)之間的高帶寬直接內(nèi)存訪問。它可以選擇scatter/gather模式進行數(shù)據(jù)的傳輸搬移,可將CPU從數(shù)據(jù)搬運任務(wù)中解放出來。

功能框圖

IP的功能框圖如下:

由框圖可知,通過AXI4-Lite從接口訪問初始化、狀態(tài)并控制和管理寄存器。MM2S接口完成MemoryMap to Stream 的轉(zhuǎn)換,即存儲器映射轉(zhuǎn)換到AXI4-Stream接口轉(zhuǎn)換。同理S2MM接口完成Stream  to MemoryMap的轉(zhuǎn)換,即AXI4-Stream接口轉(zhuǎn)換到存儲器映射轉(zhuǎn)換。圖中標(biāo)注的三個接口只有在S/G模式下才會生成那三個接口進行IP的控制讀寫以及數(shù)據(jù)交互。

典型設(shè)計解讀

在IP的指導(dǎo)手冊中有下圖這樣的一個控制AXI DMA IP的設(shè)計系統(tǒng)。在圖中我們可以看到,對于處理器(microblaze),只需要使用少量的控制指令,即可完成高速的多數(shù)據(jù)傳輸。處理器(microblaze)通過interconnect互聯(lián)模塊連接到AXI4-Lite接口,進行IP的寄存器配置。在AXI DMA IP的完成數(shù)據(jù)傳輸時,通過MM2S_IntrOut,S2MM_IntrOut指示數(shù)據(jù)傳輸完成,并發(fā)送給處理器進行進一步操作。在圖中的系統(tǒng)AXI DMA IP使能了S/G模式,該存儲器映射接口通過互聯(lián)模塊連接到DDR控制端口,ctrStrm(控制Stream)、StatusStrm(判斷Stream狀態(tài))和SG R/W是在SG模式下使用的三個端口。剩下的MM2S和S2MM進行數(shù)據(jù)的交互和傳輸。

時鐘要求

AXI DMA IP,對于不同芯片信號的不同速度、等級下的最大時鐘頻率有不同的要求。在進行設(shè)計開發(fā)時,要根據(jù)設(shè)計芯片的具體型號滿足時序要求,避免出現(xiàn)時序偽例的現(xiàn)象。

對于時鐘的輸入端口,有以下端口:

  • m_axi_mm2s_aclk for MM2S interface
  • m_axi_s2mm_aclk for S2MM interface
  • s_axi_lite_aclk for AXI4-Lite control interface
  • m_axi_sg_clk for Scatter Gather Interface AXI DMA提供兩種時鐘模式,同步模式和異步模式。同步模式: 所有的邏輯都連接在一個單一的時鐘源,m_axi_mm2s_aclk、m_axi_s2mm_aclk、m_axi_sg_clk必須在一個相同的時鐘源下,s_axi_lite_aclk可以連接到更低的時鐘。異步模式: 所有邏輯都可以是異步的,但是s_axi_lite_aclk必須小于或等于m_axi_sg_aclk的時鐘頻率, m_axi_sg_aclk必須小于或等于m_axi_mm2s_aclk或m_axi_s2mm_aclk的時鐘。在異步模式下,這四類時鐘信號所影響到的接口信號,(在SG模式下和單一傳輸模式)如下圖所示:

復(fù)位

axi_resetn信號需要持續(xù)至少16個最慢的時鐘周期,并且需要和s_axi_lite_aclk保持同步。

編程指導(dǎo)

在AXI DMA IP中,一共有三個模式可以進行編程配置:

  • Direct Register Mode (Simple DMA)
  • Scatter/Gather Mode
  • Cyclic DMA Mode

Direct Register Mode (Simple DMA)

簡單DMA模式,該模式下,提供了在MM2S和S2MM通道上進行簡單的DMA傳輸?shù)呐渲?。只需要較少的FPGA資源,通過訪問DMACR、源地址或者目的地址和長度寄存器發(fā)起DMA的傳輸。當(dāng)傳輸完成后,如果使能了產(chǎn)生中斷輸出,那么DMASR寄存器相關(guān)聯(lián)的通道位會有效,即產(chǎn)生中斷輸出。

DMA的MM2S通道啟動順序:

  1. 設(shè)置運行/停止位為1 (MM2S_DMACR.RS=1),啟動MM2S通道運行。 停止位(DMASR.Halted)應(yīng)該取消上拉,表示MM2S通道正在運行。
  2. 可以通過向MM2S_DMACR.IOC_IrqEn和MM2S_DMACR.Err_IrqEn寫入1來啟用中斷。 當(dāng)AXI DMA配置為Direct Register 模式時,延遲中斷、延遲計數(shù)和閾值計數(shù)不被使用。
  3. 向MM2S_SA寄存器寫入有效的源地址。 如果AXI DMA配置的地址空間大于32,則對MM2S_SA MSB寄存器進行編程。如果AXI DMA沒有配置為數(shù)據(jù)重新對齊,則必須對齊有效地址,否則將出現(xiàn)未定義的結(jié)果。認為對齊是或非對齊是基于數(shù)據(jù)流的寬度。當(dāng)在Micro 模式下配置AXI DMA時,要進行指定正確的地址。在Micro 模式下配置AXI DMA時,是不關(guān)心4K邊界的。例如,如果內(nèi)存映射數(shù)據(jù)寬度= 32,則如果數(shù)據(jù)位于字偏移(32位偏移),即Ox0、0x4、0x8、OxC,等等,則數(shù)據(jù)對齊。如果DRE使能,并且數(shù)據(jù)寬度小于128,那么源地址可以是任何字節(jié)偏移量。
  4. 在MM2S LENGTH寄存器中寫入要傳輸?shù)淖止?jié)數(shù)。 寫為零的值沒有任何效果。如果該值不為零,則MM2S LENGTH決定了從MM2S AXI4接口讀取并輸出到MM2S AXI4- stream接口傳輸?shù)臄?shù)據(jù)個數(shù)。MM2S_LENGTH寄存器必須最后寫入。 所有其他MM2S寄存器都可以按任意順序?qū)懭搿T贛icro DMA下,此值不能超過[突發(fā)長度*(內(nèi)存映射數(shù)據(jù)寬度)/8]。

DMA的S2MM通道啟動順序:(類似MM2S通道啟動順序)

  1. 開啟/使能S2MM通道
  2. 如果需要,可以使能中斷
  3. 寫一個有效的源地址到S2MM_SA寄存器,如果沒有使能DRE功能,在指定起始地址時,要注意字節(jié)地址對齊,哪些地址對齊不對齊取決于Stream流的數(shù)據(jù)位寬。
  4. 寫傳輸?shù)淖止?jié)數(shù)到LENGTH寄存器。一個長度為0的值是無效的,而一個非0的值將決定存儲器映射到Stream流的數(shù)據(jù)個數(shù)。S2MM_LENGTH寄存器必須最后寫入。

Scatter/Gather Mode

S/G模式下,AXI DMA操作需要一個存儲DMA操作列表的內(nèi)存駐留數(shù)據(jù)結(jié)構(gòu)。這個指令列表被組織成所謂描述符鏈。每個描述符都有一個指向下一個要處理的描述符的指針。鏈中的最后一個描述符指向鏈中的第一個描述符。S/G模式允許一個包被多個描述符描述。此特性的典型用途是允許從內(nèi)存中的一個位置存儲或獲取頭,并從另一個位置存儲有效數(shù)據(jù)。利用這一點的程序可以提高吞吐量。利用幀起始位(TXSOF)和幀結(jié)束位(TXEOF)來描述緩沖區(qū)描述符鏈中的數(shù)據(jù)包。當(dāng)DMA獲取一個設(shè)置了TXSOF位的描述符時,將觸發(fā)包的開始。包繼續(xù)獲取后續(xù)的描述符,直到獲取一個設(shè)置了TXEOF位的描述符。在接收(S2MM)通道上,當(dāng)數(shù)據(jù)包開始被接收時,AXI DMA用RXSOF標(biāo)記描述符,指示軟件與此描述符相關(guān)聯(lián)的數(shù)據(jù)緩沖區(qū),包含數(shù)據(jù)包的開始。如果正在接收的包的字節(jié)數(shù)比描述符中指定的更長,則使用下一個描述符緩沖區(qū)來存儲接收包的其余部分。這個獲取和存儲過程繼續(xù)進行,直到整個接收包被傳輸完畢。接收包結(jié)束時正在處理的描述符被AXI DMA標(biāo)記為RXEOF=1。這向軟件表明,與此描述符相關(guān)聯(lián)的緩沖區(qū)包含包的結(jié)尾。每個描述符的狀態(tài)字段包含為特定描述符實際傳輸?shù)淖止?jié)數(shù)。該軟件可以通過從RXSOF描述符遍歷描述符鏈到RXEOF描述符來確定接收包傳輸?shù)目傋止?jié)數(shù)。Scatter Gather繼續(xù)獲取一個額外的描述符并存儲。這個過程在很大程度上改善了DMA性能。S/G模式從設(shè)置控制寄存器和描述符指針開始。簡單來說,就是把傳輸?shù)幕緟?shù)存儲到內(nèi)存中;這些參數(shù)被稱為BD(Buffer Descriptor),在工作時,通過SG的接口進行加載和更新BD的狀態(tài)從而進行對指定的位置的數(shù)據(jù)進行讀寫操作。

MM2S通道的DMA操作通過以下順序建立和啟動:

  1. 將起始描述符的地址寫入當(dāng)前描述符寄存器。 如果AXI DMA被配置為大于32的地址空間,那么也對當(dāng)前描述符的MSB的32位進行編程。
  2. 設(shè)置運行/停止位為1 (MM2S_DMACR.RS=1),啟動MM2S通道運行。  停止位(DMASR.Halted)應(yīng)該取消上拉,表示MM2S通道正在運行。
  3. 可以通過向MM2S_DMACR.IOC_IrqEn和MM2S_DMACR.Err_IrqEn寫入1來啟用中斷。
  4. 向尾部描述符寄存器寫入一個有效地址。 如果AXI DMA被配置為大于32的地址空間,那么也對尾部描述符的MSB 32位進行編程。
  5. 寫入尾描述符寄存器將觸發(fā)DMA開始從內(nèi)存中獲取描述符。 在多通道配置的情況下,當(dāng)數(shù)據(jù)包到達S2MM通道時開始獲取描述符。
  6. 對獲取的描述符進行處理,數(shù)據(jù)從內(nèi)存中讀取,然后輸出到MM2S流通道。

S2MM通道的DMA操作通過以下順序建立和啟動:

  1. 將起始描述符的地址寫入當(dāng)前描述符寄存器。 如果AXI DMA被配置為大于32的地址空間,那么也對當(dāng)前描述符的MSB 32位進行編程。
  2. 設(shè)置運行/停止位為1 (S2MM_DMACR.RS=1),啟動S2MM通道運行 停止位(DMASR.Halted)應(yīng)該取消上拉,表示MM2S通道正在運行。
  3. 可以通過向MM2S_DMACR.IOC_IrqEn和MM2S_DMACR.Err_IrqEn寫入1來啟用中斷。
  4. 向尾部描述符寄存器寫入一個有效地址。 如果AXI DMA被配置為大于32的地址空間,那么也對當(dāng)前描述符的MSB 32位進行編程。
  5. 寫入尾描述符寄存器將觸發(fā)DMA開始從內(nèi)存中獲取描述符。
  6. 對獲取的描述符進行處理,并將從S2MM流通道接收的任何數(shù)據(jù)寫入內(nèi)存。

Cyclic DMA Mode

通過對緩沖區(qū)描述符(BD)鏈設(shè)置進行某些更改,AXI DMA可以以循環(huán)模式運行。在循環(huán)模式下,DMA不中斷地獲取和處理相同的BDs。DMA繼續(xù)獲取和處理,直到停止或重置為止。為了使循環(huán)運行,BD鏈的設(shè)置如下圖所示:

在這個設(shè)置中,Tail BD指向第一個BD, Tail Descriptor(尾描述寄存器)沒有任何用途,僅用于觸發(fā)DMA。遵循在S/G模式中提到的相同編程順序。確保控制寄存器中的循環(huán)位已設(shè)置。在編寫了Tail Descriptor寄存器之后,DMA開始獲取和處理BDs(以環(huán)形方式設(shè)置),直到DMA停止或重置。

Reference

  1. PG021_axi_dma
  2. 正點原子開發(fā)視頻

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關(guān)注 17
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 九色www| 91久久精品美女高潮 | 国产乱一区二区三区视频 | 国产成人无码A片免费不卡 九草在线 | 亚洲国产成人精品一区二区三区 | 亚洲天堂爱爱 | 日韩一区二区三区不卡 | 国产美女主播一级成人毛片 | 依人香蕉| 又黄又粗暴的120秒免费GIF视频 | 黄色av一级片 | 女人久久久久久久 | 欧美精品久久久久久久亚洲调教 | 亚洲自拍另类欧美综合 | 亚洲精品久久久久58 | www.com久久久 | 和岳每晚弄的高潮嗷嗷叫视频 | 人妻精品久久久久中文字幕 | 国产精品嫩草影院久久 | 国产精品久人妻精品老妇 | 欧美国产综合色视频 | 一级黄色大片视频 | 一级体片a | 伊人开心网 | 99精品国产丝袜在线拍国语 | 少妇性色午夜淫片aaa播放 | 欧美激情777 | 波多野结衣高潮喷水在线观看 | 国产精品久久久久久久嫩草影视 | 日本熟妇中文字幕三级 | 熟女少妇人妻中文字幕 | 四虎久久精品国产亚洲a v | 午夜丁香婷婷 | 亚洲国内自拍愉拍 | www中文字幕在线观看 | 老师含紧一点h边做边走视频动 | 国产精品一区二区av交换 | xxxxx15hd中国hd| 斗罗大陆2绝世唐门第五季免费观看 | 久久欧美国产伦子伦精品 | 亚洲国产精品第一页 |