电子设计自动化实验报告
实验六 用状态机实现 ADC0809 的采样控制电路
一、实验目的
1. 熟悉 QuartusⅡ软件应用环境,了解实验流程。
2. 编写简单的 Verilog 代码,并在 QuartusⅡ中进行调试和验证,并在 EDA6000 中
下载代码和验证。
3. 掌握状态机的 Verilog 设计方法,并用状态机实现 ADC0809 的采样控制电路。
二、实验原理
本实验要实现用状态机实现 ADC0809 的采样控制电路。ADC0809 是 CMOS 的 8
位 A/D 转换器,片内有 8 路模拟,可控制 8 个模拟量中的一个进入转换器中。ADC0809
的分辨率为 8 位。主要控制信号说明:START 是转换开启信号,高电平有效;ALE
为模拟信号输入选通端口地址锁存信号,上升沿有效;一旦 START 有效后,状态信
号 EOC 即变为低电平,表示转换状态,转换时间约为 100us,转换结束后,EOC 变为
高电平。此后外部控制可以使 OE 由低电平变为高电平,则控制打开三态缓冲器,0809
的输出数据总线 D[7:0]从原来的高阻态变为输出数据有效。
三、实验内容
1、 用 Verilog HDL 语言实现编写实现 ADC0809 采样电路的程序。
2、 编程下载并在实验箱上进行验证
四、实验步骤与结果
1、新建 Verilog 工程项目,编写代码并保存至与模块名对应的项目文件夹。
2、编译程序,编译无误后,在【tools】里面选择 RTL 视图,观察电路结构。在【tools】>
【netlist viewers】里面选择 State Machine Viewer,查看状态机转换图。
3、将实验箱和 PC 合理连接起来。打开 EDA6000 软件,设置好芯片类型为 ACEX1K
(EP1K30TC144-3),载入模式 14。
4、根据 EDA6000 界面内管脚对应芯片的实际管脚在 QUARTUSⅡ里面设定管脚号
并检查无误。
5、将程序下载至 FPGA 试验箱内,并在 EDA6000 软件界面内进行验证测试。
程序源代码:
module ADC0809(clk,din,eoc,q,clock,start,oe);
input
clk,eoc;
input [7:0] din;
output clock,start,oe;
output [7:0] q;
reg start,oe;
reg [7:0] q1;
reg lock;
parameter s0=0,s1=1,s2=2,s3=3,s4=4;
reg [4:0] cs,next_state;
always @ (posedge clk)
begin
cs <= next_state;
end
always @ (cs or eoc)
begin
case (cs)
s0: begin start <= 0;oe <= 0;lock<=0;next_state <= s1 ;end
s1: begin start <= 1;oe <= 0;lock<=0;next_state <= s2 ;end
s2: begin start <= 0;oe <= 0;lock<=0;
if (eoc==1'b1) next_state <= s3;
else next_state <= s2;
end
s3:begin start <= 0;oe <= 1;lock<=0; next_state <= s4;end
s4:begin start <= 0;oe <= 1;lock<=1;next_state <= s0;end
default: begin start <= 0;oe <= 0;lock<=0;next_state <= s0;end
endcase
end
always @ (posedge lock)
begin
if (lock) q1 <=din;
end
assign q=q1;
assign clock=clk;
endmodule
编译:选择 processing---start compilation 命令,开始编译。也可直接点击面
板上编译按钮。结果如图:
RTL 视图:选择 Tools---netlist viewers---RTL viewer 命令,查看寄存器电路
结构图,结果如图:
State Machine Viewer:选择 Tools---netlist viewers--- State Machine Viewer,
查看状态机转换图。
仿真结果:
设置引脚:启动 EDA6000,连接试验箱。装入模式 14。根据右侧管脚提示进行管
脚锁定。在 QuartusⅡ界面中选择 assignment—pins 命令。可以用拖放的方式指定
管脚,也可以在 location 中输入管脚号。 最终结果如图所示:
试验箱测试:在 QuartusⅡ界面中选择 tools--- programmer 命令。在弹出的界
面中 Mode 选为 passive serial。点击 add hardware,选择 byteblasterMV,添加
驱动 成功后, 勾选 program/configure,点击 start,下 载文件到 试验箱 。点击
EDA6000start,开始测试。,完成测试后,还可用 EDA6000 上的逻辑分析仪对 oe、
eoc、start、clock 四个管脚进行逻辑分析。
五、实验总结
通过本次实验掌握了如何用 Verilog HDL 语言实现用状态机实现 ADC0809 的采样控
制电路的原理。进一步掌握了课堂上所学到的知识。有限状态机及其设计技术是实
用数字系统中的重要组成部分,也是实现高效率,高可靠和高速控制逻辑系统的重
要途径。因此,学习和掌握状态机的 Verilog 设计方法,实现 ADC0809 采样的状态
机电路是必不可少的。通过本次实验,我了解到状态机的一般设计结构,即说明部
分,主控时序部分,主控组合过程,辅助过程。本次实验相当顺利,我基本上掌握
了状态机设计的基本要领。