壹、實驗的目的:
用學習狀態機實現A/D轉換器ADC0809的采樣控制電路。
二、原則:
ADC0809是壹款8位CMOS模數轉換器。芯片上有8個模擬開關,可以控制8個模擬信號中的壹個進入轉換器。ADC0809的分辨率為8位,轉換時間約為100us。它有8個帶鎖存控制的多通道開關,輸出由三態緩沖器控制,由5V單電源供電。
主要控制信號描述:如圖1所示,START為轉換開始信號,高電平有效;ALE是3位通道選擇地址(ADDC、ADDB、ADDA)信號的鎖存信號。當模擬量被送到壹個輸入端子(如IN1或IN2等)時。),由3位地址信號選擇,地址信號由ALE鎖存;EOC是轉換情況的狀態信號(類似於AD574的狀態)。當轉換開始約100us時,EOC產生壹個負脈沖,表示轉換結束。在EOC的上升沿之後,如果輸出使能信號OE被設置為高電平,則三態緩沖器被控制打開,並且轉換後的8位數據結果被輸出到數據總線。至此,ADC0809的壹次轉換結束。
圖1
三、實驗內容:
1,使用MAX+plusII進行例3-1的文本編輯輸入和模擬測試;給出了仿真波形。最後鎖定並測試引腳,硬件驗證例3-1對ADC0809的電路控制功能。
2.根據圖2-12,建議pin鎖為:START接PIO34,OE接PIO35,EOC接PIO8,ALE接PIO33,狀態機時鐘CLK接clock0(PIN2,可選“65536Hz”或更高),ADDA接Pio 32(ADDB和ADDC都接GND),ADC。
3.如果目標器件是EPF10K10,建議選擇5號實驗電路圖(即ADC0809的轉換時鐘CLK已經預先接入了750KHz的頻率),用兩個短路帽將實驗系統左下角所選管腳的“轉換結束”和“A/D使能”短路。下載完目標文件後,可以用螺絲刀轉動實驗系統左下角的電位器,為ADC0809提供壹個變化的模擬信號進行測試。此時,ADC0809采樣輸出的數字值將由數碼管8和7 (16)顯示。
示例3-1
圖書館IEEE
使用IEEE。STD_LOGIC_1164。所有;
實體ADCINT是
端口(D
:在STD_LOGIC_VECTOR中(7向下到0);-0809的8位轉換數據輸出
CLK,平等機會委員會:在
STD _ LOGIC- CLK是轉換工作時鐘。
LOCK1,ALE,START,OE,ADDA:OUT STD _ LOGIC;
Q
:OUT STD_LOGIC_VECTOR(7向下到0)
);
END ADCINT
廣告的建築行為
是
類型狀態為(st0,st1,
st2、st3、st4、st5、st6);-定義每個狀態子類型。
信號當前狀態,下壹個狀態:狀態
:= st0
SIGNAL REGL:STD _ LOGIC _ VECTOR(7 down to 0);
信號鎖:STD _ LOGIC轉換後的數據輸出鎖存時鐘信號。
開始
ADDA & lt= '1';lock 1 & lt;=鎖定;
PRO:進程(當前狀態,EOC)開始
-指定狀態轉換的模式。
案例當前狀態為
當st0 = & gt
ALE & lt='0';開始& lt='0';OE & lt='0';鎖定& lt='0' ;next _ state & lt= ST 1;
當st1 = >
ALE & lt='1';開始& lt='0';OE & lt='0';鎖定& lt='0' ;next _ state & lt= st2
當st2 = & gt
ALE & lt='0';開始& lt='1';OE & lt='0';鎖定& lt='0' ;next _ state & lt= st3
當st3 = & gt
ALE & lt='0';開始& lt='0';OE & lt='0';鎖定& lt='0';
IF (EOC='1 ')那麽next _ state & lt=
st3-測試EOC的下降沿
ELSE next _ state & lt=
st4
結束IF;
當st4= >
ALE & lt='0';開始& lt='0';OE & lt='0';鎖定& lt='0';
IF (EOC='0 ')那麽next _ state & lt= st4-測試EOC的上升沿,=1表示轉換結束。
ELSE next _ state & lt=
st5-繼續等待
結束IF;
當st5 = & gt
ALE & lt='0';開始& lt='0';OE & lt='1';鎖定& lt='0';next _ state & lt= st6
當st6= >
ALE & lt='0';開始& lt='0';OE & lt='1';鎖定& lt='1';next _ state & lt= st0
當別人= & gt
ALE & lt='0';開始& lt='0';OE & lt='0';鎖定& lt='0';next _ state & lt= st0
結束案例;
結束進程PRO
流程(CLK)
開始
如果(CLK事件和CLK='1 ')那麽
當前狀態& lt= next _ state-在時鐘的上升沿,轉換到下壹個狀態。
結束IF;
結束進程;
-由信號current_state將當前狀態值帶出本進程,進入pro進程。
PROCESS (LOCK) -在此過程中,在LOCK的上升沿,轉換後的數據被鎖定。
開始
如果LOCK='1 '和LOCK '事件,則REGL & lt= D;
結束IF;
結束進程;
Q & lt= REGL
結束行為;
四、思考問題:
在不改變原代碼功能的情況下,將例3-1表示為直接輸出狀態碼的狀態機。
動詞 (verb的縮寫)實驗報告:
根據以上實驗要求、實驗內容和實驗思維問題,寫壹篇實驗報告。