Verilog:错误:HDLC编译器:806

时间:2015-01-22 00:52:31

标签: verilog

任务是为bcd计数器创建一个7位二进制文​​件。但是,使用我的一个模块,我收到的错误如

  

错误:HDLCompiler:806 - “D:/ Xilinx Stuff / Binary_BCD / prog_counter.v”第23行:“输入”附近的语法错误。

我刚开始使用这种语言,希望能够获得语法方面的所有帮助。我四处寻找简单的错误,比如丢失了冒号,却找不到任何错误。也许第二组眼睛会有所帮助:

module prog_count_7(max_count, reset, clk, count_out)

input [6:0] max_count;
input reset, clk;
output [6:0] count_out;

// Wires/Registers required go here.
reg reset;
reg [6:0] max_count;


// 7-bit counter instance
count_7 counter_1(.enable(1'b1),
          .reset(reset),
          .clk(clk),
          .count_out(count_out));


// logic for Counter control
always @(enable or reset or posedge clk or count_out) begin
    if(reset == 1) begin // Reset Condition
        if(max_count >= 99) begin
            count_out = 99;
        end else if(max_count<99 & count_out <99 & max_count > count_out) begin
            count_out = count_out + 1;
            end
    end else if(reset == 0) begin
        count_out = 0;
        end
end

1 个答案:

答案 0 :(得分:0)

你在第一行缺少一个半列。

module prog_count_7(max_count, reset, clk, count_out) ; //<-- here

此外,“计数器控制”的灵敏度列表没有意义。 enablecount_out不应该在那里。 reset should be negedge reset`。通常如此:

always @(posedge clk or negedge reset)

建议在分配触发器时使用非阻塞(<=)。


建议编码“反控制”

always @(posedge clk or negedge reset) begin
    if (reset == 0) begin // Reset Condition
        count_out <= 0;
    end
    else if (enable == 1) begin
        if (max_count >= 99) begin
            count_out <= 99;
        end
        else if (count_out < 99 && max_count > count_out) begin
            count_out <= count_out + 1;
        end
    end
end