一.实验目的
熟 悉 在 QuartusII 下 用状态机实 现对 ADC0809 采样控制 。
二.实验内容
在 QuartusII 下 用状态机实 现对 ADC0809 采样控制 , 并 编 译 、仿真验 证
其功能。
四 、实验程序清单
modu le ADC0809(D,CLK,EOC,RST,ALE,START,OE,ADDA,Q,LOCK_T);
inpu t [7:0]D;
input CLK,RST;
input EOC;
output ALE;
output START,OE;
output ADDA,LOCK_T;
output [7:0]Q;
reg ALE,START,OE;
parameter s0=0, s1=1, s2=2, s3=3, s4=4;
reg [4:0] cs,next_state;
reg [7:0] REGL;
reg LOCK;
always @(cs or EOC) begin
case(cs)
s0:next_state<=s1;
s1:next_state<=s2;
s2:if (EOC==1'b1) next_state<=s3;
else next_state<=s2;
s3:next_state<=s4;
s4:next_state<=s0;
default:next_state<=s0;
endcase end
always @(cs ) begin
case(cs)
s0:begin ALE=0;START=0;OE=0;LOCK=0;end
s1:begin ALE=1;START=1;OE=0;LOCK=0;end
s2:begin ALE=0;START=0;OE=0;LOCK=0;end
s3:begin ALE=0;START=0;OE=1;LOCK=0;end
s4:begin ALE=0;START=0;OE=1;LOCK=1;end
default:begin ALE=0;START=0;OE=0;LOCK=0;end
endcase end
always @(posedge CLK or posedge RST) begin
if (RST) cs<= s0;
else cs<=next_state; end
always @(posedge LOCK)
if (LOCK) REGL<=D;
assign ADDA=0; assign Q=REGL;
assign LOCK_T=LOCK;
endmodule
五.实验步骤
1. 新 建 一 个 名 称 为 ADC0809 的 工 程 , 并 在 该 文 件 夹 中 新 建 一 个 ADC0809.v
的 文 件 。
2. 编译工 程 , 编译成功后进行下一 步, 若不成功则查改错误。
3. 在 工 程 文 件 夹 中 新 建 一 个 ADC0809.vwf 的 波 形 文 件 , 导 入 工 程 端 口 , 设 置
输 入 波 形 , 仿 真 得 出 输 出 端 口 波 形 。
4. 验证输 出 端 口 波 形 是否实现用状态机实现对ADC0809 采样控制