Сообщение от
dosikus
Странно, по идее должен был остаться один мультиплексор. Ты точно вынес все присвоения pix_count за пределы основного условия?
Вот такой код:
Код:
module TOP(
input clk,
input reset,
output reg [15:0]pix_count,
output reg [7:0]line_count
);
reg [1:0]sync;
always @(posedge clk)
begin
//
sync[1:0] <= {sync[0],reset};
//
if ((sync[1] & ~sync[0]) | (pix_count[15:0] == 16'h041F)) pix_count[15:0] <= 16'h0000; else pix_count[15:0] <= pix_count[15:0] + 16'h0001;
//
if (sync[1] & ~sync[0])
begin
line_count[7:0] <= 8'h00;
end else begin
if (pix_count[15:0] == 16'h0100) line_count[7:0] <= line_count[7:0] + 8'h01;
end
end
endmodule
Должен выглядеть вот так:
Видишь, как объединились оба условия обнуления pix_count в один мультиплексор? И, что особенно, выстроились мультиплексоры у line_count в порядке приоритета (чем ближе к триггеру - тем больше приоритет)? При этом, если грамотно описать, то можно сделать сбалансированное дерево, я уже об этом говорил.