用FIFO設計A/D與DSP之間的接口
1 前言
在使用CCD對非透明薄板厚度的測量系統設計中,筆者采用高速A/D和DSP等器件設計信號采集和處理電路來(lái)確定CCD的像點(diǎn)位置。其具體電路如圖1所示,該信號采集和處理電路由CCD驅動(dòng)電路、加法電路、濾波放大等信號預處理電路、A/D轉換電路、FIFO、DSP電路、時(shí)序與邏輯控制產(chǎn)生電路、USB總線(xiàn)接口電路等組成。其中DSP芯片選用TI公司生產(chǎn)的TMS320C6211高速數字信號處理芯片?它主要用于對A/D轉換后的數據進(jìn)行插值和重心算法處理,從而確定CCD上像元的位置,然后把處理后的數據通過(guò)USB總線(xiàn)傳輸到PC機進(jìn)行厚度計算、結果顯示、存儲等后續處理。該電路所需的時(shí)鐘信號和采樣邏輯控制時(shí)序由一片FPGA芯片產(chǎn)生。
當模擬信號由ADC轉換成數字信號后,往往都需要輸入DSPs的CPU作進(jìn)一步處理。但A/D轉換后數據輸出與DSP的讀外部數據的時(shí)鐘很難精確地配合。即使DSP能讀取到外部總線(xiàn)上的數據,由于A/D速率是4MHz,DSP外部存儲器時(shí)鐘為90MHz,為了讀到總線(xiàn)上的數據,DSP外部存儲器讀寫(xiě)時(shí)鐘也必須控制在4MHz,這樣就大大降低了DSP的使用效率,同時(shí)再加上DSP處理數據也需要一定的時(shí)間,而不能一味地讀取外部數據。所以,為了控制方便,避免數據丟失,設計時(shí)應采用小容量的FIFO作為兩者之間的接口。本設計選用的FIFO芯片是Cypress公司的CY7C425-25ns。該芯片容量為1k9bit,存取時(shí)間最大為25ns,讀寫(xiě)周期最小為35ns。該器件具有半滿(mǎn)(HF)、全滿(mǎn)(FF)和空(EF)三個(gè)標志位輸出,可以同時(shí)滿(mǎn)足深度和寬度級聯(lián)的需要。
圖1
2?。模樱信cFIFO芯片的工作原理
2.1 FIFO讀寫(xiě)過(guò)程
FIFO的一次讀寫(xiě)過(guò)程如圖2所示,由于FIFO是順序讀取數據,因此?只需提供讀寫(xiě)和其它控制信號線(xiàn),而不需要一般RAM所需的地址線(xiàn)。若將兩路A/D輸出的數據存入FIFO中,每片FIFO用8bit?兩片FIFO即可級聯(lián)構成16bit的數據寬度。由于FIFO采用的是5V供電,所以經(jīng)電壓轉換器件74LVTH244可將5V數據信號電平轉換成3.3V,然后與DSP的16Bit外部數據總線(xiàn)相連。再由FIFO的半滿(mǎn)信號HF作為外部中斷信號,當FIFO存儲器半滿(mǎn)時(shí),便可由HF經(jīng)邏輯處理后向DSP發(fā)出中斷申請INT4。由于外部FIFO占用著(zhù)DSP的CE0空間,所以讀信號的邏輯關(guān)系為:R=CE0+ARE,啟動(dòng)DSP 的EDMA(Enhanced Direct Memory Access)通道傳輸,可將FIFO中的數據讀入內部RAM中,這樣,在FIFO輸出數據的同時(shí),也將A/D轉換的數據寫(xiě)入了FIFO中,從而達到了同時(shí)讀寫(xiě)的目的。使用EDMA方式傳輸數據的好處在于:EDMA控制器可以獨立于CPU工作,從而可方便地實(shí)現片內存儲器、片內外設以及外部存儲空間之間的數據轉移。由外部中斷INT4啟動(dòng)EDMA傳輸,可以大大提高傳輸速率和CPU的工作效率。DSP讀完2048個(gè)數據后即開(kāi)始處理,處理完后便可以在一次掃描結束與下一次掃描尚未開(kāi)始的時(shí)間內將16Bit計算結果數據輸出,總的處理時(shí)間為一個(gè)幀周期。FIFO的寫(xiě)信號可由FPGA產(chǎn)生,并可在A/D轉換結束后向FIFO寫(xiě)數據。另外,在每一幀處理之后,還應由FPGA輸出控制信號以對FIFO進(jìn)行初始化,然后重新輸入下一幀數據。
2.2 DSP的讀時(shí)序設計
DSP可以通過(guò)硬件的ARDY信號和軟件設置來(lái)達到與異步外設之間進(jìn)行通訊的目的。DSP工作時(shí),硬件ARDY信號應始終有效。而如果采用軟件設置方法,則設計時(shí)需要考慮以下幾點(diǎn):
(1)SETUP≥1;
(2)STROBE≥?tacc+tsu)ECLK;
(3)STOBE≥trp ECLK;
(4)SETUP+STROBE+HOLD≥trc ECLK;
其中,SETUP、STROBE和HOLD是需要在EMIF CE0空間控制寄存器中配置的讀信號的三個(gè)狀態(tài)信號;tacc是FIFO的存取時(shí)間(≤25ns),tsu是數據建立時(shí)間(≥15ns),trp是讀脈沖寬度(≥25ns),trc是FIFO的讀周期(≥35ns)。由于本設計中DSP的內部時(shí)鐘為150MHz,外設時(shí)鐘ECLK為90MHz,所以,最后設定SETUP=1、STROBE=2、HOLD=2來(lái)滿(mǎn)足DSP與異步FIFO接口的要求。
2.3 軟件設計
圖3所示是該系統中DSP的軟件流程圖。由于TMS320C6211采用ROM加載的芯片自舉模式,因此,在芯片復位過(guò)程中,EDMA將從位于外部CE1空間的EEPROM中拷貝1kB數據到地址0處,并在傳輸結束后,使CPU退出復位狀態(tài),同時(shí)從地址0處開(kāi)始執行指令。由于主程序大小要大于1kB,所以需要編寫(xiě)BOOT LOAD(大小小于1kB)程序,以使其在復位后將程序從外部EEPROM拷貝到內部程序RAM中運行。在圖3所示的主程序流程圖中,當系統上電復位后,首先應進(jìn)行DSP的初始化,接著(zhù)進(jìn)行EDMA的中斷使能和初始化,然后由FIFO的半滿(mǎn)信號啟動(dòng)EDMA傳輸和由其觸發(fā)中斷程序。當傳輸完一組2048個(gè)數據后,再根據重心算法求出CCD像點(diǎn)的位置,之后便可開(kāi)始下一次循環(huán)。
3 結束語(yǔ)
在高速數據采集電路中,使用FIFO設計DSP芯片和A/D轉換器的接口電路具有設計簡(jiǎn)單、控制方便等優(yōu)點(diǎn),可大大提高DSP的使用效率。
評論