Ich versuche, die Erzeugung von FSM-Zustand parametrisch oder automatisch zu machen. Ich habe viele Möglichkeiten ausprobiert und scheint es gibt keine Möglichkeit, den Code zu generieren, den ich brauche. Kann jemand bitte helfen?Automatisches Verilog-Codegenerierungsproblem
Der Kodex, die ich generieren müssen Teil der FSM-Zustandsmaschine ist, für den ST_DATA_CHECK Zustand: kann 0
always @(posedge ui_clk_sync_rst or posedge ui_clk)
begin
if (rst) begin
s_app_cmd <= 3'b111;
s_app_en <= 1'b0;
end
end else begin
case (ddr3_state)
ST_INIT :
….
ST_DATA_CHECK : // This part of the code, needs to make parameteric
if (~dwfifo_ef[0]) begin
s_data_write_active[0] <= 1'b1 ;
end else if (~dwfifo_ef[1]) begin
s_data_write_active[1] <= 1'b1 ;
end else if (~dwfifo_ef[2]) begin
s_data_write_active[2] <= 1'b1 ;
end else if (~d_rfifo_ef[0]) begin
s_data_read_active[0] <= 1'b1 ;
end else if (~d_rfifo_ef[1]) begin
s_data_read_active[1] <= 1'b1 ;
end
ST_WRITE :
…
endcase
Bitte beachten Sie, dass zum Beispiel dwfifo_ef [0] und dwfifo_ef [1] Bits bei der sein gleichzeitig, deshalb muss ich hier den Prioritäts-Encoder verwenden.
Jede Hilfe/Idee/Vorschlag ist willkommen darüber, wie ich den Code parametrisch machen kann.
Dank Hayk
Dank Dave für Antwort Allerdings gibt es 2 Teile mit dem sollution 1) in meinem if-Anweisung gibt es 2 Signale s_data_write_active und s_data_read_active 2) auch ich bin mir nicht sicher, ob for-break synthetisierbar ist Anweisung – haykp
@haykp 'for' Schleifen sind generativ synthetisierbar. Die Schleifenparameter müssen statisch sein - es muss kristallklar sein, was die maximale Anzahl von Iterationen der Schleife sein wird. –