summaryrefslogtreecommitdiffstats
path: root/lab4/VGA_MOTOR/VGA_lab.vhd
blob: a23187f0eb48bf5178d69f4f7e70f9db65fc8c79 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
--------------------------------------------------------------------------------
-- VGA lab
-- Anders Nilsson
-- 16-dec-2015
-- Version 1.0


-- library declaration
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;            -- basic IEEE library
use IEEE.NUMERIC_STD.ALL;               -- IEEE library for the unsigned type
                                        -- and various arithmetic operations

-- entity
entity VGA_lab is
  port ( clk                    : in std_logic;                              -- system clock
         rst                    : in std_logic;                              -- reset
         Hsync                  : out std_logic;                             -- horizontal sync
         Vsync                  : out std_logic;                             -- vertical sync
         vgaRed                 : out std_logic_vector(2 downto 0);          -- VGA red
         vgaGreen               : out std_logic_vector(2 downto 0);          -- VGA green
         vgaBlue                : out std_logic_vector(2 downto 1));         -- VGA blue
end VGA_lab;


-- architecture
architecture Behavioral of VGA_lab is

  -- picture memory component
  component PICT_MEM
    port ( clk                  : in std_logic;                         -- system clock
         -- port 1
           we1                  : in std_logic;                         -- write enable
           data_in1             : in std_logic_vector(7 downto 0);      -- data in
           data_out1            : out std_logic_vector(7 downto 0);     -- data out
           addr1                : in unsigned(10 downto 0);             -- address
         -- port 2
           we2                  : in std_logic;                         -- write enable
           data_in2             : in std_logic_vector(7 downto 0);      -- data in
           data_out2            : out std_logic_vector(7 downto 0);     -- data out
           addr2                : in unsigned(10 downto 0));            -- address
  end component;
        
  -- VGA motor component
  component VGA_MOTOR
    port ( clk                  : in std_logic;                         -- system clock
           rst                  : in std_logic;                         -- reset
           data                 : in std_logic_vector(7 downto 0);      -- data
           addr                 : out unsigned(10 downto 0);            -- address
           vgaRed               : out std_logic_vector(2 downto 0);     -- VGA red
           vgaGreen             : out std_logic_vector(2 downto 0);     -- VGA green
           vgaBlue              : out std_logic_vector(2 downto 1);     -- VGA blue
           Hsync                : out std_logic;                        -- horizontal sync
           Vsync                : out std_logic);                        -- vertical sync
  end component;

  -- intermediate signals between PICT_MEM and VGA_MOTOR
  signal  data_out2_s           : std_logic_vector(7 downto 0);         -- data
  signal  addr2_s               : unsigned(10 downto 0);                -- address

begin

  -- picture memory component connection
  U1 : PICT_MEM port map(clk=>clk, we1=>'0', data_in1=>"00000000", addr1=>"00000000000", we2=>'0', data_in2=>"00000000", data_out2=>data_out2_s, addr2=>addr2_s);

  -- VGA motor component connection
  U2 : VGA_MOTOR port map(clk=>clk, rst=>rst, data=>data_out2_s, addr=>addr2_s, vgaRed=>vgaRed, vgaGreen=>vgaGreen, vgaBlue=>vgaBlue, Hsync=>Hsync, Vsync=>Vsync);

end Behavioral;