Advertisement
stiansjogren

sine_table.vhd

May 10th, 2016
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 16.29 KB | None | 0 0
  1. ----------------------------------------------------------------------------------
  2. -- Company:
  3. -- Engineer:
  4. --
  5. -- Create Date:    17:47:28 05/18/2015
  6. -- Design Name:
  7. -- Module Name:    sine_table - Behavioral
  8. -- Project Name:
  9. -- Target Devices:
  10. -- Tool versions:
  11. -- Description:
  12. --
  13. -- Dependencies:
  14. --
  15. -- Revision:
  16. -- Revision 0.01 - File Created
  17. -- Additional Comments:
  18. --
  19. ----------------------------------------------------------------------------------
  20. library IEEE;
  21. use IEEE.STD_LOGIC_1164.ALL;
  22. use IEEE.STD_LOGIC_ARITH.ALL;
  23. use IEEE.STD_LOGIC_UNSIGNED.ALL;
  24. entity sine_table is
  25. port (
  26.     clk : in std_logic;
  27.     reset_n : in std_logic;
  28.     data_request : in std_logic;
  29.     amplitude : in std_logic_vector (2 downto 0);
  30.     addr : in std_logic_vector (12 downto 0);
  31.     data_out : out std_logic_vector(11 downto 0)
  32. );
  33. end sine_table;
  34. architecture rtl of sine_table is
  35.  
  36. signal delta : std_logic_vector (11 downto 0);
  37. signal sine_total : std_logic_vector (11 downto 0);
  38. --signal data_out : std_logic_vector (7 downto 0);
  39. type table is array (1499 downto 0) of std_logic_vector(11 downto 0);
  40. constant sine_tbl : table := (
  41.     X"FFF", X"FFE", X"FFD", X"FFC", X"FFB", X"FFA", X"FF9", X"FF8", X"FF7", X"FF6", -- 1500
  42.     X"FF5", X"FF4", X"FF3", X"FF1", X"FF0", X"FEF", X"FEE", X"FED", X"FEC", X"FEB", -- 1490
  43.     X"FEA", X"FE9", X"FE8", X"FE7", X"FE6", X"FE5", X"FE4", X"FE3", X"FE1", X"FE0", -- 1480
  44.     X"FDF", X"FDE", X"FDD", X"FDC", X"FDB", X"FDA", X"FD9", X"FD8", X"FD7", X"FD6", -- 1470
  45.     X"FD5", X"FD4", X"FD3", X"FD2", X"FD1", X"FCF", X"FCE", X"FCD", X"FCC", X"FCB", -- 1460
  46.     X"FCA", X"FC9", X"FC8", X"FC7", X"FC6", X"FC5", X"FC4", X"FC3", X"FC2", X"FC1", -- 1450
  47.     X"FC0", X"FBF", X"FBE", X"FBD", X"FBC", X"FBB", X"FBA", X"FB9", X"FB8", X"FB7", -- 1440
  48.     X"FB5", X"FB4", X"FB3", X"FB2", X"FB1", X"FB0", X"FAF", X"FAE", X"FAD", X"FAC", -- 1430
  49.     X"FAB", X"FAA", X"FA9", X"FA8", X"FA7", X"FA6", X"FA5", X"FA4", X"FA3", X"FA2", -- 1420
  50.     X"FA1", X"FA0", X"F9F", X"F9E", X"F9D", X"F9C", X"F9B", X"F9A", X"F99", X"F98", -- 1410
  51.     X"F97", X"F96", X"F95", X"F94", X"F94", X"F93", X"F92", X"F91", X"F90", X"F8F", -- 1400
  52.     X"F8E", X"F8D", X"F8C", X"F8B", X"F8A", X"F89", X"F88", X"F87", X"F86", X"F85", -- 1390
  53.     X"F84", X"F83", X"F82", X"F81", X"F80", X"F80", X"F7F", X"F7E", X"F7D", X"F7C", -- 1380
  54.     X"F7B", X"F7A", X"F79", X"F78", X"F77", X"F76", X"F76", X"F75", X"F74", X"F73", -- 1370
  55.     X"F72", X"F71", X"F70", X"F6F", X"F6E", X"F6E", X"F6D", X"F6C", X"F6B", X"F6A", -- 1360
  56.     X"F69", X"F68", X"F67", X"F67", X"F66", X"F65", X"F64", X"F63", X"F62", X"F61", -- 1350
  57.     X"F61", X"F60", X"F5F", X"F5E", X"F5D", X"F5C", X"F5C", X"F5B", X"F5A", X"F59", -- 1340
  58.     X"F58", X"F58", X"F57", X"F56", X"F55", X"F54", X"F54", X"F53", X"F52", X"F51", -- 1330
  59.     X"F50", X"F50", X"F4F", X"F4E", X"F4D", X"F4D", X"F4C", X"F4B", X"F4A", X"F4A", -- 1320
  60.     X"F49", X"F48", X"F47", X"F47", X"F46", X"F45", X"F44", X"F44", X"F43", X"F42", -- 1310
  61.     X"F42", X"F41", X"F40", X"F3F", X"F3F", X"F3E", X"F3D", X"F3D", X"F3C", X"F3B", -- 1300
  62.     X"F3B", X"F3A", X"F39", X"F39", X"F38", X"F37", X"F37", X"F36", X"F35", X"F35", -- 1290
  63.     X"F34", X"F33", X"F33", X"F32", X"F31", X"F31", X"F30", X"F30", X"F2F", X"F2E", -- 1280
  64.     X"F2E", X"F2D", X"F2C", X"F2C", X"F2B", X"F2B", X"F2A", X"F2A", X"F29", X"F28", -- 1270
  65.     X"F28", X"F27", X"F27", X"F26", X"F26", X"F25", X"F24", X"F24", X"F23", X"F23", -- 1260
  66.     X"F22", X"F22", X"F21", X"F21", X"F20", X"F20", X"F1F", X"F1F", X"F1E", X"F1E", -- 1250
  67.     X"F1D", X"F1D", X"F1C", X"F1C", X"F1B", X"F1B", X"F1A", X"F1A", X"F19", X"F19", -- 1240
  68.     X"F18", X"F18", X"F18", X"F17", X"F17", X"F16", X"F16", X"F15", X"F15", X"F15", -- 1230
  69.     X"F14", X"F14", X"F13", X"F13", X"F12", X"F12", X"F12", X"F11", X"F11", X"F11", -- 1220
  70.     X"F10", X"F10", X"F0F", X"F0F", X"F0F", X"F0E", X"F0E", X"F0E", X"F0D", X"F0D", -- 1210
  71.     X"F0D", X"F0C", X"F0C", X"F0C", X"F0B", X"F0B", X"F0B", X"F0B", X"F0A", X"F0A", -- 1200
  72.     X"F0A", X"F09", X"F09", X"F09", X"F09", X"F08", X"F08", X"F08", X"F08", X"F07", -- 1190
  73.     X"F07", X"F07", X"F07", X"F06", X"F06", X"F06", X"F06", X"F05", X"F05", X"F05", -- 1180
  74.     X"F05", X"F05", X"F04", X"F04", X"F04", X"F04", X"F04", X"F04", X"F03", X"F03", -- 1170
  75.     X"F03", X"F03", X"F03", X"F03", X"F03", X"F02", X"F02", X"F02", X"F02", X"F02", -- 1160
  76.     X"F02", X"F02", X"F02", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", -- 1150
  77.     X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", -- 1140
  78.     X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", -- 1130
  79.     X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", -- 1120
  80.     X"F01", X"F01", X"F01", X"F01", X"F01", X"F01", X"F02", X"F02", X"F02", X"F02", -- 1110
  81.     X"F02", X"F02", X"F02", X"F02", X"F03", X"F03", X"F03", X"F03", X"F03", X"F03", -- 1100
  82.     X"F03", X"F04", X"F04", X"F04", X"F04", X"F04", X"F04", X"F05", X"F05", X"F05", -- 1090
  83.     X"F05", X"F05", X"F06", X"F06", X"F06", X"F06", X"F07", X"F07", X"F07", X"F07", -- 1080
  84.     X"F08", X"F08", X"F08", X"F08", X"F09", X"F09", X"F09", X"F09", X"F0A", X"F0A", -- 1070
  85.     X"F0A", X"F0B", X"F0B", X"F0B", X"F0B", X"F0C", X"F0C", X"F0C", X"F0D", X"F0D", -- 1060
  86.     X"F0D", X"F0E", X"F0E", X"F0E", X"F0F", X"F0F", X"F0F", X"F10", X"F10", X"F11", -- 1050
  87.     X"F11", X"F11", X"F12", X"F12", X"F12", X"F13", X"F13", X"F14", X"F14", X"F15", -- 1040
  88.     X"F15", X"F15", X"F16", X"F16", X"F17", X"F17", X"F18", X"F18", X"F18", X"F19", -- 1030
  89.     X"F19", X"F1A", X"F1A", X"F1B", X"F1B", X"F1C", X"F1C", X"F1D", X"F1D", X"F1E", -- 1020
  90.     X"F1E", X"F1F", X"F1F", X"F20", X"F20", X"F21", X"F21", X"F22", X"F22", X"F23", -- 1010
  91.     X"F23", X"F24", X"F24", X"F25", X"F26", X"F26", X"F27", X"F27", X"F28", X"F28", -- 1000
  92.     X"F29", X"F2A", X"F2A", X"F2B", X"F2B", X"F2C", X"F2C", X"F2D", X"F2E", X"F2E", -- 990
  93.     X"F2F", X"F30", X"F30", X"F31", X"F31", X"F32", X"F33", X"F33", X"F34", X"F35", -- 980
  94.     X"F35", X"F36", X"F37", X"F37", X"F38", X"F39", X"F39", X"F3A", X"F3B", X"F3B", -- 970
  95.     X"F3C", X"F3D", X"F3D", X"F3E", X"F3F", X"F3F", X"F40", X"F41", X"F42", X"F42", -- 960
  96.     X"F43", X"F44", X"F44", X"F45", X"F46", X"F47", X"F47", X"F48", X"F49", X"F4A", -- 950
  97.     X"F4A", X"F4B", X"F4C", X"F4D", X"F4D", X"F4E", X"F4F", X"F50", X"F50", X"F51", -- 940
  98.     X"F52", X"F53", X"F54", X"F54", X"F55", X"F56", X"F57", X"F58", X"F58", X"F59", -- 930
  99.     X"F5A", X"F5B", X"F5C", X"F5C", X"F5D", X"F5E", X"F5F", X"F60", X"F61", X"F61", -- 920
  100.     X"F62", X"F63", X"F64", X"F65", X"F66", X"F67", X"F67", X"F68", X"F69", X"F6A", -- 910
  101.     X"F6B", X"F6C", X"F6D", X"F6E", X"F6E", X"F6F", X"F70", X"F71", X"F72", X"F73", -- 900
  102.     X"F74", X"F75", X"F76", X"F76", X"F77", X"F78", X"F79", X"F7A", X"F7B", X"F7C", -- 890
  103.     X"F7D", X"F7E", X"F7F", X"F80", X"F81", X"F81", X"F82", X"F83", X"F84", X"F85", -- 880
  104.     X"F86", X"F87", X"F88", X"F89", X"F8A", X"F8B", X"F8C", X"F8D", X"F8E", X"F8F", -- 870
  105.     X"F90", X"F91", X"F92", X"F93", X"F94", X"F94", X"F95", X"F96", X"F97", X"F98", -- 860
  106.     X"F99", X"F9A", X"F9B", X"F9C", X"F9D", X"F9E", X"F9F", X"FA0", X"FA1", X"FA2", -- 850
  107.     X"FA3", X"FA4", X"FA5", X"FA6", X"FA7", X"FA8", X"FA9", X"FAA", X"FAB", X"FAC", -- 840
  108.     X"FAD", X"FAE", X"FAF", X"FB0", X"FB1", X"FB2", X"FB3", X"FB4", X"FB5", X"FB7", -- 830
  109.     X"FB8", X"FB9", X"FBA", X"FBB", X"FBC", X"FBD", X"FBE", X"FBF", X"FC0", X"FC1", -- 820
  110.     X"FC2", X"FC3", X"FC4", X"FC5", X"FC6", X"FC7", X"FC8", X"FC9", X"FCA", X"FCB", -- 810
  111.     X"FCC", X"FCD", X"FCE", X"FCF", X"FD1", X"FD2", X"FD3", X"FD4", X"FD5", X"FD6", -- 800
  112.     X"FD7", X"FD8", X"FD9", X"FDA", X"FDB", X"FDC", X"FDD", X"FDE", X"FDF", X"FE0", -- 790
  113.     X"FE1", X"FE3", X"FE4", X"FE5", X"FE6", X"FE7", X"FE8", X"FE9", X"FEA", X"FEB", -- 780
  114.     X"FEC", X"FED", X"FEE", X"FEF", X"FF0", X"FF1", X"FF3", X"FF4", X"FF5", X"FF6", -- 770
  115.     X"FF7", X"FF8", X"FF9", X"FFA", X"FFB", X"FFC", X"FFD", X"FFE", X"FFF", X"000", -- 760
  116.     X"001", X"002", X"003", X"004", X"005", X"006", X"007", X"008", X"009", X"00A", -- 750
  117.     X"00B", X"00C", X"00D", X"00F", X"010", X"011", X"012", X"013", X"014", X"015", -- 740
  118.     X"016", X"017", X"018", X"019", X"01A", X"01B", X"01C", X"01D", X"01F", X"020", -- 730
  119.     X"021", X"022", X"023", X"024", X"025", X"026", X"027", X"028", X"029", X"02A", -- 720
  120.     X"02B", X"02C", X"02D", X"02E", X"02F", X"031", X"032", X"033", X"034", X"035", -- 710
  121.     X"036", X"037", X"038", X"039", X"03A", X"03B", X"03C", X"03D", X"03E", X"03F", -- 700
  122.     X"040", X"041", X"042", X"043", X"044", X"045", X"046", X"047", X"048", X"049", -- 690
  123.     X"04B", X"04C", X"04D", X"04E", X"04F", X"050", X"051", X"052", X"053", X"054", -- 680
  124.     X"055", X"056", X"057", X"058", X"059", X"05A", X"05B", X"05C", X"05D", X"05E", -- 670
  125.     X"05F", X"060", X"061", X"062", X"063", X"064", X"065", X"066", X"067", X"068", -- 660
  126.     X"069", X"06A", X"06B", X"06C", X"06C", X"06D", X"06E", X"06F", X"070", X"071", -- 650
  127.     X"072", X"073", X"074", X"075", X"076", X"077", X"078", X"079", X"07A", X"07B", -- 640
  128.     X"07C", X"07D", X"07E", X"07F", X"080", X"080", X"081", X"082", X"083", X"084", -- 630
  129.     X"085", X"086", X"087", X"088", X"089", X"08A", X"08A", X"08B", X"08C", X"08D", -- 620
  130.     X"08E", X"08F", X"090", X"091", X"092", X"092", X"093", X"094", X"095", X"096", -- 610
  131.     X"097", X"098", X"099", X"099", X"09A", X"09B", X"09C", X"09D", X"09E", X"09F", -- 600
  132.     X"09F", X"0A0", X"0A1", X"0A2", X"0A3", X"0A4", X"0A4", X"0A5", X"0A6", X"0A7", -- 590
  133.     X"0A8", X"0A8", X"0A9", X"0AA", X"0AB", X"0AC", X"0AC", X"0AD", X"0AE", X"0AF", -- 580
  134.     X"0B0", X"0B0", X"0B1", X"0B2", X"0B3", X"0B3", X"0B4", X"0B5", X"0B6", X"0B6", -- 570
  135.     X"0B7", X"0B8", X"0B9", X"0B9", X"0BA", X"0BB", X"0BC", X"0BC", X"0BD", X"0BE", -- 560
  136.     X"0BE", X"0BF", X"0C0", X"0C1", X"0C1", X"0C2", X"0C3", X"0C3", X"0C4", X"0C5", -- 550
  137.     X"0C5", X"0C6", X"0C7", X"0C7", X"0C8", X"0C9", X"0C9", X"0CA", X"0CB", X"0CB", -- 540
  138.     X"0CC", X"0CD", X"0CD", X"0CE", X"0CF", X"0CF", X"0D0", X"0D0", X"0D1", X"0D2", -- 530
  139.     X"0D2", X"0D3", X"0D4", X"0D4", X"0D5", X"0D5", X"0D6", X"0D6", X"0D7", X"0D8", -- 520
  140.     X"0D8", X"0D9", X"0D9", X"0DA", X"0DA", X"0DB", X"0DC", X"0DC", X"0DD", X"0DD", -- 510
  141.     X"0DE", X"0DE", X"0DF", X"0DF", X"0E0", X"0E0", X"0E1", X"0E1", X"0E2", X"0E2", -- 500
  142.     X"0E3", X"0E3", X"0E4", X"0E4", X"0E5", X"0E5", X"0E6", X"0E6", X"0E7", X"0E7", -- 490
  143.     X"0E8", X"0E8", X"0E8", X"0E9", X"0E9", X"0EA", X"0EA", X"0EB", X"0EB", X"0EB", -- 480
  144.     X"0EC", X"0EC", X"0ED", X"0ED", X"0EE", X"0EE", X"0EE", X"0EF", X"0EF", X"0EF", -- 470
  145.     X"0F0", X"0F0", X"0F1", X"0F1", X"0F1", X"0F2", X"0F2", X"0F2", X"0F3", X"0F3", -- 460
  146.     X"0F3", X"0F4", X"0F4", X"0F4", X"0F5", X"0F5", X"0F5", X"0F5", X"0F6", X"0F6", -- 450
  147.     X"0F6", X"0F7", X"0F7", X"0F7", X"0F7", X"0F8", X"0F8", X"0F8", X"0F8", X"0F9", -- 440
  148.     X"0F9", X"0F9", X"0F9", X"0FA", X"0FA", X"0FA", X"0FA", X"0FB", X"0FB", X"0FB", -- 430
  149.     X"0FB", X"0FB", X"0FC", X"0FC", X"0FC", X"0FC", X"0FC", X"0FC", X"0FD", X"0FD", -- 420
  150.     X"0FD", X"0FD", X"0FD", X"0FD", X"0FD", X"0FE", X"0FE", X"0FE", X"0FE", X"0FE", -- 410
  151.     X"0FE", X"0FE", X"0FE", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", -- 400
  152.     X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", -- 390
  153.     X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", -- 380
  154.     X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", -- 370
  155.     X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FF", X"0FE", X"0FE", X"0FE", X"0FE", -- 360
  156.     X"0FE", X"0FE", X"0FE", X"0FE", X"0FD", X"0FD", X"0FD", X"0FD", X"0FD", X"0FD", -- 350
  157.     X"0FD", X"0FC", X"0FC", X"0FC", X"0FC", X"0FC", X"0FC", X"0FB", X"0FB", X"0FB", -- 340
  158.     X"0FB", X"0FB", X"0FA", X"0FA", X"0FA", X"0FA", X"0F9", X"0F9", X"0F9", X"0F9", -- 330
  159.     X"0F8", X"0F8", X"0F8", X"0F8", X"0F7", X"0F7", X"0F7", X"0F7", X"0F6", X"0F6", -- 320
  160.     X"0F6", X"0F5", X"0F5", X"0F5", X"0F5", X"0F4", X"0F4", X"0F4", X"0F3", X"0F3", -- 310
  161.     X"0F3", X"0F2", X"0F2", X"0F2", X"0F1", X"0F1", X"0F1", X"0F0", X"0F0", X"0EF", -- 300
  162.     X"0EF", X"0EF", X"0EE", X"0EE", X"0EE", X"0ED", X"0ED", X"0EC", X"0EC", X"0EB", -- 290
  163.     X"0EB", X"0EB", X"0EA", X"0EA", X"0E9", X"0E9", X"0E8", X"0E8", X"0E8", X"0E7", -- 280
  164.     X"0E7", X"0E6", X"0E6", X"0E5", X"0E5", X"0E4", X"0E4", X"0E3", X"0E3", X"0E2", -- 270
  165.     X"0E2", X"0E1", X"0E1", X"0E0", X"0E0", X"0DF", X"0DF", X"0DE", X"0DE", X"0DD", -- 260
  166.     X"0DD", X"0DC", X"0DC", X"0DB", X"0DA", X"0DA", X"0D9", X"0D9", X"0D8", X"0D8", -- 250
  167.     X"0D7", X"0D6", X"0D6", X"0D5", X"0D5", X"0D4", X"0D4", X"0D3", X"0D2", X"0D2", -- 240
  168.     X"0D1", X"0D0", X"0D0", X"0CF", X"0CF", X"0CE", X"0CD", X"0CD", X"0CC", X"0CB", -- 230
  169.     X"0CB", X"0CA", X"0C9", X"0C9", X"0C8", X"0C7", X"0C7", X"0C6", X"0C5", X"0C5", -- 220
  170.     X"0C4", X"0C3", X"0C3", X"0C2", X"0C1", X"0C1", X"0C0", X"0BF", X"0BE", X"0BE", -- 210
  171.     X"0BD", X"0BC", X"0BC", X"0BB", X"0BA", X"0B9", X"0B9", X"0B8", X"0B7", X"0B6", -- 200
  172.     X"0B6", X"0B5", X"0B4", X"0B3", X"0B3", X"0B2", X"0B1", X"0B0", X"0B0", X"0AF", -- 190
  173.     X"0AE", X"0AD", X"0AC", X"0AC", X"0AB", X"0AA", X"0A9", X"0A8", X"0A8", X"0A7", -- 180
  174.     X"0A6", X"0A5", X"0A4", X"0A4", X"0A3", X"0A2", X"0A1", X"0A0", X"09F", X"09F", -- 170
  175.     X"09E", X"09D", X"09C", X"09B", X"09A", X"099", X"099", X"098", X"097", X"096", -- 160
  176.     X"095", X"094", X"093", X"092", X"092", X"091", X"090", X"08F", X"08E", X"08D", -- 150
  177.     X"08C", X"08B", X"08A", X"08A", X"089", X"088", X"087", X"086", X"085", X"084", -- 140
  178.     X"083", X"082", X"081", X"080", X"07F", X"07F", X"07E", X"07D", X"07C", X"07B", -- 130
  179.     X"07A", X"079", X"078", X"077", X"076", X"075", X"074", X"073", X"072", X"071", -- 120
  180.     X"070", X"06F", X"06E", X"06D", X"06C", X"06C", X"06B", X"06A", X"069", X"068", -- 110
  181.     X"067", X"066", X"065", X"064", X"063", X"062", X"061", X"060", X"05F", X"05E", -- 100
  182.     X"05D", X"05C", X"05B", X"05A", X"059", X"058", X"057", X"056", X"055", X"054", -- 90
  183.     X"053", X"052", X"051", X"050", X"04F", X"04E", X"04D", X"04C", X"04B", X"049", -- 80
  184.     X"048", X"047", X"046", X"045", X"044", X"043", X"042", X"041", X"040", X"03F", -- 70
  185.     X"03E", X"03D", X"03C", X"03B", X"03A", X"039", X"038", X"037", X"036", X"035", -- 60
  186.     X"034", X"033", X"032", X"031", X"02F", X"02E", X"02D", X"02C", X"02B", X"02A", -- 50
  187.     X"029", X"028", X"027", X"026", X"025", X"024", X"023", X"022", X"021", X"020", -- 40
  188.     X"01F", X"01D", X"01C", X"01B", X"01A", X"019", X"018", X"017", X"016", X"015", -- 30
  189.     X"014", X"013", X"012", X"011", X"010", X"00F", X"00D", X"00C", X"00B", X"00A", -- 20
  190.     X"009", X"008", X"007", X"006", X"005", X"004", X"003", X"002", X"001", X"000"  -- 10
  191. );
  192. begin
  193. --  data <= data_out;
  194.  process(clk, reset_n)
  195.  begin
  196.         if(reset_n = '0') then
  197.             delta <= (others => '0');
  198.             sine_total <= (others => '0');
  199.             data_out <= (others => '0');
  200.         elsif(clk 'event and clk = '1') then
  201.    if(data_request = '1') then    
  202.     if(addr < "0010111011011") then
  203.      sine_total <= sine_tbl(conv_integer(addr));
  204.      case amplitude is
  205.       when "000" =>
  206.        if(sine_total(11) = '0') then
  207.         data_out <= "0000" & sine_total(11 downto 4);
  208.        else
  209.         data_out <= "1111" & sine_total(11 downto 4);
  210.        end if;
  211.       when "001" =>
  212.        if(sine_total(11) = '0') then
  213.         data_out <= "000" & sine_total(11 downto 3);
  214.        else
  215.         data_out <= "111" & sine_total(11 downto 3);
  216.        end if;
  217.       when "010" =>
  218.        if(sine_total(11) = '0') then
  219.         data_out <= "00" & sine_total(11 downto 2);
  220.        else
  221.         data_out <= "11" & sine_total(11 downto 2);
  222.        end if;
  223.       when "011" =>
  224.        if(sine_total(11) = '0') then
  225.         data_out <= '0' & sine_total(11 downto 1);
  226.        else
  227.         data_out <= '1' & sine_total(11 downto 1);
  228.        end if;
  229.       when "100" =>
  230.  
  231.        data_out <= sine_total;
  232.       when others =>
  233.        data_out <= (others => 'X');
  234.      end case;
  235.     else
  236.      data_out <= (others => 'X');
  237.     end if;
  238.    end if;
  239.   end if;
  240.  end process;
  241. end rtl;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement