Правильный и синтезируемый стиль автоматов? - PullRequest
0 голосов
/ 28 мая 2020

Говоря здесь только о функции состояния, есть ли здесь какие-то проблемы? не использовать «следующее состояние» и использовать только 1 состояние «rd_state», которое может принимать 2 значения «IDLE_RD» и «RD_TRAN»?

 always @(posedge clk)
    begin : rd_state_func
        if (reset==1) begin
            rd_state<=IDLE_RD;
        end else begin
            case (rd_state) 
                IDLE_RD: begin
                        if (pkt_req==1) begin
                            if (fifo_empty==0) begin
                                rd_state <= RD_TRAN;
                            end else begin
                                rd_state <= IDLE_RD;
                            end
                        end else begin
                            rd_state <= IDLE_RD;
                        end
                        end
                RD_TRAN: begin
                        if (some_if.eop==1) begin 
                            rd_state <= IDLE_RD;
                        end else begin
                            rd_state <= RD_TRAN;
                        end
                end
            endcase
        end
    end

1 Ответ

0 голосов
/ 31 мая 2020

Это верно.

Он синтезируемый (почему бы и нет?).

Но, возможно, это не лучший стиль.

Я обычно использую именно тот стиль. Я считаю, что это полезно при поддержке и отладке больших автоматов, таких как те, которые возникают при преобразовании последовательного алгоритма. имеют тенденцию давать лучший результат (меньше ворот). Это связано с тем, что этот стиль не полагается на заданный путь данных, но путь данных должен быть выведен синтезатором (для каждого регистра синтезатор должен определить, какие сигналы направляются на его вход, и вычислить уравнения, которые определяют, какой из маршрутизируемых сигналов необходимо войти в реестр). Я думал, что это должно быть просто, но обнаружил, что это не так. Некоторые автоматы, которые XST синтезирует правильно, не работают в Quartus и наоборот.

...