实验六 数字电压表设计
一、实验目的:本次实验通过 Verilog硬件语言编写 ADC0809模数转
换器的控制程序,掌握控制原理,并进一步掌握采用有限状态机产生
控制信号的原理;掌握十六进制转十进制的运算方法以及 Verilog 的
编程思路;通过实验进一步了解原理图编辑方法和仿真方法。
二、实验要求:
1、利用 Verilog 硬件语言,自行设计一个采用有限状态机实现的
ADC0809模数转换器控制程序;
2、利用 Verilog硬件语言,自行设计一个十六进制转十进制的运算
转换程序;
3、利用原理图编辑方法,将控制程序和运算程序进行连接,实现
完整的 3位数字电压表电路,并对该电路进行仿真。
三、参考
:
1、ADC0809模数转换器芯片内部框图:
2、ADC0809模数转换器控制信号及状态
S0状态:开始状态
S1状态:地址锁存,选择模拟输入开关值
S2状态:启动 AD转换状态
S3状态:等待开始转换状态
S4状态:等待转换结束状态
S5状态:允许数据输出状态
S6状态:读取转换结果
module adc_cont(clk,start,ale,eoc,oe,dain,daout);
input clk,eoc;
input [7:0] dain;
output start,ale,oe;
output [7:0] daout;
reg start,ale,oe;
reg [7:0] daout;
reg [2:0] state;
parameter s0=3'b000,
s1=3'b001,
s2=3'b010,
s3=3'b011,
s4=3'b100,
s5=3'b101,
s6=3'b110;
always @(posedge clk)
case(state)
s0: begin ale<=0; start<=0; oe<=0; state<=s1; end
s1: begin ale<=1; start<=0; oe<=0; state<=s2; end
s2: begin ale<=0; start<=1; oe<=0; state<=s3; end
s3: begin ale<=0; start<=0; oe<=0;
if (eoc)
state<=s3;
else
state<=s4;
end
s4: begin ale<=0; start<=0; oe<=0;
if (!eoc)
state<=s4;
else
state<=s5;
end
s5: begin ale<=0; start<=0; oe<=1; state<=s6;end
s6: begin ale<=0; start<=0; oe<=1; daout<=dain; state<=s0;end
endcase
endmodule