簡體   English   中英

Verilog HDL錯誤:左側分配非法

[英]Verilog HDL error: Illegal left-hand side assignment

我正在學習CPU設計和基本的Verilog HDL。 我有一個在Fedora 29上的tkgate中運行的處理器,並且設計了一個硬件RAM磁盤。 我無法測試RAM,但已決定將其替換為HDL RAM磁盤。 每當我嘗試模擬電路時,都會出現錯誤:
RAM_HDL,第17行:在左側分配中非法使用“ w7”。
這是我的RAM代碼:

module RAM_HDL(RAM, Data_In, Data_Out, Address, RW);  
    reg [15:0] RAM [127:0];  
    wire [15:0] Data_In;  
    wire [15:0] Data_Out;  
    wire [7:0] Address;  
    wire RW;  

    initial  
        $readmemb("RAM_DATA.BIN", RAM);  

    always @(*)  
        begin  
            if (RW)  
                RAM[Address] <= Data_In;  
            Data_Out <= Address;  
        end  

   endmodule  

錯誤在第17行:

Data_Out <= Address;  

我相信您的問題之一就是試圖在Always塊中分配一種導線類型。 嘗試將Data_Out的聲明更改為reg而不是wire。 以下2個示例為我編譯:

module RAM_HDL(Data_In, Data_Out, Address, RW);  
reg [15:0] RAM [127:0];  
input wire [15:0] Data_In;  
output reg [15:0] Data_Out;  
input wire [7:0] Address;  
input wire RW;  

initial  
    $readmemb("RAM_DATA.BIN", RAM);  

always @(*)  
    begin  
        if (RW)  
            RAM[Address] <= Data_In;  
        Data_Out <= Address;  
    end  

endmodule  

注意更改。 輸入和輸出在端口上聲明。 ram數組不是端口之一,而data_out是reg。

另一個選擇是將數據分配移出Always塊之外,並使其保持連線:

module RAM_HDL(Data_In, Data_Out, Address, RW);  
reg [15:0] RAM [127:0];  
input wire [15:0] Data_In;  
output wire [15:0] Data_Out;  
input wire [7:0] Address;  
input wire RW;  

initial  
    $readmemb("RAM_DATA.BIN", RAM);  

always @(*)  
    begin  
        if (RW)  
            RAM[Address] <= Data_In;    
    end  
assign Data_Out = Address;

endmodule  

變化基本相同。 輸入輸出聲明和ram數組從端口列表中刪除。 但是,現在將data_Out分配到Always塊之外,這樣它就可以保持連接。

以下代碼至少可以編譯:

module RAM_HDL(Data_In, Data_Out, Address, RW);

reg [15:0] RAM [127:0];    
input [15:0] Data_In;  
output [15:0] Data_Out;  
input [7:0] Address;  
input RW;  

initial  
  $readmemb("RAM_DATA.BIN", RAM);  

always @(*)  
  begin  
    if (RW)  
      RAM[Address] <= Data_In;  
  end  
assign Data_Out = RAM[Address];  

endmodule

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM