小弟写了一个控制12位AD tlv5613,想用XC95108控制AD转换,但是遇到的问题相当郁闷。行为仿真正确,但时序仿真确怎么也来。我用示波器测试过,控制口一直是低电平。忘有经验的大哥大姐帮小弟看看,指点迷津,感激不尽!!<br />程序:<br />module FSM_5613(rst,dac_clk,a1,a0,dac_cs,dac_we,dac_ld);<br />input rst,dac_clk;<br />output a1,a0,dac_cs,dac_we,dac_ld;<br />reg a1,a0,dac_cs,dac_we,dac_ld;<br />reg[2:0] present;<br />parameter <br />reset_dac=3'b000,rd_high=3'b001,ld_high=3'b010,rd_low=3'b011,ld_low=3'b100;<br />always@(posedge dac_clk or posedge rst)<br /><br />if(rst)<br />begin<br />present=reset_dac;<br />dac_ld=0;<br />dac_cs=1;<br />a0=0;<br />a1=0;<br />dac_we=1;<br />end<br /><br />else <br /><br />begin<br /><br />case(present)<br /><br />reset_dac:<br />if(dac_cs)<br />begin<br />present=rd_high;<br />dac_cs=0;<br />dac_we=0;<br />dac_ld=1;<br />end<br /><br />rd_high:<br />if(dac_we==0)<br />begin<br />present=ld_high;<br />dac_we=1;<br />a0=1;<br />end<br /><br />ld_high:<br />if(dac_we==1)<br />begin<br />present=rd_low;<br />dac_we=0;<br />end<br /><br />rd_low:<br />if(dac_we==0)<br />begin<br />present=ld_low;<br />dac_we=1;<br />end<br /><br />ld_low:<br />if(dac_we==1)<br />begin<br />present=reset_dac;<br />dac_cs=1;<br />dac_ld=0;<br />a0=0;<br />end<br />default:present=reset_dac;<br /><br />endcase<br />end<br />endmodule<br /><br /><br />行为仿真-时序仿真分别如下图: |
|