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

📄 sinerom.vhd

📁 关于sine函数的生成 生成的sine函数是32X48的
💻 VHD
字号:
------------------------------------------------------
-- LogiBLOX ROM Module "sinerom"
-- Created by LogiBLOX version E.35
--    on Thu Oct 13 15:52:19 2005
-- Attributes 
--    MODTYPE = ROM
--    BUS_WIDTH = 24
--    DEPTH = 48
--    MEMFILE = sm
--    TRIM = FALSE
--    STYLE = MAX_SPEED
--    USE_RPM = FALSE
------------------------------------------------------
-- This is a behaviorial model only and cannot be synthesized.
------------------------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;

-- synopsys translate_off
LIBRARY logiblox;
USE logiblox.mvlutil.ALL;
USE logiblox.mvlarith.ALL;
USE logiblox.logiblox.ALL;
-- synopsys translate_on

ENTITY sinerom IS
  PORT(
    A: IN std_logic_vector(5 DOWNTO 0);
    DO: OUT std_logic_vector(23 DOWNTO 0));
END sinerom;

-- synopsys translate_off
ARCHITECTURE sim OF sinerom IS
  SIGNAL START_PULSE: std_logic := '1';
  TYPE mem_data IS ARRAY (47 DOWNTO 0) OF std_logic_vector(23 DOWNTO 0);
BEGIN
  PROCESS
  VARIABLE VD: mem_data;
  VARIABLE first_time: BOOLEAN := TRUE;
  BEGIN
    IF (first_time) THEN
      VD(0) := ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
      VD(1) := ('0','0','0','1','0','0','0','0','1','0','1','1','0','1','0','1','0','0','0','1','0','1','0','1');
      VD(2) := ('0','0','1','0','0','0','0','1','0','0','1','0','0','0','0','0','1','1','1','1','1','0','1','1');
      VD(3) := ('0','0','1','1','0','0','0','0','1','1','1','1','1','0','1','1','1','1','0','0','0','1','0','1');
      VD(4) := ('0','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
      VD(5) := ('0','1','0','0','1','1','0','1','1','1','1','0','1','0','1','1','1','1','1','0','0','1','0','0');
      VD(6) := ('0','1','0','1','1','0','1','0','1','0','0','0','0','0','1','0','0','1','1','1','1','0','0','1');
      VD(7) := ('0','1','1','0','0','1','0','1','1','0','0','0','1','1','0','0','1','0','0','1','1','0','1','0');
      VD(8) := ('0','1','1','0','1','1','1','0','1','1','0','1','1','0','0','1','1','1','1','0','1','0','1','1');
      VD(9) := ('0','1','1','1','0','1','1','0','0','1','0','0','0','0','0','1','1','0','1','0','1','1','1','1');
      VD(10) := ('0','1','1','1','1','0','1','1','1','0','1','0','0','0','1','1','0','1','1','1','0','1','0','1');
      VD(11) := ('0','1','1','1','1','1','1','0','1','1','1','0','0','1','1','1','1','0','1','0','1','0','1','0');
      VD(12) := ('0','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1');
      VD(13) := ('0','1','1','1','1','1','1','0','1','1','1','0','0','1','1','1','1','0','1','0','1','0','1','0');
      VD(14) := ('0','1','1','1','1','0','1','1','1','0','1','0','0','0','1','1','0','1','1','1','0','1','0','1');
      VD(15) := ('0','1','1','1','0','1','1','0','0','1','0','0','0','0','0','1','1','0','1','0','1','1','1','1');
      VD(16) := ('0','1','1','0','1','1','1','0','1','1','0','1','1','0','0','1','1','1','1','0','1','0','1','1');
      VD(17) := ('0','1','1','0','0','1','0','1','1','0','0','0','1','1','0','0','1','0','0','1','1','0','1','0');
      VD(18) := ('0','1','0','1','1','0','1','0','1','0','0','0','0','0','1','0','0','1','1','1','1','0','0','1');
      VD(19) := ('0','1','0','0','1','1','0','1','1','1','1','0','1','0','1','1','1','1','1','0','0','1','0','0');
      VD(20) := ('0','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
      VD(21) := ('0','0','1','1','0','0','0','0','1','1','1','1','1','0','1','1','1','1','0','0','0','1','0','1');
      VD(22) := ('0','0','1','0','0','0','0','1','0','0','1','0','0','0','0','0','1','1','1','1','1','0','1','1');
      VD(23) := ('0','0','0','1','0','0','0','0','1','0','1','1','0','1','0','1','0','0','0','1','0','1','0','1');
      VD(24) := ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
      VD(25) := ('1','1','1','0','1','1','1','1','0','1','0','0','1','0','1','0','1','1','1','0','1','0','1','1');
      VD(26) := ('1','1','0','1','1','1','1','0','1','1','0','1','1','1','1','1','0','0','0','0','0','1','0','1');
      VD(27) := ('1','1','0','0','1','1','1','1','0','0','0','0','0','1','0','0','0','0','1','1','1','0','1','1');
      VD(28) := ('1','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
      VD(29) := ('1','0','1','1','0','0','1','0','0','0','0','1','0','1','0','0','0','0','0','1','1','1','0','0');
      VD(30) := ('1','0','1','0','0','1','0','1','0','1','1','1','1','1','0','1','1','0','0','0','0','1','1','1');
      VD(31) := ('1','0','0','1','1','0','1','0','0','1','1','1','0','0','1','1','0','1','1','0','0','1','1','0');
      VD(32) := ('1','0','0','1','0','0','0','1','0','0','1','0','0','1','1','0','0','0','0','1','0','1','0','1');
      VD(33) := ('1','0','0','0','1','0','0','1','1','0','1','1','1','1','1','0','0','1','0','1','0','0','0','1');
      VD(34) := ('1','0','0','0','0','1','0','0','0','1','0','1','1','1','0','0','1','0','0','0','1','0','1','1');
      VD(35) := ('1','0','0','0','0','0','0','1','0','0','0','1','1','0','0','0','0','1','0','1','0','1','1','0');
      VD(36) := ('1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
      VD(37) := ('1','0','0','0','0','0','0','1','0','0','0','1','1','0','0','0','0','1','0','1','0','1','1','0');
      VD(38) := ('1','0','0','0','0','1','0','0','0','1','0','1','1','1','0','0','1','0','0','0','1','0','1','1');
      VD(39) := ('1','0','0','0','1','0','0','1','1','0','1','1','1','1','1','0','0','1','0','1','0','0','0','1');
      VD(40) := ('1','0','0','1','0','0','0','1','0','0','1','0','0','1','1','0','0','0','0','1','0','1','0','1');
      VD(41) := ('1','0','0','1','1','0','1','0','0','1','1','1','0','0','1','1','0','1','1','0','0','1','1','0');
      VD(42) := ('1','0','1','0','0','1','0','1','0','1','1','1','1','1','0','1','1','0','0','0','0','1','1','1');
      VD(43) := ('1','0','1','1','0','0','1','0','0','0','0','1','0','1','0','0','0','0','0','1','1','1','0','0');
      VD(44) := ('1','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
      VD(45) := ('1','1','0','0','1','1','1','1','0','0','0','0','0','1','0','0','0','0','1','1','1','0','1','1');
      VD(46) := ('1','1','0','1','1','1','1','0','1','1','0','1','1','1','1','1','0','0','0','0','0','1','0','1');
      VD(47) := ('1','1','1','0','1','1','1','1','0','1','0','0','1','0','1','0','1','1','1','0','1','0','1','1');
      first_time := FALSE;
    END IF;
    IF (mvlvec_not01(A)) THEN
      DO <= ('X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X');
    ELSIF (mvlvec2int(A) > 47) THEN
      ASSERT (FALSE)
      REPORT "The value on the address line is out of range"
      SEVERITY WARNING;
      DO <= ('X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X');
    ELSE
      DO <= VD(mvlvec2int(A));
    END IF;
      WAIT ON A, START_PULSE;
  END PROCESS;
END sim;
-- synopsys translate_on

⌨️ 快捷键说明

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