摘 要: 采用FPGA器件EP1C12Q240C8實現對高速A/D轉換芯片ADC08200的實時采樣控制,解決了傳統(tǒng)方法的速度問題,。使用VHDL語言采用自頂向下的設計方法編寫出源程序,;結合FIFO存儲器的設計實現了高速A/D采集轉換和轉換后的數據存儲,并給出了采樣存儲電路原理圖,。數據處理可通過與SoPC技術結合實現,。
關鍵詞: FPGA;ADC08200,;FIFO,;VHDL
對A/D轉換器進行采樣控制,傳統(tǒng)方法一般是用 CPU或單片機完成的,。其優(yōu)點是編程簡單,、控制靈活,但缺點是控制周期長,、速度慢,。例如 MCS-51系列單片機最高時鐘頻率為12 MHz,AT89C2051單片機為24 MHz,,這樣當A/D本身的采樣速度比較快時,,CPU或單片機的慢速工作時序將極大地限制A/D高速性能的利用。當采用FPGA對其進行控制時,,由于FPGA的時鐘頻率可達 100 MHz以上,,從而可實現數據的高速采集,還可以把采樣數據實時存入FPGA內部的高速RAM中,。本設計是利用FPGA直接控制高速ADC08200對模擬信號進行采樣,,采集速度可達200 MS/s,然后將轉換好的8位二進制數據迅速存儲到FPGA內部的FIFO存儲器中,。在完成對模擬信號一個周期的采樣后,,由外部電路系統(tǒng)將存儲器中的采樣數據讀出處理。采用自頂向下的設計方法可將本設計分為控制器模塊和FIFO緩沖模塊,。
1 控制器模塊設計
1.1 ADC08200芯片功能介紹
ADC08200[1]是美國國家半導體(NS)公司生產的單通道,、低功耗、高速8位模數轉換器,。它具有成本低、功耗低,、體積小和易于使用等優(yōu)點,。最高采樣頻率達200 MS/s,。在掉電模式下ADC0820僅消耗1 mW。獨特的結構在50 MHz標準信號的輸入情況下可達到7.3有效采樣位,。單電源3 V或2.5 V的供電,,內帶高質量參考源和高性能采樣保持電路。
主要端口:
CLK:時鐘輸入端,;
VIN:模擬信號輸入端,;
PD:掉電保護,當PD為低時,,D0~D7正常輸出,,當PD為高時,D0~D7輸出保持,;
D0~D7:數據輸出端口,。D0為數據最低位,D7為最高位,;
圖1,、圖2分別為ADC08200的工作時序圖和外圍接口電路圖。
1.2 基于VHDL控制器的軟件設計
VHDL是一種硬件描述語言,,它可以對電子電路和系統(tǒng)的行為進行描述,。基于這種描述,,結合相關的軟件工具,,可以得到所期望的實際電路與系統(tǒng)。根據ADC08200的特點,,可通過硬件描述語言(VHDL)設計一個狀態(tài)機,,最后下載到FPGA芯片上,通過FPGA芯片控制ADC08200的工件。時鐘由外部引入,,由分頻模塊得到想要的時鐘,。設計過程為編寫VHDL[2]代碼,然后在QuartusⅡ[3]平臺下進行編譯,、仿真,,最后下載到FPGA芯片中。仿真圖代碼如圖3所示,。
LIBRARY IEEE,;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY adc08200 IS
PORT (RST :IN STD_LOGIC,;
CLK :IN STD_LOGIC,;
D :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CTLOE:IN STD_LOGIC;
ADCLK:OUT STD_LOGIC,;
ADPD :OUT STD_LOGIC,;
DATA :OUT
STD_LOGIC_VECTOR(7 DOWNTO 0);
DCLK :OUT STD_LOGIC),;
END ENTITY adc08200,;
ARCHITECTURE BEHAVIOURAL OF adc08200 IS
TYPE ADS_STATES IS(STATE0_TYPE,STATE1_
TYPE),;
SIGNAL STA_G_CURRENTSTATE : ADS_STATES,;
SIGNAL STA_G_NEXTSTATE : ADS_STATES;
SIGNAL CTL_GP_LATCHFLAG : STD_LOGIC,;
SIGNAL CTL_GP_CHIPSELECT : STD_LOGIC,;
BEGIN
COM:PROCESS(STA_G_CURRENTSTATE)
BEGIN
CASE STA_G_CURRENTSTATE IS
WHEN STATE0_TYPE =>ADCLK<=′1′;
CTL_GP_LATCHFLAG<=′1′,;
DCLK<=′0′,;
STA_G_NEXTSTATE<=STATE1_TYPE;
WHEN STATE1_TYPE =>ADCLK<=′0′,;
CTL_GP_LATCHFLAG<=′0′,;
DCLK<=′1′;
STA_G_NEXTSTATE<=STATE0_TYPE,;
WHEN OTHERS=>ADCLK<=′0′,;
CTL_GP_LATCHFLAG<=′0′;
DCLK<=′1′,;
STA_G_NEXTSTATE<=STATE1_TYPE,;
END CASE;
END PROCESS COM,;
REG:PROCESS(CLK,RST)
BEGIN
IF RST=′0′ THEN STA_G_CURRENTSTATE<=
STATE0_TYPE,;
ELSIF(CLK′EVENT AND CLK=′1′) THEN
STA_G_CURRENTSTATE<=STA_G_NEXTSTATE;
END IF,;
END PROCESS REG,;
LATCH:PROCESS(CTL_GP_LATCHFLAG)
BEGIN
IF RST=′0′ THEN DATA<=(OTHERS=>′0′);
ELSIF(CTL_GP_LATCHFLAG'EVENT AND
CTL_GP_LATCHFLAG =′1′) THEN DATA<=D,;
END IF,;
END PROCESS LATCH;
CTL_GP_CHIPSELECT<=CTLOE,;
ADPD<=NOT CTL_GP_CHIPSELECT,;
END ARCHITECTURE BEHAVIOURAL;
2 高速存儲模塊的設計與功能仿真
FIFO是一種存儲器參數可設置模塊庫,,在高速數字系統(tǒng)中常用作緩存,。在高速數據傳輸和實時顯示領域中,,需要對數據進行快速儲存和發(fā)送,要實現快速的數據采集,、順序儲存和傳送,,傳統(tǒng)的RAM型存儲器已經無法滿足要求,。目前許多高速系統(tǒng)都采用FIFO作為緩存體,。因為FIFO的寫入(讀出)時間只需要一個時鐘周期,不需要對地址進行加1操作,,大大提高了存儲速度,。
利用LPM中的宏功能塊LPM_FIF0+,在QuartusⅡ平臺下定制一個高速的先進先出FIFO,,根據需要對所使用的宏功能塊的參數進行適當調整,,由此生成一個滿足自己特定需要的模塊。最后,,利用例化語句,,在頂層設計中調用該模塊。參數如下:
LPM_W lDTH=>8,,LPM_NIJM W ORDS=>1024,,LPM _SHOW AHEAD=>“OFF”,LPM_HIN=>“USE_EAB=ON”
圖4為模塊 FIFO時序圖和例化后的模塊,。
3 系統(tǒng)的模塊設計與功能仿真
A/D轉換模塊與高速存儲模塊結合調理電路與數據處理電路就構成了一個完整的系統(tǒng),。調理電路和模擬信號經由A/D轉換器ADC08200轉換模塊后變?yōu)閿底中盘枺瑐鹘o同樣由FPGA控制的先進先出存儲器FIFO,。這樣就彌補了由單片機控制帶來的速度低的缺點,。FIFO存儲的數字信號可由單片機系統(tǒng)來讀取和處理。在QuartusⅡ平臺下使用原理圖輸入方式可以使設計得到簡化,。系統(tǒng)的連接圖如圖5所示,。其中CLK為時鐘信號;RST為復位信號,;D[7..0]為轉換后的數字信號,,接A/D的輸出;WR/RD為讀寫控制,;RDCLK為讀時鐘,;ACLR為清零信號;ADCLK接A/D轉換器的時鐘CLK,;ADPD接ADC08200的PD,;WRFULL,RDEMPTY為寫滿,,讀空顯示信號,;Q[7..0]為輸出數據,。
帶FIFO的功能仿真圖如圖6。
采用EP1C12Q240C8芯片實現對高速A/D轉換器ADC08200的實時采樣控制,,充分利用了FPGA器件的高速高效優(yōu)勢,,解決了傳統(tǒng)方法使用CPU或單片機控制速度慢的問題,發(fā)揮了ADC08200高速采樣的性能(最高采樣頻率達 200 MS/s),,實現簡單,,可以廣泛用于實際電路的控制系統(tǒng)。該電路的數據處理可以由CPU或單片機進行,,由SoPC技術進行數據的處理效果更好,。
參與文獻
[1] National Semiconductor.ADC08200 8-Bit,20 Msps to 200 Msps,,Low Power A/D Converter with Internal Sample-
and-Hold[P].2008,,2.
[2] 喬廬峰,王志功.VHDL數字電路設計教程[M].北京:電子工業(yè)出版社,,2005.
[3] 鄭亞民,,董曉舟.可編程邏輯器件開發(fā)軟件QuartusⅡ[M].北京:國防工業(yè)出版社,2006.
[4] 潘松,,黃繼業(yè).EDA技術實用教程(第2版)[M].北京:科學出版社,,2005.
[5] 昊繼華,王誠.AheraFPGA/CPLD設計(高級篇)[M].北京:人民郵電出版社,,2007.
[6] 潘松,,王國棟.VHDL實用教程[M].成都:電子科技大學出版社,1999.