Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] VHDL : Sine Wave Lookup Table Not Working

Status
Not open for further replies.

akh_power

Junior Member level 1
Joined
Jul 17, 2018
Messages
19
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
144
I have written a look up table for sine wave generation using array, in VHDL. But it is not returning the data. The program is given below:

Code:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity sincos_lut is
port
(  
   clk             : in  std_logic;      
   sin_data        : out std_logic_vector(15 downto 0);
   cos_data        : out std_logic_vector(15 downto 0)
);
end sincos_lut;


 architecture Behaviour of sincos_lut is
	type lut_array_type is array(2**9 downto 0) of
		 std_logic_vector(15 downto 0);
  signal ccount : integer;
  signal num : integer;
  signal sintable : lut_array_type;
  signal costable	: lut_array_type;
  begin
      sintable(0)<="0000000000000000";
      costable(0)<="1000000000000000";
      sintable(1)<="0000000001100100";
      costable(1)<="0111111111111111";
      sintable(2)<="0000000011001001";
      costable(2)<="0111111111111111";
      sintable(3)<="0000000100101101";
      costable(3)<="0111111111111110";
      sintable(4)<="0000000110010010";
      costable(4)<="0111111111111101";
      sintable(5)<="0000000111110110";
      costable(5)<="0111111111111100";
      sintable(6)<="0000001001011011";
      costable(6)<="0111111111111010";
      sintable(7)<="0000001010111111";
      costable(7)<="0111111111111000";
      sintable(8)<="0000001100100100";
      costable(8)<="0111111111110110";
      sintable(9)<="0000001110001000";
      costable(9)<="0111111111110011";
      sintable(10)<="0000001111101101";
      costable(10)<="0111111111110000";
      sintable(11)<="0000010001010001";
      costable(11)<="0111111111101101";
      sintable(12)<="0000010010110110";
      costable(12)<="0111111111101001";
      sintable(13)<="0000010100011010";
      costable(13)<="0111111111100101";
      sintable(14)<="0000010101111111";
      costable(14)<="0111111111100001";
      sintable(15)<="0000010111100011";
      costable(15)<="0111111111011101";
      sintable(16)<="0000011001000111";
      costable(16)<="0111111111011000";
      sintable(17)<="0000011010101100";
      costable(17)<="0111111111010011";
      sintable(18)<="0000011100010000";
      costable(18)<="0111111111001110";
      sintable(19)<="0000011101110101";
      costable(19)<="0111111111001000";
      sintable(20)<="0000011111011001";
      costable(20)<="0111111111000010";
      sintable(21)<="0000100000111101";
      costable(21)<="0111111110111100";
      sintable(22)<="0000100010100010";
      costable(22)<="0111111110110101";
      sintable(23)<="0000100100000110";
      costable(23)<="0111111110101110";
      sintable(24)<="0000100101101010";
      costable(24)<="0111111110100111";
      sintable(25)<="0000100111001110";
      costable(25)<="0111111110011111";
      sintable(26)<="0000101000110011";
      costable(26)<="0111111110010111";
      sintable(27)<="0000101010010111";
      costable(27)<="0111111110001111";
      sintable(28)<="0000101011111011";
      costable(28)<="0111111110000111";
      sintable(29)<="0000101101011111";
      costable(29)<="0111111101111110";
      sintable(30)<="0000101111000011";
      costable(30)<="0111111101110101";
      sintable(31)<="0000110000100111";
      costable(31)<="0111111101101011";
      sintable(32)<="0000110010001011";
      costable(32)<="0111111101100010";
      sintable(33)<="0000110011101111";
      costable(33)<="0111111101011000";
      sintable(34)<="0000110101010011";
      costable(34)<="0111111101001101";
      sintable(35)<="0000110110110111";
      costable(35)<="0111111101000011";
      sintable(36)<="0000111000011011";
      costable(36)<="0111111100111000";
      sintable(37)<="0000111001111111";
      costable(37)<="0111111100101101";
      sintable(38)<="0000111011100011";
      costable(38)<="0111111100100001";
      sintable(39)<="0000111101000111";
      costable(39)<="0111111100010101";
      sintable(40)<="0000111110101011";
      costable(40)<="0111111100001001";
      sintable(41)<="0001000000001110";
      costable(41)<="0111111011111101";
      sintable(42)<="0001000001110010";
      costable(42)<="0111111011110000";
      sintable(43)<="0001000011010110";
      costable(43)<="0111111011100011";
      sintable(44)<="0001000100111001";
      costable(44)<="0111111011010101";
      sintable(45)<="0001000110011101";
      costable(45)<="0111111011001000";
      sintable(46)<="0001001000000001";
      costable(46)<="0111111010111010";
      sintable(47)<="0001001001100100";
      costable(47)<="0111111010101011";
      sintable(48)<="0001001011001000";
      costable(48)<="0111111010011101";
      sintable(49)<="0001001100101011";
      costable(49)<="0111111010001110";
      sintable(50)<="0001001110001110";
      costable(50)<="0111111001111111";
      sintable(51)<="0001001111110010";
      costable(51)<="0111111001101111";
      sintable(52)<="0001010001010101";
      costable(52)<="0111111001011111";
      sintable(53)<="0001010010111000";
      costable(53)<="0111111001001111";
      sintable(54)<="0001010100011011";
      costable(54)<="0111111000111111";
      sintable(55)<="0001010101111111";
      costable(55)<="0111111000101110";
      sintable(56)<="0001010111100010";
      costable(56)<="0111111000011101";
      sintable(57)<="0001011001000101";
      costable(57)<="0111111000001100";
      sintable(58)<="0001011010101000";
      costable(58)<="0111110111111010";
      sintable(59)<="0001011100001010";
      costable(59)<="0111110111101000";
      sintable(60)<="0001011101101101";
      costable(60)<="0111110111010110";
      sintable(61)<="0001011111010000";
      costable(61)<="0111110111000011";
      sintable(62)<="0001100000110011";
      costable(62)<="0111110110110000";
      sintable(63)<="0001100010010110";
      costable(63)<="0111110110011101";
      sintable(64)<="0001100011111000";
      costable(64)<="0111110110001010";
      sintable(65)<="0001100101011011";
      costable(65)<="0111110101110110";
      sintable(66)<="0001100110111101";
      costable(66)<="0111110101100010";
      sintable(67)<="0001101000100000";
      costable(67)<="0111110101001110";
      sintable(68)<="0001101010000010";
      costable(68)<="0111110100111001";
      sintable(69)<="0001101011100100";
      costable(69)<="0111110100100100";
      sintable(70)<="0001101101000111";
      costable(70)<="0111110100001111";
      sintable(71)<="0001101110101001";
      costable(71)<="0111110011111001";
      sintable(72)<="0001110000001011";
      costable(72)<="0111110011100011";
      sintable(73)<="0001110001101101";
      costable(73)<="0111110011001101";
      sintable(74)<="0001110011001111";
      costable(74)<="0111110010110111";
      sintable(75)<="0001110100110001";
      costable(75)<="0111110010100000";
      sintable(76)<="0001110110010011";
      costable(76)<="0111110010001001";
      sintable(77)<="0001110111110101";
      costable(77)<="0111110001110001";
      sintable(78)<="0001111001010110";
      costable(78)<="0111110001011010";
      sintable(79)<="0001111010111000";
      costable(79)<="0111110001000010";
      sintable(80)<="0001111100011001";
      costable(80)<="0111110000101001";
      sintable(81)<="0001111101111011";
      costable(81)<="0111110000010001";
      sintable(82)<="0001111111011100";
      costable(82)<="0111101111111000";
      sintable(83)<="0010000000111110";
      costable(83)<="0111101111011111";
      sintable(84)<="0010000010011111";
      costable(84)<="0111101111000101";
      sintable(85)<="0010000100000000";
      costable(85)<="0111101110101100";
      sintable(86)<="0010000101100001";
      costable(86)<="0111101110010010";
      sintable(87)<="0010000111000010";
      costable(87)<="0111101101110111";
      sintable(88)<="0010001000100011";
      costable(88)<="0111101101011101";
      sintable(89)<="0010001010000100";
      costable(89)<="0111101101000010";
      sintable(90)<="0010001011100101";
      costable(90)<="0111101100100110";
      sintable(91)<="0010001101000101";
      costable(91)<="0111101100001011";
      sintable(92)<="0010001110100110";
      costable(92)<="0111101011101111";
      sintable(93)<="0010010000000111";
      costable(93)<="0111101011010011";
      sintable(94)<="0010010001100111";
      costable(94)<="0111101010110110";
      sintable(95)<="0010010011000111";
      costable(95)<="0111101010011010";
      sintable(96)<="0010010100101000";
      costable(96)<="0111101001111101";
      sintable(97)<="0010010110001000";
      costable(97)<="0111101001011111";
      sintable(98)<="0010010111101000";
      costable(98)<="0111101001000010";
      sintable(99)<="0010011001001000";
      costable(99)<="0111101000100100";
      sintable(100)<="0010011010101000";
      costable(100)<="0111101000000101";
      sintable(101)<="0010011100000111";
      costable(101)<="0111100111100111";
      sintable(102)<="0010011101100111";
      costable(102)<="0111100111001000";
      sintable(103)<="0010011111000111";
      costable(103)<="0111100110101001";
      sintable(104)<="0010100000100110";
      costable(104)<="0111100110001010";
      sintable(105)<="0010100010000110";
      costable(105)<="0111100101101010";
      sintable(106)<="0010100011100101";
      costable(106)<="0111100101001010";
      sintable(107)<="0010100101000100";
      costable(107)<="0111100100101010";
      sintable(108)<="0010100110100011";
      costable(108)<="0111100100001001";
      sintable(109)<="0010101000000010";
      costable(109)<="0111100011101000";
      sintable(110)<="0010101001100001";
      costable(110)<="0111100011000111";
      sintable(111)<="0010101011000000";
      costable(111)<="0111100010100110";
      sintable(112)<="0010101100011111";
      costable(112)<="0111100010000100";
      sintable(113)<="0010101101111101";
      costable(113)<="0111100001100010";
      sintable(114)<="0010101111011100";
      costable(114)<="0111100001000000";
      sintable(115)<="0010110000111010";
      costable(115)<="0111100000011101";
      sintable(116)<="0010110010011000";
      costable(116)<="0111011111111010";
      sintable(117)<="0010110011110111";
      costable(117)<="0111011111010111";
      sintable(118)<="0010110101010101";
      costable(118)<="0111011110110100";
      sintable(119)<="0010110110110011";
      costable(119)<="0111011110010000";
      sintable(120)<="0010111000010001";
      costable(120)<="0111011101101100";
      sintable(121)<="0010111001101110";
      costable(121)<="0111011101000111";
      sintable(122)<="0010111011001100";
      costable(122)<="0111011100100011";
      sintable(123)<="0010111100101001";
      costable(123)<="0111011011111110";
      sintable(124)<="0010111110000111";
      costable(124)<="0111011011011001";
      sintable(125)<="0010111111100100";
      costable(125)<="0111011010110011";
      sintable(126)<="0011000001000001";
      costable(126)<="0111011010001110";
      sintable(127)<="0011000010011110";
      costable(127)<="0111011001101000";
      sintable(128)<="0011000011111011";
      costable(128)<="0111011001000001";
      sintable(129)<="0011000101011000";
      costable(129)<="0111011000011011";
      sintable(130)<="0011000110110101";
      costable(130)<="0111010111110100";
      sintable(131)<="0011001000010001";
      costable(131)<="0111010111001100";
      sintable(132)<="0011001001101110";
      costable(132)<="0111010110100101";
      sintable(133)<="0011001011001010";
      costable(133)<="0111010101111101";
      sintable(134)<="0011001100100110";
      costable(134)<="0111010101010101";
      sintable(135)<="0011001110000010";
      costable(135)<="0111010100101101";
      sintable(136)<="0011001111011110";
      costable(136)<="0111010100000100";
      sintable(137)<="0011010000111010";
      costable(137)<="0111010011011011";
      sintable(138)<="0011010010010110";
      costable(138)<="0111010010110010";
      sintable(139)<="0011010011110010";
      costable(139)<="0111010010001001";
      sintable(140)<="0011010101001101";
      costable(140)<="0111010001011111";
      sintable(141)<="0011010110101000";
      costable(141)<="0111010000110101";
      sintable(142)<="0011011000000100";
      costable(142)<="0111010000001011";
      sintable(143)<="0011011001011111";
      costable(143)<="0111001111100000";
      sintable(144)<="0011011010111010";
      costable(144)<="0111001110110101";
      sintable(145)<="0011011100010100";
      costable(145)<="0111001110001010";
      sintable(146)<="0011011101101111";
      costable(146)<="0111001101011111";
      sintable(147)<="0011011111001010";
      costable(147)<="0111001100110011";
      sintable(148)<="0011100000100100";
      costable(148)<="0111001100000111";
      sintable(149)<="0011100001111110";
      costable(149)<="0111001011011011";
      sintable(150)<="0011100011011000";
      costable(150)<="0111001010101111";
      sintable(151)<="0011100100110010";
      costable(151)<="0111001010000010";
      sintable(152)<="0011100110001100";
      costable(152)<="0111001001010101";
      sintable(153)<="0011100111100110";
      costable(153)<="0111001000100111";
      sintable(154)<="0011101001000000";
      costable(154)<="0111000111111010";
      sintable(155)<="0011101010011001";
      costable(155)<="0111000111001100";
      sintable(156)<="0011101011110010";
      costable(156)<="0111000110011110";
      sintable(157)<="0011101101001100";
      costable(157)<="0111000101101111";
      sintable(158)<="0011101110100101";
      costable(158)<="0111000101000001";
      sintable(159)<="0011101111111101";
      costable(159)<="0111000100010010";
      sintable(160)<="0011110001010110";
      costable(160)<="0111000011100010";
      sintable(161)<="0011110010101111";
      costable(161)<="0111000010110011";
      sintable(162)<="0011110100000111";
      costable(162)<="0111000010000011";
      sintable(163)<="0011110101100000";
      costable(163)<="0111000001010011";
      sintable(164)<="0011110110111000";
      costable(164)<="0111000000100011";
      sintable(165)<="0011111000010000";
      costable(165)<="0110111111110010";
      sintable(166)<="0011111001101000";
      costable(166)<="0110111111000001";
      sintable(167)<="0011111010111111";
      costable(167)<="0110111110010000";
      sintable(168)<="0011111100010111";
      costable(168)<="0110111101011111";
      sintable(169)<="0011111101101110";
      costable(169)<="0110111100101101";
      sintable(170)<="0011111111000101";
      costable(170)<="0110111011111011";
      sintable(171)<="0100000000011101";
      costable(171)<="0110111011001001";
      sintable(172)<="0100000001110011";
      costable(172)<="0110111010010110";
      sintable(173)<="0100000011001010";
      costable(173)<="0110111001100011";
      sintable(174)<="0100000100100001";
      costable(174)<="0110111000110000";
      sintable(175)<="0100000101110111";
      costable(175)<="0110110111111101";
      sintable(176)<="0100000111001110";
      costable(176)<="0110110111001010";
      sintable(177)<="0100001000100100";
      costable(177)<="0110110110010110";
      sintable(178)<="0100001001111010";
      costable(178)<="0110110101100010";
      sintable(179)<="0100001011010000";
      costable(179)<="0110110100101101";
      sintable(180)<="0100001100100101";
      costable(180)<="0110110011111001";
      sintable(181)<="0100001101111011";
      costable(181)<="0110110011000100";
      sintable(182)<="0100001111010000";
      costable(182)<="0110110010001111";
      sintable(183)<="0100010000100101";
      costable(183)<="0110110001011001";
      sintable(184)<="0100010001111010";
      costable(184)<="0110110000100100";
      sintable(185)<="0100010011001111";
      costable(185)<="0110101111101110";
      sintable(186)<="0100010100100100";
      costable(186)<="0110101110111000";
      sintable(187)<="0100010101111000";
      costable(187)<="0110101110000001";
      sintable(188)<="0100010111001101";
      costable(188)<="0110101101001010";
      sintable(189)<="0100011000100001";
      costable(189)<="0110101100010011";
      sintable(190)<="0100011001110101";
      costable(190)<="0110101011011100";
      sintable(191)<="0100011011001001";
      costable(191)<="0110101010100101";
      sintable(192)<="0100011100011100";
      costable(192)<="0110101001101101";
      sintable(193)<="0100011101110000";
      costable(193)<="0110101000110101";
      sintable(194)<="0100011111000011";
      costable(194)<="0110100111111101";
      sintable(195)<="0100100000010110";
      costable(195)<="0110100111000100";
      sintable(196)<="0100100001101001";
      costable(196)<="0110100110001100";
      sintable(197)<="0100100010111100";
      costable(197)<="0110100101010011";
      sintable(198)<="0100100100001111";
      costable(198)<="0110100100011001";
      sintable(199)<="0100100101100001";
      costable(199)<="0110100011100000";
      sintable(200)<="0100100110110100";
      costable(200)<="0110100010100110";
      sintable(201)<="0100101000000110";
      costable(201)<="0110100001101100";
      sintable(202)<="0100101001011000";
      costable(202)<="0110100000110010";
      sintable(203)<="0100101010101001";
      costable(203)<="0110011111110111";
      sintable(204)<="0100101011111011";
      costable(204)<="0110011110111101";
      sintable(205)<="0100101101001100";
      costable(205)<="0110011110000010";
      sintable(206)<="0100101110011110";
      costable(206)<="0110011101000110";
      sintable(207)<="0100101111101111";
      costable(207)<="0110011100001011";
      sintable(208)<="0100110000111111";
      costable(208)<="0110011011001111";
      sintable(209)<="0100110010010000";
      costable(209)<="0110011010010011";
      sintable(210)<="0100110011100001";
      costable(210)<="0110011001010111";
      sintable(211)<="0100110100110001";
      costable(211)<="0110011000011010";
      sintable(212)<="0100110110000001";
      costable(212)<="0110010111011101";
      sintable(213)<="0100110111010001";
      costable(213)<="0110010110100000";
      sintable(214)<="0100111000100001";
      costable(214)<="0110010101100011";
      sintable(215)<="0100111001110000";
      costable(215)<="0110010100100110";
      sintable(216)<="0100111010111111";
      costable(216)<="0110010011101000";
      sintable(217)<="0100111100001111";
      costable(217)<="0110010010101010";
      sintable(218)<="0100111101011110";
      costable(218)<="0110010001101100";
      sintable(219)<="0100111110101100";
      costable(219)<="0110010000101101";
      sintable(220)<="0100111111111011";
      costable(220)<="0110001111101111";
      sintable(221)<="0101000001001001";
      costable(221)<="0110001110110000";
      sintable(222)<="0101000010010111";
      costable(222)<="0110001101110001";
      sintable(223)<="0101000011100101";
      costable(223)<="0110001100110001";
      sintable(224)<="0101000100110011";
      costable(224)<="0110001011110010";
      sintable(225)<="0101000110000001";
      costable(225)<="0110001010110010";
      sintable(226)<="0101000111001110";
      costable(226)<="0110001001110001";
      sintable(227)<="0101001000011100";
      costable(227)<="0110001000110001";
      sintable(228)<="0101001001101001";
      costable(228)<="0110000111110001";
      sintable(229)<="0101001010110101";
      costable(229)<="0110000110110000";
      sintable(230)<="0101001100000010";
      costable(230)<="0110000101101111";
      sintable(231)<="0101001101001110";
      costable(231)<="0110000100101101";
      sintable(232)<="0101001110011011";
      costable(232)<="0110000011101100";
      sintable(233)<="0101001111100111";
      costable(233)<="0110000010101010";
      sintable(234)<="0101010000110011";
      costable(234)<="0110000001101000";
      sintable(235)<="0101010001111110";
      costable(235)<="0110000000100110";
      sintable(236)<="0101010011001010";
      costable(236)<="0101111111100011";
      sintable(237)<="0101010100010101";
      costable(237)<="0101111110100000";
      sintable(238)<="0101010101100000";
      costable(238)<="0101111101011110";
      sintable(239)<="0101010110101011";
      costable(239)<="0101111100011010";
      sintable(240)<="0101010111110101";
      costable(240)<="0101111011010111";
      sintable(241)<="0101011001000000";
      costable(241)<="0101111010010011";
      sintable(242)<="0101011010001010";
      costable(242)<="0101111001010000";
      sintable(243)<="0101011011010100";
      costable(243)<="0101111000001011";
      sintable(244)<="0101011100011101";
      costable(244)<="0101110111000111";
      sintable(245)<="0101011101100111";
      costable(245)<="0101110110000011";
      sintable(246)<="0101011110110000";
      costable(246)<="0101110100111110";
      sintable(247)<="0101011111111001";
      costable(247)<="0101110011111001";
      sintable(248)<="0101100001000010";
      costable(248)<="0101110010110100";
      sintable(249)<="0101100010001011";
      costable(249)<="0101110001101110";
      sintable(250)<="0101100011010100";
      costable(250)<="0101110000101001";
      sintable(251)<="0101100100011100";
      costable(251)<="0101101111100011";
      sintable(252)<="0101100101100100";
      costable(252)<="0101101110011101";
      sintable(253)<="0101100110101100";
      costable(253)<="0101101101010110";
      sintable(254)<="0101100111110011";
      costable(254)<="0101101100010000";
      sintable(255)<="0101101000111011";
      costable(255)<="0101101011001001";
      sintable(256)<="0101101010000010";
      costable(256)<="0101101010000010";
      sintable(257)<="0101101011001001";
      costable(257)<="0101101000111011";
      sintable(258)<="0101101100010000";
      costable(258)<="0101100111110011";
      sintable(259)<="0101101101010110";
      costable(259)<="0101100110101100";
      sintable(260)<="0101101110011101";
      costable(260)<="0101100101100100";
      sintable(261)<="0101101111100011";
      costable(261)<="0101100100011100";
      sintable(262)<="0101110000101001";
      costable(262)<="0101100011010100";
      sintable(263)<="0101110001101110";
      costable(263)<="0101100010001011";
      sintable(264)<="0101110010110100";
      costable(264)<="0101100001000010";
      sintable(265)<="0101110011111001";
      costable(265)<="0101011111111001";
      sintable(266)<="0101110100111110";
      costable(266)<="0101011110110000";
      sintable(267)<="0101110110000011";
      costable(267)<="0101011101100111";
      sintable(268)<="0101110111000111";
      costable(268)<="0101011100011101";
      sintable(269)<="0101111000001011";
      costable(269)<="0101011011010100";
      sintable(270)<="0101111001010000";
      costable(270)<="0101011010001010";
      sintable(271)<="0101111010010011";
      costable(271)<="0101011001000000";
      sintable(272)<="0101111011010111";
      costable(272)<="0101010111110101";
      sintable(273)<="0101111100011010";
      costable(273)<="0101010110101011";
      sintable(274)<="0101111101011110";
      costable(274)<="0101010101100000";
      sintable(275)<="0101111110100000";
      costable(275)<="0101010100010101";
      sintable(276)<="0101111111100011";
      costable(276)<="0101010011001010";
      sintable(277)<="0110000000100110";
      costable(277)<="0101010001111110";
      sintable(278)<="0110000001101000";
      costable(278)<="0101010000110011";
      sintable(279)<="0110000010101010";
      costable(279)<="0101001111100111";
      sintable(280)<="0110000011101100";
      costable(280)<="0101001110011011";
      sintable(281)<="0110000100101101";
      costable(281)<="0101001101001110";
      sintable(282)<="0110000101101111";
      costable(282)<="0101001100000010";
      sintable(283)<="0110000110110000";
      costable(283)<="0101001010110101";
      sintable(284)<="0110000111110001";
      costable(284)<="0101001001101001";
      sintable(285)<="0110001000110001";
      costable(285)<="0101001000011100";
      sintable(286)<="0110001001110001";
      costable(286)<="0101000111001110";
      sintable(287)<="0110001010110010";
      costable(287)<="0101000110000001";
      sintable(288)<="0110001011110010";
      costable(288)<="0101000100110011";
      sintable(289)<="0110001100110001";
      costable(289)<="0101000011100101";
      sintable(290)<="0110001101110001";
      costable(290)<="0101000010010111";
      sintable(291)<="0110001110110000";
      costable(291)<="0101000001001001";
      sintable(292)<="0110001111101111";
      costable(292)<="0100111111111011";
      sintable(293)<="0110010000101101";
      costable(293)<="0100111110101100";
      sintable(294)<="0110010001101100";
      costable(294)<="0100111101011110";
      sintable(295)<="0110010010101010";
      costable(295)<="0100111100001111";
      sintable(296)<="0110010011101000";
      costable(296)<="0100111010111111";
      sintable(297)<="0110010100100110";
      costable(297)<="0100111001110000";
      sintable(298)<="0110010101100011";
      costable(298)<="0100111000100001";
      sintable(299)<="0110010110100000";
      costable(299)<="0100110111010001";
      sintable(300)<="0110010111011101";
      costable(300)<="0100110110000001";
      sintable(301)<="0110011000011010";
      costable(301)<="0100110100110001";
      sintable(302)<="0110011001010111";
      costable(302)<="0100110011100001";
      sintable(303)<="0110011010010011";
      costable(303)<="0100110010010000";
      sintable(304)<="0110011011001111";
      costable(304)<="0100110000111111";
      sintable(305)<="0110011100001011";
      costable(305)<="0100101111101111";
      sintable(306)<="0110011101000110";
      costable(306)<="0100101110011110";
      sintable(307)<="0110011110000010";
      costable(307)<="0100101101001100";
      sintable(308)<="0110011110111101";
      costable(308)<="0100101011111011";
      sintable(309)<="0110011111110111";
      costable(309)<="0100101010101001";
      sintable(310)<="0110100000110010";
      costable(310)<="0100101001011000";
      sintable(311)<="0110100001101100";
      costable(311)<="0100101000000110";
      sintable(312)<="0110100010100110";
      costable(312)<="0100100110110100";
      sintable(313)<="0110100011100000";
      costable(313)<="0100100101100001";
      sintable(314)<="0110100100011001";
      costable(314)<="0100100100001111";
      sintable(315)<="0110100101010011";
      costable(315)<="0100100010111100";
      sintable(316)<="0110100110001100";
      costable(316)<="0100100001101001";
      sintable(317)<="0110100111000100";
      costable(317)<="0100100000010110";
      sintable(318)<="0110100111111101";
      costable(318)<="0100011111000011";
      sintable(319)<="0110101000110101";
      costable(319)<="0100011101110000";
      sintable(320)<="0110101001101101";
      costable(320)<="0100011100011100";
      sintable(321)<="0110101010100101";
      costable(321)<="0100011011001001";
      sintable(322)<="0110101011011100";
      costable(322)<="0100011001110101";
      sintable(323)<="0110101100010011";
      costable(323)<="0100011000100001";
      sintable(324)<="0110101101001010";
      costable(324)<="0100010111001101";
      sintable(325)<="0110101110000001";
      costable(325)<="0100010101111000";
      sintable(326)<="0110101110111000";
      costable(326)<="0100010100100100";
      sintable(327)<="0110101111101110";
      costable(327)<="0100010011001111";
      sintable(328)<="0110110000100100";
      costable(328)<="0100010001111010";
      sintable(329)<="0110110001011001";
      costable(329)<="0100010000100101";
      sintable(330)<="0110110010001111";
      costable(330)<="0100001111010000";
      sintable(331)<="0110110011000100";
      costable(331)<="0100001101111011";
      sintable(332)<="0110110011111001";
      costable(332)<="0100001100100101";
      sintable(333)<="0110110100101101";
      costable(333)<="0100001011010000";
      sintable(334)<="0110110101100010";
      costable(334)<="0100001001111010";
      sintable(335)<="0110110110010110";
      costable(335)<="0100001000100100";
      sintable(336)<="0110110111001010";
      costable(336)<="0100000111001110";
      sintable(337)<="0110110111111101";
      costable(337)<="0100000101110111";
      sintable(338)<="0110111000110000";
      costable(338)<="0100000100100001";
      sintable(339)<="0110111001100011";
      costable(339)<="0100000011001010";
      sintable(340)<="0110111010010110";
      costable(340)<="0100000001110011";
      sintable(341)<="0110111011001001";
      costable(341)<="0100000000011101";
      sintable(342)<="0110111011111011";
      costable(342)<="0011111111000101";
      sintable(343)<="0110111100101101";
      costable(343)<="0011111101101110";
      sintable(344)<="0110111101011111";
      costable(344)<="0011111100010111";
      sintable(345)<="0110111110010000";
      costable(345)<="0011111010111111";
      sintable(346)<="0110111111000001";
      costable(346)<="0011111001101000";
      sintable(347)<="0110111111110010";
      costable(347)<="0011111000010000";
      sintable(348)<="0111000000100011";
      costable(348)<="0011110110111000";
      sintable(349)<="0111000001010011";
      costable(349)<="0011110101100000";
      sintable(350)<="0111000010000011";
      costable(350)<="0011110100000111";
      sintable(351)<="0111000010110011";
      costable(351)<="0011110010101111";
      sintable(352)<="0111000011100010";
      costable(352)<="0011110001010110";
      sintable(353)<="0111000100010010";
      costable(353)<="0011101111111101";
      sintable(354)<="0111000101000001";
      costable(354)<="0011101110100101";
      sintable(355)<="0111000101101111";
      costable(355)<="0011101101001100";
      sintable(356)<="0111000110011110";
      costable(356)<="0011101011110010";
      sintable(357)<="0111000111001100";
      costable(357)<="0011101010011001";
      sintable(358)<="0111000111111010";
      costable(358)<="0011101001000000";
      sintable(359)<="0111001000100111";
      costable(359)<="0011100111100110";
      sintable(360)<="0111001001010101";
      costable(360)<="0011100110001100";
      sintable(361)<="0111001010000010";
      costable(361)<="0011100100110010";
      sintable(362)<="0111001010101111";
      costable(362)<="0011100011011000";
      sintable(363)<="0111001011011011";
      costable(363)<="0011100001111110";
      sintable(364)<="0111001100000111";
      costable(364)<="0011100000100100";
      sintable(365)<="0111001100110011";
      costable(365)<="0011011111001010";
      sintable(366)<="0111001101011111";
      costable(366)<="0011011101101111";
      sintable(367)<="0111001110001010";
      costable(367)<="0011011100010100";
      sintable(368)<="0111001110110101";
      costable(368)<="0011011010111010";
      sintable(369)<="0111001111100000";
      costable(369)<="0011011001011111";
      sintable(370)<="0111010000001011";
      costable(370)<="0011011000000100";
      sintable(371)<="0111010000110101";
      costable(371)<="0011010110101000";
      sintable(372)<="0111010001011111";
      costable(372)<="0011010101001101";
      sintable(373)<="0111010010001001";
      costable(373)<="0011010011110010";
      sintable(374)<="0111010010110010";
      costable(374)<="0011010010010110";
      sintable(375)<="0111010011011011";
      costable(375)<="0011010000111010";
      sintable(376)<="0111010100000100";
      costable(376)<="0011001111011110";
      sintable(377)<="0111010100101101";
      costable(377)<="0011001110000010";
      sintable(378)<="0111010101010101";
      costable(378)<="0011001100100110";
      sintable(379)<="0111010101111101";
      costable(379)<="0011001011001010";
      sintable(380)<="0111010110100101";
      costable(380)<="0011001001101110";
      sintable(381)<="0111010111001100";
      costable(381)<="0011001000010001";
      sintable(382)<="0111010111110100";
      costable(382)<="0011000110110101";
      sintable(383)<="0111011000011011";
      costable(383)<="0011000101011000";
      sintable(384)<="0111011001000001";
      costable(384)<="0011000011111011";
      sintable(385)<="0111011001101000";
      costable(385)<="0011000010011110";
      sintable(386)<="0111011010001110";
      costable(386)<="0011000001000001";
      sintable(387)<="0111011010110011";
      costable(387)<="0010111111100100";
      sintable(388)<="0111011011011001";
      costable(388)<="0010111110000111";
      sintable(389)<="0111011011111110";
      costable(389)<="0010111100101001";
      sintable(390)<="0111011100100011";
      costable(390)<="0010111011001100";
      sintable(391)<="0111011101000111";
      costable(391)<="0010111001101110";
      sintable(392)<="0111011101101100";
      costable(392)<="0010111000010001";
      sintable(393)<="0111011110010000";
      costable(393)<="0010110110110011";
      sintable(394)<="0111011110110100";
      costable(394)<="0010110101010101";
      sintable(395)<="0111011111010111";
      costable(395)<="0010110011110111";
      sintable(396)<="0111011111111010";
      costable(396)<="0010110010011000";
      sintable(397)<="0111100000011101";
      costable(397)<="0010110000111010";
      sintable(398)<="0111100001000000";
      costable(398)<="0010101111011100";
      sintable(399)<="0111100001100010";
      costable(399)<="0010101101111101";
      sintable(400)<="0111100010000100";
      costable(400)<="0010101100011111";
      sintable(401)<="0111100010100110";
      costable(401)<="0010101011000000";
      sintable(402)<="0111100011000111";
      costable(402)<="0010101001100001";
      sintable(403)<="0111100011101000";
      costable(403)<="0010101000000010";
      sintable(404)<="0111100100001001";
      costable(404)<="0010100110100011";
      sintable(405)<="0111100100101010";
      costable(405)<="0010100101000100";
      sintable(406)<="0111100101001010";
      costable(406)<="0010100011100101";
      sintable(407)<="0111100101101010";
      costable(407)<="0010100010000110";
      sintable(408)<="0111100110001010";
      costable(408)<="0010100000100110";
      sintable(409)<="0111100110101001";
      costable(409)<="0010011111000111";
      sintable(410)<="0111100111001000";
      costable(410)<="0010011101100111";
      sintable(411)<="0111100111100111";
      costable(411)<="0010011100000111";
      sintable(412)<="0111101000000101";
      costable(412)<="0010011010101000";
      sintable(413)<="0111101000100100";
      costable(413)<="0010011001001000";
      sintable(414)<="0111101001000010";
      costable(414)<="0010010111101000";
      sintable(415)<="0111101001011111";
      costable(415)<="0010010110001000";
      sintable(416)<="0111101001111101";
      costable(416)<="0010010100101000";
      sintable(417)<="0111101010011010";
      costable(417)<="0010010011000111";
      sintable(418)<="0111101010110110";
      costable(418)<="0010010001100111";
      sintable(419)<="0111101011010011";
      costable(419)<="0010010000000111";
      sintable(420)<="0111101011101111";
      costable(420)<="0010001110100110";
      sintable(421)<="0111101100001011";
      costable(421)<="0010001101000101";
      sintable(422)<="0111101100100110";
      costable(422)<="0010001011100101";
      sintable(423)<="0111101101000010";
      costable(423)<="0010001010000100";
      sintable(424)<="0111101101011101";
      costable(424)<="0010001000100011";
      sintable(425)<="0111101101110111";
      costable(425)<="0010000111000010";
      sintable(426)<="0111101110010010";
      costable(426)<="0010000101100001";
      sintable(427)<="0111101110101100";
      costable(427)<="0010000100000000";
      sintable(428)<="0111101111000101";
      costable(428)<="0010000010011111";
      sintable(429)<="0111101111011111";
      costable(429)<="0010000000111110";
      sintable(430)<="0111101111111000";
      costable(430)<="0001111111011100";
      sintable(431)<="0111110000010001";
      costable(431)<="0001111101111011";
      sintable(432)<="0111110000101001";
      costable(432)<="0001111100011001";
      sintable(433)<="0111110001000010";
      costable(433)<="0001111010111000";
      sintable(434)<="0111110001011010";
      costable(434)<="0001111001010110";
      sintable(435)<="0111110001110001";
      costable(435)<="0001110111110101";
      sintable(436)<="0111110010001001";
      costable(436)<="0001110110010011";
      sintable(437)<="0111110010100000";
      costable(437)<="0001110100110001";
      sintable(438)<="0111110010110111";
      costable(438)<="0001110011001111";
      sintable(439)<="0111110011001101";
      costable(439)<="0001110001101101";
      sintable(440)<="0111110011100011";
      costable(440)<="0001110000001011";
      sintable(441)<="0111110011111001";
      costable(441)<="0001101110101001";
      sintable(442)<="0111110100001111";
      costable(442)<="0001101101000111";
      sintable(443)<="0111110100100100";
      costable(443)<="0001101011100100";
      sintable(444)<="0111110100111001";
      costable(444)<="0001101010000010";
      sintable(445)<="0111110101001110";
      costable(445)<="0001101000100000";
      sintable(446)<="0111110101100010";
      costable(446)<="0001100110111101";
      sintable(447)<="0111110101110110";
      costable(447)<="0001100101011011";
      sintable(448)<="0111110110001010";
      costable(448)<="0001100011111000";
      sintable(449)<="0111110110011101";
      costable(449)<="0001100010010110";
      sintable(450)<="0111110110110000";
      costable(450)<="0001100000110011";
      sintable(451)<="0111110111000011";
      costable(451)<="0001011111010000";
      sintable(452)<="0111110111010110";
      costable(452)<="0001011101101101";
      sintable(453)<="0111110111101000";
      costable(453)<="0001011100001010";
      sintable(454)<="0111110111111010";
      costable(454)<="0001011010101000";
      sintable(455)<="0111111000001100";
      costable(455)<="0001011001000101";
      sintable(456)<="0111111000011101";
      costable(456)<="0001010111100010";
      sintable(457)<="0111111000101110";
      costable(457)<="0001010101111111";
      sintable(458)<="0111111000111111";
      costable(458)<="0001010100011011";
      sintable(459)<="0111111001001111";
      costable(459)<="0001010010111000";
      sintable(460)<="0111111001011111";
      costable(460)<="0001010001010101";
      sintable(461)<="0111111001101111";
      costable(461)<="0001001111110010";
      sintable(462)<="0111111001111111";
      costable(462)<="0001001110001110";
      sintable(463)<="0111111010001110";
      costable(463)<="0001001100101011";
      sintable(464)<="0111111010011101";
      costable(464)<="0001001011001000";
      sintable(465)<="0111111010101011";
      costable(465)<="0001001001100100";
      sintable(466)<="0111111010111010";
      costable(466)<="0001001000000001";
      sintable(467)<="0111111011001000";
      costable(467)<="0001000110011101";
      sintable(468)<="0111111011010101";
      costable(468)<="0001000100111001";
      sintable(469)<="0111111011100011";
      costable(469)<="0001000011010110";
      sintable(470)<="0111111011110000";
      costable(470)<="0001000001110010";
      sintable(471)<="0111111011111101";
      costable(471)<="0001000000001110";
      sintable(472)<="0111111100001001";
      costable(472)<="0000111110101011";
      sintable(473)<="0111111100010101";
      costable(473)<="0000111101000111";
      sintable(474)<="0111111100100001";
      costable(474)<="0000111011100011";
      sintable(475)<="0111111100101101";
      costable(475)<="0000111001111111";
      sintable(476)<="0111111100111000";
      costable(476)<="0000111000011011";
      sintable(477)<="0111111101000011";
      costable(477)<="0000110110110111";
      sintable(478)<="0111111101001101";
      costable(478)<="0000110101010011";
      sintable(479)<="0111111101011000";
      costable(479)<="0000110011101111";
      sintable(480)<="0111111101100010";
      costable(480)<="0000110010001011";
      sintable(481)<="0111111101101011";
      costable(481)<="0000110000100111";
      sintable(482)<="0111111101110101";
      costable(482)<="0000101111000011";
      sintable(483)<="0111111101111110";
      costable(483)<="0000101101011111";
      sintable(484)<="0111111110000111";
      costable(484)<="0000101011111011";
      sintable(485)<="0111111110001111";
      costable(485)<="0000101010010111";
      sintable(486)<="0111111110010111";
      costable(486)<="0000101000110011";
      sintable(487)<="0111111110011111";
      costable(487)<="0000100111001110";
      sintable(488)<="0111111110100111";
      costable(488)<="0000100101101010";
      sintable(489)<="0111111110101110";
      costable(489)<="0000100100000110";
      sintable(490)<="0111111110110101";
      costable(490)<="0000100010100010";
      sintable(491)<="0111111110111100";
      costable(491)<="0000100000111101";
      sintable(492)<="0111111111000010";
      costable(492)<="0000011111011001";
      sintable(493)<="0111111111001000";
      costable(493)<="0000011101110101";
      sintable(494)<="0111111111001110";
      costable(494)<="0000011100010000";
      sintable(495)<="0111111111010011";
      costable(495)<="0000011010101100";
      sintable(496)<="0111111111011000";
      costable(496)<="0000011001000111";
      sintable(497)<="0111111111011101";
      costable(497)<="0000010111100011";
      sintable(498)<="0111111111100001";
      costable(498)<="0000010101111111";
      sintable(499)<="0111111111100101";
      costable(499)<="0000010100011010";
      sintable(500)<="0111111111101001";
      costable(500)<="0000010010110110";
      sintable(501)<="0111111111101101";
      costable(501)<="0000010001010001";
      sintable(502)<="0111111111110000";
      costable(502)<="0000001111101101";
      sintable(503)<="0111111111110011";
      costable(503)<="0000001110001000";
      sintable(504)<="0111111111110110";
      costable(504)<="0000001100100100";
      sintable(505)<="0111111111111000";
      costable(505)<="0000001010111111";
      sintable(506)<="0111111111111010";
      costable(506)<="0000001001011011";
      sintable(507)<="0111111111111100";
      costable(507)<="0000000111110110";
      sintable(508)<="0111111111111101";
      costable(508)<="0000000110010010";
      sintable(509)<="0111111111111110";
      costable(509)<="0000000100101101";
      sintable(510)<="0111111111111111";
      costable(510)<="0000000011001001";
      sintable(511)<="0111111111111111";
      costable(511)<="0000000001100100";
      sintable(512)<="1000000000000000";
      costable(512)<="0000000000000000";  
		
    process(clk)
	   begin
      if clk='1' and clk'event then
		      ccount <= ccount+1;
			 if (ccount = 245) then	
             ccount <= 1;
				 num <= num + 1;
			    if (num = 513) then
				 num <= 0;
				 end if;			  
			 end if;  		
		sin_data <= sintable(num);
		cos_data <= costable(num);	
		end if;
	end process;
end Behaviour;
 
Last edited by a moderator:

Why are sintable and costable signals and not constants?
Num and ccount are 32 bit integers, so in simulation it will start from -2^31 and will throw out of range errors when trying to access the sintable and costable arrays.
Also, because they start so low, it would take a long time for them to simulate to be in range (but you'll get an out of range error first).

Synthesis will likely give you an output, however.
You need to constrain num and ccount to be sensible integer subtypes.
 
Agree with all Tricky says. And also, do you really mean to have a 513 element table rather than 512?

make NUM and CCOUT types NATURAL, (range 0 to 2147483647) rather than integer. Even better, define your own type so you don't end up wasting all those unused bits.
 

Hi,

I wonder why you used the binary format. Why not integer?
Isn´t integer much more easy to calculate and to input?

***
I assume in your table: sin(x) = cos(512-x).
Am I correct?

Klaus
 

Thank you for your reply. The problem solved when I initialized the integer signals. I put num equal to 513 by mistake. But still it is working. Anyway I will correct it. I was using this code to generate SPWM signals. I was not getting result in hardware. Now I am getting.
 

I am using this code to generate SPWM signals. So, I have generated a triangle wave using a std_logic_vector. Now, I will compared it with the sine wave output from this code. So, it is better to put it in binary format I thought. I am getting hardware result now.
 

When num equal to 513, it is resetted to 0. Then only the sine signal value is updated. I think num equal to 513 is alright.
 

When num equal to 513, it is resetted to 0. Then only the sine signal value is updated. I think num equal to 513 is alright.

no, when num = 513 it will be updated on the following rising_edge(clk). The value of 513 will be used for sintable(513) and costable(513).

This might work after synthesis as a single-cycle error might be harder to detect in testing.
 

When num equal to 513, it is resetted to 0. Then only the sine signal value is updated. I think num equal to 513 is alright.

it's not right.
1. It generates an error in simulation when accessing non-existing array position 513.
2. it will probably synthesize, but generating an unwanted 514th extra cycle, wrong sine frequency, etc.


Code VHDL - [expand]
1
if (num = 512) then


would be correct for the given array range

But generally it's not well considered to make an array with 2^n + 1 elements, e.g. 513, although it's of course possible. 512 array elements fits a FPGA RAM block, 513 will start a new block and waste most of it's capacity. You also loose the advantage of using simple 2^n modulo arithmetic for the index.

I lately noticed that your table contains only a quarter wave. The purpose of repeating it periodically isn't quite clear.
 

Yes, it is only for quarter wave. I have modified it as given below:
Code:
----------------------------------------------------------------------------------
-- Company: 
-- Engineer: 
-- 
-- Create Date:    10:17:06 01/22/2019 
-- Design Name: 
-- Module Name:    sincos_table - Behavioral 
-- Project Name: 
-- Target Devices: 
-- Tool versions: 
-- Description: 
--
-- Dependencies: 
--
-- Revision: 
-- Revision 0.01 - File Created
-- Additional Comments: 
--
----------------------------------------------------------------------------------

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity sincos_lut is
port
(  
   clk             : in  std_logic;   
	fselect 	       : in std_logic_vector(13 downto 0);
   sin_data        : out std_logic_vector(16 downto 0);
   cos_data        : out std_logic_vector(16 downto 0)
);
end sincos_lut;


 architecture Behaviour of sincos_lut is
	type lut_array_type is array(2**9 downto 0) of
	std_logic_vector(15 downto 0);
  signal sin_xv : std_logic_vector(15 downto 0);
  signal cos_xv : std_logic_vector(15 downto 0);
  signal ccount : integer :=1;
  signal num : integer:=0;
  signal sintable : lut_array_type;
  signal costable	: lut_array_type;
  
  begin
    sintable(0)<="0000000000000000";
    costable(0)<="1111111111111111";
    sintable(1)<="0000000011001001";
    costable(1)<="1111111111111111";
    sintable(2)<="0000000110010010";
    costable(2)<="1111111111111110";
    sintable(3)<="0000001001011011";
    costable(3)<="1111111111111101";
    sintable(4)<="0000001100100100";
    costable(4)<="1111111111111011";
    sintable(5)<="0000001111101101";
    costable(5)<="1111111111111000";
    sintable(6)<="0000010010110110";
    costable(6)<="1111111111110100";
    sintable(7)<="0000010101111111";
    costable(7)<="1111111111110000";
    sintable(8)<="0000011001001000";
    costable(8)<="1111111111101100";
    sintable(9)<="0000011100010001";
    costable(9)<="1111111111100111";
    sintable(10)<="0000011111011010";
    costable(10)<="1111111111100001";
    sintable(11)<="0000100010100011";
    costable(11)<="1111111111011010";
    sintable(12)<="0000100101101100";
    costable(12)<="1111111111010011";
    sintable(13)<="0000101000110101";
    costable(13)<="1111111111001011";
    sintable(14)<="0000101011111110";
    costable(14)<="1111111111000011";
    sintable(15)<="0000101111000110";
    costable(15)<="1111111110111010";
    sintable(16)<="0000110010001111";
    costable(16)<="1111111110110001";
    sintable(17)<="0000110101011000";
    costable(17)<="1111111110100110";
    sintable(18)<="0000111000100001";
    costable(18)<="1111111110011100";
    sintable(19)<="0000111011101010";
    costable(19)<="1111111110010000";
    sintable(20)<="0000111110110010";
    costable(20)<="1111111110000100";
    sintable(21)<="0001000001111011";
    costable(21)<="1111111101111000";
    sintable(22)<="0001000101000100";
    costable(22)<="1111111101101010";
    sintable(23)<="0001001000001100";
    costable(23)<="1111111101011100";
    sintable(24)<="0001001011010101";
    costable(24)<="1111111101001110";
    sintable(25)<="0001001110011101";
    costable(25)<="1111111100111111";
    sintable(26)<="0001010001100110";
    costable(26)<="1111111100101111";
    sintable(27)<="0001010100101110";
    costable(27)<="1111111100011111";
    sintable(28)<="0001010111110110";
    costable(28)<="1111111100001110";
    sintable(29)<="0001011010111111";
    costable(29)<="1111111011111100";
    sintable(30)<="0001011110000111";
    costable(30)<="1111111011101010";
    sintable(31)<="0001100001001111";
    costable(31)<="1111111011010111";
    sintable(32)<="0001100100010111";
    costable(32)<="1111111011000100";
    sintable(33)<="0001100111011111";
    costable(33)<="1111111010110000";
    sintable(34)<="0001101010100111";
    costable(34)<="1111111010011011";
    sintable(35)<="0001101101101111";
    costable(35)<="1111111010000110";
    sintable(36)<="0001110000110111";
    costable(36)<="1111111001110000";
    sintable(37)<="0001110011111111";
    costable(37)<="1111111001011010";
    sintable(38)<="0001110111000111";
    costable(38)<="1111111001000011";
    sintable(39)<="0001111010001110";
    costable(39)<="1111111000101011";
    sintable(40)<="0001111101010110";
    costable(40)<="1111111000010011";
    sintable(41)<="0010000000011101";
    costable(41)<="1111110111111010";
    sintable(42)<="0010000011100101";
    costable(42)<="1111110111100000";
    sintable(43)<="0010000110101100";
    costable(43)<="1111110111000110";
    sintable(44)<="0010001001110011";
    costable(44)<="1111110110101011";
    sintable(45)<="0010001100111011";
    costable(45)<="1111110110010000";
    sintable(46)<="0010010000000010";
    costable(46)<="1111110101110100";
    sintable(47)<="0010010011001001";
    costable(47)<="1111110101010111";
    sintable(48)<="0010010110010000";
    costable(48)<="1111110100111010";
    sintable(49)<="0010011001010110";
    costable(49)<="1111110100011100";
    sintable(50)<="0010011100011101";
    costable(50)<="1111110011111110";
    sintable(51)<="0010011111100100";
    costable(51)<="1111110011011111";
    sintable(52)<="0010100010101010";
    costable(52)<="1111110010111111";
    sintable(53)<="0010100101110001";
    costable(53)<="1111110010011111";
    sintable(54)<="0010101000110111";
    costable(54)<="1111110001111110";
    sintable(55)<="0010101011111110";
    costable(55)<="1111110001011101";
    sintable(56)<="0010101111000100";
    costable(56)<="1111110000111011";
    sintable(57)<="0010110010001010";
    costable(57)<="1111110000011000";
    sintable(58)<="0010110101010000";
    costable(58)<="1111101111110101";
    sintable(59)<="0010111000010101";
    costable(59)<="1111101111010001";
    sintable(60)<="0010111011011011";
    costable(60)<="1111101110101100";
    sintable(61)<="0010111110100001";
    costable(61)<="1111101110000111";
    sintable(62)<="0011000001100110";
    costable(62)<="1111101101100001";
    sintable(63)<="0011000100101100";
    costable(63)<="1111101100111011";
    sintable(64)<="0011000111110001";
    costable(64)<="1111101100010100";
    sintable(65)<="0011001010110110";
    costable(65)<="1111101011101101";
    sintable(66)<="0011001101111011";
    costable(66)<="1111101011000101";
    sintable(67)<="0011010001000000";
    costable(67)<="1111101010011100";
    sintable(68)<="0011010100000101";
    costable(68)<="1111101001110011";
    sintable(69)<="0011010111001001";
    costable(69)<="1111101001001001";
    sintable(70)<="0011011010001110";
    costable(70)<="1111101000011110";
    sintable(71)<="0011011101010010";
    costable(71)<="1111100111110011";
    sintable(72)<="0011100000010111";
    costable(72)<="1111100111000111";
    sintable(73)<="0011100011011011";
    costable(73)<="1111100110011011";
    sintable(74)<="0011100110011111";
    costable(74)<="1111100101101110";
    sintable(75)<="0011101001100010";
    costable(75)<="1111100101000000";
    sintable(76)<="0011101100100110";
    costable(76)<="1111100100010010";
    sintable(77)<="0011101111101010";
    costable(77)<="1111100011100011";
    sintable(78)<="0011110010101101";
    costable(78)<="1111100010110100";
    sintable(79)<="0011110101110000";
    costable(79)<="1111100010000100";
    sintable(80)<="0011111000110011";
    costable(80)<="1111100001010011";
    sintable(81)<="0011111011110110";
    costable(81)<="1111100000100010";
    sintable(82)<="0011111110111001";
    costable(82)<="1111011111110001";
    sintable(83)<="0100000001111100";
    costable(83)<="1111011110111110";
    sintable(84)<="0100000100111110";
    costable(84)<="1111011110001011";
    sintable(85)<="0100001000000001";
    costable(85)<="1111011101011000";
    sintable(86)<="0100001011000011";
    costable(86)<="1111011100100100";
    sintable(87)<="0100001110000101";
    costable(87)<="1111011011101111";
    sintable(88)<="0100010001000111";
    costable(88)<="1111011010111010";
    sintable(89)<="0100010100001000";
    costable(89)<="1111011010000100";
    sintable(90)<="0100010111001010";
    costable(90)<="1111011001001101";
    sintable(91)<="0100011010001011";
    costable(91)<="1111011000010110";
    sintable(92)<="0100011101001101";
    costable(92)<="1111010111011110";
    sintable(93)<="0100100000001110";
    costable(93)<="1111010110100110";
    sintable(94)<="0100100011001110";
    costable(94)<="1111010101101101";
    sintable(95)<="0100100110001111";
    costable(95)<="1111010100110100";
    sintable(96)<="0100101001010000";
    costable(96)<="1111010011111010";
    sintable(97)<="0100101100010000";
    costable(97)<="1111010010111111";
    sintable(98)<="0100101111010000";
    costable(98)<="1111010010000100";
    sintable(99)<="0100110010010000";
    costable(99)<="1111010001001000";
    sintable(100)<="0100110101010000";
    costable(100)<="1111010000001011";
    sintable(101)<="0100111000001111";
    costable(101)<="1111001111001110";
    sintable(102)<="0100111011001111";
    costable(102)<="1111001110010001";
    sintable(103)<="0100111110001110";
    costable(103)<="1111001101010011";
    sintable(104)<="0101000001001101";
    costable(104)<="1111001100010100";
    sintable(105)<="0101000100001100";
    costable(105)<="1111001011010100";
    sintable(106)<="0101000111001010";
    costable(106)<="1111001010010100";
    sintable(107)<="0101001010001001";
    costable(107)<="1111001001010100";
    sintable(108)<="0101001101000111";
    costable(108)<="1111001000010011";
    sintable(109)<="0101010000000101";
    costable(109)<="1111000111010001";
    sintable(110)<="0101010011000011";
    costable(110)<="1111000110001111";
    sintable(111)<="0101010110000001";
    costable(111)<="1111000101001100";
    sintable(112)<="0101011000111110";
    costable(112)<="1111000100001001";
    sintable(113)<="0101011011111011";
    costable(113)<="1111000011000101";
    sintable(114)<="0101011110111000";
    costable(114)<="1111000010000000";
    sintable(115)<="0101100001110101";
    costable(115)<="1111000000111011";
    sintable(116)<="0101100100110001";
    costable(116)<="1110111111110101";
    sintable(117)<="0101100111101110";
    costable(117)<="1110111110101111";
    sintable(118)<="0101101010101010";
    costable(118)<="1110111101101000";
    sintable(119)<="0101101101100110";
    costable(119)<="1110111100100000";
    sintable(120)<="0101110000100010";
    costable(120)<="1110111011011000";
    sintable(121)<="0101110011011101";
    costable(121)<="1110111010001111";
    sintable(122)<="0101110110011000";
    costable(122)<="1110111001000110";
    sintable(123)<="0101111001010011";
    costable(123)<="1110110111111100";
    sintable(124)<="0101111100001110";
    costable(124)<="1110110110110010";
    sintable(125)<="0101111111001001";
    costable(125)<="1110110101100111";
    sintable(126)<="0110000010000011";
    costable(126)<="1110110100011100";
    sintable(127)<="0110000100111101";
    costable(127)<="1110110011010000";
    sintable(128)<="0110000111110111";
    costable(128)<="1110110010000011";
    sintable(129)<="0110001010110001";
    costable(129)<="1110110000110110";
    sintable(130)<="0110001101101010";
    costable(130)<="1110101111101000";
    sintable(131)<="0110010000100011";
    costable(131)<="1110101110011001";
    sintable(132)<="0110010011011100";
    costable(132)<="1110101101001011";
    sintable(133)<="0110010110010101";
    costable(133)<="1110101011111011";
    sintable(134)<="0110011001001101";
    costable(134)<="1110101010101011";
    sintable(135)<="0110011100000101";
    costable(135)<="1110101001011010";
    sintable(136)<="0110011110111101";
    costable(136)<="1110101000001001";
    sintable(137)<="0110100001110101";
    costable(137)<="1110100110110111";
    sintable(138)<="0110100100101101";
    costable(138)<="1110100101100101";
    sintable(139)<="0110100111100100";
    costable(139)<="1110100100010010";
    sintable(140)<="0110101010011011";
    costable(140)<="1110100010111111";
    sintable(141)<="0110101101010001";
    costable(141)<="1110100001101011";
    sintable(142)<="0110110000001000";
    costable(142)<="1110100000010110";
    sintable(143)<="0110110010111110";
    costable(143)<="1110011111000001";
    sintable(144)<="0110110101110100";
    costable(144)<="1110011101101011";
    sintable(145)<="0110111000101001";
    costable(145)<="1110011100010101";
    sintable(146)<="0110111011011111";
    costable(146)<="1110011010111110";
    sintable(147)<="0110111110010100";
    costable(147)<="1110011001100111";
    sintable(148)<="0111000001001001";
    costable(148)<="1110011000001111";
    sintable(149)<="0111000011111101";
    costable(149)<="1110010110110111";
    sintable(150)<="0111000110110001";
    costable(150)<="1110010101011110";
    sintable(151)<="0111001001100101";
    costable(151)<="1110010100000100";
    sintable(152)<="0111001100011001";
    costable(152)<="1110010010101010";
    sintable(153)<="0111001111001101";
    costable(153)<="1110010001001111";
    sintable(154)<="0111010010000000";
    costable(154)<="1110001111110100";
    sintable(155)<="0111010100110011";
    costable(155)<="1110001110011000";
    sintable(156)<="0111010111100101";
    costable(156)<="1110001100111100";
    sintable(157)<="0111011010011000";
    costable(157)<="1110001011011111";
    sintable(158)<="0111011101001010";
    costable(158)<="1110001010000010";
    sintable(159)<="0111011111111011";
    costable(159)<="1110001000100100";
    sintable(160)<="0111100010101101";
    costable(160)<="1110000111000101";
    sintable(161)<="0111100101011110";
    costable(161)<="1110000101100110";
    sintable(162)<="0111101000001111";
    costable(162)<="1110000100000110";
    sintable(163)<="0111101011000000";
    costable(163)<="1110000010100110";
    sintable(164)<="0111101101110000";
    costable(164)<="1110000001000110";
    sintable(165)<="0111110000100000";
    costable(165)<="1101111111100100";
    sintable(166)<="0111110011010000";
    costable(166)<="1101111110000011";
    sintable(167)<="0111110101111111";
    costable(167)<="1101111100100000";
    sintable(168)<="0111111000101110";
    costable(168)<="1101111010111110";
    sintable(169)<="0111111011011101";
    costable(169)<="1101111001011010";
    sintable(170)<="0111111110001011";
    costable(170)<="1101110111110110";
    sintable(171)<="1000000000111010";
    costable(171)<="1101110110010010";
    sintable(172)<="1000000011100111";
    costable(172)<="1101110100101101";
    sintable(173)<="1000000110010101";
    costable(173)<="1101110011000111";
    sintable(174)<="1000001001000010";
    costable(174)<="1101110001100001";
    sintable(175)<="1000001011101111";
    costable(175)<="1101101111111011";
    sintable(176)<="1000001110011100";
    costable(176)<="1101101110010100";
    sintable(177)<="1000010001001000";
    costable(177)<="1101101100101100";
    sintable(178)<="1000010011110100";
    costable(178)<="1101101011000100";
    sintable(179)<="1000010110100000";
    costable(179)<="1101101001011011";
    sintable(180)<="1000011001001011";
    costable(180)<="1101100111110010";
    sintable(181)<="1000011011110110";
    costable(181)<="1101100110001000";
    sintable(182)<="1000011110100001";
    costable(182)<="1101100100011110";
    sintable(183)<="1000100001001011";
    costable(183)<="1101100010110011";
    sintable(184)<="1000100011110101";
    costable(184)<="1101100001001000";
    sintable(185)<="1000100110011111";
    costable(185)<="1101011111011100";
    sintable(186)<="1000101001001000";
    costable(186)<="1101011101110000";
    sintable(187)<="1000101011110001";
    costable(187)<="1101011100000011";
    sintable(188)<="1000101110011010";
    costable(188)<="1101011010010101";
    sintable(189)<="1000110001000010";
    costable(189)<="1101011000100111";
    sintable(190)<="1000110011101010";
    costable(190)<="1101010110111001";
    sintable(191)<="1000110110010010";
    costable(191)<="1101010101001010";
    sintable(192)<="1000111000111001";
    costable(192)<="1101010011011011";
    sintable(193)<="1000111011100000";
    costable(193)<="1101010001101011";
    sintable(194)<="1000111110000111";
    costable(194)<="1101001111111010";
    sintable(195)<="1001000000101101";
    costable(195)<="1101001110001001";
    sintable(196)<="1001000011010011";
    costable(196)<="1101001100011000";
    sintable(197)<="1001000101111001";
    costable(197)<="1101001010100110";
    sintable(198)<="1001001000011110";
    costable(198)<="1101001000110011";
    sintable(199)<="1001001011000011";
    costable(199)<="1101000111000000";
    sintable(200)<="1001001101101000";
    costable(200)<="1101000101001101";
    sintable(201)<="1001010000001100";
    costable(201)<="1101000011011001";
    sintable(202)<="1001010010110000";
    costable(202)<="1101000001100100";
    sintable(203)<="1001010101010011";
    costable(203)<="1100111111101111";
    sintable(204)<="1001010111110110";
    costable(204)<="1100111101111010";
    sintable(205)<="1001011010011001";
    costable(205)<="1100111100000100";
    sintable(206)<="1001011100111100";
    costable(206)<="1100111010001101";
    sintable(207)<="1001011111011110";
    costable(207)<="1100111000010110";
    sintable(208)<="1001100001111111";
    costable(208)<="1100110110011111";
    sintable(209)<="1001100100100001";
    costable(209)<="1100110100100110";
    sintable(210)<="1001100111000010";
    costable(210)<="1100110010101110";
    sintable(211)<="1001101001100010";
    costable(211)<="1100110000110101";
    sintable(212)<="1001101100000010";
    costable(212)<="1100101110111011";
    sintable(213)<="1001101110100010";
    costable(213)<="1100101101000001";
    sintable(214)<="1001110001000010";
    costable(214)<="1100101011000111";
    sintable(215)<="1001110011100001";
    costable(215)<="1100101001001100";
    sintable(216)<="1001110101111111";
    costable(216)<="1100100111010001";
    sintable(217)<="1001111000011110";
    costable(217)<="1100100101010101";
    sintable(218)<="1001111010111100";
    costable(218)<="1100100011011000";
    sintable(219)<="1001111101011001";
    costable(219)<="1100100001011011";
    sintable(220)<="1001111111110110";
    costable(220)<="1100011111011110";
    sintable(221)<="1010000010010011";
    costable(221)<="1100011101100000";
    sintable(222)<="1010000100101111";
    costable(222)<="1100011011100010";
    sintable(223)<="1010000111001011";
    costable(223)<="1100011001100011";
    sintable(224)<="1010001001100111";
    costable(224)<="1100010111100100";
    sintable(225)<="1010001100000010";
    costable(225)<="1100010101100100";
    sintable(226)<="1010001110011101";
    costable(226)<="1100010011100011";
    sintable(227)<="1010010000111000";
    costable(227)<="1100010001100011";
    sintable(228)<="1010010011010010";
    costable(228)<="1100001111100010";
    sintable(229)<="1010010101101011";
    costable(229)<="1100001101100000";
    sintable(230)<="1010011000000101";
    costable(230)<="1100001011011110";
    sintable(231)<="1010011010011101";
    costable(231)<="1100001001011011";
    sintable(232)<="1010011100110110";
    costable(232)<="1100000111011000";
    sintable(233)<="1010011111001110";
    costable(233)<="1100000101010100";
    sintable(234)<="1010100001100110";
    costable(234)<="1100000011010000";
    sintable(235)<="1010100011111101";
    costable(235)<="1100000001001100";
    sintable(236)<="1010100110010100";
    costable(236)<="1011111111000111";
    sintable(237)<="1010101000101010";
    costable(237)<="1011111101000001";
    sintable(238)<="1010101011000000";
    costable(238)<="1011111010111100";
    sintable(239)<="1010101101010110";
    costable(239)<="1011111000110101";
    sintable(240)<="1010101111101011";
    costable(240)<="1011110110101110";
    sintable(241)<="1010110010000000";
    costable(241)<="1011110100100111";
    sintable(242)<="1010110100010100";
    costable(242)<="1011110010100000";
    sintable(243)<="1010110110101000";
    costable(243)<="1011110000010111";
    sintable(244)<="1010111000111011";
    costable(244)<="1011101110001111";
    sintable(245)<="1010111011001110";
    costable(245)<="1011101100000110";
    sintable(246)<="1010111101100001";
    costable(246)<="1011101001111100";
    sintable(247)<="1010111111110011";
    costable(247)<="1011100111110010";
    sintable(248)<="1011000010000101";
    costable(248)<="1011100101101000";
    sintable(249)<="1011000100010111";
    costable(249)<="1011100011011101";
    sintable(250)<="1011000110101000";
    costable(250)<="1011100001010010";
    sintable(251)<="1011001000111000";
    costable(251)<="1011011111000110";
    sintable(252)<="1011001011001000";
    costable(252)<="1011011100111010";
    sintable(253)<="1011001101011000";
    costable(253)<="1011011010101101";
    sintable(254)<="1011001111100111";
    costable(254)<="1011011000100000";
    sintable(255)<="1011010001110110";
    costable(255)<="1011010110010010";
    sintable(256)<="1011010100000100";
    costable(256)<="1011010100000100";
    sintable(257)<="1011010110010010";
    costable(257)<="1011010001110110";
    sintable(258)<="1011011000100000";
    costable(258)<="1011001111100111";
    sintable(259)<="1011011010101101";
    costable(259)<="1011001101011000";
    sintable(260)<="1011011100111010";
    costable(260)<="1011001011001000";
    sintable(261)<="1011011111000110";
    costable(261)<="1011001000111000";
    sintable(262)<="1011100001010010";
    costable(262)<="1011000110101000";
    sintable(263)<="1011100011011101";
    costable(263)<="1011000100010111";
    sintable(264)<="1011100101101000";
    costable(264)<="1011000010000101";
    sintable(265)<="1011100111110010";
    costable(265)<="1010111111110011";
    sintable(266)<="1011101001111100";
    costable(266)<="1010111101100001";
    sintable(267)<="1011101100000110";
    costable(267)<="1010111011001110";
    sintable(268)<="1011101110001111";
    costable(268)<="1010111000111011";
    sintable(269)<="1011110000010111";
    costable(269)<="1010110110101000";
    sintable(270)<="1011110010100000";
    costable(270)<="1010110100010100";
    sintable(271)<="1011110100100111";
    costable(271)<="1010110010000000";
    sintable(272)<="1011110110101110";
    costable(272)<="1010101111101011";
    sintable(273)<="1011111000110101";
    costable(273)<="1010101101010110";
    sintable(274)<="1011111010111100";
    costable(274)<="1010101011000000";
    sintable(275)<="1011111101000001";
    costable(275)<="1010101000101010";
    sintable(276)<="1011111111000111";
    costable(276)<="1010100110010100";
    sintable(277)<="1100000001001100";
    costable(277)<="1010100011111101";
    sintable(278)<="1100000011010000";
    costable(278)<="1010100001100110";
    sintable(279)<="1100000101010100";
    costable(279)<="1010011111001110";
    sintable(280)<="1100000111011000";
    costable(280)<="1010011100110110";
    sintable(281)<="1100001001011011";
    costable(281)<="1010011010011101";
    sintable(282)<="1100001011011110";
    costable(282)<="1010011000000101";
    sintable(283)<="1100001101100000";
    costable(283)<="1010010101101011";
    sintable(284)<="1100001111100010";
    costable(284)<="1010010011010010";
    sintable(285)<="1100010001100011";
    costable(285)<="1010010000111000";
    sintable(286)<="1100010011100011";
    costable(286)<="1010001110011101";
    sintable(287)<="1100010101100100";
    costable(287)<="1010001100000010";
    sintable(288)<="1100010111100100";
    costable(288)<="1010001001100111";
    sintable(289)<="1100011001100011";
    costable(289)<="1010000111001011";
    sintable(290)<="1100011011100010";
    costable(290)<="1010000100101111";
    sintable(291)<="1100011101100000";
    costable(291)<="1010000010010011";
    sintable(292)<="1100011111011110";
    costable(292)<="1001111111110110";
    sintable(293)<="1100100001011011";
    costable(293)<="1001111101011001";
    sintable(294)<="1100100011011000";
    costable(294)<="1001111010111100";
    sintable(295)<="1100100101010101";
    costable(295)<="1001111000011110";
    sintable(296)<="1100100111010001";
    costable(296)<="1001110101111111";
    sintable(297)<="1100101001001100";
    costable(297)<="1001110011100001";
    sintable(298)<="1100101011000111";
    costable(298)<="1001110001000010";
    sintable(299)<="1100101101000001";
    costable(299)<="1001101110100010";
    sintable(300)<="1100101110111011";
    costable(300)<="1001101100000010";
    sintable(301)<="1100110000110101";
    costable(301)<="1001101001100010";
    sintable(302)<="1100110010101110";
    costable(302)<="1001100111000010";
    sintable(303)<="1100110100100110";
    costable(303)<="1001100100100001";
    sintable(304)<="1100110110011111";
    costable(304)<="1001100001111111";
    sintable(305)<="1100111000010110";
    costable(305)<="1001011111011110";
    sintable(306)<="1100111010001101";
    costable(306)<="1001011100111100";
    sintable(307)<="1100111100000100";
    costable(307)<="1001011010011001";
    sintable(308)<="1100111101111010";
    costable(308)<="1001010111110110";
    sintable(309)<="1100111111101111";
    costable(309)<="1001010101010011";
    sintable(310)<="1101000001100100";
    costable(310)<="1001010010110000";
    sintable(311)<="1101000011011001";
    costable(311)<="1001010000001100";
    sintable(312)<="1101000101001101";
    costable(312)<="1001001101101000";
    sintable(313)<="1101000111000000";
    costable(313)<="1001001011000011";
    sintable(314)<="1101001000110011";
    costable(314)<="1001001000011110";
    sintable(315)<="1101001010100110";
    costable(315)<="1001000101111001";
    sintable(316)<="1101001100011000";
    costable(316)<="1001000011010011";
    sintable(317)<="1101001110001001";
    costable(317)<="1001000000101101";
    sintable(318)<="1101001111111010";
    costable(318)<="1000111110000111";
    sintable(319)<="1101010001101011";
    costable(319)<="1000111011100000";
    sintable(320)<="1101010011011011";
    costable(320)<="1000111000111001";
    sintable(321)<="1101010101001010";
    costable(321)<="1000110110010010";
    sintable(322)<="1101010110111001";
    costable(322)<="1000110011101010";
    sintable(323)<="1101011000100111";
    costable(323)<="1000110001000010";
    sintable(324)<="1101011010010101";
    costable(324)<="1000101110011010";
    sintable(325)<="1101011100000011";
    costable(325)<="1000101011110001";
    sintable(326)<="1101011101110000";
    costable(326)<="1000101001001000";
    sintable(327)<="1101011111011100";
    costable(327)<="1000100110011111";
    sintable(328)<="1101100001001000";
    costable(328)<="1000100011110101";
    sintable(329)<="1101100010110011";
    costable(329)<="1000100001001011";
    sintable(330)<="1101100100011110";
    costable(330)<="1000011110100001";
    sintable(331)<="1101100110001000";
    costable(331)<="1000011011110110";
    sintable(332)<="1101100111110010";
    costable(332)<="1000011001001011";
    sintable(333)<="1101101001011011";
    costable(333)<="1000010110100000";
    sintable(334)<="1101101011000100";
    costable(334)<="1000010011110100";
    sintable(335)<="1101101100101100";
    costable(335)<="1000010001001000";
    sintable(336)<="1101101110010100";
    costable(336)<="1000001110011100";
    sintable(337)<="1101101111111011";
    costable(337)<="1000001011101111";
    sintable(338)<="1101110001100001";
    costable(338)<="1000001001000010";
    sintable(339)<="1101110011000111";
    costable(339)<="1000000110010101";
    sintable(340)<="1101110100101101";
    costable(340)<="1000000011100111";
    sintable(341)<="1101110110010010";
    costable(341)<="1000000000111010";
    sintable(342)<="1101110111110110";
    costable(342)<="0111111110001011";
    sintable(343)<="1101111001011010";
    costable(343)<="0111111011011101";
    sintable(344)<="1101111010111110";
    costable(344)<="0111111000101110";
    sintable(345)<="1101111100100000";
    costable(345)<="0111110101111111";
    sintable(346)<="1101111110000011";
    costable(346)<="0111110011010000";
    sintable(347)<="1101111111100100";
    costable(347)<="0111110000100000";
    sintable(348)<="1110000001000110";
    costable(348)<="0111101101110000";
    sintable(349)<="1110000010100110";
    costable(349)<="0111101011000000";
    sintable(350)<="1110000100000110";
    costable(350)<="0111101000001111";
    sintable(351)<="1110000101100110";
    costable(351)<="0111100101011110";
    sintable(352)<="1110000111000101";
    costable(352)<="0111100010101101";
    sintable(353)<="1110001000100100";
    costable(353)<="0111011111111011";
    sintable(354)<="1110001010000010";
    costable(354)<="0111011101001010";
    sintable(355)<="1110001011011111";
    costable(355)<="0111011010011000";
    sintable(356)<="1110001100111100";
    costable(356)<="0111010111100101";
    sintable(357)<="1110001110011000";
    costable(357)<="0111010100110011";
    sintable(358)<="1110001111110100";
    costable(358)<="0111010010000000";
    sintable(359)<="1110010001001111";
    costable(359)<="0111001111001101";
    sintable(360)<="1110010010101010";
    costable(360)<="0111001100011001";
    sintable(361)<="1110010100000100";
    costable(361)<="0111001001100101";
    sintable(362)<="1110010101011110";
    costable(362)<="0111000110110001";
    sintable(363)<="1110010110110111";
    costable(363)<="0111000011111101";
    sintable(364)<="1110011000001111";
    costable(364)<="0111000001001001";
    sintable(365)<="1110011001100111";
    costable(365)<="0110111110010100";
    sintable(366)<="1110011010111110";
    costable(366)<="0110111011011111";
    sintable(367)<="1110011100010101";
    costable(367)<="0110111000101001";
    sintable(368)<="1110011101101011";
    costable(368)<="0110110101110100";
    sintable(369)<="1110011111000001";
    costable(369)<="0110110010111110";
    sintable(370)<="1110100000010110";
    costable(370)<="0110110000001000";
    sintable(371)<="1110100001101011";
    costable(371)<="0110101101010001";
    sintable(372)<="1110100010111111";
    costable(372)<="0110101010011011";
    sintable(373)<="1110100100010010";
    costable(373)<="0110100111100100";
    sintable(374)<="1110100101100101";
    costable(374)<="0110100100101101";
    sintable(375)<="1110100110110111";
    costable(375)<="0110100001110101";
    sintable(376)<="1110101000001001";
    costable(376)<="0110011110111101";
    sintable(377)<="1110101001011010";
    costable(377)<="0110011100000101";
    sintable(378)<="1110101010101011";
    costable(378)<="0110011001001101";
    sintable(379)<="1110101011111011";
    costable(379)<="0110010110010101";
    sintable(380)<="1110101101001011";
    costable(380)<="0110010011011100";
    sintable(381)<="1110101110011001";
    costable(381)<="0110010000100011";
    sintable(382)<="1110101111101000";
    costable(382)<="0110001101101010";
    sintable(383)<="1110110000110110";
    costable(383)<="0110001010110001";
    sintable(384)<="1110110010000011";
    costable(384)<="0110000111110111";
    sintable(385)<="1110110011010000";
    costable(385)<="0110000100111101";
    sintable(386)<="1110110100011100";
    costable(386)<="0110000010000011";
    sintable(387)<="1110110101100111";
    costable(387)<="0101111111001001";
    sintable(388)<="1110110110110010";
    costable(388)<="0101111100001110";
    sintable(389)<="1110110111111100";
    costable(389)<="0101111001010011";
    sintable(390)<="1110111001000110";
    costable(390)<="0101110110011000";
    sintable(391)<="1110111010001111";
    costable(391)<="0101110011011101";
    sintable(392)<="1110111011011000";
    costable(392)<="0101110000100010";
    sintable(393)<="1110111100100000";
    costable(393)<="0101101101100110";
    sintable(394)<="1110111101101000";
    costable(394)<="0101101010101010";
    sintable(395)<="1110111110101111";
    costable(395)<="0101100111101110";
    sintable(396)<="1110111111110101";
    costable(396)<="0101100100110001";
    sintable(397)<="1111000000111011";
    costable(397)<="0101100001110101";
    sintable(398)<="1111000010000000";
    costable(398)<="0101011110111000";
    sintable(399)<="1111000011000101";
    costable(399)<="0101011011111011";
    sintable(400)<="1111000100001001";
    costable(400)<="0101011000111110";
    sintable(401)<="1111000101001100";
    costable(401)<="0101010110000001";
    sintable(402)<="1111000110001111";
    costable(402)<="0101010011000011";
    sintable(403)<="1111000111010001";
    costable(403)<="0101010000000101";
    sintable(404)<="1111001000010011";
    costable(404)<="0101001101000111";
    sintable(405)<="1111001001010100";
    costable(405)<="0101001010001001";
    sintable(406)<="1111001010010100";
    costable(406)<="0101000111001010";
    sintable(407)<="1111001011010100";
    costable(407)<="0101000100001100";
    sintable(408)<="1111001100010100";
    costable(408)<="0101000001001101";
    sintable(409)<="1111001101010011";
    costable(409)<="0100111110001110";
    sintable(410)<="1111001110010001";
    costable(410)<="0100111011001111";
    sintable(411)<="1111001111001110";
    costable(411)<="0100111000001111";
    sintable(412)<="1111010000001011";
    costable(412)<="0100110101010000";
    sintable(413)<="1111010001001000";
    costable(413)<="0100110010010000";
    sintable(414)<="1111010010000100";
    costable(414)<="0100101111010000";
    sintable(415)<="1111010010111111";
    costable(415)<="0100101100010000";
    sintable(416)<="1111010011111010";
    costable(416)<="0100101001010000";
    sintable(417)<="1111010100110100";
    costable(417)<="0100100110001111";
    sintable(418)<="1111010101101101";
    costable(418)<="0100100011001110";
    sintable(419)<="1111010110100110";
    costable(419)<="0100100000001110";
    sintable(420)<="1111010111011110";
    costable(420)<="0100011101001101";
    sintable(421)<="1111011000010110";
    costable(421)<="0100011010001011";
    sintable(422)<="1111011001001101";
    costable(422)<="0100010111001010";
    sintable(423)<="1111011010000100";
    costable(423)<="0100010100001000";
    sintable(424)<="1111011010111010";
    costable(424)<="0100010001000111";
    sintable(425)<="1111011011101111";
    costable(425)<="0100001110000101";
    sintable(426)<="1111011100100100";
    costable(426)<="0100001011000011";
    sintable(427)<="1111011101011000";
    costable(427)<="0100001000000001";
    sintable(428)<="1111011110001011";
    costable(428)<="0100000100111110";
    sintable(429)<="1111011110111110";
    costable(429)<="0100000001111100";
    sintable(430)<="1111011111110001";
    costable(430)<="0011111110111001";
    sintable(431)<="1111100000100010";
    costable(431)<="0011111011110110";
    sintable(432)<="1111100001010011";
    costable(432)<="0011111000110011";
    sintable(433)<="1111100010000100";
    costable(433)<="0011110101110000";
    sintable(434)<="1111100010110100";
    costable(434)<="0011110010101101";
    sintable(435)<="1111100011100011";
    costable(435)<="0011101111101010";
    sintable(436)<="1111100100010010";
    costable(436)<="0011101100100110";
    sintable(437)<="1111100101000000";
    costable(437)<="0011101001100010";
    sintable(438)<="1111100101101110";
    costable(438)<="0011100110011111";
    sintable(439)<="1111100110011011";
    costable(439)<="0011100011011011";
    sintable(440)<="1111100111000111";
    costable(440)<="0011100000010111";
    sintable(441)<="1111100111110011";
    costable(441)<="0011011101010010";
    sintable(442)<="1111101000011110";
    costable(442)<="0011011010001110";
    sintable(443)<="1111101001001001";
    costable(443)<="0011010111001001";
    sintable(444)<="1111101001110011";
    costable(444)<="0011010100000101";
    sintable(445)<="1111101010011100";
    costable(445)<="0011010001000000";
    sintable(446)<="1111101011000101";
    costable(446)<="0011001101111011";
    sintable(447)<="1111101011101101";
    costable(447)<="0011001010110110";
    sintable(448)<="1111101100010100";
    costable(448)<="0011000111110001";
    sintable(449)<="1111101100111011";
    costable(449)<="0011000100101100";
    sintable(450)<="1111101101100001";
    costable(450)<="0011000001100110";
    sintable(451)<="1111101110000111";
    costable(451)<="0010111110100001";
    sintable(452)<="1111101110101100";
    costable(452)<="0010111011011011";
    sintable(453)<="1111101111010001";
    costable(453)<="0010111000010101";
    sintable(454)<="1111101111110101";
    costable(454)<="0010110101010000";
    sintable(455)<="1111110000011000";
    costable(455)<="0010110010001010";
    sintable(456)<="1111110000111011";
    costable(456)<="0010101111000100";
    sintable(457)<="1111110001011101";
    costable(457)<="0010101011111110";
    sintable(458)<="1111110001111110";
    costable(458)<="0010101000110111";
    sintable(459)<="1111110010011111";
    costable(459)<="0010100101110001";
    sintable(460)<="1111110010111111";
    costable(460)<="0010100010101010";
    sintable(461)<="1111110011011111";
    costable(461)<="0010011111100100";
    sintable(462)<="1111110011111110";
    costable(462)<="0010011100011101";
    sintable(463)<="1111110100011100";
    costable(463)<="0010011001010110";
    sintable(464)<="1111110100111010";
    costable(464)<="0010010110010000";
    sintable(465)<="1111110101010111";
    costable(465)<="0010010011001001";
    sintable(466)<="1111110101110100";
    costable(466)<="0010010000000010";
    sintable(467)<="1111110110010000";
    costable(467)<="0010001100111011";
    sintable(468)<="1111110110101011";
    costable(468)<="0010001001110011";
    sintable(469)<="1111110111000110";
    costable(469)<="0010000110101100";
    sintable(470)<="1111110111100000";
    costable(470)<="0010000011100101";
    sintable(471)<="1111110111111010";
    costable(471)<="0010000000011101";
    sintable(472)<="1111111000010011";
    costable(472)<="0001111101010110";
    sintable(473)<="1111111000101011";
    costable(473)<="0001111010001110";
    sintable(474)<="1111111001000011";
    costable(474)<="0001110111000111";
    sintable(475)<="1111111001011010";
    costable(475)<="0001110011111111";
    sintable(476)<="1111111001110000";
    costable(476)<="0001110000110111";
    sintable(477)<="1111111010000110";
    costable(477)<="0001101101101111";
    sintable(478)<="1111111010011011";
    costable(478)<="0001101010100111";
    sintable(479)<="1111111010110000";
    costable(479)<="0001100111011111";
    sintable(480)<="1111111011000100";
    costable(480)<="0001100100010111";
    sintable(481)<="1111111011010111";
    costable(481)<="0001100001001111";
    sintable(482)<="1111111011101010";
    costable(482)<="0001011110000111";
    sintable(483)<="1111111011111100";
    costable(483)<="0001011010111111";
    sintable(484)<="1111111100001110";
    costable(484)<="0001010111110110";
    sintable(485)<="1111111100011111";
    costable(485)<="0001010100101110";
    sintable(486)<="1111111100101111";
    costable(486)<="0001010001100110";
    sintable(487)<="1111111100111111";
    costable(487)<="0001001110011101";
    sintable(488)<="1111111101001110";
    costable(488)<="0001001011010101";
    sintable(489)<="1111111101011100";
    costable(489)<="0001001000001100";
    sintable(490)<="1111111101101010";
    costable(490)<="0001000101000100";
    sintable(491)<="1111111101111000";
    costable(491)<="0001000001111011";
    sintable(492)<="1111111110000100";
    costable(492)<="0000111110110010";
    sintable(493)<="1111111110010000";
    costable(493)<="0000111011101010";
    sintable(494)<="1111111110011100";
    costable(494)<="0000111000100001";
    sintable(495)<="1111111110100110";
    costable(495)<="0000110101011000";
    sintable(496)<="1111111110110001";
    costable(496)<="0000110010001111";
    sintable(497)<="1111111110111010";
    costable(497)<="0000101111000110";
    sintable(498)<="1111111111000011";
    costable(498)<="0000101011111110";
    sintable(499)<="1111111111001011";
    costable(499)<="0000101000110101";
    sintable(500)<="1111111111010011";
    costable(500)<="0000100101101100";
    sintable(501)<="1111111111011010";
    costable(501)<="0000100010100011";
    sintable(502)<="1111111111100001";
    costable(502)<="0000011111011010";
    sintable(503)<="1111111111100111";
    costable(503)<="0000011100010001";
    sintable(504)<="1111111111101100";
    costable(504)<="0000011001001000";
    sintable(505)<="1111111111110000";
    costable(505)<="0000010101111111";
    sintable(506)<="1111111111110100";
    costable(506)<="0000010010110110";
    sintable(507)<="1111111111111000";
    costable(507)<="0000001111101101";
    sintable(508)<="1111111111111011";
    costable(508)<="0000001100100100";
    sintable(509)<="1111111111111101";
    costable(509)<="0000001001011011";
    sintable(510)<="1111111111111110";
    costable(510)<="0000000110010010";
    sintable(511)<="1111111111111111";
    costable(511)<="0000000011001001";
    sintable(512)<="1111111111111111";
    costable(512)<="0000000000000000";

    process(clk,fselect)

	   begin
      if clk='1' and clk'event then
		      ccount <= ccount+1;
			 if (ccount = to_integer(unsigned(fselect))) then	
             ccount <= 1;
				 num <= num + 1;
			    if (num = 2048) then
				 num <= 0;
				 end if;			  
			 end if;  

      if (num <= 512) then 		 
			sin_xv <= sintable(num);
			cos_xv <= costable(num);
			sin_data(16) <= '1';
			cos_data(16) <= '1';			
			sin_data(15 downto 0) <= sin_xv(15 downto 0);
			cos_data(15 downto 0) <= cos_xv(15 downto 0);
		else
		if (num > 512) and (num <= 1024) then
					sin_xv <= sintable(1024 - num);
			      cos_xv <= costable(1024 - num);	
				sin_data(16) <= '1';
				cos_data(16) <= '1';
				sin_data(15 downto 0) <= sin_xv(15 downto 0);
				cos_data(15 downto 0) <= cos_xv(15 downto 0);
		end if;
		if (num >1024 ) and (num <= 1536) then
		         sin_xv <= sintable(num - 1024);
			      cos_xv <= costable(num - 1024);
		      sin_data(16) <= '0';
				cos_data(16) <= '0';
				sin_data(15 downto 0) <= not sin_xv(15 downto 0);
				cos_data(15 downto 0) <= not cos_xv(15 downto 0);
		end if;
		if(num > 1536) then
		         sin_xv <= sintable(2048 - num);
			      cos_xv <= costable(2048 - num);
				sin_data(16) <= '0';
				cos_data(16) <= '0';
				sin_data(15 downto 0) <= not sin_xv(15 downto 0);
				cos_data(15 downto 0) <= not cos_xv(15 downto 0);
		end if;	
		end if;
   end if;		
	end process;
end Behaviour;
Now, it should work for complete cycle
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top