覃洪英
(長江大學電子信息學院 湖北荊州)
基于NiosII的DMA傳輸及調試
覃洪英
(長江大學電子信息學院 湖北荊州)
文章通過波碼開關上的數(shù)據向SDRAM的DMA傳輸,介紹了基于NiosII進行DMA傳輸?shù)倪^程及調試方法。在定制一個包含DMA控制器的SOPC系統(tǒng)時,需對DMA控制器硬件進行相關參數(shù)配置;在軟件編程時需根據DMA傳輸中源地址和目的地址是外設和存儲器的不同,分別選擇開啟發(fā)送和接收通道;在NiosIIIDE中加載μC/OS-II操作系統(tǒng),指定了文件的存放路徑,則可在文件中觀察傳輸?shù)臄?shù)據。
NiosII;DMA傳輸;波碼開關;SDRAM
在一般的程序控制傳送方式(包括查詢與中斷方式)下,數(shù)據從存儲器送到外設、或從外設送到存儲器,都要經過CPU的累加器中轉,再加上檢查是否傳送完畢以及修改內存地址等操作都由程序控制,要花費不少時間。采用DMA傳送方式是讓存儲器與外設、存儲器與存儲器之間直接交換數(shù)據,不需要經過累加器,減少了中間環(huán)節(jié),并且內存地址的修改,傳送完畢的結果報告都由硬件完成,因此大大提高了傳輸速度。隨著信息技術的發(fā)展,處理和傳輸?shù)臄?shù)據量越來越大,DAM傳輸在視頻采集、處理和傳輸及通信等領域具有十分重要的應用價值[1]。
NiosII是Altera公司推出的第二代軟核嵌入式處理器,除NiosII處理器外,Altera公司還提供了基于該處理器進行SOPC系統(tǒng)開發(fā)的串行接口核、三態(tài)橋、SRAM控制器、DM9000A網絡控制器等標準外圍設備。為滿足大量數(shù)據的快速傳輸,Altera公司在SOPC Builder中還提供了DMA控制器核。同時,為了方便用戶編程,NiosIIIDE還在HAL中為用戶提供了包括DMA控制器等標準外設的驅動程序?;谶@些外圍設備或自定制外設,則可進行SOPC系統(tǒng)開發(fā),以實現(xiàn)視頻控制、網絡控制、DMA傳輸?shù)裙δ躘2、3]。
在SOPCBuilder中定制包含DMA控制器的SOPC系統(tǒng),添加NiosIICPU、添加連接片外8MSDRAM的SDRAM控制器、連接片外4Mflash的cfi-flash控制器、系統(tǒng)標識符sysid、實現(xiàn)PC和NiosII系統(tǒng)間串行通信的調試接口jtag_uart、通用異步收發(fā)器uart、系統(tǒng)定時器time_0和 time_1、連接cfi_flash控制器的 tristate_bridge及發(fā)光二極管、撥碼開關switch_pio等常用的標準外圍設備。
DMA控制器通過2個主端口和1個從端口來控制DMA傳輸。從端口為Avalon從端口,負責與Avalon總線通過地址線、數(shù)據線、控制線、中斷等相連接;2個主端口為主設備讀端口和主設備寫端口,負責DMA傳輸?shù)臄?shù)據讀/寫操作。
在SOPCBuilder中添加DMA控制器核,使用DMA控制器配置向導。硬件配置的參數(shù)如下:
①DMA長度寄存器 該參數(shù)值可選范圍為1~32位,表示單次DMA傳輸數(shù)據的最大值。這里可以使用缺省值32位,即滿足所有從外設的傳輸要求。
②主設備讀/寫端口間的FIFO緩沖器實現(xiàn)方式
考慮到如使用從寄存器構建FIFO,當DMA控制器數(shù)據寬度較大(如32位)時,將對邏輯資源的占用有很大影響。因此選擇從存儲塊來構建FIFO,由FPGA中的嵌入式存儲塊實現(xiàn)。
③DMA硬件支持的數(shù)據傳送寬度 在DMA傳輸中,根據需要選擇合適的傳輸寬度,沒有必要進行其他數(shù)據寬度的傳輸,因此在配制向導的Advanced選項卡中勾選需傳輸?shù)臄?shù)據寬度,禁止其他數(shù)據寬度的傳輸,這樣可以節(jié)省邏輯資源。
這里考慮利用DMA傳輸將波碼開關上的數(shù)據傳輸?shù)絊DRAM,以觀察DMA的傳輸過程。故在SOPC Builder中需將DMA的read_master連接到switch_pio;將DMA的write_master連接到sdram。整個SOPC硬件系統(tǒng)的系統(tǒng)時鐘是100MHz,SDRAM時序要求將DE2所提供的50MHz時鐘延時3ns或者相位延遲60°處理之后作為 SDRAM的時鐘輸入DRAM_CLK。這個時鐘延遲可以用鎖相環(huán)產生。
DMA傳輸不需要CPU的參與,源和目標可以是內存也可以是設備,在NiosII中通過基于 HAL編程完成,即三種基本的DMA傳輸:設備到存儲器傳輸、存儲器到存儲器的傳輸和存儲器到設備的傳輸。
在NiosII的HALDMA設備模式中,DMA傳輸被分為兩類:transmit和receive。NiosII提供兩種設備驅動實現(xiàn)transmitchannels和 receivechannels。transmit channels把緩沖區(qū)數(shù)據發(fā)送到目標設備,receivechannels讀取設備數(shù)據存放到緩沖區(qū)。
在數(shù)據從源地址到目標地址的傳送中。對于地址的操作方式,一種是地址自增,另一種是地址固定。就是說DMA控制器讀或寫完一個數(shù)據后,對地址增加模式,下次讀寫下一個地址;對地址固定模式,下次還是讀寫同一個地址。由于地址固定模式一般是用在外設,所以在Nios的文檔中,使用地址固定模式的一方就稱為設備(Peripheral),而使用地址自增模式的一方則稱為存儲器(Memory)。
在HAL的API中,對于地址自增一方,需要打開一個接收或發(fā)送的Channel,然后配置地址;而如果是地址固定的一方,則不需要打開一個Channel,只需要用alt_dma_rxchan_ioctl()的ALT_DMA_RX_ONLY_ON 或ALT_DMA_TX_ONLY_ON參數(shù)設置,并配置地址即可。
將波碼開關上的數(shù)據通過DMA傳輸?shù)絊DRAM的過程屬于設備到存儲器的傳輸,應用程序的設計需要打開DMA設備、開啟DMA接收通道、發(fā)送接收請求,從而實現(xiàn)波碼開關上的數(shù)據通過DMA設備向SDRAM的傳輸。為了觀察傳輸?shù)絊DRAM的數(shù)據,這里在NiosⅡIDE的文件系統(tǒng)屬性設置中加上μC/OS-Ⅱ操作系統(tǒng)[4]。當指定大小的數(shù)據傳輸完成后,可以利用μC/OS-Ⅱ操作系統(tǒng)的文件管理系統(tǒng)將SDRAM中的數(shù)據以二進制的形式寫到指定的文件中。要完成此功能,需在NiosⅡIDE中按圖1對指定文件的掛載點進行設置,然后在應用程序代碼中增加如下語句:
最后利用相關的軟件(如WinHex)打開 switch_pio.bin文件,則可觀察到傳輸數(shù)據的十六進制形式。
圖1 讀寫文件的位置設定
圖2 所示是在μC/OS-II操作系統(tǒng)下控制波碼開關上的數(shù)據通過DMA向SDRAM傳輸?shù)膽贸绦蛘{試結果,從運行結果可看到,DMA接收通道已成功開啟,且存儲在SDRAM中的數(shù)據已成功寫入到switch_pio.bin文件中。根據圖1所示讀寫文件的掛載點可知,switch_pio.bin文件與應用程序在同一路徑下。
圖2 μC/OS-II操作系統(tǒng)下波碼開關數(shù)據通過DMA向SDRAM傳輸?shù)能浖{試結果
DE2開發(fā)板上波碼開關SW17~SW0設定的數(shù)據是11_1010_0100_0100_1111,系統(tǒng)調試后,在WinHex軟件中打開switch_pio.bin文件,觀察到圖3所示數(shù)據,比較可知圖3中的數(shù)據與波碼開關的初始設定值完全一致。這說明波碼開關上的數(shù)據到SDRAM的DMA傳輸成功,且數(shù)據傳輸正確。
圖3 switch_pio.bin文件中的數(shù)據
在NiosII上使用DMA可實現(xiàn)海量數(shù)據的嵌入式處理,在模式識別、視頻控制等領域中具有重要的應用價值。基于NiosII的DMA傳輸根據源地址和目的地址是外設和存儲器的不同,分外設到存儲器、存儲器到外設和存儲器到存儲器三種傳輸方式。外設到存儲器的傳輸需開啟接收通道,存儲器到外設的傳輸需開啟發(fā)送通道,存儲器到存儲器的傳輸既要開啟發(fā)送通道,又要開啟接收通道。利用QuartusII中的邏輯分析儀可觀察到DAM傳輸數(shù)據的波形,要將傳輸?shù)臄?shù)據寫入文件,通過打開文件來觀察更多的數(shù)據,則需要在NiosIIIDE中加載μC/OS-II操作系統(tǒng),并指定文件的存放路徑。
[1] 劉樂善.微型計算機接口技術及應用[M].武漢:華中科技大學出版社,2000
[2] 周立功,等.SOPC嵌入式系統(tǒng)基礎教程[M].北京:北京航空航天大學出版社,2006
[3] 楊 進,邱兆坤.SOPC中自定義FIFO接口與DMA數(shù)據傳輸[J].單片機與嵌入式系統(tǒng)應用,2008,(8)
[4] Altera.NiosIISoftwareDeveloper′sHandbook[DB/OL].May2008.http://www.Altera.com
TN919.6
B
1004-9134(2010)03-0087-03
2009-10-21 編輯:劉雅銘)
覃洪英,女,1979年生,碩士,講師,長江大學電子信息學院工作,主要研究方向:視頻通信。郵編:434023