摘 要: 介紹一種基于單片機系統設計的DMA硬件電路,以字塊傳輸方式與高速A/D接口。結合在數字式磁通表設計中的應用給出其硬件軟件設計方案實例。
關鍵詞: 單片機系統 直接存儲器存取(DMA)方式 高速A/D
PC機中外設與內存儲器之間數據直接傳輸的DMA功能以其高效、高速、CPU資源占用少等特點已被廣泛應用,這一功能通過安裝在主板上的專用DMA控制器芯片或集成在外圍控制芯片來實現。單片機的應用領域也常常需要有高速數據傳輸或數據采集,雖然近些年單片機速度有所提高,仍然無法應付類似單脈沖信號捕獲、周期信號頻譜分析等需要采用高速A/D的場合。對于速率在100ksps以上的數據采集或傳輸一般的中斷查詢法就不易實現,因此考慮通過直接存儲存取操作才能完成。然而單片機內部設計通常不具有DMA功能,也沒有現成的控制芯片可以利用。而目前通用DSP芯片對于開發小型儀器儀表而言價格過高。
數字式磁通表主要應用在對恒定磁場的磁感應強度或脈沖場磁感應強度峰值的測量。是采用閉合線圈作為探測線圈,穿過線圈的磁通Φ變化時,探測線圈中感應電動勢: 瞬間將線圈由0磁場移到磁場最大點,記錄下整個過程中感應電動勢ε的變化。變化過程結束后用軟件對ε進行積分,計算出磁感應強度。本設計所需解決的是在瞬間記錄下ε的變化曲線。
本文討論一種采用數字邏輯電路設計的DMA控制電路。結合在“數字式磁通表”中的實際應用,給出高速A/D芯片MAX153與89C51單片機系統DMA接口電路的主要原理圖和主程序流程。
1 系統構成
系統結構如圖1所示。
設計采用89C51單片機芯片組成的單片機系統,外部64K RAM采用62512芯片,存儲器的全部64K地址范圍允許作為外設的A/D轉換電路在DMA周期寫入,以及單片機在非DMA周期讀出寫入。RAM的數據線和地址線由總線切換電路來控制,選擇連接單片機系統總線或連接A/D轉換電路的數據輸出和地址發生器輸出地址。總線切換電路不僅切換地址線和數據線,同時切換RAM的寫控制線WRI,控制實現DMA周期外設寫入和非DMA周期的單片機寫入。RAM讀控制線接單片機/READ。
DMA周期時,RAM的寫入地址由地址發生器產生。它是一個可預置數的16位二進制計數器。其溢出信號作為DMA周期的結束控制和結束標志。
2 硬件組成
· 單片機芯片
采用ATMEL公司的89C51,片內有4K字節FLASH ROM。設計使用其最大時鐘頻率20MHz,可以有1μs以下的指令周期。
· A/D轉換器
采用MAXIM公司的MAX153芯片,轉換精度8bit并行輸出,轉換時間660ns、采集速率1Msps。設計采用循環采集方式。
· 靜態RAM
靜態RAM62512芯片為64Kbytes,典型存取時間200ns。
· 總線(數據線、地址線和WR)切換電路
總線切換采用74HC245三態總線收發器并聯,分別選通。如圖2所示。
· 寫地址產生電路
DMA寫地址產生電路是一可預置數的16位2進制計數器,電路是采用四片4位可預置計數器74HC569級連方式。因此可以預置16位地址的初值,就是DMA傳輸數據塊的起始地址。計數脈沖反向輸入74HC569的CP端以保證寫操作的時序。
3 工作原理
3.1 DMA允許與響應
單片機系統開機運行時或進行內部數據處理、顯示時應置P1.0高,使其處于DMA禁止狀態。單片機完成初始化或進入DMA準備就緒狀態時,先向地址發生器寫入數據塊的起始地址,將地址溢出標志位置零,再發出DMA允許信號釋放RAM的控制權,等待DMA結束標志和DMA控制信號。當DMA允許為1且地址計數器溢出標志為0時,進入DMA預備狀態,等待外部觸發信號輸入。DMA觸發信號可以是周期信號的過零脈沖,也可以是單脈沖信號放大整形輸出,或者是A/D轉換完成信號。DMA控制部分如圖3所示。本設計采用將感應電動勢信號放大整形,其脈沖前沿觸發。DMA允許后的第一個觸發脈沖到來,D觸發器輸出Q為1。開通四輸入端與非門輸出與振蕩器同頻同相的周期信號,開始數據采集和傳送。由NE555和阻容元件組成的方波振蕩器的振蕩頻率決定采樣頻率的大小,其頻率應小于等于A/D轉換器的最大轉換速率1Msps。與非門輸出信號同時作為RAM寫信號、A/D芯片讀/RD,經反相后作為地址計數器的計數輸入。
3.2 數據線與地址線的控制
總線的選擇控制由DMA允許信號控制兩組74HC245三態總線收發器,使其分別處于開通和高阻狀態。此兩組總線收發器一端并接至RAM,另一端分別接單片機系統總線和A/D轉換外部總線。當DMA禁止周期時DMA允許信號為低,選通系統總線允許單片機對RAM進行讀寫操作。反之當DMA周期時DMA允許信號為高,選通外部總線允許DMA控制器對RAM寫操作。數據線有8根(D0~D7),對數據線的切換需要兩片74HC245,而地址線有16根(A0~A15),切換地址線需要4片74HC245才可以。另外還需兩片用以對RAM的讀寫線的切換,對讀寫線的控制采用相同的方法,也是由DMA允許進行兩周期的控制權切換。
3.3 DMA塊數據傳輸
與非門輸出1MHz的振蕩信號,連接A/D芯片/RD腳,在低電平開始時已采集的數據被輸出到數據線。地址計數器被設計為下降沿觸發,因此下降沿開始后地址計數器將在預設的起始地址的基礎上加1,形成新的地址輸出至地址線。數據和地址的形成均在下降沿后的160ns(由74HC系列計數器性能參數可知其最大傳輸延遲時間為40ns,有四片級連總計160ns。由MAX153CPP的手冊可知其讀寫模式下Data-AccessTime為160ns)內完成,其小于振蕩信號低電平停留時間500ns。在下一個振蕩的下降沿到來之前數據地址保持不變,在此后的上升沿時數據被寫入RAM的指定地址,第二個下降到來后重復這樣的過程,地址計數器加1形成新的地址和讀出A/D轉換器中新的數據,再寫入儲存器。工作時序參見圖4。
3.4 響應過程的結束
DMA過程的結束設計在地址溢出時。設計利用地址計數器的溢出位,當地址溢出即大于(FFFF)H時溢出位為1,經反向器反向后至四輸入端與非門的輸入端,使其輸出常為高而達到封鎖的目的。直到單片機系統重新初始化地址計數器,清溢出標志,并重新DMA允許后才能再次進入DMA準備就緒狀態。
4 軟件設計(主流程)
主程序流程圖見圖5。
單片機系統以其方便、簡潔、靈活、廉價為主要特點,所以在DMA電路設計中一定要結合實際應用簡化設計,軟件硬件綜合設計避免系統過于復雜,才能達到優質廉價的最終目的。利用本設計研制的數字式磁通表綜合性能達到了預期指標,并獲得滿意的性能價格比。
參考文獻
1 MAXIM公司新產品數據手冊(四).1995
2 何立民.單片機應用系統設計. 北京:北京航空航天大學出版社,1990