Цитата(_4afc_ @ Aug 12 2018, 09:41)

Мне в этом коде не нравится:
1 в always стоят не клоки
2 входные данные внутри always не зафиксированы на предыдущем такте / полутакте.
Цитата(andrew_b @ Aug 12 2018, 09:52)

...... Во-первых, вы заводите на тактовый вход триггера нетактовый сигнал. ...
_4afc_, Идею с программой, к сожалению, не совсем понял, но Вы сказали ключевую фразу. andrew_b тоже указал на это. Спасибо!
Поставил один always с "posedge clock" всё заработало как должно.
Даже приведу новый код:
CODE
module sled(seg,dig,clock,disp_dat);
input clock;
output [7:0] seg;
output [3:0] dig;
reg [7:0] seg;
reg [3:0] dig;
output reg [3:0] disp_dat;
reg [36:0] count;
always @ (posedge clock )
begin
count = count + 1'b1;
disp_dat = {count[28:25]};
case (disp_dat)
4'h0 : begin
seg <= 8'hc0; //"0"
dig <= 4'b0010;
end
4'h1 : begin
seg <= 8'hf9; //"1"
dig <= 4'b1000;//
end
4'h2 : begin
seg <= 8'ha4; //"2"
end
4'h3 : begin
seg <= 8'hb0; //"3"
end
4'h4 : begin
seg <= 8'h99; //"4"
dig<=4'b0001; //
end
4'h5 : seg <= 8'h92; //"5"
4'h6 : seg <= 8'h82; //"6"
4'h7 : seg <= 8'hf8; //"7"
4'h8 : seg <= 8'h80; //"8"
4'h9 : seg <= 8'h90; //"9"
4'ha : seg <= 8'h88; //"a"
4'hb : seg <= 8'h83; //"b"
4'hc : seg <= 8'hc6; //"c"
4'hd : seg <= 8'ha1; //"d"
4'he : seg <= 8'h86; //"e"
4'hf : seg <= 8'h8e; //"f"
endcase
end
endmodule
Программа была из набора примеров для отладочной платы, а я решил с ней поковыряться. Думал, что примеры пишут более подготовленные люди.
Цитата(iosifk @ Aug 12 2018, 09:51)

Т.е. ТС надо почитать о "синхронном проектировании". И о метастабильности... И прочитать, когда в case образуются latch...
Делалась ли RTL симуляция? Или сразу непроверенный код - в железо?
В RTL Viever смотрел, но мне на данном этапе сложно читать программу в виде логических элементов.
Правило с правильным тактированием я усвоил. Но я ещё не осознал, почему я указываю изменение всех данных строго после изменения disp_dat, а они меняются сами, как попало. Статьи на рекомендованные темы обязательно прочитаю и постараюсь разобраться.