AD7656 verilog 状态机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
module adc(data,clk,Busy,cs_n,convsta,convstb,convstc,rd,databuf); input [15:0] data;//????
input clk,Busy;
output convsta,convstb,convstc;//??????
output rd,cs_n;
output [15:0] databuf;//??
reg rd;
reg [15:0] REGL;
reg convsta,convstb,convstc;
wire cs_n;
wire [15:0] databuf;
parameter st0=4'b0000,
st1=4'b0001,
st2=4'b0010,
st3=4'b0011,
st4=4'b0100,
st5=4'b0101;
parameter st6=4'b0110,
st7=4'b0111,
st8=4'b1000,
st9=4'b1001,
st10=4'b1010,
st11=4'b1011;
parameter st12=4'b1100,
st13=4'b1101;
reg [3:0] current_states, next_states;
assign cs_n= 0;
assign databuf= REGL;
always@(posedge clk)
begin
current_states<= next_states;
end
always@(*)
begin
case(current_states)
st0:begin// ???
convsta= 0;
convstb= 0;
convstc=0;
next_states=st1;
rd=1'b1;
end
st1:begin//??AD??
convsta= 1;
convstb=1;
convstc= 1;
next_states= st2;
rd= 1;
end
st2:begin//??????
convsta=0;
convstb= 0;
convstc=0;
rd= 1;
if(Busy==0)
begin
next_states= st3;
rd=1;
end
else
next_states= st2;
end
st3: begin //?????????
convsta= 0;
convstb= 0;
convstc=0;
rd=0;
REGL = data;
next_states= st4;
end
st4: begin //??RD
convsta= 0;
convstb= 0;
convstc=0;
rd=1;
next_states= st5;
end
st5: begin//?????????
convsta= 0;
convstb= 0;
convstc=0;
next_states= st6;
rd=0;
REGL = data;
end
st6: begin //??RD
convsta= 0;
convstb= 0;
convstc=0;
rd=1;
next_states= st7;
end
st7: begin //?????????
convsta= 0;
convstb= 0;
convstc=0;
next_states= st8;
rd=0;
REGL = data;
end
st8: begin //??RD
convsta= 0;
convstb= 0;
convstc=0;
rd=1;
next_states= st9;
end
st9: begin //?????????
convsta= 0;
convstb= 0;
convstc=0;
next_states= st10;
rd=0;
REGL = data;
end
st10: begin //??RD
convsta= 0;
convstb= 0;
convstc=0;
rd=1;
next_states= st11;
end
st11: begin //?????????
convsta= 0;
convstb= 0;
convstc=0;
next_states= st12;
rd=0;
REGL = data;
end
st12: begin //??RD
convsta= 0;
convstb= 0;
convstc=0;
rd=1;
next_states= st13;
end
st13: begin //?????????
convsta= 0;
convstb= 0;
convstc=0;
next_states= st0;
rd=0;
REGL = data;
end
default:begin
next_states= st0;
end
endcase
end
endmodule