⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rom_1024x8.vhd

📁 Xilinx Ise 官方源代码盘 第四章
💻 VHD
📖 第 1 页 / 共 4 页
字号:
-------------------------------------------------------------------------------
--                     ROM inference using Synplify                          --
--                        (BlockRAM ROM example)                             --
-------------------------------------------------------------------------------
--
-- GENERAL:
--   Synplify infers ROM when all assignment values are constants in a
--   "case" or "if...else" statement
--
-- Virtex-II ROM resources:
--     - Logic
--     - Distributed ROM (Primitives: ROM16X1, ROM32X1, ROM64X1, ROM128X1,
--           ROM256X1)
--     - BlockRAM (Primitives: RAMB16...)
-- Different ROMs:
--     - asynchronous (Mapped to: Logic or Distributed ROM)
--     - synchronous  (Mapped to: Logic, Distribute ROM or BlockRAM)
--          - Clock enable
--          - Reset (output buffer)
--          - Dual port (BlockRAM only - instanciation only)
--
-- NOTES:
--     - Mapping ROM into Distributed ROM (Synplify default)
--          - At least half the available addresses must be assigned a value
--     - Mapping ROM to BlockRAM will be available in Synplify 7.1
--          - either addresses or outputs of the ROM should be registered
--          - memory block should be more than 256 different addresses
-- Log file message:
--     - Synplicity Xilinx Technology Mapper section
--          @N|Packed ROM romsig[7:0] (10 input, 8 output) to Block SelectRAM
-- Resource Usage Report section (RAM/ROM usage summary)
--          RAMB16_S18      1 use
-------------------------------------------------------------------------------
-- Example: Synchronous 1024X8 ROM mapped to BlockRAM
-------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;

entity romtest is port (
  clk    : in  std_logic;
  input  : in  std_logic_vector(9 downto 0);
  output : out std_logic_vector(7 downto 0));
end romtest;

architecture beh of romtest is

  signal registers : std_logic_vector(7 downto 0);
  signal romsig    : std_logic_vector(7 downto 0);

--  attribute syn_romstyle           : string;
--  attribute syn_romstyle of romsig : signal is "block_ram";
  -- value: "select_rom" forces Distributed ROM implementation (default)
  -- value: "logic"      forces Logic       ROM implementation
  -- value: "block_ram"  forces BlockRAM    ROM implementation (available in 7.1)

begin

  process (input)
  begin
    case ( input ) is
      when B"00" & X"00" => romsig <= X"00";
      when B"00" & X"01" => romsig <= X"01";
      when B"00" & X"02" => romsig <= X"05";
      when B"00" & X"03" => romsig <= X"0d";
      when B"00" & X"04" => romsig <= X"1b";
      when B"00" & X"05" => romsig <= X"32";
      when B"00" & X"06" => romsig <= X"4f";
      when B"00" & X"07" => romsig <= X"6f";
      when B"00" & X"08" => romsig <= X"8f";
      when B"00" & X"09" => romsig <= X"af";
      when B"00" & X"0a" => romsig <= X"cf";
      when B"00" & X"0b" => romsig <= X"ee";
      when B"00" & X"0c" => romsig <= X"e5";
      when B"00" & X"0d" => romsig <= X"e5";
      when B"00" & X"0e" => romsig <= X"e5";
      when B"00" & X"0f" => romsig <= X"01";
      when B"00" & X"10" => romsig <= X"02";
      when B"00" & X"11" => romsig <= X"00";
      when B"00" & X"12" => romsig <= X"06";
      when B"00" & X"13" => romsig <= X"0e";
      when B"00" & X"14" => romsig <= X"1c";
      when B"00" & X"15" => romsig <= X"33";
      when B"00" & X"16" => romsig <= X"50";
      when B"00" & X"17" => romsig <= X"70";
      when B"00" & X"18" => romsig <= X"90";
      when B"00" & X"19" => romsig <= X"b0";
      when B"00" & X"1a" => romsig <= X"d0";
      when B"00" & X"1b" => romsig <= X"ee";
      when B"00" & X"1c" => romsig <= X"e6";
      when B"00" & X"1d" => romsig <= X"e6";
      when B"00" & X"1e" => romsig <= X"02";
      when B"00" & X"1f" => romsig <= X"03";
      when B"00" & X"20" => romsig <= X"01";
      when B"00" & X"21" => romsig <= X"07";
      when B"00" & X"22" => romsig <= X"0f";
      when B"00" & X"23" => romsig <= X"1d";
      when B"00" & X"24" => romsig <= X"34";
      when B"00" & X"25" => romsig <= X"51";
      when B"00" & X"26" => romsig <= X"71";
      when B"00" & X"27" => romsig <= X"91";
      when B"00" & X"28" => romsig <= X"b1";
      when B"00" & X"29" => romsig <= X"d1";
      when B"00" & X"2a" => romsig <= X"ef";
      when B"00" & X"2b" => romsig <= X"e7";
      when B"00" & X"2c" => romsig <= X"e7";
      when B"00" & X"2d" => romsig <= X"03";
      when B"00" & X"2e" => romsig <= X"04";
      when B"00" & X"2f" => romsig <= X"02";
      when B"00" & X"30" => romsig <= X"08";
      when B"00" & X"31" => romsig <= X"10";
      when B"00" & X"32" => romsig <= X"1e";
      when B"00" & X"33" => romsig <= X"35";
      when B"00" & X"34" => romsig <= X"52";
      when B"00" & X"35" => romsig <= X"72";
      when B"00" & X"36" => romsig <= X"92";
      when B"00" & X"37" => romsig <= X"b2";
      when B"00" & X"38" => romsig <= X"d2";
      when B"00" & X"39" => romsig <= X"f0";
      when B"00" & X"3a" => romsig <= X"e8";
      when B"00" & X"3b" => romsig <= X"e8";
      when B"00" & X"3c" => romsig <= X"04";
      when B"00" & X"3d" => romsig <= X"05";
      when B"00" & X"3e" => romsig <= X"03";
      when B"00" & X"3f" => romsig <= X"09";
      when B"00" & X"40" => romsig <= X"01";
      when B"00" & X"41" => romsig <= X"11";
      when B"00" & X"42" => romsig <= X"1f";
      when B"00" & X"43" => romsig <= X"36";
      when B"00" & X"44" => romsig <= X"53";
      when B"00" & X"45" => romsig <= X"73";
      when B"00" & X"46" => romsig <= X"93";
      when B"00" & X"47" => romsig <= X"b3";
      when B"00" & X"48" => romsig <= X"d3";
      when B"00" & X"49" => romsig <= X"f0";
      when B"00" & X"4a" => romsig <= X"e9";
      when B"00" & X"4b" => romsig <= X"05";
      when B"00" & X"4c" => romsig <= X"06";
      when B"00" & X"4d" => romsig <= X"04";
      when B"00" & X"4e" => romsig <= X"0a";
      when B"00" & X"4f" => romsig <= X"01";
      when B"00" & X"50" => romsig <= X"12";
      when B"00" & X"51" => romsig <= X"20";
      when B"00" & X"52" => romsig <= X"37";
      when B"00" & X"53" => romsig <= X"54";
      when B"00" & X"54" => romsig <= X"74";
      when B"00" & X"55" => romsig <= X"94";
      when B"00" & X"56" => romsig <= X"b4";
      when B"00" & X"57" => romsig <= X"d4";
      when B"00" & X"58" => romsig <= X"f1";
      when B"00" & X"59" => romsig <= X"ea";
      when B"00" & X"5a" => romsig <= X"06";
      when B"00" & X"5b" => romsig <= X"07";
      when B"00" & X"5c" => romsig <= X"05";
      when B"00" & X"5d" => romsig <= X"0b";
      when B"00" & X"5e" => romsig <= X"02";
      when B"00" & X"5f" => romsig <= X"13";
      when B"00" & X"60" => romsig <= X"21";
      when B"00" & X"61" => romsig <= X"38";
      when B"00" & X"62" => romsig <= X"55";
      when B"00" & X"63" => romsig <= X"75";
      when B"00" & X"64" => romsig <= X"95";
      when B"00" & X"65" => romsig <= X"b5";
      when B"00" & X"66" => romsig <= X"d5";
      when B"00" & X"67" => romsig <= X"f2";
      when B"00" & X"68" => romsig <= X"eb";
      when B"00" & X"69" => romsig <= X"07";
      when B"00" & X"6a" => romsig <= X"08";
      when B"00" & X"6b" => romsig <= X"06";
      when B"00" & X"6c" => romsig <= X"0c";
      when B"00" & X"6d" => romsig <= X"03";
      when B"00" & X"6e" => romsig <= X"14";
      when B"00" & X"6f" => romsig <= X"22";
      when B"00" & X"70" => romsig <= X"39";
      when B"00" & X"71" => romsig <= X"56";
      when B"00" & X"72" => romsig <= X"76";
      when B"00" & X"73" => romsig <= X"96";
      when B"00" & X"74" => romsig <= X"b6";
      when B"00" & X"75" => romsig <= X"d6";
      when B"00" & X"76" => romsig <= X"f2";
      when B"00" & X"77" => romsig <= X"ec";
      when B"00" & X"78" => romsig <= X"08";
      when B"00" & X"79" => romsig <= X"09";
      when B"00" & X"7a" => romsig <= X"07";
      when B"00" & X"7b" => romsig <= X"0d";
      when B"00" & X"7c" => romsig <= X"03";
      when B"00" & X"7d" => romsig <= X"15";
      when B"00" & X"7e" => romsig <= X"23";
      when B"00" & X"7f" => romsig <= X"3a";
      when B"00" & X"80" => romsig <= X"57";
      when B"00" & X"81" => romsig <= X"77";
      when B"00" & X"82" => romsig <= X"97";
      when B"00" & X"83" => romsig <= X"b7";
      when B"00" & X"84" => romsig <= X"d7";
      when B"00" & X"85" => romsig <= X"f3";
      when B"00" & X"86" => romsig <= X"ed";
      when B"00" & X"87" => romsig <= X"09";
      when B"00" & X"88" => romsig <= X"0a";
      when B"00" & X"89" => romsig <= X"08";
      when B"00" & X"8a" => romsig <= X"0e";
      when B"00" & X"8b" => romsig <= X"04";
      when B"00" & X"8c" => romsig <= X"16";
      when B"00" & X"8d" => romsig <= X"24";
      when B"00" & X"8e" => romsig <= X"3b";
      when B"00" & X"8f" => romsig <= X"58";
      when B"00" & X"90" => romsig <= X"78";
      when B"00" & X"91" => romsig <= X"98";
      when B"00" & X"92" => romsig <= X"b8";
      when B"00" & X"93" => romsig <= X"d8";
      when B"00" & X"94" => romsig <= X"f4";
      when B"00" & X"95" => romsig <= X"ee";
      when B"00" & X"96" => romsig <= X"0a";
      when B"00" & X"97" => romsig <= X"0b";
      when B"00" & X"98" => romsig <= X"09";
      when B"00" & X"99" => romsig <= X"0f";
      when B"00" & X"9a" => romsig <= X"05";
      when B"00" & X"9b" => romsig <= X"17";
      when B"00" & X"9c" => romsig <= X"25";
      when B"00" & X"9d" => romsig <= X"3c";
      when B"00" & X"9e" => romsig <= X"59";
      when B"00" & X"9f" => romsig <= X"79";
      when B"00" & X"a0" => romsig <= X"99";
      when B"00" & X"a1" => romsig <= X"b9";
      when B"00" & X"a2" => romsig <= X"d9";
      when B"00" & X"a3" => romsig <= X"f4";
      when B"00" & X"a4" => romsig <= X"ef";
      when B"00" & X"a5" => romsig <= X"0b";
      when B"00" & X"a6" => romsig <= X"0c";
      when B"00" & X"a7" => romsig <= X"0a";
      when B"00" & X"a8" => romsig <= X"10";
      when B"00" & X"a9" => romsig <= X"05";
      when B"00" & X"aa" => romsig <= X"18";
      when B"00" & X"ab" => romsig <= X"26";
      when B"00" & X"ac" => romsig <= X"3d";
      when B"00" & X"ad" => romsig <= X"5a";
      when B"00" & X"ae" => romsig <= X"7a";
      when B"00" & X"af" => romsig <= X"9a";
      when B"00" & X"b0" => romsig <= X"ba";
      when B"00" & X"b1" => romsig <= X"da";
      when B"00" & X"b2" => romsig <= X"f5";
      when B"00" & X"b3" => romsig <= X"f0";
      when B"00" & X"b4" => romsig <= X"0c";
      when B"00" & X"b5" => romsig <= X"0d";
      when B"00" & X"b6" => romsig <= X"0b";
      when B"00" & X"b7" => romsig <= X"11";
      when B"00" & X"b8" => romsig <= X"07";
      when B"00" & X"b9" => romsig <= X"19";
      when B"00" & X"ba" => romsig <= X"02";
      when B"00" & X"bb" => romsig <= X"27";
      when B"00" & X"bc" => romsig <= X"3e";
      when B"00" & X"bd" => romsig <= X"5b";
      when B"00" & X"be" => romsig <= X"7b";
      when B"00" & X"bf" => romsig <= X"9b";
      when B"00" & X"c0" => romsig <= X"bb";
      when B"00" & X"c1" => romsig <= X"e0";
      when B"00" & X"c2" => romsig <= X"d1";
      when B"00" & X"c3" => romsig <= X"0d";
      when B"00" & X"c4" => romsig <= X"0e";
      when B"00" & X"c5" => romsig <= X"0c";
      when B"00" & X"c6" => romsig <= X"12";
      when B"00" & X"c7" => romsig <= X"08";
      when B"00" & X"c8" => romsig <= X"1a";
      when B"00" & X"c9" => romsig <= X"03";
      when B"00" & X"ca" => romsig <= X"28";
      when B"00" & X"cb" => romsig <= X"3f";
      when B"00" & X"cc" => romsig <= X"5c";
      when B"00" & X"cd" => romsig <= X"7c";
      when B"00" & X"ce" => romsig <= X"9c";
      when B"00" & X"cf" => romsig <= X"bc";
      when B"00" & X"d0" => romsig <= X"e1";
      when B"00" & X"d1" => romsig <= X"d2";
      when B"00" & X"d2" => romsig <= X"0e";
      when B"00" & X"d3" => romsig <= X"0f";
      when B"00" & X"d4" => romsig <= X"0d";
      when B"00" & X"d5" => romsig <= X"13";
      when B"00" & X"d6" => romsig <= X"09";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -