// This code creates a sine wave samples LUT.

`timescale 1ns/1ns

module sine_lut (
                 input clock,
                 input reset_n,
                 input rd_enable,
                 input [7:0] table_index,
                 output reg[7:0] table_value
                 ); 

always @(posedge clock or negedge reset_n)
  if(~reset_n)
     begin
       table_value <= 8'h00;
     end
   else
     begin
       if(rd_enable == 1'b1)
         begin
           case (table_index)
            0: table_value <= 128;
            1: table_value <= 131;
            2: table_value <= 134;
            3: table_value <= 137;
            4: table_value <= 140;
            5: table_value <= 143;
            6: table_value <= 146;
            7: table_value <= 149;
            8: table_value <= 153;
            9: table_value <= 156;
            10: table_value <= 159;
            11: table_value <= 162;
            12: table_value <= 165;
            13: table_value <= 168;
            14: table_value <= 171;
            15: table_value <= 174;
            16: table_value <= 177;
            17: table_value <= 180;
            18: table_value <= 182;
            19: table_value <= 185;
            20: table_value <= 188;
            21: table_value <= 191;
            22: table_value <= 194;
            23: table_value <= 196;
            24: table_value <= 199;
            25: table_value <= 201;
            26: table_value <= 204;
            27: table_value <= 206;
            28: table_value <= 209;
            29: table_value <= 211;
            30: table_value <= 214;
            31: table_value <= 216;
            32: table_value <= 218;
            33: table_value <= 220;
            34: table_value <= 223;
            35: table_value <= 225;
            36: table_value <= 227;
            37: table_value <= 229;
            38: table_value <= 231;
            39: table_value <= 232;
            40: table_value <= 234;
            41: table_value <= 236;
            42: table_value <= 238;
            43: table_value <= 239;
            44: table_value <= 241;
            45: table_value <= 242;
            46: table_value <= 243;
            47: table_value <= 245;
            48: table_value <= 246;
            49: table_value <= 247;
            50: table_value <= 248;
            51: table_value <= 249;
            52: table_value <= 250;
            53: table_value <= 251;
            54: table_value <= 252;
            55: table_value <= 253;
            56: table_value <= 253;
            57: table_value <= 254;
            58: table_value <= 254;
            59: table_value <= 255;
            60: table_value <= 255;
            61: table_value <= 255;
            62: table_value <= 255;
            63: table_value <= 255;
            64: table_value <= 255;
            65: table_value <= 255;
            66: table_value <= 255;
            67: table_value <= 255;
            68: table_value <= 255;
            69: table_value <= 254;
            70: table_value <= 254;
            71: table_value <= 253;
            72: table_value <= 253;
            73: table_value <= 252;
            74: table_value <= 251;
            75: table_value <= 251;
            76: table_value <= 250;
            77: table_value <= 249;
            78: table_value <= 248;
            79: table_value <= 247;
            80: table_value <= 245;
            81: table_value <= 244;
            82: table_value <= 243;
            83: table_value <= 241;
            84: table_value <= 240;
            85: table_value <= 238;
            86: table_value <= 237;
            87: table_value <= 235;
            88: table_value <= 233;
            89: table_value <= 232;
            90: table_value <= 230;
            91: table_value <= 228;
            92: table_value <= 226;
            93: table_value <= 224;
            94: table_value <= 222;
            95: table_value <= 219;
            96: table_value <= 217;
            97: table_value <= 215;
            98: table_value <= 213;
            99: table_value <= 210;
            100: table_value <= 208;
            101: table_value <= 205;
            102: table_value <= 203;
            103: table_value <= 200;
            104: table_value <= 198;
            105: table_value <= 195;
            106: table_value <= 192;
            107: table_value <= 190;
            108: table_value <= 187;
            109: table_value <= 184;
            110: table_value <= 181;
            111: table_value <= 178;
            112: table_value <= 175;
            113: table_value <= 172;
            114: table_value <= 169;
            115: table_value <= 166;
            116: table_value <= 163;
            117: table_value <= 160;
            118: table_value <= 157;
            119: table_value <= 154;
            120: table_value <= 151;
            121: table_value <= 148;
            122: table_value <= 145;
            123: table_value <= 142;
            124: table_value <= 139;
            125: table_value <= 136;
            126: table_value <= 132;
            127: table_value <= 129;
            128: table_value <= 126;
            129: table_value <= 123;
            130: table_value <= 120;
            131: table_value <= 117;
            132: table_value <= 114;
            133: table_value <= 110;
            134: table_value <= 107;
            135: table_value <= 104;
            136: table_value <= 101;
            137: table_value <= 98;
            138: table_value <= 95;
            139: table_value <= 92;
            140: table_value <= 89;
            141: table_value <= 86;
            142: table_value <= 83;
            143: table_value <= 80;
            144: table_value <= 77;
            145: table_value <= 74;
            146: table_value <= 71;
            147: table_value <= 69;
            148: table_value <= 66;
            149: table_value <= 63;
            150: table_value <= 60;
            151: table_value <= 58;
            152: table_value <= 55;
            153: table_value <= 52;
            154: table_value <= 50;
            155: table_value <= 47;
            156: table_value <= 45;
            157: table_value <= 43;
            158: table_value <= 40;
            159: table_value <= 38;
            160: table_value <= 36;
            161: table_value <= 34;
            162: table_value <= 32;
            163: table_value <= 29;
            164: table_value <= 27;
            165: table_value <= 26;
            166: table_value <= 24;
            167: table_value <= 22;
            168: table_value <= 20;
            169: table_value <= 18;
            170: table_value <= 17;
            171: table_value <= 15;
            172: table_value <= 14;
            173: table_value <= 12;
            174: table_value <= 11;
            175: table_value <= 10;
            176: table_value <= 9;
            177: table_value <= 7;
            178: table_value <= 6;
            179: table_value <= 5;
            180: table_value <= 4;
            181: table_value <= 4;
            182: table_value <= 3;
            183: table_value <= 2;
            184: table_value <= 2;
            185: table_value <= 1;
            186: table_value <= 1;
            187: table_value <= 0;
            188: table_value <= 0;
            189: table_value <= 0;
            190: table_value <= 0;
            191: table_value <= 0;
            192: table_value <= 0;
            193: table_value <= 0;
            194: table_value <= 0;
            195: table_value <= 0;
            196: table_value <= 0;
            197: table_value <= 1;
            198: table_value <= 1;
            199: table_value <= 2;
            200: table_value <= 2;
            201: table_value <= 3;
            202: table_value <= 4;
            203: table_value <= 5;
            204: table_value <= 6;
            205: table_value <= 7;
            206: table_value <= 8;
            207: table_value <= 9;
            208: table_value <= 10;
            209: table_value <= 11;
            210: table_value <= 13;
            211: table_value <= 14;
            212: table_value <= 16;
            213: table_value <= 17;
            214: table_value <= 19;
            215: table_value <= 21;
            216: table_value <= 22;
            217: table_value <= 24;
            218: table_value <= 26;
            219: table_value <= 28;
            220: table_value <= 30;
            221: table_value <= 32;
            222: table_value <= 34;
            223: table_value <= 36;
            224: table_value <= 39;
            225: table_value <= 41;
            226: table_value <= 43;
            227: table_value <= 46;
            228: table_value <= 48;
            229: table_value <= 51;
            230: table_value <= 53;
            231: table_value <= 56;
            232: table_value <= 58;
            233: table_value <= 61;
            234: table_value <= 64;
            235: table_value <= 67;
            236: table_value <= 69;
            237: table_value <= 72;
            238: table_value <= 75;
            239: table_value <= 78;
            240: table_value <= 81;
            241: table_value <= 84;
            242: table_value <= 87;
            243: table_value <= 90;
            244: table_value <= 93;
            245: table_value <= 96;
            246: table_value <= 99;
            247: table_value <= 102;
            248: table_value <= 105;
            249: table_value <= 108;
            250: table_value <= 111;
            251: table_value <= 115;
            252: table_value <= 118;
            253: table_value <= 121;
            254: table_value <= 124;
            255: table_value <= 127;
           endcase
         end
     end
endmodule






