Цитата(egorman44 @ Jun 3 2015, 14:55)

Я бы Вам рекомендовал почитать что-нибудь от Sunburst Design - у этих ребят много рассуждений по поводу реализации конечного автомата на Verilog и SV, конечно если с английским хорошо. У Iosifk на сайте есть краткий курс , там тоже описаны FSM'ки. Да собственно по первому же запросу в Google на тему "fsm verilog" вывалился пример от Altera.
Я думаю лучше самому понять как это работает, потому что конечный автомат - есть очень важный момент в цифровой схемотехнике.

Будьте добры не отсылайте меня в школу. У меня много литературы по верилогу, в том числе и о конечных автоматах.
Мне интеречно где может быть у меня ошибка...
Часть кода:
Код
parameter S1 = 1'b0;
parameter S2 = 1'b1;
parameter [7:0] DA1[0:0] = {8'b1111000};
parameter [7:0] DA2[0:4] = {8'b100100,8'b10101111,8'b111100,8'b1101110,8'b10101000};//{7'b1111000,6'b100100,8'b10101111,6'b111100,7'b1101110,8'b10101000};
parameter [7:0] SA[0:5] = {8'b11010,8'b11011,8'b11100,8'b11101,8'b11110,8'b11111};//{5'b11010,5'b11011,5'b11100,5'b11101,5'b11110,5'b11111};
parameter [7:0] L_T[0:1] = {8'b1000,8'b0};
parameter [7:0] DATA[0:47] =
{
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010
};
parameter [7:0] frame[0:60] = {DA2[0:4], SA[0:5], L_T[0:1], DATA[0:47]};
always @(posedge handshake)
begin
got_handshake <= 1;
end
always @(*)
begin
if (counter_next > 1024)
begin
counter_next <= 0;
end
else
counter_next <= counter + 1'b1;
end
reg [0:0] state, next_state;
always@(*)
begin
if (rst) begin
out <= 0;
out2 <= 0;
counter <= 0;
state <= S1;
end
else
case (state)
S1 : begin
out <= DA1[counter];
out2 <= 1'h1;
next_state = got_handshake ? S2 : S1;
counter <= counter_next;
end
S2 : begin
out <= frame[counter];
out2 <= 1'h1;
next_state = S1;
counter <= 0;
end
endcase
end
Почемуто автомат не переходит во 2-е состояние (S2), судя по всему handshke не приходит. А должен так как первый byte на MAC приходит.