attribute syn_preserve of behav : architecture is true;
- DRAW_SQUARE_syn: process(clk, reset)
- begin
- if (reset = RES_ACT) then -- draw black screen upon reset
+
+begin
+
r <= COLR_OFF;
g <= COLR_OFF;
b <= COLR_OFF;
- elsif (clk'event and clk = '1') then -- synchronous capture
- r <= r_next;
- g <= g_next;
- b <= b_next;
- end if;
- end process;
-
-
- DRAW_SQUARE_next: process (column_counter, v_enable, h_enable)
- begin
- if v_enable = ENABLE and h_enable = ENABLE then
- if (column_counter >= X_MIN and column_counter < X2_MIN) -- if pixel within the rectangle borders
- r_next <= COLR_OFF;
- g_next <= COLR_OFF;
- b_next <= COLR_ON;
- elsif (column_counter >= X2_MIN and column_counter < X3_MIN) -- if pixel within the rectangle borders
- r_next <= COLR_OFF;
- g_next <= COLR_ON;
- b_next <= COLR_ON;
- elsif (column_counter >= X3_MIN and column_counter < X_MAX) -- if pixel within the rectangle borders
- r_next <= COLR_ON;
- g_next <= COLR_OFF;
- b_next <= COLR_ON;
- else -- if somewhere else on screen...
- r_next <= COLR_OFF;
- g_next <= COLR_OFF; -- ... draw background color
- b_next <= COLR_OFF;
- end if;
- else -- if out of screen...
- r_next <= COLR_OFF;
- g_next <= COLR_OFF; -- ... do not activate any color
- b_next <= COLR_OFF; -- (black screen)
- end if;
- end process;
end behav;
-- define coordinates of rectangle
constant X_MIN : std_logic_vector(COL_CNT_WIDTH-1 downto 0) := "0001100100"; -- 100
- constant X2_MIN : std_logic_vector(COL_CNT_WIDTH-1 downto 0) := "0010100111"; -- 167
- constant X3_MIN : std_logic_vector(COL_CNT_WIDTH-1 downto 0) := "0011101000"; -- 232
- constant X_MAX : std_logic_vector(COL_CNT_WIDTH-1 downto 0) := "0101110000"; -- 368
-
+ constant X_MAX : std_logic_vector(COL_CNT_WIDTH-1 downto 0) := "0011001000"; -- 200
constant Y_MIN : std_logic_vector(LINE_CNT_WIDTH-1 downto 0) := "001100100";
constant Y_MAX : std_logic_vector(LINE_CNT_WIDTH-1 downto 0) := "011001000";