EDA实验报告实验六用状态机实现ADC0809的采样电路设计.doc
文本预览下载声明
实验六 用状态机实现ADC0809的采样电路设计(1)
【实验目的】
设计实现ADC0809采样的状态机电路;
掌握状态机的Verilog设计方法;
学习设计仿真工具的使用方法;
【实验内容】
设计实现ADC0809采样电路,启动信号START高电平开始AD转换,此时转换结束标志变为0,当EOC由低变为高,表示转会结束,此时可以置OE为1,ADC输出转换结果。ADC0809控制时序如下:
【实验原理】
状态图和波形仿真
【程序源代码】(加注释)
module ADC0809C(CLK,RST,EOC,D,Start,ALE,OE,Lock,ADDA,Q);
input CLK,RST,EOC;input[7:0]D; //来自0809转换好的8位数据
output Start,ALE,OE,Lock,ADDA; //转换启动信号、8个模拟信号通道地址锁存信号、数据输出三态控制信号、锁存测试信号和信号通道控制信号。
output[7:0]Q;
reg Start,ALE,OE,Lock;
reg[7:0]Q;
parameter s0=0,s1=1,s2=2,s3=3,s4=4; //定义各状态子类型
reg[2:0] c_s,n_s; //
always@(posedge CLK or posedge RST) //时序过程
if(RST)
c_s=s0;
else c_s=n_s; //有现态变量c_s将当前状态值带出过程
always@(c_s or EOC) //组合过程,规定各状态装换方式
case(c_s)
s0:begin Start =0; //0809初始化
OE =0;
ALE =0;
Lock =0;
n_s =s1;
end
s1:begin Start =1; //启动采样信号Start
OE =0;
ALE =1;
Lock =0;
n_s =s2;
end
s2:begin Start =0;
ALE =0;
OE=0;
Lock =0;
if(EOC) n_s =s3; //Eoc表明转换结束
else n_s =s2; //转换未结束,继续等待
end
s3:begin Start =0; //开启OE,打开AD数据口
ALE =0;
OE =1;
Lock =0;
n_s =s4; //下一状态无条件转向s4
end
s4:begin Start =0; //开启数据锁存信号
ALE =0;
OE =1;
Lock =1;
n_s =s0;
end
default: begin//
ALE =0;Start =0;OE =0;
Lock =0; n_s =s0;
end
endcase
always@(Lock) //寄存器过程
if(Lock) //此过程中,在Lock的上升沿将转换好的数据锁入
Q =D;
assign ADDA=0;
endmodule
【元件符号与总框图】
1:元件符号
2:总框图
【实验心得和体会】
这次是状态机实验,主要应用是电路控制,这次实验的主要内容是状态图输出和波形仿真。我在这次实验出现的问题是波形中OE和LOCK有延迟,经过反复检查时时钟信号设置的问题,在这里谢谢段老师的指导。
《《电子设计自动化》实验报告
2013~2014学年 第 二 学期 2011级 电子信息工程 专业
班级: 学号: 姓名:
第 - 1 - 页 共 3 页
显示全部