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

Subversion Repositories wb_vga

[/] [wb_vga/] [tags/] [a01/] [vga_core.vhd] - Diff between revs 3 and 8

Only display areas with differences | Details | Blame | View Log

Rev 3 Rev 8
--
--
--  File: vga_core.vhd
--  File: vga_core.vhd
--
--
--  (c) Copyright Andras Tantos <andras_tantos@yahoo.com> 2001/03/31
--  (c) Copyright Andras Tantos <andras_tantos@yahoo.com> 2001/03/31
--  This code is distributed under the terms and conditions of the GNU General Public Lince.
--  This code is distributed under the terms and conditions of the GNU General Public Lince.
--
--
 
 
library IEEE;
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_1164.all;
 
 
library work;
library work;
--use wb_tk.all;
--use wb_tk.all;
use work.wb_tk.all;
use work.wb_tk.all;
 
 
entity vga_core is
entity vga_core is
        generic (
        generic (
                -- cannot be overwritten at the moment...
                -- cannot be overwritten at the moment...
                v_mem_width: positive := 16;
                v_mem_width: positive := 16;
                fifo_size: positive := 256;
                fifo_size: positive := 256;
                v_addr_width : positive := 20;
                v_addr_width : positive := 20;
                bus_width: positive := 8
                bus_width: positive := 8
        );
        );
        port (
        port (
                clk_i: in std_logic;
                clk_i: in std_logic;
                clk_en: in std_logic := '1';
                clk_en: in std_logic := '1';
                rst_i: in std_logic := '0';
                rst_i: in std_logic := '0';
 
 
                -- CPU bus interface
                -- CPU bus interface
                dat_i: in std_logic_vector (bus_width-1 downto 0);
                dat_i: in std_logic_vector (bus_width-1 downto 0);
                dat_oi: in std_logic_vector (bus_width-1 downto 0);
                dat_oi: in std_logic_vector (bus_width-1 downto 0);
                dat_o: out std_logic_vector (bus_width-1 downto 0);
                dat_o: out std_logic_vector (bus_width-1 downto 0);
                cyc_i: in std_logic;
                cyc_i: in std_logic;
                ack_o: out std_logic;
                ack_o: out std_logic;
                ack_oi: in std_logic;
                ack_oi: in std_logic;
                we_i: in std_logic;
                we_i: in std_logic;
                vmem_stb_i: in std_logic;
                vmem_stb_i: in std_logic;
                reg_stb_i: in std_logic;
                reg_stb_i: in std_logic;
                adr_i: in std_logic_vector (v_addr_width downto 0);
                adr_i: in std_logic_vector (v_addr_width downto 0);
 
 
                -- video memory SRAM interface
                -- video memory SRAM interface
                s_data : inout std_logic_vector((v_mem_width-1) downto 0);
                s_data : inout std_logic_vector((v_mem_width-1) downto 0);
                s_addr : out std_logic_vector((v_addr_width-1) downto 0);
                s_addr : out std_logic_vector((v_addr_width-1) downto 0);
                s_oen : out std_logic;
                s_oen : out std_logic;
                s_wrhn : out std_logic;
                s_wrhn : out std_logic;
                s_wrln : out std_logic;
                s_wrln : out std_logic;
                s_cen : out std_logic;
                s_cen : out std_logic;
 
 
                -- sync blank and video signal outputs
                -- sync blank and video signal outputs
                h_sync: out std_logic;
                h_sync: out std_logic;
                h_blank: out std_logic;
                h_blank: out std_logic;
                v_sync: out std_logic;
                v_sync: out std_logic;
                v_blank: out std_logic;
                v_blank: out std_logic;
                h_tc: out std_logic;
                h_tc: out std_logic;
                v_tc: out std_logic;
                v_tc: out std_logic;
                blank: out std_logic;
                blank: out std_logic;
                video_out: out std_logic_vector (7 downto 0);  -- video output binary signal (unused bits are forced to 0)
                video_out: out std_logic_vector (7 downto 0);  -- video output binary signal (unused bits are forced to 0)
 
 
        -- TEST SIGNALS
        -- TEST SIGNALS
            T_v_we_o: out std_logic;
            T_v_we_o: out std_logic;
            T_v_stb_o: out std_logic;
            T_v_stb_o: out std_logic;
            T_v_ack_i: out std_logic;
            T_v_ack_i: out std_logic;
            T_v_adr_o : out std_logic_vector((v_addr_width-1) downto 0);
            T_v_adr_o : out std_logic_vector((v_addr_width-1) downto 0);
            T_v_sel_o : out std_logic_vector((v_addr_width/8)-1 downto 0);
            T_v_sel_o : out std_logic_vector((v_addr_width/8)-1 downto 0);
            T_v_dat_o : out std_logic_vector((v_mem_width-1) downto 0);
            T_v_dat_o : out std_logic_vector((v_mem_width-1) downto 0);
            T_v_dat_i : out std_logic_vector((v_mem_width-1) downto 0)
            T_v_dat_i : out std_logic_vector((v_mem_width-1) downto 0)
        );
        );
end vga_core;
end vga_core;
 
 
architecture vga_core of vga_core is
architecture vga_core of vga_core is
        component video_engine
        component video_engine
                generic (
                generic (
                        v_mem_width: positive := 16;
                        v_mem_width: positive := 16;
                        v_addr_width: positive:= 20;
                        v_addr_width: positive:= 20;
                        fifo_size: positive := 256;
                        fifo_size: positive := 256;
                        dual_scan_fifo_size: positive := 256
                        dual_scan_fifo_size: positive := 256
                );
                );
                port (
                port (
                        clk: in std_logic;
                        clk: in std_logic;
                        clk_en: in std_logic := '1';
                        clk_en: in std_logic := '1';
                        reset: in std_logic := '0';
                        reset: in std_logic := '0';
 
 
                        total: in std_logic_vector(v_addr_width-1 downto 0);   -- total video memory size in bytes 7..0
                        total: in std_logic_vector(v_addr_width-1 downto 0);   -- total video memory size in bytes 7..0
                        fifo_treshold: in std_logic_vector(7 downto 0);        -- priority change threshold
                        fifo_treshold: in std_logic_vector(7 downto 0);        -- priority change threshold
                        bpp: in std_logic_vector(1 downto 0);                  -- number of bits makes up a pixel valid values: 1,2,4,8
                        bpp: in std_logic_vector(1 downto 0);                  -- number of bits makes up a pixel valid values: 1,2,4,8
                        multi_scan: in std_logic_vector(1 downto 0);           -- number of repeated scans
                        multi_scan: in std_logic_vector(1 downto 0);           -- number of repeated scans
 
 
                        hbs: in std_logic_vector(7 downto 0);
                        hbs: in std_logic_vector(7 downto 0);
                        hss: in std_logic_vector(7 downto 0);
                        hss: in std_logic_vector(7 downto 0);
                        hse: in std_logic_vector(7 downto 0);
                        hse: in std_logic_vector(7 downto 0);
                        htotal: in std_logic_vector(7 downto 0);
                        htotal: in std_logic_vector(7 downto 0);
                        vbs: in std_logic_vector(7 downto 0);
                        vbs: in std_logic_vector(7 downto 0);
                        vss: in std_logic_vector(7 downto 0);
                        vss: in std_logic_vector(7 downto 0);
                        vse: in std_logic_vector(7 downto 0);
                        vse: in std_logic_vector(7 downto 0);
                        vtotal: in std_logic_vector(7 downto 0);
                        vtotal: in std_logic_vector(7 downto 0);
 
 
                        pps: in std_logic_vector(7 downto 0);
                        pps: in std_logic_vector(7 downto 0);
 
 
                        high_prior: out std_logic;                      -- signals to the memory arbitrer to give high
                        high_prior: out std_logic;                      -- signals to the memory arbitrer to give high
                                                                        -- priority to the video engine
                                                                        -- priority to the video engine
                        v_mem_rd: out std_logic;                        -- video memory read request
                        v_mem_rd: out std_logic;                        -- video memory read request
                        v_mem_rdy: in std_logic;                        -- video memory data ready
                        v_mem_rdy: in std_logic;                        -- video memory data ready
                        v_mem_addr: out std_logic_vector (v_addr_width-1 downto 0); -- video memory address
                        v_mem_addr: out std_logic_vector (v_addr_width-1 downto 0); -- video memory address
                        v_mem_data: in std_logic_vector (v_mem_width-1 downto 0);   -- video memory data
                        v_mem_data: in std_logic_vector (v_mem_width-1 downto 0);   -- video memory data
 
 
                        h_sync: out std_logic;
                        h_sync: out std_logic;
                        h_blank: out std_logic;
                        h_blank: out std_logic;
                        v_sync: out std_logic;
                        v_sync: out std_logic;
                        v_blank: out std_logic;
                        v_blank: out std_logic;
                        h_tc: out std_logic;
                        h_tc: out std_logic;
                        v_tc: out std_logic;
                        v_tc: out std_logic;
                        blank: out std_logic;
                        blank: out std_logic;
                        video_out: out std_logic_vector (7 downto 0)    -- video output binary signal (unused bits are forced to 0)
                        video_out: out std_logic_vector (7 downto 0)    -- video output binary signal (unused bits are forced to 0)
                );
                );
        end component video_engine;
        end component video_engine;
 
 
        component wb_async_slave
        component wb_async_slave
        generic (
        generic (
                width: positive := 16;
                width: positive := 16;
                addr_width: positive := 20
                addr_width: positive := 20
        );
        );
        port (
        port (
                clk_i: in std_logic;
                clk_i: in std_logic;
                rst_i: in std_logic := '0';
                rst_i: in std_logic := '0';
 
 
                -- interface for wait-state generator state-machine
                -- interface for wait-state generator state-machine
                wait_state: in std_logic_vector (3 downto 0);
                wait_state: in std_logic_vector (3 downto 0);
 
 
                -- interface to wishbone master device
                -- interface to wishbone master device
                adr_i: in std_logic_vector (addr_width-1 downto 0);
                adr_i: in std_logic_vector (addr_width-1 downto 0);
                sel_i: in std_logic_vector ((addr_width/8)-1 downto 0);
                sel_i: in std_logic_vector ((addr_width/8)-1 downto 0);
                dat_i: in std_logic_vector (width-1 downto 0);
                dat_i: in std_logic_vector (width-1 downto 0);
                dat_o: out std_logic_vector (width-1 downto 0);
                dat_o: out std_logic_vector (width-1 downto 0);
                dat_oi: in std_logic_vector (width-1 downto 0) := (others => '-');
                dat_oi: in std_logic_vector (width-1 downto 0) := (others => '-');
                we_i: in std_logic;
                we_i: in std_logic;
                stb_i: in std_logic;
                stb_i: in std_logic;
                ack_o: out std_logic := '0';
                ack_o: out std_logic := '0';
                ack_oi: in std_logic := '-';
                ack_oi: in std_logic := '-';
 
 
                -- interface to async slave
                -- interface to async slave
                a_data: inout std_logic_vector (width-1 downto 0) := (others => 'Z');
                a_data: inout std_logic_vector (width-1 downto 0) := (others => 'Z');
                a_addr: out std_logic_vector (addr_width-1 downto 0) := (others => 'U');
                a_addr: out std_logic_vector (addr_width-1 downto 0) := (others => 'U');
                a_rdn: out std_logic := '1';
                a_rdn: out std_logic := '1';
                a_wrn: out std_logic := '1';
                a_wrn: out std_logic := '1';
                a_cen: out std_logic := '1';
                a_cen: out std_logic := '1';
                -- byte-enable signals
                -- byte-enable signals
                a_byen: out std_logic_vector ((addr_width/8)-1 downto 0)
                a_byen: out std_logic_vector ((addr_width/8)-1 downto 0)
        );
        );
        end component;
        end component;
 
 
        component wb_arbiter
        component wb_arbiter
        port (
        port (
--              clk: in std_logic;
--              clk: in std_logic;
                rst_i: in std_logic := '0';
                rst_i: in std_logic := '0';
 
 
                -- interface to master device a
                -- interface to master device a
                a_we_i: in std_logic;
                a_we_i: in std_logic;
                a_stb_i: in std_logic;
                a_stb_i: in std_logic;
                a_cyc_i: in std_logic;
                a_cyc_i: in std_logic;
                a_ack_o: out std_logic;
                a_ack_o: out std_logic;
                a_ack_oi: in std_logic := '-';
                a_ack_oi: in std_logic := '-';
                a_err_o: out std_logic;
                a_err_o: out std_logic;
                a_err_oi: in std_logic := '-';
                a_err_oi: in std_logic := '-';
                a_rty_o: out std_logic;
                a_rty_o: out std_logic;
                a_rty_oi: in std_logic := '-';
                a_rty_oi: in std_logic := '-';
 
 
                -- interface to master device b
                -- interface to master device b
                b_we_i: in std_logic;
                b_we_i: in std_logic;
                b_stb_i: in std_logic;
                b_stb_i: in std_logic;
                b_cyc_i: in std_logic;
                b_cyc_i: in std_logic;
                b_ack_o: out std_logic;
                b_ack_o: out std_logic;
                b_ack_oi: in std_logic := '-';
                b_ack_oi: in std_logic := '-';
                b_err_o: out std_logic;
                b_err_o: out std_logic;
                b_err_oi: in std_logic := '-';
                b_err_oi: in std_logic := '-';
                b_rty_o: out std_logic;
                b_rty_o: out std_logic;
                b_rty_oi: in std_logic := '-';
                b_rty_oi: in std_logic := '-';
 
 
                -- interface to shared devices
                -- interface to shared devices
                s_we_o: out std_logic;
                s_we_o: out std_logic;
                s_stb_o: out std_logic;
                s_stb_o: out std_logic;
                s_cyc_o: out std_logic;
                s_cyc_o: out std_logic;
                s_ack_i: in std_logic;
                s_ack_i: in std_logic;
                s_err_i: in std_logic := '-';
                s_err_i: in std_logic := '-';
                s_rty_i: in std_logic := '-';
                s_rty_i: in std_logic := '-';
 
 
                mux_signal: out std_logic; -- 0: select A signals, 1: select B signals
                mux_signal: out std_logic; -- 0: select A signals, 1: select B signals
 
 
                -- misc control lines
                -- misc control lines
                priority: in std_logic -- 0: A have priority over B, 1: B have priority over A
                priority: in std_logic -- 0: A have priority over B, 1: B have priority over A
        );
        );
        end component;
        end component;
 
 
        component wb_out_reg
        component wb_out_reg
        generic (
        generic (
                width : positive := 8;
                width : positive := 8;
                bus_width: positive := 8;
                bus_width: positive := 8;
                offset: integer := 0
                offset: integer := 0
        );
        );
        port (
        port (
                clk_i: in std_logic;
                clk_i: in std_logic;
                rst_i: in std_logic;
                rst_i: in std_logic;
                rst_val: std_logic_vector(width-1 downto 0) := (others => '0');
                rst_val: std_logic_vector(width-1 downto 0) := (others => '0');
 
 
                dat_i: in std_logic_vector (bus_width-1 downto 0);
                dat_i: in std_logic_vector (bus_width-1 downto 0);
                dat_oi: in std_logic_vector (bus_width-1 downto 0) := (others => '-');
                dat_oi: in std_logic_vector (bus_width-1 downto 0) := (others => '-');
                dat_o: out std_logic_vector (bus_width-1 downto 0);
                dat_o: out std_logic_vector (bus_width-1 downto 0);
                q: out std_logic_vector (width-1 downto 0);
                q: out std_logic_vector (width-1 downto 0);
                we_i: in std_logic;
                we_i: in std_logic;
                stb_i: in std_logic;
                stb_i: in std_logic;
                ack_o: out std_logic;
                ack_o: out std_logic;
                ack_oi: in std_logic := '-'
                ack_oi: in std_logic := '-'
        );
        );
        end component;
        end component;
 
 
        component wb_bus_upsize
        component wb_bus_upsize
        generic (
        generic (
                m_bus_width: positive := 8; -- master bus width
                m_bus_width: positive := 8; -- master bus width
                m_addr_width: positive := 21; -- master bus width
                m_addr_width: positive := 21; -- master bus width
                s_bus_width: positive := 16; -- slave bus width
                s_bus_width: positive := 16; -- slave bus width
                little_endien: boolean := true -- if set to false, big endien
                little_endien: boolean := true -- if set to false, big endien
        );
        );
        port (
        port (
--              clk_i: in std_logic;
--              clk_i: in std_logic;
--              rst_i: in std_logic := '0';
--              rst_i: in std_logic := '0';
 
 
                -- Master bus interface
                -- Master bus interface
                m_adr_i: in std_logic_vector (m_addr_width-1 downto 0);
                m_adr_i: in std_logic_vector (m_addr_width-1 downto 0);
                m_sel_i: in std_logic_vector ((m_bus_width/8)-1 downto 0) := (others => '1');
                m_sel_i: in std_logic_vector ((m_bus_width/8)-1 downto 0) := (others => '1');
                m_dat_i: in std_logic_vector (m_bus_width-1 downto 0);
                m_dat_i: in std_logic_vector (m_bus_width-1 downto 0);
                m_dat_oi: in std_logic_vector (m_bus_width-1 downto 0) := (others => '-');
                m_dat_oi: in std_logic_vector (m_bus_width-1 downto 0) := (others => '-');
                m_dat_o: out std_logic_vector (m_bus_width-1 downto 0);
                m_dat_o: out std_logic_vector (m_bus_width-1 downto 0);
                m_cyc_i: in std_logic;
                m_cyc_i: in std_logic;
                m_ack_o: out std_logic;
                m_ack_o: out std_logic;
                m_ack_oi: in std_logic := '-';
                m_ack_oi: in std_logic := '-';
                m_err_o: out std_logic;
                m_err_o: out std_logic;
                m_err_oi: in std_logic := '-';
                m_err_oi: in std_logic := '-';
                m_rty_o: out std_logic;
                m_rty_o: out std_logic;
                m_rty_oi: in std_logic := '-';
                m_rty_oi: in std_logic := '-';
                m_we_i: in std_logic;
                m_we_i: in std_logic;
                m_stb_i: in std_logic;
                m_stb_i: in std_logic;
 
 
                -- Slave bus interface
                -- Slave bus interface
                s_adr_o: out std_logic_vector (m_addr_width-2 downto 0);
                s_adr_o: out std_logic_vector (m_addr_width-2 downto 0);
                s_sel_o: out std_logic_vector ((s_bus_width/8)-1 downto 0);
                s_sel_o: out std_logic_vector ((s_bus_width/8)-1 downto 0);
                s_dat_i: in std_logic_vector (s_bus_width-1 downto 0);
                s_dat_i: in std_logic_vector (s_bus_width-1 downto 0);
                s_dat_o: out std_logic_vector (s_bus_width-1 downto 0);
                s_dat_o: out std_logic_vector (s_bus_width-1 downto 0);
                s_cyc_o: out std_logic;
                s_cyc_o: out std_logic;
                s_ack_i: in std_logic;
                s_ack_i: in std_logic;
                s_err_i: in std_logic := '-';
                s_err_i: in std_logic := '-';
                s_rty_i: in std_logic := '-';
                s_rty_i: in std_logic := '-';
                s_we_o: out std_logic;
                s_we_o: out std_logic;
                s_stb_o: out std_logic
                s_stb_o: out std_logic
        );
        );
        end component;
        end component;
 
 
        signal reset_core: std_logic_vector(0 downto 0);
        signal reset_core: std_logic_vector(0 downto 0);
        signal total: std_logic_vector(v_addr_width-1 downto 0);
        signal total: std_logic_vector(v_addr_width-1 downto 0);
        signal fifo_treshold: std_logic_vector(7 downto 0);
        signal fifo_treshold: std_logic_vector(7 downto 0);
        signal bpp: std_logic_vector(1 downto 0);
        signal bpp: std_logic_vector(1 downto 0);
        signal multi_scan: std_logic_vector(1 downto 0);
        signal multi_scan: std_logic_vector(1 downto 0);
        signal hbs: std_logic_vector(7 downto 0);
        signal hbs: std_logic_vector(7 downto 0);
        signal hss: std_logic_vector(7 downto 0);
        signal hss: std_logic_vector(7 downto 0);
        signal hse: std_logic_vector(7 downto 0);
        signal hse: std_logic_vector(7 downto 0);
        signal htotal: std_logic_vector(7 downto 0);
        signal htotal: std_logic_vector(7 downto 0);
        signal vbs: std_logic_vector(7 downto 0);
        signal vbs: std_logic_vector(7 downto 0);
        signal vss: std_logic_vector(7 downto 0);
        signal vss: std_logic_vector(7 downto 0);
        signal vse: std_logic_vector(7 downto 0);
        signal vse: std_logic_vector(7 downto 0);
        signal vtotal: std_logic_vector(7 downto 0);
        signal vtotal: std_logic_vector(7 downto 0);
        signal pps: std_logic_vector(7 downto 0);
        signal pps: std_logic_vector(7 downto 0);
        signal wait_state: std_logic_vector (3 downto 0);
        signal wait_state: std_logic_vector (3 downto 0);
        signal sync_pol: std_logic_vector (3 downto 0);
        signal sync_pol: std_logic_vector (3 downto 0);
 
 
        signal reset_core_do: std_logic_vector(bus_width-1 downto 0);
        signal reset_core_do: std_logic_vector(bus_width-1 downto 0);
        signal total0_do: std_logic_vector(bus_width-1 downto 0);
        signal total0_do: std_logic_vector(bus_width-1 downto 0);
        signal total1_do: std_logic_vector(bus_width-1 downto 0);
        signal total1_do: std_logic_vector(bus_width-1 downto 0);
        signal total2_do: std_logic_vector(bus_width-1 downto 0);
        signal total2_do: std_logic_vector(bus_width-1 downto 0);
        signal fifo_treshold_do: std_logic_vector(bus_width-1 downto 0);
        signal fifo_treshold_do: std_logic_vector(bus_width-1 downto 0);
        signal bpp_do: std_logic_vector(bus_width-1 downto 0);
        signal bpp_do: std_logic_vector(bus_width-1 downto 0);
        signal multi_scan_do: std_logic_vector(bus_width-1 downto 0);
        signal multi_scan_do: std_logic_vector(bus_width-1 downto 0);
        signal hbs_do: std_logic_vector(bus_width-1 downto 0);
        signal hbs_do: std_logic_vector(bus_width-1 downto 0);
        signal hss_do: std_logic_vector(bus_width-1 downto 0);
        signal hss_do: std_logic_vector(bus_width-1 downto 0);
        signal hse_do: std_logic_vector(bus_width-1 downto 0);
        signal hse_do: std_logic_vector(bus_width-1 downto 0);
        signal htotal_do: std_logic_vector(bus_width-1 downto 0);
        signal htotal_do: std_logic_vector(bus_width-1 downto 0);
        signal vbs_do: std_logic_vector(bus_width-1 downto 0);
        signal vbs_do: std_logic_vector(bus_width-1 downto 0);
        signal vss_do: std_logic_vector(bus_width-1 downto 0);
        signal vss_do: std_logic_vector(bus_width-1 downto 0);
        signal vse_do: std_logic_vector(bus_width-1 downto 0);
        signal vse_do: std_logic_vector(bus_width-1 downto 0);
        signal vtotal_do: std_logic_vector(bus_width-1 downto 0);
        signal vtotal_do: std_logic_vector(bus_width-1 downto 0);
        signal pps_do: std_logic_vector(bus_width-1 downto 0);
        signal pps_do: std_logic_vector(bus_width-1 downto 0);
        signal wait_state_do: std_logic_vector(bus_width-1 downto 0);
        signal wait_state_do: std_logic_vector(bus_width-1 downto 0);
        signal vm_do: std_logic_vector(bus_width-1 downto 0);
        signal vm_do: std_logic_vector(bus_width-1 downto 0);
 
 
        signal reset_core_sel: std_logic;
        signal reset_core_sel: std_logic;
        signal total0_sel: std_logic;
        signal total0_sel: std_logic;
        signal total1_sel: std_logic;
        signal total1_sel: std_logic;
        signal total2_sel: std_logic;
        signal total2_sel: std_logic;
        signal fifo_treshold_sel: std_logic;
        signal fifo_treshold_sel: std_logic;
        signal bpp_sel: std_logic;
        signal bpp_sel: std_logic;
        signal multi_scan_sel: std_logic;
        signal multi_scan_sel: std_logic;
        signal hbs_sel: std_logic;
        signal hbs_sel: std_logic;
        signal hss_sel: std_logic;
        signal hss_sel: std_logic;
        signal hse_sel: std_logic;
        signal hse_sel: std_logic;
        signal htotal_sel: std_logic;
        signal htotal_sel: std_logic;
        signal vbs_sel: std_logic;
        signal vbs_sel: std_logic;
        signal vss_sel: std_logic;
        signal vss_sel: std_logic;
        signal vse_sel: std_logic;
        signal vse_sel: std_logic;
        signal vtotal_sel: std_logic;
        signal vtotal_sel: std_logic;
        signal pps_sel: std_logic;
        signal pps_sel: std_logic;
        signal wait_state_sel: std_logic;
        signal wait_state_sel: std_logic;
        signal sync_pol_sel: std_logic;
        signal sync_pol_sel: std_logic;
 
 
        signal reset_core_ack: std_logic;
        signal reset_core_ack: std_logic;
        signal total0_ack: std_logic;
        signal total0_ack: std_logic;
        signal total1_ack: std_logic;
        signal total1_ack: std_logic;
        signal total2_ack: std_logic;
        signal total2_ack: std_logic;
        signal fifo_treshold_ack: std_logic;
        signal fifo_treshold_ack: std_logic;
        signal bpp_ack: std_logic;
        signal bpp_ack: std_logic;
        signal multi_scan_ack: std_logic;
        signal multi_scan_ack: std_logic;
        signal hbs_ack: std_logic;
        signal hbs_ack: std_logic;
        signal hss_ack: std_logic;
        signal hss_ack: std_logic;
        signal hse_ack: std_logic;
        signal hse_ack: std_logic;
        signal htotal_ack: std_logic;
        signal htotal_ack: std_logic;
        signal vbs_ack: std_logic;
        signal vbs_ack: std_logic;
        signal vss_ack: std_logic;
        signal vss_ack: std_logic;
        signal vse_ack: std_logic;
        signal vse_ack: std_logic;
        signal vtotal_ack: std_logic;
        signal vtotal_ack: std_logic;
        signal pps_ack: std_logic;
        signal pps_ack: std_logic;
        signal wait_state_ack: std_logic;
        signal wait_state_ack: std_logic;
        signal vm_ack: std_logic;
        signal vm_ack: std_logic;
 
 
        signal a_adr_o : std_logic_vector((v_addr_width-1) downto 0);
        signal a_adr_o : std_logic_vector((v_addr_width-1) downto 0);
        signal a_sel_o : std_logic_vector((v_addr_width/8)-1 downto 0);
        signal a_sel_o : std_logic_vector((v_addr_width/8)-1 downto 0);
        signal a_dat_o : std_logic_vector((v_mem_width-1) downto 0);
        signal a_dat_o : std_logic_vector((v_mem_width-1) downto 0);
        signal a_dat_i : std_logic_vector((v_mem_width-1) downto 0);
        signal a_dat_i : std_logic_vector((v_mem_width-1) downto 0);
        signal a_we_o : std_logic;
        signal a_we_o : std_logic;
        signal a_stb_o : std_logic;
        signal a_stb_o : std_logic;
        signal a_cyc_o : std_logic;
        signal a_cyc_o : std_logic;
        signal a_ack_i : std_logic;
        signal a_ack_i : std_logic;
 
 
        signal b_adr_o : std_logic_vector((v_addr_width-1) downto 0);
        signal b_adr_o : std_logic_vector((v_addr_width-1) downto 0);
        signal b_sel_o : std_logic_vector((v_addr_width/8)-1 downto 0);
        signal b_sel_o : std_logic_vector((v_addr_width/8)-1 downto 0);
--      signal b_dat_o : std_logic_vector((v_mem_width-1) downto 0);
--      signal b_dat_o : std_logic_vector((v_mem_width-1) downto 0);
        signal b_dat_i : std_logic_vector((v_mem_width-1) downto 0);
        signal b_dat_i : std_logic_vector((v_mem_width-1) downto 0);
        signal b_stb_o : std_logic;
        signal b_stb_o : std_logic;
--      signal b_we_o : std_logic;
--      signal b_we_o : std_logic;
--      signal b_cyc_o : std_logic;
--      signal b_cyc_o : std_logic;
        signal b_ack_i : std_logic;
        signal b_ack_i : std_logic;
 
 
        signal v_we_o: std_logic;
        signal v_we_o: std_logic;
        signal v_stb_o: std_logic;
        signal v_stb_o: std_logic;
        signal v_ack_i: std_logic;
        signal v_ack_i: std_logic;
        signal v_adr_o : std_logic_vector((v_addr_width-1) downto 0);
        signal v_adr_o : std_logic_vector((v_addr_width-1) downto 0);
        signal v_sel_o : std_logic_vector((v_addr_width/8)-1 downto 0);
        signal v_sel_o : std_logic_vector((v_addr_width/8)-1 downto 0);
        signal v_dat_o : std_logic_vector((v_mem_width-1) downto 0);
        signal v_dat_o : std_logic_vector((v_mem_width-1) downto 0);
        signal v_dat_i : std_logic_vector((v_mem_width-1) downto 0);
        signal v_dat_i : std_logic_vector((v_mem_width-1) downto 0);
 
 
        signal s_byen : std_logic_vector((v_addr_width/8)-1 downto 0);
        signal s_byen : std_logic_vector((v_addr_width/8)-1 downto 0);
 
 
        signal mux_signal: std_logic;
        signal mux_signal: std_logic;
 
 
        signal high_prior: std_logic;
        signal high_prior: std_logic;
 
 
        signal reset_engine: std_logic;
        signal reset_engine: std_logic;
 
 
        signal i_h_sync: std_logic;
        signal i_h_sync: std_logic;
        signal i_h_blank: std_logic;
        signal i_h_blank: std_logic;
        signal i_v_sync: std_logic;
        signal i_v_sync: std_logic;
        signal i_v_blank: std_logic;
        signal i_v_blank: std_logic;
 
 
        signal s_wrn : std_logic;
        signal s_wrn : std_logic;
 
 
begin
begin
        -- map all registers:
        -- map all registers:
        reset_core_reg: wb_out_reg
        reset_core_reg: wb_out_reg
                generic map( width => 1, bus_width => bus_width , offset => 4 )
                generic map( width => 1, bus_width => bus_width , offset => 4 )
                port map(
                port map(
                stb_i => reset_core_sel,
                stb_i => reset_core_sel,
                q => reset_core,
                q => reset_core,
                rst_val => "1",
                rst_val => "1",
                dat_oi => vm_do,
                dat_oi => vm_do,
                dat_o => reset_core_do,
                dat_o => reset_core_do,
                ack_oi => vm_ack,
                ack_oi => vm_ack,
                ack_o => reset_core_ack,
                ack_o => reset_core_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        total0_reg: wb_out_reg
        total0_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
                    stb_i => total0_sel,
                    stb_i => total0_sel,
            q => total(7 downto 0),
            q => total(7 downto 0),
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => reset_core_do,
            dat_oi => reset_core_do,
            dat_o => total0_do,
            dat_o => total0_do,
            ack_oi => reset_core_ack,
            ack_oi => reset_core_ack,
            ack_o => total0_ack,
            ack_o => total0_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        total1_reg: wb_out_reg
        total1_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => total1_sel,
            stb_i => total1_sel,
            q => total(15 downto 8),
            q => total(15 downto 8),
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => total0_do,
            dat_oi => total0_do,
            dat_o => total1_do,
            dat_o => total1_do,
            ack_oi => total0_ack,
            ack_oi => total0_ack,
            ack_o => total1_ack,
            ack_o => total1_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        total2_reg: wb_out_reg
        total2_reg: wb_out_reg
                generic map( width => 4, bus_width => bus_width , offset => 0 )
                generic map( width => 4, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => total2_sel,
            stb_i => total2_sel,
            q => total(19 downto 16),
            q => total(19 downto 16),
            rst_val => "0000",
            rst_val => "0000",
            dat_oi => total1_do,
            dat_oi => total1_do,
            dat_o => total2_do,
            dat_o => total2_do,
            ack_oi => total1_ack,
            ack_oi => total1_ack,
            ack_o => total2_ack,
            ack_o => total2_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        fifo_treshold_reg: wb_out_reg
        fifo_treshold_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => fifo_treshold_sel,
            stb_i => fifo_treshold_sel,
            q => fifo_treshold,
            q => fifo_treshold,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => total2_do,
            dat_oi => total2_do,
            dat_o => fifo_treshold_do,
            dat_o => fifo_treshold_do,
            ack_oi => total2_ack,
            ack_oi => total2_ack,
            ack_o => fifo_treshold_ack,
            ack_o => fifo_treshold_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        bpp_reg: wb_out_reg
        bpp_reg: wb_out_reg
            generic map( width => 2, bus_width => bus_width , offset => 0 )
            generic map( width => 2, bus_width => bus_width , offset => 0 )
            port map(
            port map(
            stb_i => bpp_sel,
            stb_i => bpp_sel,
            q => bpp,
            q => bpp,
            rst_val => "00",
            rst_val => "00",
            dat_oi => fifo_treshold_do,
            dat_oi => fifo_treshold_do,
            dat_o => bpp_do,
            dat_o => bpp_do,
            ack_oi => fifo_treshold_ack,
            ack_oi => fifo_treshold_ack,
            ack_o => bpp_ack,
            ack_o => bpp_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        multi_scan_reg: wb_out_reg
        multi_scan_reg: wb_out_reg
                generic map( width => 2, bus_width => bus_width , offset => 2 )
                generic map( width => 2, bus_width => bus_width , offset => 2 )
                port map(
                port map(
            stb_i => multi_scan_sel,
            stb_i => multi_scan_sel,
            q => multi_scan,
            q => multi_scan,
            rst_val => "00",
            rst_val => "00",
            dat_oi => bpp_do,
            dat_oi => bpp_do,
            dat_o => multi_scan_do,
            dat_o => multi_scan_do,
            ack_oi => bpp_ack,
            ack_oi => bpp_ack,
            ack_o => multi_scan_ack,
            ack_o => multi_scan_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        hbs_reg: wb_out_reg
        hbs_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => hbs_sel,
            stb_i => hbs_sel,
            q => hbs,
            q => hbs,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => multi_scan_do,
            dat_oi => multi_scan_do,
            dat_o => hbs_do,
            dat_o => hbs_do,
            ack_oi => multi_scan_ack,
            ack_oi => multi_scan_ack,
            ack_o => hbs_ack,
            ack_o => hbs_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        hss_reg: wb_out_reg
        hss_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => hss_sel,
            stb_i => hss_sel,
            q => hss,
            q => hss,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => hbs_do,
            dat_oi => hbs_do,
            dat_o => hss_do,
            dat_o => hss_do,
            ack_oi => hbs_ack,
            ack_oi => hbs_ack,
            ack_o => hss_ack,
            ack_o => hss_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        hse_reg: wb_out_reg
        hse_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => hse_sel,
            stb_i => hse_sel,
            q => hse,
            q => hse,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => hss_do,
            dat_oi => hss_do,
            dat_o => hse_do,
            dat_o => hse_do,
            ack_oi => hss_ack,
            ack_oi => hss_ack,
            ack_o => hse_ack,
            ack_o => hse_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        htotal_reg: wb_out_reg
        htotal_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => htotal_sel,
            stb_i => htotal_sel,
            q => htotal,
            q => htotal,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => hse_do,
            dat_oi => hse_do,
            dat_o => htotal_do,
            dat_o => htotal_do,
            ack_oi => hse_ack,
            ack_oi => hse_ack,
            ack_o => htotal_ack,
            ack_o => htotal_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        vbs_reg: wb_out_reg
        vbs_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => vbs_sel,
            stb_i => vbs_sel,
            q => vbs,
            q => vbs,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => htotal_do,
            dat_oi => htotal_do,
            dat_o => vbs_do,
            dat_o => vbs_do,
            ack_oi => htotal_ack,
            ack_oi => htotal_ack,
            ack_o => vbs_ack,
            ack_o => vbs_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        vss_reg: wb_out_reg
        vss_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => vss_sel,
            stb_i => vss_sel,
            q => vss,
            q => vss,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => vbs_do,
            dat_oi => vbs_do,
            dat_o => vss_do,
            dat_o => vss_do,
            ack_oi => vbs_ack,
            ack_oi => vbs_ack,
            ack_o => vss_ack,
            ack_o => vss_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        vse_reg: wb_out_reg
        vse_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => vse_sel,
            stb_i => vse_sel,
            q => vse,
            q => vse,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => vss_do,
            dat_oi => vss_do,
            dat_o => vse_do,
            dat_o => vse_do,
            ack_oi => vss_ack,
            ack_oi => vss_ack,
            ack_o => vse_ack,
            ack_o => vse_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        vtotal_reg: wb_out_reg
        vtotal_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => vtotal_sel,
            stb_i => vtotal_sel,
            q => vtotal,
            q => vtotal,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => vse_do,
            dat_oi => vse_do,
            dat_o => vtotal_do,
            dat_o => vtotal_do,
            ack_oi => vse_ack,
            ack_oi => vse_ack,
            ack_o => vtotal_ack,
            ack_o => vtotal_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        pps_reg: wb_out_reg
        pps_reg: wb_out_reg
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                generic map( width => 8, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => pps_sel,
            stb_i => pps_sel,
            q => pps,
            q => pps,
            rst_val => "00000000",
            rst_val => "00000000",
            dat_oi => vtotal_do,
            dat_oi => vtotal_do,
            dat_o => pps_do,
            dat_o => pps_do,
            ack_oi => vtotal_ack,
            ack_oi => vtotal_ack,
            ack_o => pps_ack,
            ack_o => pps_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        wait_state_reg: wb_out_reg
        wait_state_reg: wb_out_reg
                generic map( width => 4, bus_width => bus_width , offset => 0 )
                generic map( width => 4, bus_width => bus_width , offset => 0 )
                port map(
                port map(
            stb_i => wait_state_sel,
            stb_i => wait_state_sel,
            q => wait_state,
            q => wait_state,
            rst_val => "0000",
            rst_val => "0000",
            dat_oi => pps_do,
            dat_oi => pps_do,
            dat_o => wait_state_do,
            dat_o => wait_state_do,
            ack_oi => pps_ack,
            ack_oi => pps_ack,
            ack_o => wait_state_ack,
            ack_o => wait_state_ack,
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
        sync_pol_reg: wb_out_reg
        sync_pol_reg: wb_out_reg
                generic map( width => 4, bus_width => bus_width , offset => 4 )
                generic map( width => 4, bus_width => bus_width , offset => 4 )
                port map(
                port map(
            stb_i => sync_pol_sel,
            stb_i => sync_pol_sel,
            q => sync_pol,
            q => sync_pol,
            rst_val => "0000",
            rst_val => "0000",
            dat_oi => wait_state_do,
            dat_oi => wait_state_do,
            dat_o => dat_o, -- END OF THE CHAIN
            dat_o => dat_o, -- END OF THE CHAIN
            ack_oi => wait_state_ack,
            ack_oi => wait_state_ack,
            ack_o => ack_o, -- END OF THE CHAIN
            ack_o => ack_o, -- END OF THE CHAIN
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
                we_i => we_i, clk_i => clk_i, rst_i => rst_i, dat_i => dat_i );
 
 
        reset_engine <= rst_i or reset_core(0);
        reset_engine <= rst_i or reset_core(0);
 
 
        v_e: video_engine
        v_e: video_engine
                generic map ( v_mem_width => v_mem_width, v_addr_width => v_addr_width, fifo_size => fifo_size, dual_scan_fifo_size => fifo_size )
                generic map ( v_mem_width => v_mem_width, v_addr_width => v_addr_width, fifo_size => fifo_size, dual_scan_fifo_size => fifo_size )
                port map (
                port map (
                        clk => clk_i,
                        clk => clk_i,
                        clk_en => clk_en,
                        clk_en => clk_en,
                        reset => reset_engine,
                        reset => reset_engine,
                        total => total,
                        total => total,
                        fifo_treshold => fifo_treshold,
                        fifo_treshold => fifo_treshold,
                        bpp => bpp,
                        bpp => bpp,
                        multi_scan => multi_scan,
                        multi_scan => multi_scan,
                        hbs => hbs,
                        hbs => hbs,
                        hss => hss,
                        hss => hss,
                        hse => hse,
                        hse => hse,
                        htotal => htotal,
                        htotal => htotal,
                        vbs => vbs,
                        vbs => vbs,
                        vss => vss,
                        vss => vss,
                        vse => vse,
                        vse => vse,
                        vtotal => vtotal,
                        vtotal => vtotal,
                        pps => pps,
                        pps => pps,
 
 
                        high_prior => high_prior,
                        high_prior => high_prior,
 
 
                        v_mem_rd => b_stb_o,
                        v_mem_rd => b_stb_o,
                        v_mem_rdy => b_ack_i,
                        v_mem_rdy => b_ack_i,
                        v_mem_addr => b_adr_o,
                        v_mem_addr => b_adr_o,
                        v_mem_data => b_dat_i,
                        v_mem_data => b_dat_i,
 
 
                        h_sync => i_h_sync,
                        h_sync => i_h_sync,
                        h_blank => i_h_blank,
                        h_blank => i_h_blank,
                        v_sync => i_v_sync,
                        v_sync => i_v_sync,
                        v_blank => i_v_blank,
                        v_blank => i_v_blank,
                        h_tc => h_tc,
                        h_tc => h_tc,
                        v_tc => v_tc,
                        v_tc => v_tc,
                        blank => blank,
                        blank => blank,
                        video_out => video_out
                        video_out => video_out
                );
                );
 
 
        h_sync <= i_h_sync xor sync_pol(0);
        h_sync <= i_h_sync xor sync_pol(0);
        v_sync <= i_v_sync xor sync_pol(1);
        v_sync <= i_v_sync xor sync_pol(1);
        h_blank <= i_h_blank;-- xor sync_pol(2);
        h_blank <= i_h_blank;-- xor sync_pol(2);
        v_blank <= i_v_blank;-- xor sync_pol(3);
        v_blank <= i_v_blank;-- xor sync_pol(3);
 
 
        resize: wb_bus_upsize
        resize: wb_bus_upsize
                generic map (
                generic map (
                        m_bus_width => bus_width, s_bus_width => v_mem_width, m_addr_width => v_addr_width+1
                        m_bus_width => bus_width, s_bus_width => v_mem_width, m_addr_width => v_addr_width+1
                )
                )
                port map (
                port map (
                        m_adr_i => adr_i,
                        m_adr_i => adr_i,
--                      m_sel_i => (others => '1'),
--                      m_sel_i => (others => '1'),
                        m_dat_i => dat_i,
                        m_dat_i => dat_i,
                        m_dat_oi => dat_oi, -- Beginning of the chain
                        m_dat_oi => dat_oi, -- Beginning of the chain
                        m_cyc_i => cyc_i,
                        m_cyc_i => cyc_i,
                        m_dat_o => vm_do,
                        m_dat_o => vm_do,
                        m_ack_o => vm_ack,
                        m_ack_o => vm_ack,
                        m_ack_oi => ack_oi, -- Beginning of the chain
                        m_ack_oi => ack_oi, -- Beginning of the chain
                        m_we_i => we_i,
                        m_we_i => we_i,
                        m_stb_i => vmem_stb_i,
                        m_stb_i => vmem_stb_i,
 
 
                        s_adr_o => a_adr_o,
                        s_adr_o => a_adr_o,
                        s_sel_o => a_sel_o,
                        s_sel_o => a_sel_o,
                        s_dat_i => a_dat_i,
                        s_dat_i => a_dat_i,
                        s_dat_o => a_dat_o,
                        s_dat_o => a_dat_o,
                s_cyc_o => a_cyc_o,
                s_cyc_o => a_cyc_o,
                        s_ack_i => a_ack_i,
                        s_ack_i => a_ack_i,
                        s_we_o => a_we_o,
                        s_we_o => a_we_o,
                        s_stb_o => a_stb_o
                        s_stb_o => a_stb_o
                );
                );
 
 
 
 
        arbiter: wb_arbiter
        arbiter: wb_arbiter
        port map (
        port map (
                rst_i => reset_engine,
                rst_i => reset_engine,
 
 
                a_we_i => a_we_o,
                a_we_i => a_we_o,
                a_cyc_i => a_cyc_o,
                a_cyc_i => a_cyc_o,
                a_stb_i => a_stb_o,
                a_stb_i => a_stb_o,
                a_ack_o => a_ack_i,
                a_ack_o => a_ack_i,
                a_ack_oi => '-',
                a_ack_oi => '-',
 
 
                b_we_i => '0',
                b_we_i => '0',
                b_cyc_i => b_stb_o,
                b_cyc_i => b_stb_o,
                b_stb_i => b_stb_o,
                b_stb_i => b_stb_o,
                b_ack_o => b_ack_i,
                b_ack_o => b_ack_i,
                b_ack_oi => '0', -- maybe not needed at all
                b_ack_oi => '0', -- maybe not needed at all
 
 
                s_we_o => v_we_o,
                s_we_o => v_we_o,
                s_stb_o => v_stb_o,
                s_stb_o => v_stb_o,
                s_ack_i => v_ack_i,
                s_ack_i => v_ack_i,
 
 
                mux_signal => mux_signal,
                mux_signal => mux_signal,
 
 
                priority => high_prior
                priority => high_prior
        );
        );
 
 
    b_sel_o <= (others => '1');
    b_sel_o <= (others => '1');
 
 
        bus_mux: process is
        bus_mux: process is
        begin
        begin
                wait on mux_signal, v_dat_i, a_adr_o, a_dat_o, b_adr_o, a_sel_o, b_sel_o;
                wait on mux_signal, v_dat_i, a_adr_o, a_dat_o, b_adr_o, a_sel_o, b_sel_o;
                if (mux_signal = '0') then
                if (mux_signal = '0') then
                        v_adr_o <= a_adr_o;
                        v_adr_o <= a_adr_o;
                        v_sel_o <= a_sel_o;
                        v_sel_o <= a_sel_o;
                        v_dat_o <= a_dat_o;
                        v_dat_o <= a_dat_o;
                        a_dat_i <= v_dat_i;
                        a_dat_i <= v_dat_i;
                        b_dat_i <= (others => '-');
                        b_dat_i <= (others => '-');
                else
                else
                        v_adr_o <= b_adr_o;
                        v_adr_o <= b_adr_o;
                        v_sel_o <= b_sel_o;
                        v_sel_o <= b_sel_o;
                        v_dat_o <= (others => '-');
                        v_dat_o <= (others => '-');
                        b_dat_i <= v_dat_i;
                        b_dat_i <= v_dat_i;
                        a_dat_i <= (others => '-');
                        a_dat_i <= (others => '-');
                end if;
                end if;
        end process;
        end process;
 
 
        mem_driver: wb_async_slave
        mem_driver: wb_async_slave
            generic map (width => v_mem_width, addr_width => v_addr_width)
            generic map (width => v_mem_width, addr_width => v_addr_width)
            port map (
            port map (
                clk_i => clk_i,
                clk_i => clk_i,
                    rst_i => reset_engine,
                    rst_i => reset_engine,
 
 
                wait_state => wait_state,
                wait_state => wait_state,
 
 
                adr_i => v_adr_o,
                adr_i => v_adr_o,
                        sel_i => v_sel_o,
                        sel_i => v_sel_o,
                dat_o => v_dat_i,
                dat_o => v_dat_i,
                dat_i => v_dat_o,
                dat_i => v_dat_o,
--              dat_oi => (others => '0'), -- may not be needed
--              dat_oi => (others => '0'), -- may not be needed
                we_i => v_we_o,
                we_i => v_we_o,
                stb_i => v_stb_o,
                stb_i => v_stb_o,
                ack_o => v_ack_i,
                ack_o => v_ack_i,
                ack_oi => '0', -- may not be needed
                ack_oi => '0', -- may not be needed
 
 
                a_data => s_data,
                a_data => s_data,
                a_addr => s_addr,
                a_addr => s_addr,
                a_rdn => s_oen,
                a_rdn => s_oen,
                a_wrn => s_wrn,
                a_wrn => s_wrn,
                a_cen => s_cen,
                a_cen => s_cen,
                a_byen => s_byen
                a_byen => s_byen
            );
            );
 
 
        s_wrln <= s_wrn or s_byen(0);
        s_wrln <= s_wrn or s_byen(0);
        s_wrhn <= s_wrn or s_byen(1);
        s_wrhn <= s_wrn or s_byen(1);
 
 
        addr_decoder: process is
        addr_decoder: process is
        begin
        begin
                wait on reg_stb_i, adr_i;
                wait on reg_stb_i, adr_i;
 
 
                reset_core_sel <= '0';
                reset_core_sel <= '0';
                total0_sel <= '0';
                total0_sel <= '0';
                total1_sel <= '0';
                total1_sel <= '0';
                total2_sel <= '0';
                total2_sel <= '0';
                fifo_treshold_sel <= '0';
                fifo_treshold_sel <= '0';
                bpp_sel <= '0';
                bpp_sel <= '0';
                multi_scan_sel <= '0';
                multi_scan_sel <= '0';
                hbs_sel <= '0';
                hbs_sel <= '0';
                hss_sel <= '0';
                hss_sel <= '0';
                hse_sel <= '0';
                hse_sel <= '0';
                htotal_sel <= '0';
                htotal_sel <= '0';
                vbs_sel <= '0';
                vbs_sel <= '0';
                vss_sel <= '0';
                vss_sel <= '0';
                vse_sel <= '0';
                vse_sel <= '0';
                vtotal_sel <= '0';
                vtotal_sel <= '0';
                pps_sel <= '0';
                pps_sel <= '0';
                wait_state_sel <= '0';
                wait_state_sel <= '0';
                sync_pol_sel <= '0';
                sync_pol_sel <= '0';
 
 
                if (reg_stb_i = '1') then
                if (reg_stb_i = '1') then
                        case (adr_i(4 downto 0)) is
                        case (adr_i(4 downto 0)) is
                                when "00000" => total0_sel <= '1';
                                when "00000" => total0_sel <= '1';
                                when "00001" => total1_sel <= '1';
                                when "00001" => total1_sel <= '1';
                                when "00010" => total2_sel <= '1';
                                when "00010" => total2_sel <= '1';
                                when "00011" => fifo_treshold_sel <= '1';
                                when "00011" => fifo_treshold_sel <= '1';
 
 
                                when "00100" => hbs_sel <= '1';
                                when "00100" => hbs_sel <= '1';
                                when "00101" => hss_sel <= '1';
                                when "00101" => hss_sel <= '1';
                                when "00110" => hse_sel <= '1';
                                when "00110" => hse_sel <= '1';
                                when "00111" => htotal_sel <= '1';
                                when "00111" => htotal_sel <= '1';
 
 
                                when "01000" => vbs_sel <= '1';
                                when "01000" => vbs_sel <= '1';
                                when "01001" => vss_sel <= '1';
                                when "01001" => vss_sel <= '1';
                                when "01010" => vse_sel <= '1';
                                when "01010" => vse_sel <= '1';
                                when "01011" => vtotal_sel <= '1';
                                when "01011" => vtotal_sel <= '1';
 
 
                                when "01100" => pps_sel <= '1';
                                when "01100" => pps_sel <= '1';
                                when "01101" => wait_state_sel <= '1'; sync_pol_sel <= '1';
                                when "01101" => wait_state_sel <= '1'; sync_pol_sel <= '1';
                                when "01110" => bpp_sel <= '1'; multi_scan_sel <= '1'; reset_core_sel <= '1';
                                when "01110" => bpp_sel <= '1'; multi_scan_sel <= '1'; reset_core_sel <= '1';
                                when others =>
                                when others =>
                        end case;
                        end case;
                end if;
                end if;
        end process;
        end process;
 
 
    -- TEST SIGNALS
    -- TEST SIGNALS
    T_v_we_o  <=   v_we_o;
    T_v_we_o  <=   v_we_o;
    T_v_stb_o <=   v_stb_o;
    T_v_stb_o <=   v_stb_o;
    T_v_ack_i <=   v_ack_i;
    T_v_ack_i <=   v_ack_i;
    T_v_adr_o <=   v_adr_o;
    T_v_adr_o <=   v_adr_o;
    T_v_sel_o <=   v_sel_o;
    T_v_sel_o <=   v_sel_o;
    T_v_dat_o <=   v_dat_o;
    T_v_dat_o <=   v_dat_o;
    T_v_dat_i <=  v_dat_i;
    T_v_dat_i <=  v_dat_i;
 
 
end vga_core;
end vga_core;
 
 
 
 

powered by: WebSVN 2.1.0

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