From e1f3a0e577f5aa9d52f3053969171c675430878f Mon Sep 17 00:00:00 2001 From: Wojciech Kosior Date: Tue, 1 Sep 2020 17:03:42 +0200 Subject: fix line counting in test model (avoid having picture shifted 1 line down on virtual display) --- models/vga_display.v | 88 +++++++++++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 43 deletions(-) (limited to 'models') diff --git a/models/vga_display.v b/models/vga_display.v index bb683e2..6e30248 100644 --- a/models/vga_display.v +++ b/models/vga_display.v @@ -134,11 +134,11 @@ module VGA_640_480_60Hz( end // else: !if(missing_h_sync_pulse) - /* Vertical stuff is almost entirely the same as horizontal */ - if (new_line) begin + /* Vertical stuff is similar to horizontal */ + if (h_state == ACTIVE_VIDEO) begin if (unexpected_v_sync_pulse) begin v_state <= SYNC_PULSE; - v_counter <= 1; + v_counter <= 0; if (v_state != UNKNOWN_STATE) begin `MSG(({"VGA: error: unexpected vertical sync pulse signal ", @@ -146,52 +146,54 @@ module VGA_640_480_60Hz( end end else if (missing_v_sync_pulse) begin v_state <= BACK_PORCH; - v_counter <= 1; + v_counter <= 0; `MSG(({"VGA: error: missing expected vertical sync pulse signal ", "(line %0d of sync pulse)"}, v_counter)); - end else begin - case (v_state) - FRONT_PORCH : begin - if (v_counter + 1 != V_FRONT_PORCH_LENGTH) begin - v_counter <= v_counter + 1; - end else begin - v_state <= SYNC_PULSE; - v_counter <= 0; - end + end + end // if (h_state == ACTIVE_VIDEO) + + if (new_line) begin + case (v_state) + FRONT_PORCH : begin + if (v_counter + 1 != V_FRONT_PORCH_LENGTH) begin + v_counter <= v_counter + 1; + end else begin + v_state <= SYNC_PULSE; + v_counter <= 0; end - SYNC_PULSE : begin - if (v_counter + 1 != V_SYNC_PULSE_LENGTH) begin - v_counter <= v_counter + 1; - end else begin - v_state <= BACK_PORCH; - v_counter <= 0; - end + end + SYNC_PULSE : begin + if (v_counter + 1 != V_SYNC_PULSE_LENGTH) begin + v_counter <= v_counter + 1; + end else begin + v_state <= BACK_PORCH; + v_counter <= 0; end - BACK_PORCH : begin - if (v_counter + 1 != V_BACK_PORCH_LENGTH) begin - v_counter <= v_counter + 1; - end else begin - v_state <= ACTIVE_VIDEO; - v_counter <= 0; - end + end + BACK_PORCH : begin + if (v_counter + 1 != V_BACK_PORCH_LENGTH) begin + v_counter <= v_counter + 1; + end else begin + v_state <= ACTIVE_VIDEO; + v_counter <= 0; end - ACTIVE_VIDEO : begin - if (v_counter + 1 != V_ACTIVE_VIDEO_LENGTH) begin - v_counter <= v_counter + 1; - end else begin - v_state <= FRONT_PORCH; - v_counter <= 0; - - if (!error) begin - $writememb("VGAdump.mem", picture); - `DBG(("VGA: written VGAdump.mem")); - image_writes <= image_writes + 1; - end - end // else: !if(v_counter + 1 != V_ACTIVE_VIDEO_LENGTH) - end // case: ACTIVE_VIDEO - endcase // case (v_state) - end // else: !if(missing_v_sync_pulse) + end + ACTIVE_VIDEO : begin + if (v_counter + 1 != V_ACTIVE_VIDEO_LENGTH) begin + v_counter <= v_counter + 1; + end else begin + v_state <= FRONT_PORCH; + v_counter <= 0; + + if (!error) begin + $writememb("VGAdump.mem", picture); + `DBG(("VGA: written VGAdump.mem")); + image_writes <= image_writes + 1; + end + end // else: !if(v_counter + 1 != V_ACTIVE_VIDEO_LENGTH) + end // case: ACTIVE_VIDEO + endcase // case (v_state) end // if (new_line) if (unexpected_h_sync_pulse || unexpected_h_sync_pulse || -- cgit v1.2.3