2018/08/29更新:Verilog HDL语言设计规范中讲到:一个reg变量只能在一个always语句中赋值,下面的问题就违反了这个原则。
更多规范见我的另一篇博文:Verilog HDL 使用规范(一)
用状态机描述转移图的方式,去设计一个模为5的计数器。出现了一系列的问题,一度让我崩溃。最终找到了问题的来源,且看问题以及排错过程。
问题如题目,我的代码为:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 22:12:23 08/03/2018
// Design Name:
// Module Name: counter5
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module counter5(clk,rst, cnt, co);
input clk;
input rst;
output[2:0] cnt;
output co;
reg co;
reg[2:0] pre_state, next_state;
parameter s0 = 3'b000, s1 = 3'b001, s2 = 3'b010, s3 = 3'b011, s4 = 3'b100;
always@(pos