引言
隨著微電子技術(shù)的飛速發(fā)展,集成電路規(guī)模按照摩爾定律(微芯片上集成的晶體管數(shù)目每18個(gè)月翻一番)飛速提高,片上系統(tǒng)(SystemOnChip,簡(jiǎn)稱SOC)技術(shù)成為國(guó)際超大規(guī)模集成電路的發(fā)展趨勢(shì)。在SOC系統(tǒng)設(shè)計(jì)中,為了能夠快速、穩(wěn)定的形成產(chǎn)品,IP核積累和復(fù)用技術(shù)逐漸成為各個(gè)芯片廠商的首選。在這樣的背景下,IP復(fù)用技術(shù)成為了集成電路設(shè)計(jì)的一個(gè)重要分支,很多設(shè)計(jì)廠商在購(gòu)買(mǎi)其它公司的IP核的同時(shí),也越來(lái)越重視本公司的IP核設(shè)計(jì)和積累。
DMA控制器是常見(jiàn)的總線設(shè)備之一,很多廠商都有自己的DMA控制器IP核。比如嵌入式處理器的龍頭ARM公司就有自己的DMA控制器解決方案提供給客戶,另外像Freescale,F(xiàn)ujitsu等芯片制造廠商都有自己的解決方案。本文通過(guò)介紹一種基于ARM總線之一的AHB總線的DMA控制器的IP核設(shè)計(jì),簡(jiǎn)述了IP核設(shè)計(jì)的流程和需要重點(diǎn)注意的地方。
DMA控制器
功能描述
一般而言,DMA控制器的功能與結(jié)構(gòu)是由本單位特定的系統(tǒng)結(jié)構(gòu)決定的。但是作為IP而言,DMA控制器又要有其一般性。DMA是指外部設(shè)備直接對(duì)計(jì)算機(jī)存儲(chǔ)器進(jìn)行讀寫(xiě)操作的I/O方式。這種方式下數(shù)據(jù)的讀寫(xiě)無(wú)需CPU執(zhí)行指令,也不經(jīng)過(guò)CPU內(nèi)部寄存器,而是利用系統(tǒng)的數(shù)據(jù)總線,由外設(shè)直接對(duì)存儲(chǔ)器寫(xiě)入或讀出,從而達(dá)到極高的傳輸速率?,F(xiàn)在DMA也可以在內(nèi)存之間或是外設(shè)之間直接進(jìn)行數(shù)據(jù)操作。DMA技術(shù)的重要性在于,利用它進(jìn)行數(shù)據(jù)存取時(shí)不需要CPU進(jìn)行干預(yù),可提高系統(tǒng)執(zhí)行應(yīng)用程序的效率。利用DMA傳送數(shù)據(jù)的另一個(gè)好處是數(shù)據(jù)直接在源地址和目的地址之間傳送,不需要是中間媒介。
通用的DMA控制器應(yīng)具有一下功能:
1.編程設(shè)定DMA的傳輸模式及其所訪問(wèn)內(nèi)存的地址區(qū)域。
2.屏蔽或接受外設(shè)或軟件的DMA請(qǐng)求。當(dāng)有多個(gè)設(shè)備同時(shí)請(qǐng)求時(shí),還要進(jìn)行優(yōu)先級(jí)排隊(duì),首先響應(yīng)最高級(jí)的請(qǐng)求。
3.向CPU或總線仲裁設(shè)備提出總線請(qǐng)求。
4.接收總線響應(yīng)信號(hào),接管總線控制。
5.在DMA控制器的管理下實(shí)現(xiàn)外設(shè)和存儲(chǔ)器、外設(shè)和外設(shè)或存儲(chǔ)器之間的數(shù)據(jù)直接傳輸。
6.在傳輸過(guò)程中進(jìn)行地址修改和傳輸量計(jì)數(shù)。當(dāng)要求的數(shù)據(jù)傳送完后,撤銷總線請(qǐng)求,交還總線控制權(quán)。
總而言之,DMA控制器一方面可以接管總線,直接在I/O接口和存儲(chǔ)器之間進(jìn)行讀寫(xiě)操作,即可以像CPU一樣視為總線的主設(shè)備,這是DMA與其它外設(shè)最根本的區(qū)別;另一方面,作為一個(gè)I/O器件,其DMA控制功能正式通過(guò)初始化編程來(lái)設(shè)置的。當(dāng)CPU對(duì)其寫(xiě)入或讀出時(shí),它又和其它的外設(shè)一樣成為總線的從屬器件。
而作為專用的DMA控制器又會(huì)有其特定的功能要求。比如對(duì)于AHB總線而言,需要支持Burst操作。另一方面,現(xiàn)在多數(shù)支持操作系統(tǒng)的嵌入式系統(tǒng)或計(jì)算機(jī)系統(tǒng)都使用虛擬內(nèi)存技術(shù)。這一技術(shù)的使用使得在操作系統(tǒng)層面上看到內(nèi)存地址與物理地址間并非一一映射,操作系統(tǒng)層面上連續(xù)的內(nèi)存地址在真實(shí)的物理內(nèi)存上并不一定連續(xù)。但是DMA控制器并不一定了解這一現(xiàn)象。為了解決這一問(wèn)題并提高傳輸效率,多數(shù)在高級(jí)嵌入式系統(tǒng)中使用的DMA控制器支持分散/集合LLI(LogicLinkItem)技術(shù)。
設(shè)計(jì)指標(biāo)本
DMA控制器的主要指標(biāo)如下:
$16個(gè)DMA通道,其中6個(gè)為獨(dú)立的軟件通道,另10個(gè)為軟硬件復(fù)用的通道。
$DMA讀數(shù)據(jù)與寫(xiě)數(shù)據(jù)獨(dú)立進(jìn)行。
$各通道獨(dú)立編程,獨(dú)立初始化。
$支持軟件復(fù)位。
$全面支持AHB總線協(xié)議。
$支持LLI技術(shù)。
總體設(shè)計(jì)
DMA控制器主要包括以下幾個(gè)模塊,其結(jié)構(gòu)圖如圖1所示。
$APB接口模塊:該部分主要實(shí)現(xiàn)APB總線讀寫(xiě)協(xié)議,并通過(guò)ARM配置DMA控制器的寄存器。
$控制寄存器模塊:該部分通過(guò)APB總線進(jìn)行配置,獲得DMA控制器的控制信息。該模塊主要由命令控制寄存器、狀態(tài)寄存器和中斷寄存器組成。
$DMA控制狀態(tài)機(jī)模塊:本模塊是DMA控制器的核心部分,負(fù)責(zé)發(fā)起和中止每一次DMA傳輸,同時(shí)負(fù)責(zé)每次DMA傳輸過(guò)程中的狀態(tài)轉(zhuǎn)換。
$通道模塊:該模塊包含了16個(gè)通道,其中10個(gè)是軟、硬件復(fù)用的,另外6個(gè)是軟件專用的。前者除了有常規(guī)的寄存器組外,還要負(fù)責(zé)檢測(cè)硬件的DMA傳輸請(qǐng)求;而后者則沒(méi)有這部分功能,但后者要支持LLI功能。常規(guī)的通道寄存器組由各個(gè)通道的源地址、目的地址、傳輸長(zhǎng)度以及通道控制寄存器等組成。
$優(yōu)先級(jí)控制模塊:本模塊有狀態(tài)寄存器和請(qǐng)求寄存器。ARM通過(guò)編程確定各個(gè)通道的優(yōu)先級(jí)順序。當(dāng)有多個(gè)DMA請(qǐng)求同時(shí)出現(xiàn)的時(shí)候,通過(guò)此模塊確定哪個(gè)請(qǐng)求優(yōu)先被響應(yīng)。
$AHB總線接口模塊:本模塊負(fù)責(zé)實(shí)現(xiàn)AHB總線讀寫(xiě)協(xié)議。
工作原理及流程
作為DMA控制器有其特殊性,主要體現(xiàn)在它既是總線的從設(shè)備,又是總線的主設(shè)備。因此,DMA控制器有兩個(gè)主要的狀態(tài)——空閑態(tài)與工作態(tài)。當(dāng)DMA控制器處于空閑態(tài)時(shí),它就相當(dāng)于一個(gè)總線的從設(shè)備,受到ARM的管理與控制。ARM通過(guò)編程配置DMA控制器的寄存器。
評(píng)論
查看更多