diff --git a/src/top.v b/src/top.v index d88d900..b2f50b3 100644 --- a/src/top.v +++ b/src/top.v @@ -25,6 +25,13 @@ module proc_top( /* Color bar generator */ +parameter CB_HRES = 1280; +parameter CB_VRES = 720; +parameter CB_H_FP = 68; +parameter CB_H_BP = 300; +parameter CB_V_FP = 25; +parameter CB_V_BP = 5; + reg [11:0] cb_x = 0; reg [11:0] cb_y = 0; reg [11:0] cb_cnt = 0; @@ -43,39 +50,55 @@ assign out_green = cb_green; assign out_blue = cb_blue; always @(posedge clk) begin - cb_red <= 8'hff; - cb_green <= 8'h00; - cb_blue <= 8'h00; - - if (cb_x == 1279) begin - cb_blank <= 1; - end else if (cb_x == 1648-1 && (cb_y == 749 || cb_y < 719)) begin - cb_blank <= 0; - end + cb_x <= cb_x + 1; - if (cb_x == 1280+72-1) begin - cb_hsync <= 1; - end else if (cb_x == 1280+72+80-1) begin - cb_hsync <= 0; - end + cb_hsync <= cb_x >= 8 && cb_x <= 15; + cb_vsync <= cb_y >= 4 && cb_y <= 7; - if (cb_x == 1648-1) begin + if (cb_x == CB_H_FP + CB_HRES + CB_H_BP - 1) begin cb_x <= 0; + cb_y <= cb_y + 1; - if (cb_y == 720+3-1) begin - cb_vsync <= 1; - end else if (cb_y == 720+3+5-1) begin - cb_vsync <= 0; - end - if (cb_y == 750-1) begin + if (cb_y == CB_V_FP - 1) begin + cb_vactive <= 1; + + end else if (cb_y == CB_V_FP + CB_VRES - 1) begin + cb_vactive <= 0; + + end else if (cb_y == CB_V_FP + CB_VRES + CB_V_BP - 1) begin cb_y <= 0; - end else begin - cb_y <= cb_y + 1; end - end else begin - cb_x <= cb_x + 1; + end else if (cb_vactive && (cb_x == CB_H_FP - 1)) begin + cb_red <= 0; + cb_green <= 0; + cb_blue <= 0; + cb_blank <= 0; + cb_cnt <= 0; + cb_bar <= 0; + + end else if (cb_vactive && (cb_x == CB_H_FP + CB_HRES - 1)) begin + cb_blank <= 1; + + end + + if (!cb_blank) begin + cb_cnt <= cb_cnt + 1; + + if (cb_cnt == 255) begin + cb_cnt <= 0; + cb_bar <= cb_bar + 1; + + if (cb_bar == 7) begin + cb_bar <= 0; + end + + cb_red <= {8{cb_bar[0]}}; + cb_green <= {8{cb_bar[1]}}; + cb_blue <= {8{cb_bar[2]}}; + end + end end