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