请教verilog有限状态机的综合和仿真问题
时间:10-02
整理:3721RD
点击:
请教verilog有限状态机的综合和仿真问题
各位高人:
我的状态机是这种结构:
module Test_Modelsim( clk, out_data );
input clk;
output out_data;
reg[7:0] state;
reg out_data;
parameter s0=2'h0, s1=2'h1, s2=2'h2;
always @ ( posedge clk )
begin
case ( state )
s0:begin
out_data <= 0;
state <= s1;
end
s1:begin
out_data <= 1;
state <= s2;
end
s2:begin
state <= s0;
end
default: state <= 2'h0;
endcase
end
endmodule
我的这个模块在综合、实现的时候一点儿问题都没有,程序下载的xilinx的芯片中,工作都正常,做Simulate Behavioral Model仿真时,结果也正确!没有问题!
但做Simulate Post-Place & Route Verilog Model仿真时,modelsim中报告这样的错误:
# Loading work.glbl
# ** Error: (vsim-3043) Test_Test_Modelsim.timesim_tfw(30): Unresolved reference to 's0' in UUT.s0.
#Region: /Test_Test_Modelsim
# ** Error: (vsim-3043) Test_Test_Modelsim.timesim_tfw(31): Unresolved reference to 's1' in UUT.s1.
#Region: /Test_Test_Modelsim
# ** Error: (vsim-3043) Test_Test_Modelsim.timesim_tfw(32): Unresolved reference to 's2' in UUT.s2.
#Region: /Test_Test_Modelsim
# Error loading design
我不知道为什么出这样的错误?该如何解决这个问题?
请学长们指教!
各位高人:
我的状态机是这种结构:
module Test_Modelsim( clk, out_data );
input clk;
output out_data;
reg[7:0] state;
reg out_data;
parameter s0=2'h0, s1=2'h1, s2=2'h2;
always @ ( posedge clk )
begin
case ( state )
s0:begin
out_data <= 0;
state <= s1;
end
s1:begin
out_data <= 1;
state <= s2;
end
s2:begin
state <= s0;
end
default: state <= 2'h0;
endcase
end
endmodule
我的这个模块在综合、实现的时候一点儿问题都没有,程序下载的xilinx的芯片中,工作都正常,做Simulate Behavioral Model仿真时,结果也正确!没有问题!
但做Simulate Post-Place & Route Verilog Model仿真时,modelsim中报告这样的错误:
# Loading work.glbl
# ** Error: (vsim-3043) Test_Test_Modelsim.timesim_tfw(30): Unresolved reference to 's0' in UUT.s0.
#Region: /Test_Test_Modelsim
# ** Error: (vsim-3043) Test_Test_Modelsim.timesim_tfw(31): Unresolved reference to 's1' in UUT.s1.
#Region: /Test_Test_Modelsim
# ** Error: (vsim-3043) Test_Test_Modelsim.timesim_tfw(32): Unresolved reference to 's2' in UUT.s2.
#Region: /Test_Test_Modelsim
# Error loading design
我不知道为什么出这样的错误?该如何解决这个问题?
请学长们指教!
请教verilog有限状态机的综合和仿真问题
你在testbench或其他地方是不是有地方试图重新定义s0,s1,s2的值?
请教verilog有限状态机的综合和仿真问题
谢谢小编的热切帮助,我正在研究!好像是关键字“parameter”的问题!
请教verilog有限状态机的综合和仿真问题
基本来说,这个状态机没有问题。
不过还是有几个地方可以改进:
1、state寄存器没有复位,没有初始状态。
2、default时,也应该给state一个状态,而不是2'b0。
3、state的位宽和parameter定义的不一致。
4、从风格上讲,建议将组合逻辑(nxt_state)和时序逻辑(cur_state)分开描述,建议将输出out_data和状态机分开描述。
请教verilog有限状态机的综合和仿真问题
他这个是one always状态机,也有人喜欢用这种现态和转移态不分开的。关于状态编码,我觉得严格一点当然更好,实际上现在综合器功能相当强大,会提取状态机,所以真正用起来可能也不不一定会出问题,但是一定要给一个复位初始态倒是真的非常非常重要的。