用FIFO實(shí)現(xiàn)超聲測(cè)厚系統(tǒng)A/D與ARM接口設(shè)計(jì)
2 接口設(shè)計(jì)
AD9283是8位模/數(shù)轉(zhuǎn)換器,CY7C4261是9位FIFO,S3C2410的數(shù)據(jù)總線是32位。CY7C4261只需接S3C2410的低 8位DO~D7。由于FIFO的先入先出結(jié)構(gòu),系統(tǒng)中不需要任何地址線的參與,大大簡(jiǎn)化了電路。A/D采樣所得數(shù)據(jù)要實(shí)時(shí)送入FIFO,兩者的寫時(shí)鐘頻率必須一樣,且AD9283和CY7C4261的最小時(shí)鐘輸入都是10 ns,操作起來統(tǒng)一方便。74ALS08是四-二輸入與門,把ARM的脈寬調(diào)制波輸出口中的TOUTl(GPBl),TOUT2(GPB2)配置為通用輸出口,對(duì)74ALS08的通斷進(jìn)行控制,從而對(duì)A/D和FIFO的寫時(shí)鐘進(jìn)行控制。S3C2410的CLKOUTO與CY7C4261的RCLK相連為 FIFO提供讀時(shí)鐘。CY7C4261的全滿標(biāo)志位FF與S3C2410的外部中斷EINTl相連用以觸發(fā)外部中斷。S3C2410的nRSTOUTl與 CY7C4261的RS相連用以復(fù)位FIFO。接口框圖如圖1所示。
3 時(shí)序設(shè)計(jì)
通過兩個(gè)與門分別對(duì)A/D和FIFO的寫時(shí)鐘進(jìn)行控制。因?yàn)锳D9283從模擬輸入開始到該次轉(zhuǎn)換的數(shù)據(jù)出現(xiàn)在輸出口上需要4個(gè)時(shí)鐘周期,并且在高速度采樣時(shí)導(dǎo)線的延時(shí)效果會(huì)非常明顯,若把A/D和FIFO的時(shí)鐘連在一起,很可能過多地采到無效數(shù)據(jù)。分開控制以后,通過軟件延時(shí),可以方便地分別對(duì) A/D和FIFO的時(shí)鐘進(jìn)行控制。調(diào)試起來相當(dāng)方便,力圖把采到無效數(shù)據(jù)的位數(shù)減至最低。AD9283的工作時(shí)序如圖2所示,CY7C4621寫時(shí)序圖如圖3所示。
采樣時(shí)。通過程序使能TOUTl,TOUT2輸出為1。此時(shí)采樣時(shí)鐘脈沖與TOUTl,TOUT2相與后被分別送入AD9283的時(shí)鐘輸入 ENCODE和CY7C4621的寫時(shí)鐘輸入WCLK。此時(shí)A/D開始工作,A/D將轉(zhuǎn)換數(shù)據(jù)送至自己的輸出口D0~D7。當(dāng)寫使能WEN1為低、 WEN2為高的時(shí)候,A/D輸出口上的數(shù)據(jù)在WCLK的上升沿被依次寫入FIFO。A/D和FIFO每來一次脈沖,便完成一次模/數(shù)轉(zhuǎn)換并把數(shù)據(jù)順序存入 FIFO。CY7C4261的數(shù)據(jù)最大儲(chǔ)存容量是16 KB,在完成了1 6 KB次轉(zhuǎn)換之后,CY7C426l將不能再存入新的數(shù)據(jù),此時(shí)存儲(chǔ)器滿標(biāo)志FF輸出低電平(在未滿時(shí)輸出高電平)。把此信號(hào)接到S3C2410的外部中斷 EINTl上,利用它由高到低的變化產(chǎn)生中斷,以表明一組數(shù)據(jù)采集完成。
在中斷中,ARM首先迅速關(guān)閉采樣脈沖信號(hào)(使TOUTl和TOUT2)的輸出為0,停止A/D和FIFO的工作。ARM 外部時(shí)鐘信號(hào)CLKOUTO與FIFO的讀輸入RCLK接在一起,ARM每執(zhí)行一次I/O讀操作,cLKOUT0便向RCLK發(fā)出一脈沖。把FIFO讀使 WEN1能和WEN2置為低,同時(shí)連續(xù)執(zhí)行16 K次I/O讀操作,數(shù)據(jù)便依次從CY7C4261送入S3C2410系統(tǒng),整個(gè)數(shù)據(jù)采集工作就此完成。在進(jìn)行每一次數(shù)據(jù)的采集前,將CY7C4261先復(fù)位,把S3C24-10的nRSTOUTl配置為通用輸出口,給CY7C4261的RS引腳輸入一個(gè)不小于10 ns的低脈沖,即在ARM的nRSTOUTl引腳輸出一個(gè)低脈沖。這樣可以更充分地保證FIFO的讀、寫指針的穩(wěn)定。
評(píng)論