什么是ADC
ADC,Analog-to-Digital Converter的縮寫,指模/數(shù)轉(zhuǎn)換器或者模數(shù)轉(zhuǎn)換器。是指將連續(xù)變化的模擬信號轉(zhuǎn)換為離散的數(shù)字信號的器件。真實(shí)世界的模擬信號,例如溫度、壓力、聲音或者圖像等,需要轉(zhuǎn)換成更容易儲存、處理和發(fā)射的數(shù)字形式。模/數(shù)轉(zhuǎn)換器可以實(shí)現(xiàn)這個功能,在各種不同的產(chǎn)品中都可以找到它的身影。
與之相對應(yīng)的DAC,Digital-to-Analog Converter,它是ADC模數(shù)轉(zhuǎn)換的逆向過程。
ADC最早用于對無線信號向數(shù)字信號轉(zhuǎn)換。如電視信號,長短播電臺發(fā)接收等。
數(shù)字輸出選擇
1.高端儀表促進(jìn)了更快的ADC速度和更多的通道數(shù)與密度,設(shè)計(jì)者必須評估轉(zhuǎn)換器的輸出格式,以及基本的轉(zhuǎn)換性能。
2.主要的輸出選項(xiàng)是CMOS(互補(bǔ)金屬氧化物半導(dǎo)體)、LVDS(低壓差分信令),以及CML(電流模式邏輯)。
3.要考慮的問題包括:功耗、瞬變、數(shù)據(jù)與時(shí)鐘的變形,以及對噪聲的抑制能力。
4.對于布局的考慮也是轉(zhuǎn)換輸出選擇中的一個方面,尤其當(dāng)采用LVDS技術(shù)時(shí)。
當(dāng)設(shè)計(jì)者有多種ADC選擇時(shí),他們必須考慮采用哪種類型的數(shù)字?jǐn)?shù)據(jù)輸出:CMOS(互補(bǔ)金屬氧化物半導(dǎo)體)、LVDS(低壓差分信令),還是CML(電流模式邏輯)。ADC中所采用的每種數(shù)字輸出類型都各有優(yōu)缺點(diǎn),設(shè)計(jì)者應(yīng)結(jié)合自己的應(yīng)用來考慮。這些因素取決于ADC的采樣速率與分辨率、輸出數(shù)據(jù)速率,以及系統(tǒng)設(shè)計(jì)的功率要求,等等。
ADC0809采樣控制電路設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
學(xué)習(xí)用狀態(tài)機(jī)實(shí)現(xiàn)A/D轉(zhuǎn)換器ADC0809的采樣控制電路。
二、實(shí)驗(yàn)內(nèi)容
利用QuartusⅡ?qū)崿F(xiàn)A/D轉(zhuǎn)換器ADC0809的采樣控制電路狀態(tài)機(jī)設(shè)計(jì);給出仿真波形。最后進(jìn)行引腳鎖定并進(jìn)行測試,硬件驗(yàn)證設(shè)計(jì)電路對ADC0809的控制功能。
三、實(shí)驗(yàn)儀器與器材
計(jì)算機(jī)1臺,GW48-PK2S實(shí)驗(yàn)箱1臺,QuartusⅡ6.0 1套。
四、實(shí)驗(yàn)
用VHDL 設(shè)計(jì)的狀態(tài)機(jī)的一般結(jié)構(gòu)有以下幾部分組成:
1. 說明部分
說明部分中有新數(shù)據(jù)類型TYPE 的定義及其狀態(tài)類型(狀態(tài)名)和在此新數(shù)據(jù)類型下定義的狀態(tài)變量。狀態(tài)類型一般用枚舉類型,其中每一個狀態(tài)名可任意選取。但為了便于辨認(rèn)和含義明確,狀態(tài)名最好有明顯的解釋性意義。狀態(tài)變量應(yīng)定義為信號,便于信息傳遞。說明部分一般放在ARCHITECTURE 和BEGIN之間。
2. 主控時(shí)序進(jìn)程:
狀態(tài)機(jī)是隨外部時(shí)鐘信號以同步時(shí)序方式工作的,因此狀態(tài)機(jī)中必須包含一個對工作時(shí)鐘信號敏感的進(jìn)程作為狀態(tài)機(jī)的“驅(qū)動泵”。當(dāng)時(shí)鐘發(fā)生有效跳變時(shí),狀態(tài)機(jī)的狀態(tài)才發(fā)生變化。狀態(tài)機(jī)的下一狀態(tài)(包括再次進(jìn)入本狀態(tài))僅僅取決于時(shí)鐘信號的到來。一般地,主控時(shí)序進(jìn)程不負(fù)責(zé)進(jìn)入的下一狀態(tài)的具體狀態(tài)取值。當(dāng)時(shí)鐘的有效跳變到來時(shí),時(shí)序進(jìn)程只是機(jī)械地將代表下一狀態(tài)的信號next_state 中的內(nèi)容送入代表本狀態(tài)的信current_state 中,而信號next_state 中的內(nèi)容完全由其它的進(jìn)程根據(jù)實(shí)際情況來決定。當(dāng)然此進(jìn)程中也可以放置一些同步或異步清零、置位方面的控制信號??傮w來說,主控時(shí)序進(jìn)程的設(shè)計(jì)比較固定、單一和簡單。
3. 主控組合進(jìn)程:
主控組合進(jìn)程的任務(wù)是根據(jù)外部輸入的控制信號(包括來自狀態(tài)機(jī)外部的信號和來自狀態(tài)機(jī)內(nèi)部其它非主控的組合或時(shí)序進(jìn)程的信號),或(和)當(dāng)前狀態(tài)的狀態(tài)值確定下一狀態(tài)(next_state)的取向,即next_state的取值內(nèi)容,以及確定對外輸出或?qū)?nèi)部其它組合或時(shí)序進(jìn)程輸出控制信號的內(nèi)容。
4. 普通組合進(jìn)程
用于配合狀態(tài)機(jī)工作的其它組合進(jìn)程,如為了完成某種算法的進(jìn)程。
5. 普通時(shí)序進(jìn)程
用于配合狀態(tài)機(jī)工作的其它時(shí)序進(jìn)程,如為了穩(wěn)定輸出設(shè)置的數(shù)據(jù)鎖存器等。一個狀態(tài)機(jī)的最簡結(jié)構(gòu)應(yīng)至少由兩個進(jìn)程構(gòu)成(也有單進(jìn)程狀態(tài)機(jī),但并不常用)即一個主控時(shí)序進(jìn)程和一個主控組合進(jìn)程,一個進(jìn)程作“驅(qū)動泵”,描述時(shí)序邏輯,包括狀態(tài)寄存器的工作和寄存器狀態(tài)的輸出;另一個進(jìn)程描述組合邏輯,包括進(jìn)程間狀態(tài)值的傳遞邏輯以及狀態(tài)轉(zhuǎn)換值的輸出。當(dāng)然必要時(shí)還可以引入第3 個和第4 個進(jìn)程,以完成其它的邏輯功能。
從一般意義上說進(jìn)程間是并行運(yùn)行的,但由于敏感信號的設(shè)置不同以及電路的延遲,在時(shí)序上進(jìn)程間的動作是有先后的。在設(shè)計(jì)中,如果希望輸出的信號具有寄存器鎖存功能,則需要為此輸出寫第3 個進(jìn)程,并把clk 和reset信號放入敏感信號表中。用于進(jìn)程間信息傳遞的信號current_state 和next_state ,在狀態(tài)機(jī)設(shè)計(jì)中稱為反饋信號。狀態(tài)機(jī)運(yùn)行中,信號傳遞的反饋機(jī)制的作用是實(shí)現(xiàn)當(dāng)前狀態(tài)的存儲和下一個狀態(tài)的譯碼設(shè)定等功能。在VHDL中可以有兩種方式來創(chuàng)建反饋機(jī)制,即使用信號的方式和使用變量的方式,通常傾向于使用信號的方式。附圖8-1為一般狀態(tài)機(jī)結(jié)構(gòu)圖。
圖8-1 一般狀態(tài)機(jī)結(jié)構(gòu)框圖工作示意圖
附圖8-2和8-3為控制ADC0809采樣狀態(tài)機(jī)結(jié)構(gòu)圖和狀態(tài)轉(zhuǎn)換圖
圖8-2 采樣狀態(tài)機(jī)結(jié)構(gòu)框圖
設(shè)計(jì)提示:
設(shè)目標(biāo)器件是EP1C6Q240C8,建議選擇實(shí)驗(yàn)電路結(jié)構(gòu)圖No.5(即結(jié)構(gòu)圖No.5A,附圖1-14,由該圖可見,ADC0809的轉(zhuǎn)換時(shí)鐘CLK已經(jīng)事先接有750KHz的頻率),將實(shí)驗(yàn)系統(tǒng)左下角選擇插針處的“轉(zhuǎn)換結(jié)束”和“A/D使能”用跳線帽短接。下載目標(biāo)文件后,可用螺絲刀旋轉(zhuǎn)實(shí)驗(yàn)系統(tǒng)左下角的電位器,以便為ADC0809提供變化的待測模擬信號,這時(shí)數(shù)碼管8和7將顯示ADC0809采樣輸出并被鎖存的數(shù)字值(16進(jìn)制)。
圖8-3 控制ADC0809采樣狀態(tài)圖
圖8-4 控制ADC0809采樣時(shí)序圖
五、實(shí)驗(yàn)要求
根據(jù)以上的實(shí)驗(yàn)內(nèi)容寫出實(shí)驗(yàn)報(bào)告,包括程序設(shè)計(jì)、軟件編譯、仿真分析、硬件測試和實(shí)驗(yàn)過程;設(shè)計(jì)程序、程序分析報(bào)告、仿真波形圖及其分析報(bào)告。
1. 設(shè)計(jì)思路
6. 由題意知,我們要設(shè)計(jì)一個電路與A/D轉(zhuǎn)換器ADC0809相連,通過接受時(shí)鐘輸入來決定狀態(tài),通過對不同狀態(tài)輸出不同的控制信號,實(shí)現(xiàn)對ADC0809的采樣控制,最終輸出穩(wěn)定的采樣電壓。本實(shí)驗(yàn)中將設(shè)計(jì)如下進(jìn)程。
設(shè)置兩個信號Current_State、Next_State,以便實(shí)現(xiàn)狀態(tài)的通知。
① 主控時(shí)序進(jìn)程REG
總體設(shè)計(jì)思想:用REG控制整個采樣控制電路的狀態(tài),是整個電路的總指揮。
通過監(jiān)測ADC0809輸出的信號,實(shí)現(xiàn)不同狀態(tài)的轉(zhuǎn)換,進(jìn)而控制不同不同的進(jìn)程Process。
主控時(shí)序進(jìn)程REG只輸出狀態(tài),只接收ST1。
當(dāng)狀態(tài)為ST0的時(shí)候,開始新一輪的采樣;
當(dāng)接收ST1的時(shí)候,通知COM2將采樣數(shù)據(jù)鎖存,輸出。
進(jìn)程REG對信號:CLK、Next_State信號敏感
?、?組合進(jìn)程COM1
總體設(shè)計(jì)思想:用COM1實(shí)現(xiàn)COM2對REG的通知,是整個電路的傳令兵;用COM2控制整個電路,是整個電路狀態(tài)改變的具體執(zhí)行者。
。
當(dāng)EOC=1的時(shí)候,通知REG,以便改變電路狀態(tài)。
進(jìn)程COM1對信號Current_State和EOC敏感
③ 進(jìn)程LATCH
總體設(shè)計(jì)思想:用LATCH來鎖存轉(zhuǎn)換好的數(shù)據(jù),并控制數(shù)據(jù)的輸出。
進(jìn)程LATCH對信號LOCK,REGL敏感
程序設(shè)計(jì)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITY ADCINT IS
PORT(D :INSTD_LOGIC_VECTOR(7DOWNTO0);--來自0809轉(zhuǎn)換好的8位數(shù)據(jù)
CLK:INSTD_LOGIC; --狀態(tài)機(jī)工作時(shí)鐘
EOC:INSTD_LOGIC; --轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換
ALE:OUTSTD_LOGIC; --8個模擬信號通道地址鎖存信號
START:OUTSTD_LOGIC; --轉(zhuǎn)換開始信號
OE:OUTSTD_LOGIC; --數(shù)據(jù)輸出3態(tài)控制信號
ADDA:OUTSTD_LOGIC; --信號通道最低位控制信號
LOCK0:OUTSTD_LOGIC; --觀察數(shù)據(jù)鎖存時(shí)鐘
LED:OUTSTD_LOGIC; --用來指示仿真程序是否正確
-- LED2: OUT STD_LOGIC; --2用來指示仿真程序是否正確
Q :OUTSTD_LOGIC_VECTOR(7DOWNTO0)--8位數(shù)據(jù)輸出
?。?
END ADCINT;
ARCHITECTURE behav OF ADCINT IS
TYPE states IS(st0,st1,st2,st3,st4); --定義各狀態(tài)子類型
SIGNAL current_state , next_state : states := st0;
SIGNAL REGL :STD_LOGIC_VECTOR(7DOWNTO0);
SIGNAL LOCK :STD_LOGIC; --轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號
BEGIN
ADDA 《= ‘1’;--當(dāng)ADDA《=‘0’,模擬信號進(jìn)入通道IN0,當(dāng)ADDA《=‘1’,則進(jìn)入通道IN1
Q 《= REGL; LOCK0 《= LOCK;
------------------進(jìn)程REG---------------------
--用REG控制整個采樣控制電路的狀態(tài),是整個電路的總指揮。
PROCESS(CLK)
BEGIN
IF CLK=‘1’ and CLK‘eventTHEN -- 檢測時(shí)鐘上升沿
--LED《=’0‘;
IF next_state=st0 THEN -- 初始化狀態(tài)機(jī)
current_state《=st0;
ELSIF next_state=st1 THEN --開始轉(zhuǎn)換(st1)
current_state《=st1;
ELSIF next_state=st2 THEN --等待轉(zhuǎn)化完畢,檢測EOC是否為高電平
current_state《=st2;
ELSIF next_state=st3 THEN
-- LED《=’1‘;
current_state《=st3;
ELSIF next_state=st4 THEN
current_state《=st4;
ENDIF;
ENDIF;
ENDPROCESS;
------------------進(jìn)程COM2---------------------
--用COM2控制整個電路,是整個電路狀態(tài)改變的具體執(zhí)行者。
PROCESS(current_state,EOC)
VARIABLE First_EOC :STD_LOGIC;
BEGIN
--LED2《=’0‘;
IF current_state=st0 THEN -- 初始化狀態(tài)機(jī)
ALE《=’1‘;
START《=’0‘;
OE《=’0‘;
LOCK《=’0‘;
next_state《=st1;
ELSIF current_state=st1 THEN --開始轉(zhuǎn)換(st1)
START《=’1‘;
ALE《=’0‘;
--IF EOC=’0‘ THEN -- 轉(zhuǎn)換結(jié)束
next_state《=st2;
First_EOC:=EOC;--在狀態(tài)1記錄EOC,以便后面判斷AD是否開始轉(zhuǎn)換
--END IF;
ELSIF current_state=st2 THEN --等待轉(zhuǎn)化完畢,檢測EOC是否為高電平
START《=’0‘;
OE《=’0‘;
if ’1‘=(First_EOC XOR EOC)then
IF EOC=’1‘ THEN
-- IF EOC=’1‘ THEN
next_state《=st3;
-- END IF;
-- else
-- next_state《=st2;
ENDIF;
else
next_state《=st2;
ENDIF;
ELSIF current_state=st3 THEN
--LED2《=’1‘;
IF EOC=’1‘ THEN -- 轉(zhuǎn)換結(jié)束
OE《=’1‘;
next_state《=st4;
ELSE
OE《=’0‘;
ENDIF;
ELSIF current_state=st4 THEN
OE《=’0‘;
LOCK《=’1‘;
next_state《=st0; --開啟下一輪新的轉(zhuǎn)換
ENDIF;
ENDPROCESS;
------------------進(jìn)程LATCH---------------------
--用來控制電路的輸出
PROCESS(LOCK,REGL)
VARIABLE cq :std_logic_vector(7DOWNTO0);--用來保存數(shù)值
BEGIN
IF LOCK=’0‘ THEN
cq:=D;
ELSIF LOCK=’1‘ THEN
REGL《=cq;
ENDIF;
ENDPROCESS;
ENDARCHITECTURE behav;
2. 仿真分析
圖8-5 仿真波形圖
由8-5可知,仿真波形和圖8-4控制ADC0809采樣時(shí)序圖一致。
3. 硬件測試和實(shí)驗(yàn)過程
表1-1 ADCINT在GWAC6板上目標(biāo)芯片EP1C6Q240C8的引腳鎖定信息
評論
查看更多