Я пытаюсь сделать генерацию состояния FSM параметрической или автоматической. Я пробовал много способов и, кажется, нет способа генерировать код, в котором я нуждаюсь. Может кто-нибудь помочь, пожалуйста?Автоматическая ошибка генерации кода Verilog
Кодекс, который мне нужно генерировать является частью государственной машины FSM для государства ST_DATA_CHECK:
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
Пожалуйста, обратите внимание, что, например dwfifo_ef [0] и dwfifo_ef [1] биты могут быть равны 0 в то же время, поэтому я должен использовать здесь приоритетный кодер.
Любая помощь/идея/предложение приветствуются о том, как я могу сделать код параметрическим.
Благодаря Hayk
Спасибо Дейв для ответа Однако есть 2 вещи с вашей гуманного 1) в моем if есть 2 сигнала: s_data_write_active и s_data_read_active 2) Также я не уверен, что for-break является синтезируемым заявлением – haykp
@haykp 'for' Loops можно обобщить. Параметры цикла должны быть статичными - необходимо четко понимать, сколько будет максимального количества итераций цикла. –