【文章內(nèi)容簡介】
1。COM2:PROCESS(current_state) BEGINCASE current_state ISWHEN st0=ALE=39。039。START=39。039。LOCK=39。039。OE=39。039。WHEN st1=ALE=39。139。START=39。139。LOCK=39。039。OE=39。039。WHEN st2=ALE=39。039。START=39。039。LOCK=39。039。OE=39。039。WHEN st3=ALE=39。039。START=39。039。LOCK=39。039。OE=39。139。WHEN st4=ALE=39。039。START=39。039。LOCK=39。139。OE=39。139。WHEN OTHERS=ALE=39。039。START=39。039。LOCK=39。039。END CASE。END PROCESS COM2。REG:PROCESS(CLK) BEGIN IF(CLK39。EVENT AND CLK=39。139。)THEN current_state=next_state。 END IF。END PROCESS REG。——由信號current_state將當前狀態(tài)值帶出此進程:REGLATCH1:PROCESS(LOCK) ——此進程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入 BEGIN IF LOCK=39。139。 AND LOCK39。EVENT THEN REGL=D。 END IF。 END PROCESS LATCH1。END behav。 仿真波形和RTL圖控制ADC0809采樣狀態(tài)圖如圖所示: 控制ADC0809采樣狀態(tài)圖結合時序圖可以看出,START為轉(zhuǎn)換啟動控制信號,高電平有效。ALE為模擬信號輸入選通端口地址鎖存信號,上升沿有效。一旦START有效,狀態(tài)信號EOC即變?yōu)榈碗娖?表示進入轉(zhuǎn)換狀態(tài),EOC將變?yōu)楦唠娖健4撕笸獠靠刂瓶梢允筄E由低電平變?yōu)楦唠娖?輸出有效),此時,0809的輸出數(shù)據(jù)總線D[7..0]從原來的高阻態(tài)變?yōu)檩敵鰯?shù)據(jù)有效。由狀態(tài)圖也可看到,在狀態(tài)st2中需要對0809工作狀態(tài)信號EOC進行測試,如果為低電平,表示轉(zhuǎn)換沒有結束,仍需要停留在st2狀態(tài)中等待,直到變成高電平后才說明轉(zhuǎn)換結束,在下一時鐘脈沖到來時轉(zhuǎn)向狀態(tài)st3。在狀態(tài)st3,由狀態(tài)機向0809發(fā)出轉(zhuǎn)換好的8位數(shù)據(jù)輸出允許命令,這一狀態(tài)周期同時可以作為數(shù)據(jù)輸出穩(wěn)定周期,以便能在下一狀態(tài)中向鎖存器中鎖入可靠的數(shù)據(jù)。在狀態(tài)st4,由狀態(tài)機向FPGA中的鎖存器發(fā)出鎖存信號(LOCK的上升沿),將0809輸出的數(shù)據(jù)進行鎖存。五 軟硬件聯(lián)調(diào)與分析0809是八個單端輸入,參考電壓:5V, 即Vref=5V。