-------------------------------------------------------------------------------
-- Title         : OSRAM SCDV5540 Display Controller Characters
-- Project       : General Purpose Core
-------------------------------------------------------------------------------
-- File          : DisplayCharacters.vhd
-- Author        : Ryan Herbst, rherbst@slac.stanford.edu
-- Created       : 12/06/2007
-------------------------------------------------------------------------------
-- Description:
-- Package for display chracter lookup table.
-------------------------------------------------------------------------------
-- Copyright (c) 2007 by Ryan Herbst. All rights reserved.
-------------------------------------------------------------------------------
-- Modification history:
-- 12/06/2007: created.
-------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;

package disp_characters is

  -- Types For Character Lookup
  subtype DISPCHAR is std_logic_vector(24 downto 0);
  type DISPTABLE is array (natural range <>) of DISPCHAR;

  -- Constants For Charactors
  constant DISPMAX    : natural   := 54;
  constant DISPLOOKUP : DISPTABLE :=
    (
      0  =>
      "01110" &                         -- Hex 0
      "10011" &
      "10101" &
      "11001" &
      "01110",
      1  =>
      "00100" &                         -- Hex 1
      "01100" &
      "00100" &
      "00100" &
      "11111",
      2  =>
      "11110" &                         -- Hex 2
      "00001" &
      "00110" &
      "01000" &
      "11111",
      3  =>
      "11110" &                         -- Hex 3
      "00001" &
      "01110" &
      "00001" &
      "11110",
      4  =>
      "00110" &                         -- Hex 4
      "01010" &
      "11111" &
      "00010" &
      "00010",
      5  =>
      "11111" &                         -- Hex 5
      "10000" &
      "11110" &
      "00001" &
      "11110",
      6  =>
      "00110" &                         -- Hex 6
      "01000" &
      "11110" &
      "10001" &
      "01110",
      7  =>
      "11111" &                         -- Hex 7
      "00010" &
      "00100" &
      "01000" &
      "01000",
      8  =>
      "01110" &                         -- Hex 8
      "10001" &
      "01110" &
      "10001" &
      "01110",
      9  =>
      "01110" &                         -- Hex 9
      "10001" &
      "01111" &
      "00010" &
      "01100",
      10 =>
      "00100" &                         -- Hex A
      "01010" &
      "11111" &
      "10001" &
      "10001",
      11 =>
      "11110" &                         -- Hex B
      "01001" &
      "01110" &
      "01001" &
      "11110",
      12 =>
      "01111" &                         -- Hex C
      "10000" &
      "10000" &
      "10000" &
      "11111",
      13 =>
      "11110" &                         -- Hex D
      "01001" &
      "01001" &
      "01001" &
      "11110",
      14 =>
      "11111" &                         -- Hex E
      "10000" &
      "11100" &
      "10000" &
      "11111",
      15 =>
      "11111" &                         -- Hex F
      "10000" &
      "11100" &
      "10000" &
      "10000",
      16 =>                             -- 0x10
      "01110" &                         -- G
      "10001" &
      "10000" &
      "10011" &
      "10001",
      17 =>                             -- 0x11
      "01110" &                         -- H
      "10001" &
      "11111" &
      "10001" &
      "10001",
      18 =>                             -- 0x12
      "11111" &                         -- I
      "00100" &
      "00100" &
      "00100" &
      "11111",
      19 =>                             -- 0x13
      "11111" &                         -- J
      "00001" &
      "00001" &
      "10001" &
      "01110",
      20 =>                             -- 0x14
      "10011" &                         -- K
      "10100" &
      "11000" &
      "10100" &
      "10011",
      21 =>                             -- 0x15
      "10000" &                         -- L
      "10000" &
      "10000" &
      "10000" &
      "11111",
      22 =>                             -- 0x16
      "10001" &                         -- M
      "11011" &
      "10101" &
      "10001" &
      "10001",
      23 =>                             -- 0x17
      "10001" &                         -- N
      "11001" &
      "10101" &
      "10011" &
      "10001",
      24 =>                             -- 0x18
      "01110" &                         -- O
      "10001" &
      "10001" &
      "10001" &
      "01110",
      25 =>                             -- 0x19
      "11110" &                         -- P
      "10001" &
      "11110" &
      "10000" &
      "10000",
      26 =>                             -- 0x1a
      "01100" &                         -- Q
      "10010" &
      "10110" &
      "10010" &
      "01101",
      27 =>                             -- 0x1b
      "11110" &                         -- R
      "10001" &
      "11110" &
      "10100" &
      "10011",
      28 =>                             -- 0x1c
      "01111" &                         -- S
      "10000" &
      "01110" &
      "00001" &
      "11110",
      29 =>                             -- 0x1d
      "11111" &                         -- T
      "00100" &
      "00100" &
      "00100" &
      "00100",
      30 =>                             -- 0x1e
      "10001" &                         -- U
      "10001" &
      "10001" &
      "10001" &
      "01110",
      31 =>                             -- 0x1f
      "10001" &                         -- V
      "10001" &
      "10001" &
      "01010" &
      "00100",
      32 =>                             -- 0x20
      "10001" &                         -- W
      "10001" &
      "10101" &
      "11011" &
      "10001",
      33 =>                             -- 0x21
      "10001" &                         -- X
      "01010" &
      "00100" &
      "01010" &
      "10001",
      34 =>                             -- 0x22
      "10001" &                         -- Y
      "01010" &
      "00100" &
      "00100" &
      "00100",
      35 =>                             -- 0x23
      "11111" &                         -- Z
      "00010" &
      "00100" &
      "01000" &
      "11111",
      36 =>                             -- 0x24
      "00101" &                         -- #
      "11111" &
      "01010" &
      "11111" &
      "10100",
      37 =>                             -- 0x25
      "01010" &                         -- :-)
      "01010" &
      "00000" &
      "10001" &
      "01110",
      38 =>                             --  0x26
      "01010" &                         -- :-(
      "01010" &
      "00000" &
      "01110" &
      "10001",

      -- Patterns for 4-bit status "dots"
      39 =>                             -- 0x27
      "00000" &                         -- 0000
      "00000" &
      "00000" &
      "00000" &
      "00000",
      40 =>                             --  0x28
      "00000" &                         -- 0001
      "00000" &
      "00000" &
      "00011" &
      "00011",
      41 =>                             --  0x29
      "00000" &                         -- 0010
      "00000" &
      "00000" &
      "11000" &
      "11000",
      42 =>                             --  0x2a
      "00000" &                         -- 0011
      "00000" &
      "00000" &
      "11011" &
      "11011",
      43 =>                             --  0x2b
      "00011" &                         -- 0100
      "00011" &
      "00000" &
      "00000" &
      "00000",
      44 =>                             --  0x2c
      "00011" &                         -- 0101
      "00011" &
      "00000" &
      "00011" &
      "00011",
      45 =>                             --  0x2d
      "00011" &                         -- 0110
      "00011" &
      "00000" &
      "11000" &
      "11000",
      46 =>                             --  0x2e
      "00011" &                         -- 0111
      "00011" &
      "00000" &
      "11011" &
      "11011",
      47 =>                             --  0x2f
      "11000" &                         --  1000
      "11000" &
      "00000" &
      "00000" &
      "00000",
      48 =>                             --  0x3a
      "11000" &                         -- 1001
      "11000" &
      "00000" &
      "00011" &
      "00011",
      49 =>                             --  0x3b
      "11000" &                         -- 1010
      "11000" &
      "00000" &
      "11000" &
      "11000",
      50 =>                             --  0x3c
      "11000" &                         -- 1011
      "11000" &
      "00000" &
      "11011" &
      "11011",
      51 =>                             --  0x3d
      "11011" &                         -- 1100
      "11011" &
      "00000" &
      "00000" &
      "00000",
      52 =>                             --  0x3e
      "11011" &                         -- 1101
      "11011" &
      "00000" &
      "00011" &
      "00011",
      53 =>                             --  0x3f
      "11011" &                         -- 1110
      "11011" &
      "00000" &
      "11000" &
      "11000",
      54 =>                             --  0x40
      "11011" &                         -- 1111
      "11011" &
      "00000" &
      "11011" &
      "11011"



      );

end disp_characters;