Verilog 综合给了我一个我不明白的错误

问题描述

我在合成我的代码时遇到这个错误,但我不知道这是什么意思。内容如下:

Error-net "Count[0] 或直接连接的网络由 more 不是一个来源,并非所有驱动程序都是三种状态。

它对向量 count[0] - count[4] 以及我的 loadk 值表示相同的错误。代码是我对 SPI 主机的表示。 SPI 主机有一个移位寄存器的实例,用于推送信息。

module SPIMaster(output reg SCLK,CS,MOSI,input EN,CLK,MISO,input [7:0] m_data);
    wire master_out;
    reg [4:0] count;
    wire [7:0] data_buff;
    wire SCLK1;
    reg master_in,c_sw,k,state,load;
    shiftReg register_out (master_out,data_buff,load,(~SCLK),master_in,m_data);
    assign SCLK1 = (~c_sw) | CLK;
    always@(posedge CLK) begin
        if(state) begin
            if (k == 1) begin
                state <= 0;
                c_sw <= 0;
                CS <= 1;
                count <= 0;
                k <= 0;
                load <= 0;
            end
            else begin
                state <= 1;
                c_sw <= 1;
                CS <= 0;
            end
        end
        else begin
            if (EN == 1) begin
                state <= 1;
                c_sw <= 1;
                CS <= 0;
                count <= 0;
                k <= 0;
                load <= 1;
            end
            else begin
                state <= 0;
                c_sw <= 0;
                CS <= 1;
                count <= 0;
                k <= 0;
                load <= 0;
            end
        end
    end
    always@(posedge SCLK1) begin
        if (CS == 0) master_in <= MISO;
        if (count == 7) begin
            load <= 0;
        end
        else if (count == 15)begin
            load <= 0;
        end
        else begin
            load <= 1;
        end
    end
    always@(negedge SCLK1) begin
        if (count == 23) k <= 1;
        else k <= 0;
        if (CS == 0) begin
            MOSI <= master_out;
            count <= count + 1;
        end
    end
endmodule

解决方法

您的代码不符合良好的综合编码实践,因为您从 2 个不同的 count 块分配给 always,而这 2 个块由不同的时钟信号触发。您应该从同一个 count 块中对 always 进行所有分配。

loadk 也是如此。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...