引言
隨著微電子技術的飛速發(fā)展,集成電路規(guī)模按照摩爾定律(微芯片上集成的晶體管數(shù)目每18個月翻一番)飛速提高,片上系統(tǒng)(SvstemOnChip,簡稱SOC)技術成為國際超大規(guī)模集成電路的發(fā)展趨勢。在SOC系統(tǒng)設計中,為了能夠快速、穩(wěn)定的形成產(chǎn)品,IP核積累和復用技術逐漸成為各個芯片廠商的首選。在這樣的背景下,IP復用技術成為了集成電路設計的一個重要分支,很多設計廠商在購買其它公司的IP核的同時,也越來越重視本公司的IP核設計和積累。
DMA控制器是常見的總線設備之一,很多廠商都有自己的DMA控制器IP核。比如嵌入式處理器的龍頭ARM公司就有自己的DMA控制器解決方案提供給客戶,另外像Freescale,F(xiàn)uiitsu等芯片制造廠商都有自己的解決方案。本文通過介紹一種基于ARM總線之一的AHB總線的DMA控制器的IP核設計,簡述了IP核設計的流程和需要重點注意的地方。

DMA控制器
功能描述
一般而言,DMA控制器的功能與結構是由本單位特定的系統(tǒng)結構決定的。但是作為IP而言,DMA控制器又要有其一般性。DMA是指外部設備直接對計算機存儲器進行讀寫操作的I/O方式。這種方式下數(shù)據(jù)的讀寫無需CPU執(zhí)行指令,也不經(jīng)過CPU內部寄存器,而是利用系統(tǒng)的數(shù)據(jù)總線,由外設直接對存儲器寫入或讀出,從而達到極高的傳速率
現(xiàn)在DMA也可以在。內存之間或是外設之間直接進行數(shù)據(jù)操作。DMA技術的重要性在于,利用它進行數(shù)據(jù)存取時不需要CPU進行干預,可提高系統(tǒng)執(zhí)行應用程序的效率。利用DMA傳送數(shù)據(jù)的另一個好處是數(shù)據(jù)直接在源地址和目的地址之間傳送,不需要是中間媒介。
通用的DMA控制器應具有一下功能:
1.編程設定DMA的傳輸模式及其所訪問內存的地址區(qū)域。
2.屏蔽或接受外設或軟件的DMA請求。當有多個設備同時請求時,還要進行優(yōu)先級排隊,首先響應最高級的請求。
3.向CPU或總線仲裁設備提出總線請求。
4.接收總線響應信號,接管總線控制。
?。担贒MA控制器的管理下實現(xiàn)外設和存儲器、外設和外設或存儲器之間的數(shù)據(jù)直接傳輸。
空則自動停止寫數(shù)據(jù)。當讀數(shù)據(jù)部分完成了此次DMA傳輸要求的長度后,狀態(tài)機進入下一個子狀態(tài),等待寫數(shù)據(jù)部分將數(shù)據(jù)全部寫完。當完成全部操作后,DMA控制器會向發(fā)起DMA傳輸請求的設備發(fā)出信號,告知DMA傳輸順利完成,要求該設備撤銷DMA傳輸請求,并歸還總線控制權。至此DMA控制器回到空閑狀態(tài),等待下一次DMA傳輸請求。
一般而言,DMA控制器在總線仲裁器中是優(yōu)先級最低的設備。因此,當有其它更高優(yōu)先級的總線主設備要求總線資源時,DMA控制器會被剝奪總線使用的權利,此時DMA控制器將進入等待狀態(tài),直到優(yōu)先級更高的總線主設備釋放總線控制權后再進入傳輸狀態(tài)。當軟件提出申請,完成內存之間的大量DMA傳輸時,一般會使用LLI功能。LLI功能針對的虛擬內存空間
與物理內存空間映射的不一致性,為了提高傳輸性能而引入的一種傳輸機制。作為LLI傳輸,ARM需要編程給DMA控制器,告知LLI列表的地址,并啟動DMA傳輸。當DMA控制器發(fā)現(xiàn)是LLI傳輸時,它會到LLI列表中讀取第一次DMA傳輸?shù)脑吹刂?、目的地址、傳輸長度以及下一個LLI列表的地址并存入寄存器。當此次DMA傳輸結束后,DMA控制器會自動到下一個LLI列表中讀取下一次DMA傳輸?shù)男畔ⅰ_@個鏈表傳輸過程直到LLI寄存器中的內容為“0”時中止。
基于ASIC的考慮#e#
基于ASIC的考慮
關于總線
根據(jù)AMBA協(xié)議,AHB總線支持字節(jié)、半字和全字操作。因此DMA控制器在這點上符合AHB協(xié)議的要求。DMA控制器默認32位數(shù)據(jù)線,因此需要根據(jù)讀寫地址以及讀數(shù)據(jù)操作類型將讀入的數(shù)據(jù)放入32位的FIFO中,寫出的時候再根據(jù)地址和寫數(shù)據(jù)的操作類型將數(shù)據(jù)從FIFO中放到寫數(shù)據(jù)總線上。如字節(jié)操作時,根據(jù)讀地址從讀到的一個字的數(shù)據(jù)中選取合適的字節(jié)放到FIFO中的最低字節(jié);寫的時候從FIFO最低部分取數(shù),根據(jù)寫地址將此字節(jié)放到寫數(shù)據(jù)相應的部分,其余位補零。
作為ASIC而言,一般情況下,三態(tài)只用于輸入輸出的管腳上。即使是總線在芯片內部也是將讀數(shù)據(jù)線與寫數(shù)據(jù)線分開使用的。本設計秉承這一原則,將讀寫數(shù)據(jù)線分開。
作為DMA傳輸,地址的變更需要靈。有時候讀寫地址需要增加,有時候地址需要不變。當增加的時候,也要根據(jù)傳輸?shù)念愋蜎Q定地址增加1、2或4。
關于復位
復位是ASIC設計中最容易出問題的一環(huán)。DMA控制器主要有兩種復位方式,一種是上電復位,即異步復位,另一種是軟件復位,即同步復位。
異步復位通過將全部D-觸發(fā)器的Reset端接到復位信號線上,無需時鐘就可以實現(xiàn)的復位。一般情況下在上電的時候作一次。而根據(jù)功能的需要,當系統(tǒng)出現(xiàn)故障,或軟件需要強行中止一次DMA傳輸?shù)臅r候,則需要軟件通過配置寄存器實現(xiàn)復位功能。此時就需要同步復位。
關于綜合
由于DMA控制器工作在高速總線上,總線時鐘最高可以達到200M,故在做前端設計的時候要特別注意。
以優(yōu)先級判斷為例。優(yōu)先級判斷本質就是16個數(shù)字比大小。為了使時間復雜度最小,不采取經(jīng)典的“冒泡排序”,而是對半排序法。這樣比較4次就可以得到需要的數(shù)據(jù)。四級MUX對于低頻而言不算很困難,但是對于高頻而言,為了能夠滿足時序要求,就需要在第二次比較之后插入一組觸發(fā)器。
結語
本文討論了一種基于AMBA總線的DMA控制器的IP核設計,結合這個實際的設計,討論了IP復用技術的設計方法。這個設計不依賴于具體的FPGA或ASIC型號或工藝,因此其可移植性被大大增加。另一方面本設計綜合出來的DMA控制器是20K門,比起ARM公司的DMAC控制器的68K門,在面積方面也有很大的優(yōu)勢。
IP復用技術越來越成為嵌入式系統(tǒng)的發(fā)展趨勢。這種設計方法順應了超大規(guī)模集成電路的發(fā)展潮流,必將成為這一領域發(fā)展的方向。
電子發(fā)燒友App
















































評論