2016-08-30 2 views
1

Mein Ziel ist es, diesen Code mit Quartus zu bilden, aber das Problem ist, ich weiß nicht, wie Sie das Problem beheben. Ich habe versucht zu wissen, was Fehler 10028 bedeutet, aber ich kann nicht herausfinden, wie man damit arbeitet. Kann mir jemand beibringen, wie man es repariert oder ob es eine Möglichkeit gibt, es zu umgehen?Quartus Fehler (10028) mit Speicher

module mem (r_wb,addr,d,q); 
input r_wb;//0write 1read 
input [7:0] addr; 
input [7:0 ] d; 
output [7:0] q; 
reg [7:0] q; 
reg [7:0] mem_bank [0:255]; 
always @(r_wb) 
if (r_wb) q=mem_bank[addr]; 
else mem_bank[addr]=d; 
always @(addr) 
if (r_wb) q=mem_bank[addr]; 
else mem_bank[addr]=d; 
always @(d) 
if (r_wb) q=mem_bank[addr]; 
else mem_bank[addr]=d; 
endmodule 
+0

Ich fand mich selbst ... –

+0

Modul mem (clk, r_wb, addr, d, q); Eingabe clk; Eingang r_wb; // 0write 1read Eingang [7: 0] Adr; Eingang [7: 0] d; Ausgabe [7: 0] q; reg [7: 0] q; reg [7: 0] mem_bank [0: 255]; immer @ (pagedge clk) if (r_wb) q = mem_bank [Adr]; sonst mem_bank [adr] = d; endmodule –

+2

Wenn Sie dies herausgefunden haben, posten Sie Ihre Lösung als Antwort. – Brick

Antwort

0

Der Code, den Sie in Ihren Kommentar eingeben, ist größtenteils korrekt, weil Sie ein Taktsignal benötigen. Sie sollten jedoch eine nicht blockierende Zuweisung verwenden (<=).

Ich würde empfehlen, Ihre Modellkopfzeile zu ANSI-Stil zu ändern, der seit 2001 gewesen ist. Der Nicht-ANSI-Stil erforderte q die drei identifiziert werden; Portliste, Richtung, Typ. ANSI-Stil komprimiert es. Nicht-ANSI ist gut zu verstehen, da viele Synthesizer und Codegeneratoren es immer noch standardmäßig verwenden. Aber jeder moderne Simulator oder Synthesizer akzeptiert ANSI-Stil als Eingabe.

module mem (
    input clk, 
    input r_wb, //0write 1read 
    input [7:0] addr, 
    input [7:0 ] d, 
    output reg [7:0] q) ; 
    reg [7:0] mem_bank [0:255]; 

    always @(posedge clk) 
    if (r_wb) q<=mem_bank[addr]; 
    else mem_bank[addr]<=d; 
endmodule 
Verwandte Themen