集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3187|回复: 6

verilog01状态检测怎么输出有问题

[复制链接]
CHAN 发表于 2010-6-26 00:12:41 | 显示全部楼层 |阅读模式
简单的检测输入序列中 检测序列的状态机,但是输出后不能全部检测,有些 ”01“,输出为 0;

大侠帮我看看吧

我的程序:
fsm01.v
//////////////////////////////////////////
module fsm01(rst,clk,din,dout);
input rst,clk;
input din;
output dout;
reg dout;
reg[1:0] state,nextstate;
parameter[1:0] A = 2'b00,
     B = 2'b11,
     IDLE = 2'b01;
always @(posedge clk)
if(!rst)
state <= IDLE;
else
state <= nextstate;

always @(posedge clk)
begin
  nextstate = 2'bx;
  dout = 1'b0;
  
  case(state)
  A: if(din == 1)
   begin
    dout = 1'b1;
     nextstate = B;
   end
   else
     nextstate = A;
  B:
   if(din == 1)
     nextstate = B;
   else
    nextstate = A;
   
  IDLE:if(din == 0)
    nextstate = A;
    else
    nextstate = IDLE;
  
endcase
end

endmodule
////////////////////////////////////
testbench

testfsm01.v
//////////////////////////////////////////
`timescale 1ns/1ns
module testfsm01;
reg t_clk,t_rst;
reg[25:0] data;
wire x,z;
assign x = data[25];
initial
begin
  t_clk = 0;
  t_rst = 0;
  #45 t_rst = 1;
  data = 26'b10011001100101101010010110;
end
always #30 t_clk = ~t_clk;
always @(posedge t_clk)
data = {data[24:0],data[25]};//移位

fsm01 DUT(
   .clk(t_clk),
   .rst(t_rst),
   .din(x),
   .dout(z)
   );

endmodule
longtime 发表于 2010-6-26 00:55:21 | 显示全部楼层
高手都哪去啦,帮我看看吧
interi 发表于 2010-6-26 02:02:21 | 显示全部楼层
怎么没有人啊?、我没找到问题再哪,郁闷的哦
VVC 发表于 2010-6-26 03:08:44 | 显示全部楼层
dout 输出指定不全,生成了一个锁存器,输出当然会出错。<br>
建议在各个状态下都为&nbsp; &nbsp; dout 指定输出。
ICE 发表于 2010-6-26 04:21:07 | 显示全部楼层
状态机变量state一共有00,01,11,10四个状态,程序中没有说明10状态,也没有default可能也会影响结果吧
ANG 发表于 2010-6-26 04:44:01 | 显示全部楼层
这个状态机完全不对,错误之处很多<br>
首先,第二个always语句应该是组合逻辑,敏感表中怎么有时钟信号,而不是输入信号<br>
其次,dout在每个状态下都应该有输出,否则会产生latch<br>
再次,如果是同步复位的话,那么同步复位信号rst释放之后应该在哪个状态?
Sunlife 发表于 2015-6-17 09:28:32 | 显示全部楼层

dout 输出指定不全,生成了一个锁存器,输出当然会出错。<br>
建议在各个状态下都为&nbsp; &nbsp; dout 指定输出。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-22 00:53 , Processed in 0.067777 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表