www.pudn.com > codeofvhdl2006.rar > ASCII_ROM.VHD


 
library IEEE; 
use IEEE.std_logic_1164.all; 
use IEEE.std_logic_arith.all; 
use IEEE.std_logic_unsigned.all; 
 
library work; 
   use work.my_package.all; 
 
entity CHAR_FONT is 
Port (    
		SCAN_ADDR : In	STD_LOGIC_VECTOR (10 downto 0); 
		FONT_CODE : Out	STD_LOGIC_VECTOR (7 downto 0) 
		); 
end CHAR_FONT; 
 
 
architecture BEHAVIORAL of CHAR_FONT is 
constant FONT_TAB: ROM_TYPE(0 to 1023) := 
(X"00", X"00", X"00", X"00", X"00", X"00", X"00", X"00", -- D_00 
 X"7E", X"81", X"A5", X"81", X"BD", X"99", X"81", X"7E", -- D_01 
 X"7E", X"FF", X"DB", X"FF", X"C3", X"E7", X"FF", X"7E", -- D_02 
 X"6C", X"FE", X"FE", X"FE", X"7C", X"38", X"10", X"00", -- D_03 
 X"10", X"38", X"7C", X"FE", X"7C", X"38", X"10", X"00", -- D_04 
 X"38", X"7C", X"38", X"FE", X"FE", X"7C", X"38", X"7C", -- D_05 
 X"10", X"10", X"38", X"7C", X"FE", X"7C", X"38", X"7C", -- D_06 
 X"00", X"00", X"18", X"3C", X"3C", X"18", X"00", X"00", -- D_07 
 
 X"FF", X"FF", X"E7", X"C3", X"C3", X"E7", X"FF", X"FF", -- D_08 
 X"00", X"3C", X"66", X"42", X"42", X"66", X"3C", X"00", -- D_09 
 X"FF", X"C3", X"99", X"BD", X"BD", X"99", X"C3", X"FF", -- D_0A 
 X"0F", X"07", X"0F", X"7D", X"CC", X"CC", X"CC", X"78", -- D_0B 
 X"3C", X"66", X"66", X"66", X"3C", X"18", X"7E", X"18", -- D_0C 
 X"3F", X"33", X"3F", X"30", X"30", X"70", X"F0", X"E0", -- D_0D 
 X"7F", X"63", X"7F", X"63", X"63", X"67", X"E6", X"C0", -- D_0E 
 X"99", X"5A", X"3C", X"E7", X"E7", X"3C", X"5A", X"99", -- D_0F 
 
 X"80", X"ED", X"F8", X"FE", X"F8", X"E0", X"80", X"00", -- D_10 
 X"02", X"0E", X"3E", X"FE", X"3E", X"0E", X"02", X"00", -- D_11 
 X"18", X"3C", X"7E", X"18", X"18", X"7E", X"3C", X"18", -- D_12 
 X"66", X"66", X"66", X"66", X"66", X"00", X"66", X"00", -- D_13 
 X"7F", X"DB", X"DB", X"7B", X"1B", X"1B", X"1B", X"00", -- D_14 
 X"3E", X"63", X"38", X"6C", X"6C", X"38", X"CC", X"78", -- D_15 
 X"00", X"00", X"00", X"00", X"7E", X"7E", X"7E", X"00", -- D_16 
 X"18", X"3C", X"7E", X"18", X"7E", X"3C", X"18", X"FF", -- D_17 
  
 X"18", X"3C", X"7E", X"18", X"18", X"18", X"18", X"00", -- D_18 
 X"18", X"18", X"18", X"18", X"7E", X"3C", X"18", X"00", -- D_19 
 X"00", X"18", X"0C", X"FE", X"0C", X"18", X"00", X"00", -- D_1A 
 X"00", X"3D", X"60", X"FE", X"6D", X"30", X"00", X"00", -- D_1B 
 X"00", X"00", X"C0", X"C0", X"C0", X"FE", X"00", X"00", -- D_1C 
 X"00", X"24", X"66", X"FF", X"66", X"24", X"00", X"00", -- D_1D 
 X"00", X"18", X"3C", X"7E", X"FF", X"FF", X"00", X"00", -- D_1E 
 X"00", X"FF", X"FF", X"7E", X"3C", X"18", X"00", X"00", -- D_1F 
 
 X"00", X"00", X"00", X"00", X"00", X"00", X"00", X"00", -- D_20 ' ' 
 X"30", X"78", X"78", X"30", X"30", X"00", X"30", X"00", -- D_21 '!' 
 X"6C", X"6C", X"6C", X"00", X"00", X"00", X"00", X"00", -- D_22 '"' 
 X"6C", X"6C", X"FE", X"6C", X"FE", X"6C", X"6C", X"00", -- D_23 '#' 
 X"30", X"7C", X"C0", X"78", X"0C", X"F8", X"30", X"00", -- D_24 '$' 
 X"00", X"C6", X"CC", X"18", X"30", X"66", X"C6", X"00", -- D_25 '%' 
 X"38", X"6C", X"38", X"76", X"DC", X"CC", X"76", X"00", -- D_26 '&' 
 X"60", X"60", X"C0", X"00", X"00", X"00", X"00", X"00", -- D_27 '`' 
 
 X"18", X"30", X"60", X"60", X"60", X"30", X"18", X"00", -- D_28 '(' 
 X"60", X"30", X"18", X"18", X"18", X"30", X"60", X"00", -- D_29 ')' 
 X"00", X"66", X"3C", X"FF", X"3C", X"66", X"00", X"00", -- D_2A '#' 
 X"00", X"30", X"30", X"FC", X"30", X"30", X"00", X"00", -- D_2B '+' 
 X"00", X"00", X"00", X"00", X"00", X"30", X"30", X"60", -- D_2C ',' 
 X"00", X"00", X"00", X"FC", X"00", X"00", X"00", X"00", -- D_2D '-' 
 X"00", X"00", X"00", X"00", X"00", X"30", X"30", X"00", -- D_2E '.' 
 X"06", X"0C", X"18", X"30", X"60", X"C0", X"80", X"00", -- D_2F '/' 
 
 X"7C", X"C6", X"CE", X"DE", X"F6", X"E6", X"7C", X"00", -- D_30 '0' 
 X"30", X"70", X"30", X"30", X"30", X"30", X"FC", X"00", -- D_31 '1' 
 X"78", X"CC", X"0C", X"38", X"60", X"CC", X"FC", X"00", -- D_32 '2' 
 X"78", X"CC", X"0C", X"38", X"0C", X"CC", X"78", X"00", -- D_33 '3' 
 X"1C", X"3C", X"6C", X"CC", X"FE", X"0C", X"1E", X"00", -- D_34 '4' 
 X"FC", X"C0", X"F8", X"0C", X"0C", X"CC", X"78", X"00", -- D_35 '5' 
 X"38", X"60", X"C0", X"F8", X"CC", X"CC", X"78", X"00", -- D_36 '6' 
 X"FC", X"CC", X"0C", X"18", X"30", X"30", X"30", X"00", -- D_37 '7' 
  
 X"78", X"CC", X"CC", X"78", X"CC", X"CC", X"78", X"00", -- D_38 '8' 
 X"78", X"CC", X"CC", X"7C", X"0C", X"18", X"70", X"00", -- D_39 '9' 
 X"00", X"30", X"30", X"00", X"00", X"30", X"30", X"00", -- D_3A ':' 
 X"00", X"30", X"30", X"00", X"00", X"30", X"30", X"00", -- D_3B ';' 
 X"18", X"30", X"60", X"C0", X"60", X"30", X"18", X"00", -- D_3C '<' 
 X"00", X"00", X"FC", X"00", X"00", X"FC", X"00", X"00", -- D_3D '=' 
 X"60", X"30", X"18", X"0C", X"18", X"30", X"60", X"00", -- D_3E '>' 
 X"78", X"CC", X"0C", X"18", X"30", X"00", X"30", X"00", -- D_3F '?' 
 
 X"7C", X"C6", X"DE", X"DE", X"DE", X"C0", X"78", X"00", -- D_40 '@' 
 X"30", X"78", X"CC", X"CC", X"FC", X"CC", X"CC", X"00", -- D_41 'A' 
 X"FC", X"66", X"66", X"7C", X"66", X"66", X"FC", X"00", -- D_42 'B' 
 X"3C", X"66", X"C0", X"C0", X"C0", X"66", X"3C", X"00", -- D_43 'C' 
 X"F8", X"6C", X"66", X"66", X"66", X"6C", X"F8", X"00", -- D_44 'D' 
 X"FE", X"62", X"68", X"78", X"68", X"62", X"FE", X"00", -- D_45 'E' 
 X"FE", X"62", X"68", X"78", X"68", X"60", X"F0", X"00", -- D_46 'F' 
 X"3C", X"66", X"C0", X"C0", X"CE", X"66", X"3E", X"00", -- D_47 'G' 
 
 X"CC", X"CC", X"CC", X"FC", X"CC", X"CC", X"CC", X"00", -- D_48 'H' 
 X"78", X"30", X"30", X"30", X"30", X"30", X"78", X"00", -- D_49 'I' 
 X"1E", X"0C", X"0C", X"0C", X"CC", X"CC", X"78", X"00", -- D_4A 'J' 
 X"E6", X"66", X"6C", X"78", X"6C", X"66", X"E6", X"00", -- D_4B 'K' 
 X"F0", X"60", X"60", X"60", X"62", X"66", X"FE", X"00", -- D_4C 'L' 
 X"C6", X"EE", X"FE", X"FE", X"D6", X"C6", X"C6", X"00", -- D_4D 'M' 
 X"C6", X"E6", X"F6", X"DE", X"CE", X"C6", X"C6", X"00", -- D_4E 'N' 
 X"38", X"6C", X"C6", X"C6", X"C6", X"6C", X"38", X"00", -- D_4F 'O' 
 
 X"FC", X"66", X"66", X"7C", X"60", X"60", X"F0", X"00", -- D_50 'P' 
 X"78", X"CC", X"CC", X"CC", X"DC", X"78", X"1C", X"00", -- D_51 'Q' 
 X"FC", X"66", X"66", X"7C", X"6C", X"66", X"E6", X"0C", -- D_52 'R' 
 X"78", X"CC", X"E0", X"70", X"1C", X"CC", X"78", X"00", -- D_53 'S' 
 X"FC", X"B4", X"30", X"30", X"30", X"30", X"78", X"00", -- D_54 'T' 
 X"CC", X"CC", X"CC", X"CC", X"CC", X"CC", X"FC", X"00", -- D_55 'U' 
 X"CC", X"CC", X"CC", X"CC", X"CC", X"78", X"30", X"00", -- D_56 'V' 
 X"C6", X"C6", X"C6", X"D6", X"FE", X"EE", X"C6", X"00", -- D_57 'W' 
 
 X"C6", X"C6", X"6C", X"38", X"38", X"6C", X"C6", X"00", -- D_58 'X' 
 X"CC", X"CC", X"CC", X"78", X"30", X"30", X"78", X"00", -- D_59 'Y' 
 X"FE", X"C6", X"8C", X"88", X"32", X"66", X"FE", X"00", -- D_5A 'Z' 
 X"78", X"60", X"60", X"60", X"60", X"60", X"78", X"00", -- D_5B '[' 
 X"C0", X"60", X"30", X"18", X"0C", X"06", X"02", X"00", -- D_5C '\' 
 X"78", X"18", X"18", X"18", X"18", X"18", X"78", X"00", -- D_5D ']' 
 X"10", X"38", X"6C", X"C6", X"00", X"00", X"00", X"00", -- D_5E '^' 
 X"00", X"00", X"00", X"00", X"00", X"00", X"00", X"FF", -- D_5F '_' 
 
 X"30", X"30", X"18", X"00", X"00", X"00", X"00", X"00", -- D_60 '`' 
 X"00", X"00", X"78", X"0C", X"7C", X"CC", X"76", X"00", -- D_61 'a' 
 X"E0", X"60", X"60", X"7C", X"66", X"66", X"DC", X"00", -- D_62 'b' 
 X"00", X"00", X"78", X"CC", X"C0", X"CC", X"78", X"00", -- D_63 'c' 
 X"1C", X"0C", X"0C", X"7C", X"CC", X"CC", X"76", X"00", -- D_64 'd' 
 X"00", X"00", X"78", X"CC", X"FC", X"C0", X"78", X"00", -- D_65 'e' 
 X"38", X"6C", X"60", X"F0", X"60", X"60", X"F0", X"00", -- D_66 'f' 
 X"00", X"00", X"76", X"CC", X"CC", X"7C", X"0C", X"F8", -- D_67 'g' 
 
 X"E0", X"60", X"6C", X"76", X"66", X"66", X"E6", X"00", -- D_68 'h' 
 X"30", X"00", X"70", X"30", X"30", X"30", X"78", X"00", -- D_69 'i' 
 X"0C", X"00", X"0C", X"0C", X"0C", X"CC", X"CC", X"78", -- D_6A 'j' 
 X"E0", X"60", X"66", X"6C", X"78", X"6C", X"E6", X"00", -- D_6B 'k' 
 X"70", X"30", X"30", X"30", X"30", X"30", X"78", X"00", -- D_6C 'l' 
 X"00", X"00", X"CC", X"FE", X"FE", X"D6", X"C6", X"00", -- D_6D 'm' 
 X"00", X"00", X"F8", X"CC", X"CC", X"CC", X"CC", X"00", -- D_6E 'n' 
 X"00", X"00", X"78", X"CC", X"CC", X"CC", X"78", X"00", -- D_6F 'o' 
 
 X"00", X"00", X"DC", X"66", X"66", X"7C", X"60", X"F0", -- D_70 'p' 
 X"00", X"00", X"76", X"CC", X"CC", X"7C", X"0C", X"1E", -- D_71 'q' 
 X"00", X"00", X"DC", X"76", X"66", X"60", X"F0", X"00", -- D_72 'r' 
 X"00", X"00", X"7C", X"C0", X"78", X"0C", X"F8", X"00", -- D_73 's' 
 X"10", X"30", X"7C", X"30", X"30", X"34", X"18", X"00", -- D_74 't' 
 X"00", X"00", X"CC", X"CC", X"CC", X"CC", X"76", X"00", -- D_75 'u' 
 X"00", X"00", X"CC", X"CC", X"CC", X"78", X"30", X"00", -- D_76 'v' 
 X"00", X"00", X"C6", X"D6", X"FE", X"FE", X"6C", X"00", -- D_77 'w' 
 
 X"00", X"00", X"C6", X"6C", X"38", X"6C", X"C6", X"00", -- D_78 'x' 
 X"00", X"00", X"CC", X"CC", X"CC", X"7C", X"0C", X"F8", -- D_79 'y' 
 X"00", X"00", X"FC", X"98", X"30", X"64", X"FC", X"00", -- D_7A 'z' 
 X"1C", X"30", X"30", X"E0", X"30", X"30", X"1C", X"00", -- D_7B '{' 
 X"18", X"18", X"18", X"00", X"18", X"18", X"18", X"00", -- D_7C '|' 
 X"E0", X"30", X"30", X"1C", X"30", X"30", X"E0", X"00", -- D_7D '}' 
 X"76", X"DC", X"00", X"00", X"00", X"00", X"00", X"00", -- D_7E '~' 
 X"00", X"10", X"38", X"6C", X"C6", X"C6", X"FE", X"00"  -- D_7F delta 
); 
 
 
begin 
 
	FONT_CODE <= CONV_STD_LOGIC_VECTOR(FONT_TAB(CONV_INTEGER(SCAN_ADDR(10 downto 0))),8); 
 
 
 
end BEHAVIORAL;