4er slot (3. bsp fertig)
[dide_16.git] / bsp3 / Designflow / src / vga_control_arc.vhd
diff --git a/bsp3/Designflow/src/vga_control_arc.vhd b/bsp3/Designflow/src/vga_control_arc.vhd
new file mode 100644 (file)
index 0000000..f5390c9
--- /dev/null
@@ -0,0 +1,89 @@
+-------------------------------------------------------------------------------
+-- Title      : vga_control architecture
+-- Project    : LU Digital Design
+-------------------------------------------------------------------------------
+-- File       : vga_control.vhd
+-- Author     : Thomas Handl
+-- Company    : TU Wien
+-- Created    : 2004-12-15
+-- Last update: 2006-02-24
+-------------------------------------------------------------------------------
+-- Description: generation of colors (RGB)
+-------------------------------------------------------------------------------
+-- Copyright (c) 2004 TU Wien
+-------------------------------------------------------------------------------
+-- Revisions  :
+-- Date        Version  Author  Description
+-- 2004-12-15  1.0      handl   Created
+-- 2006-02-24  2.0      ST      revised
+-------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------
+-- LIBRARIES
+-------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.std_logic_unsigned.all;
+use IEEE.std_logic_arith.all;
+
+use work.vga_pak.all;
+
+-------------------------------------------------------------------------------
+-- ARCHITECTURE
+-------------------------------------------------------------------------------
+
+architecture behav of vga_control is
+
+
+  attribute syn_preserve          : boolean;
+  attribute syn_preserve of behav : architecture is true;
+  signal   r_next, g_next, b_next  : std_logic;
+
+begin
+  DRAW_SQUARE_syn: process(clk, reset)
+  begin
+    if (reset = RES_ACT) then   -- draw black screen upon reset
+      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) then   -- 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) then   -- 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) then   -- 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;
+
+-------------------------------------------------------------------------------
+-- END ARCHITECTURE
+-------------------------------------------------------------------------------