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

Subversion Repositories yavga

[/] [yavga/] [trunk/] [vhdl/] [vga_ctrl.vhd] - Diff between revs 24 and 28

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 24 Rev 28
Line 86... Line 86...
    i_chr_addr : in  std_logic_vector(c_CHR_ADDR_BUS_W - 1 downto 0);
    i_chr_addr : in  std_logic_vector(c_CHR_ADDR_BUS_W - 1 downto 0);
    i_chr_data : in  std_logic_vector(c_CHR_DATA_BUS_W - 1 downto 0);
    i_chr_data : in  std_logic_vector(c_CHR_DATA_BUS_W - 1 downto 0);
    o_chr_data : out std_logic_vector(c_CHR_DATA_BUS_W - 1 downto 0);
    o_chr_data : out std_logic_vector(c_CHR_DATA_BUS_W - 1 downto 0);
    i_chr_clk  : in  std_logic;
    i_chr_clk  : in  std_logic;
    i_chr_en   : in  std_logic;
    i_chr_en   : in  std_logic;
    i_chr_we   : in  std_logic_vector(3 downto 0);
    i_chr_we   : in  std_logic_vector(c_CHR_WE_BUS_W - 1 downto 0);
    i_chr_rst  : in  std_logic;
    i_chr_rst  : in  std_logic;
 
 
    -- waveform RAM memory
    -- waveform RAM memory
    i_wav_d    : in std_logic_vector(c_WAVFRM_DATA_BUS_W - 1 downto 0);
    i_wav_d    : in std_logic_vector(c_WAVFRM_DATA_BUS_W - 1 downto 0);
    i_wav_we   : in std_logic;
    i_wav_we   : in std_logic;
    i_wav_clk : IN std_logic;
    i_wav_clk  : in std_logic;
    i_wav_addr : in std_logic_vector(c_WAVFRM_ADDR_BUS_W - 1 downto 0)  --;
    i_wav_addr : in std_logic_vector(c_WAVFRM_ADDR_BUS_W - 1 downto 0)  --;
    --o_DOA : OUT std_logic_vector(15 downto 0)
    --o_DOA : OUT std_logic_vector(15 downto 0)
    );
    );
end vga_ctrl;
end vga_ctrl;
 
 
Line 131... Line 131...
--Vtime:  124.68  768.86     12468      477.94  124.68  768.68  usec  (v PERIOD = 13839.48 usec) Vfreq 72.257 Hz
--Vtime:  124.68  768.86     12468      477.94  124.68  768.68  usec  (v PERIOD = 13839.48 usec) Vfreq 72.257 Hz
 
 
architecture rtl of vga_ctrl is
architecture rtl of vga_ctrl is
 
 
  --
  --
  signal s_h_count      : std_logic_vector(10 downto 0);  -- horizontal pixel counter
  signal s_h_count      : std_logic_vector(c_H_COUNT_W - 1 downto 0);  -- horizontal pixel counter
  signal s_v_count      : std_logic_vector(9 downto 0);  -- verticalal line counter
  signal s_v_count      : std_logic_vector(c_V_COUNT_W - 1 downto 0);  -- verticalal line counter
  signal s_v_count_d_4  : std_logic_vector(3 downto 0);  -- verticalal line counter
  signal s_v_count_d_4  : std_logic_vector(3 downto 0);  -- verticalal line counter mod 16 (char height)
  signal s_h_sync       : std_logic;    -- horizontal sync trigger
  signal s_h_sync       : std_logic;    -- horizontal sync trigger
  signal s_h_sync_pulse : std_logic;    -- 1-clock pulse on sync trigger
  signal s_h_sync_pulse : std_logic;    -- 1-clock pulse on sync trigger
 
 
  --
  --
  -- signals for the charmaps Block RAM component...
  -- signals for the charmaps Block RAM component...
Line 190... Line 190...
  -- | Free | |  Reserv. |  R  G  B |      vert. pos.     |
  -- | Free | |  Reserv. |  R  G  B |      vert. pos.     |
  -- |------| |-------------------------------------------|
  -- |------| |-------------------------------------------|
  --
  --
  component waveform_ram
  component waveform_ram
    port(
    port(
      i_DIA    : in  std_logic_vector(15 downto 0);
      i_DIA    : in  std_logic_vector(c_WAVFRM_DATA_BUS_W - 1 downto 0);
      i_WEA    : in  std_logic;
      i_WEA    : in  std_logic;
      i_clockA : in  std_logic;
      i_clockA : in  std_logic;
      i_ADDRA  : in  std_logic_vector(9 downto 0);
      i_ADDRA  : in  std_logic_vector(c_WAVFRM_ADDR_BUS_W - 1 downto 0);
      --o_DOA : OUT std_logic_vector(15 downto 0);
      --o_DOA : OUT std_logic_vector(15 downto 0);
      --
      --
      i_DIB    : in  std_logic_vector(15 downto 0);
      i_DIB    : in  std_logic_vector(c_WAVFRM_DATA_BUS_W - 1 downto 0);
      i_WEB    : in  std_logic;
      i_WEB    : in  std_logic;
      i_clockB : in  std_logic;
      i_clockB : in  std_logic;
      i_ADDRB  : in  std_logic_vector(9 downto 0);
      i_ADDRB  : in  std_logic_vector(c_WAVFRM_ADDR_BUS_W - 1 downto 0);
      o_DOB    : out std_logic_vector(15 downto 0)
      o_DOB    : out std_logic_vector(c_WAVFRM_DATA_BUS_W - 1 downto 0)
      );
      );
  end component;
  end component;
 
 
  component chars_RAM
  component chars_RAM
    port(
    port(
      i_clock_rw : in  std_logic;
      i_clock_rw : in  std_logic;
      i_EN_rw    : in  std_logic;
      i_EN_rw    : in  std_logic;
      i_WE_rw    : in  std_logic_vector(3 downto 0);
      i_WE_rw    : in  std_logic_vector(c_CHR_WE_BUS_W - 1 downto 0);
      i_ADDR_rw  : in  std_logic_vector(c_CHR_ADDR_BUS_W - 1 downto 0);
      i_ADDR_rw  : in  std_logic_vector(c_CHR_ADDR_BUS_W - 1 downto 0);
      i_DI_rw    : in  std_logic_vector(c_CHR_DATA_BUS_W - 1 downto 0);
      i_DI_rw    : in  std_logic_vector(c_CHR_DATA_BUS_W - 1 downto 0);
      o_DI_rw    : out std_logic_vector(c_CHR_DATA_BUS_W - 1 downto 0);
      o_DI_rw    : out std_logic_vector(c_CHR_DATA_BUS_W - 1 downto 0);
      i_SSR      : in  std_logic;
      i_SSR      : in  std_logic;
      i_clock_r  : in  std_logic;
      i_clock_r  : in  std_logic;
Line 234... Line 234...
  -- to manage the background and cursor colors
  -- to manage the background and cursor colors
  signal s_cursor_color : std_logic_vector(2 downto 0):= "000";
  signal s_cursor_color : std_logic_vector(2 downto 0):= "000";
  signal s_bg_color : std_logic_vector(2 downto 0):= "000";
  signal s_bg_color : std_logic_vector(2 downto 0):= "000";
  --
  --
  -- to manage the cursor position  
  -- to manage the cursor position  
  signal s_cursor_x : std_logic_vector(10 downto 0);
  signal s_cursor_x     : std_logic_vector(c_H_COUNT_W - 1 downto 0);
  signal s_cursor_y : std_logic_vector(9 downto 0);
  signal s_cursor_y     : std_logic_vector(c_V_COUNT_W - 1 downto 0);
 
 
begin
begin
  -- read config params from ram...
  -- read config params from ram...
  p_config : process(i_clk)
  p_config : process(i_clk)
  begin
  begin
    if rising_edge(i_clk) then
    if rising_edge(i_clk) then
        case s_chars_ram_addr is
        case s_chars_ram_addr is
          when c_BG_CUR_COLOR_ADDR => -- bg and curs color are on the same byte byte
        when c_CFG_BG_CUR_COLOR_ADDR =>  -- bg and curs color are on the same byte byte
            s_config_time <= '1';
            s_config_time <= '1';
            s_cursor_color <= s_chars_ascii(2 downto 0);
            s_cursor_color <= s_chars_ascii(2 downto 0);
            s_bg_color <= s_chars_ascii(5 downto 3);
            s_bg_color <= s_chars_ascii(5 downto 3);
          when c_CURS_XY1 => -- xy coords spans on three bytes 
        when c_CFG_CURS_XY1 =>          -- xy coords spans on three bytes 
            s_config_time <= '1';
            s_config_time <= '1';
            s_cursor_x(10 downto 6) <= s_chars_ascii(4 downto 0);
            s_cursor_x(10 downto 6) <= s_chars_ascii(4 downto 0);
          when c_CURS_XY2 => -- xy coords spans on three bytes
        when c_CFG_CURS_XY2 =>          -- xy coords spans on three bytes
            s_config_time <= '1';
            s_config_time <= '1';
            s_cursor_x(5 downto 0) <= s_chars_ascii(7 downto 2);
            s_cursor_x(5 downto 0) <= s_chars_ascii(7 downto 2);
            s_cursor_y(9 downto 8) <= s_chars_ascii(1 downto 0);
            s_cursor_y(9 downto 8) <= s_chars_ascii(1 downto 0);
          when c_CURS_XY3 => -- xy coords spans on three bytes
        when c_CFG_CURS_XY3 =>          -- xy coords spans on three bytes
            s_config_time <= '1';
            s_config_time <= '1';
            s_cursor_y(7 downto 0) <= s_chars_ascii(7 downto 0);
            s_cursor_y(7 downto 0) <= s_chars_ascii(7 downto 0);
          when others =>
          when others =>
            s_config_time <= '0';
            s_config_time <= '0';
        end case;
        end case;

powered by: WebSVN 2.1.0

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