请各位前辈帮小弟看一下一个状态机verilog程序:?奇怪!!

[复制链接]
2408|2
 楼主| liaoshiwen 发表于 2007-8-24 16:52 | 显示全部楼层 |阅读模式
小弟写了一个控制12位AD&nbsp;tlv5613,想用XC95108控制AD转换,但是遇到的问题相当郁闷。行为仿真正确,但时序仿真确怎么也来。我用示波器测试过,控制口一直是低电平。忘有经验的大哥大姐帮小弟看看,指点迷津,感激不尽!!<br />程序:<br />module&nbsp;FSM_5613(rst,dac_clk,a1,a0,dac_cs,dac_we,dac_ld);<br />input&nbsp;rst,dac_clk;<br />output&nbsp;a1,a0,dac_cs,dac_we,dac_ld;<br />reg&nbsp;a1,a0,dac_cs,dac_we,dac_ld;<br />reg[2:0]&nbsp;present;<br />parameter&nbsp;<br />reset_dac=3'b000,rd_high=3'b001,ld_high=3'b010,rd_low=3'b011,ld_low=3'b100;<br />always@(posedge&nbsp;dac_clk&nbsp;or&nbsp;posedge&nbsp;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&nbsp;<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 />行为仿真-时序仿真分别如下图:
 楼主| liaoshiwen 发表于 2007-8-24 16:54 | 显示全部楼层

不好意思,上面是时序仿真,下面是行为仿真

 楼主| liaoshiwen 发表于 2007-8-24 19:48 | 显示全部楼层

大家真是不厚道啊,自己顶一个!

状态机,如果将异步复位,改成同步复位就可以了,郁闷。为什么??????????????????///
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

25

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部