OpenCores
URL https://opencores.org/ocsvn/graphicsaccelerator/graphicsaccelerator/trunk

Subversion Repositories graphicsaccelerator

[/] [graphicsaccelerator/] [trunk/] [FrameBuffer2.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 OmarMokhta
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4
use IEEE.std_logic_unsigned.all;
5
use IEEE.STD_LOGIC_ARITH.ALL;
6
entity FrameBuffer is
7
    Port ( inX : in  STD_LOGIC_VECTOR (9 downto 0);
8
           inY : in  STD_LOGIC_VECTOR (8 downto 0);
9
           outX : in  STD_LOGIC_VECTOR (9 downto 0);
10
           outY : in  STD_LOGIC_VECTOR (8 downto 0);
11
           outColor : out  STD_LOGIC_VECTOR (2 downto 0);
12
           inColor : in  STD_LOGIC_VECTOR (2 downto 0);
13
           BufferWrite : in  STD_LOGIC;
14
           Clk : in  STD_LOGIC);
15
end FrameBuffer;
16
architecture Behavioral of FrameBuffer is
17
type FBuffer is array (0 to 524288/16-1) of std_logic_vector (2 downto 0);
18
impure function initFB return FBuffer is
19
variable temp : FBuffer;
20
variable i : integer;
21
begin
22
        for i in 0 to 524288/16-1 loop
23
                temp(i) := "000";
24
        end loop;
25
        return temp;
26
end initFB;
27
signal mybuffer : FBuffer := initFB;
28
signal addressWrite,addressRead : STD_LOGIC_VECTOR (14 downto 0);
29
signal temp : STD_LOGIC_VECTOR (2 downto 0);
30
begin
31
addressWrite <= inX(9 downto 2) & inY(8 downto 2);
32
addressRead <= outX(9 downto 2) & outY(8 downto 2);
33
outColor <= temp;
34
process (clk) begin
35
        if (rising_edge(Clk)) then
36
                if (BufferWrite = '1') then
37
                        mybuffer(conv_integer(addressWrite)) <= inColor;
38
                end if;
39
                temp <= mybuffer(conv_integer(addressRead));
40
        end if;
41
end process;
42
end Behavioral;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.