По моему, в разбивке на модули - самая прелесть HDL и есть. Ну т.к. я сварщик не настоящий (всё больше по С++ специализируюсь), то меня это в восторг приводит делать вот так -
Код:
module rangeform(
input wire clk,
input wire[8:0] enter,
input wire[8:0] exit,
input wire[8:0] inp,
output wire q,
output wire nq
);
reg r = 0;
always @(posedge clk)
begin
if (inp>=enter-1 && inp<exit-1) begin
r<=1;
end else
begin
r<=0;
end
end
assign q = r;
assign nq = ~r;
endmodule
а потом одним махом реализовать всю функциональность с развёртками видеосигнала
Код:
rangeform rangeHBLANK(
.clk(clk7),
.enter(304),
.exit(400),
.inp(cnth[8:0]),
.q(hblank),
.nq()
);
rangeform rangeHSYNC(
.clk(clk7),
.enter(328),
.exit(360),
.inp(cnth[8:0]),
.q(),
.nq(_hsync)
);
rangeform rangeVBLANK(
.clk(resh),
.enter(248),
.exit(256),
.inp(cntv[8:0]),
.q(vblank),
.nq()
);
rangeform rangeVSYNC(
.clk(resh),
.enter(248),
.exit(252),
.inp(cntv[8:0]),
.q(_vsync),
.nq()
);
вместо того, чтобы лепить портянку из if-else