Конечный автомат ФСМ в Верилоге - PullRequest
0 голосов
/ 06 сентября 2018

Если на входе нет сброса, как установить начальное состояние в state_0?

reg[2:0]    state;


localparam  s0 = 3'b000, s1 = 3'b001, s2 = 3'b010, s3 = 3'b011, s4 = 
3'b100, s5 = 3'b101;    
assign  state = s0; /* NOT SURE IF THIS IS RIGHT!*/


localparam  i=0, j=64, k=0, h=0; 


always @ ( posedge clk ) begin

case( state )

        s0: ........

1 Ответ

0 голосов
/ 07 сентября 2018

Нет, это не сработает, потому что оператор assign будет все время вызывать state = s0. Компилятор также будет жаловаться на установку нескольких драйверов state. Если нет сигнала сброса, один из вариантов:

initial begin
  // set any initial values
  state = s0;
end

Это будет вместо того, где у вас есть выражение assign. Это хорошо работает в симуляции, но еще лучше будет изменить логику вашего состояния:

localparam  s0 = 3'b000, s1 = 3'b001, s2 = 3'b010, s3 = 3'b011, s4 = 3'b100, s5 = 3'b101;
reg [2:0] state, next_state;

always @(posedge clk) begin
  state <= next_state;
end

always @(state) begin
  case (state)
  // modify this state logic to reflect your FSM
  s0: next_state <= s1;
  s1: next_state <= s2;
  s2: next_state <= s3;
  s3: next_state <= s4;
  s4: next_state <= s5;
  s5: next_state <= s0;
  // this controls the behavior at bringup w/o a reset
  // you should include a default case even with a reset
  default: next_state <= s0;
  endcase
end

always @(state) begin
  case (state)
  // modify this output logic to reflect your FSM
  s0: // set your output signals accordingly
  s1: // set your output signals accordingly
  s2: // set your output signals accordingly
  s3: // set your output signals accordingly
  s4: // set your output signals accordingly
  s5: // set your output signals accordingly
  // this controls the behavior at bringup w/o a reset
  // you should include a default case even with a reset
  default: // set all outputs to 0
  endcase
end

Разделение логики на тактовый блок always и логика комбинационного перехода состояний, приведенная выше, помогает создать конструкцию без защелок. Я знаю, что это больше, чем вы просили, но этот стиль кодирования помогает создавать хорошие синтезированные проекты.

...