VCS仿真验证实验

发布时间 2023-04-12 09:36:07作者: CoderEnd

VCS仿真验证实验

  1. Verilog代码

    module top_dds(
    	input				clk,
    	input				rst_n,
    	input		[31:0]	fword,
    	input		[09:0]	pword,
    	input 		[07:0]	vword,
    	output	reg	[11:0]  data_0,
    	output	reg	[11:0]  data_1
    );
    
    wire [09:0] addr_rom_0;
    wire [11:0] rom_data_0;
    
    wire [09:0] addr_rom_1;
    wire [11:0] rom_data_1;
    
    dds dds_inst(
    			.clk		(clk)		,
    			.rst_n		(rst_n)		,
    			.fword		(fword)		,
    			.pword		(pword)		,
    			.addr_rom_0	(addr_rom_0),
    			.addr_rom_1 (addr_rom_1)
    		);
    		
    rom rom_inst_0(
    			.clk		(clk)   		,         
    			.address	(addr_rom_0)    ,          
    			.data		(rom_data_0)   				
      );
    
    rom rom_inst_1(
    			.clk		(clk)   		,         
    			.address	(addr_rom_1)    ,          
    			.data		(rom_data_1)   				
      );
    
    always@(posedge clk or negedge rst_n) begin
    	if(!rst_n)begin
    		data_0 <= 12'b0;
    		data_1 <= 12'b0;
    	end
    	else begin
    		data_0 <= rom_data_0 * vword;
    		data_1 <= rom_data_1 * vword;
    	end
    		
    end
    
    endmodule
    
    module dds(
    	input				clk,
    	input				rst_n,
    	input		[31:0]	fword,
    	input		[09:0]	pword,
    	output	reg	[09:0]	addr_rom_1,
    	output	reg	[09:0]	addr_rom_0
    );
    
    reg	[31:0] fre_acc;	//频率累加和
    reg [09:0] fre_cut;	//频率截取
    
    //频率累加
    always@(posedge clk or negedge rst_n) begin
    	if(!rst_n)
    			fre_acc  <= 32'd0;
    	else
    			fre_acc  <= fre_acc + fword;
    end
    
    //频率截取
    always@(posedge clk or negedge rst_n) begin
    	if(!rst_n)
    			fre_cut  <= 10'b0;
    	else
    		    fre_cut  <= fre_acc[31:22];
    end
    
    //相位累加
    always@(posedge clk or negedge rst_n) begin
    	if(!rst_n)begin
    		addr_rom_0  <= 10'b0;
    		addr_rom_1  <= 10'b0;
    	end
    	else begin
    		addr_rom_0  <= fre_cut;
    		addr_rom_1  <= fre_cut + pword;
    	end
    			
    end
    
    endmodule
    
    
    module rom(
      clk    ,           // clock
      address     ,           // read address
      data     );          // read data
      
    input          clk;
    input  [9  :0] address;
    output [11 :0] data;
    reg    [11 :0] data;
    always @ (posedge clk)
      case(address)
         10'd 0     :data =   12'b 000000000000; //      0 0x0 
         10'd 1     :data =   12'b 000000001100; //     12 0xC 
         10'd 2     :data =   12'b 000000011001; //     25 0x19 
         10'd 3     :data =   12'b 000000100101; //     37 0x25 
         10'd 4     :data =   12'b 000000110010; //     50 0x32 
         10'd 5     :data =   12'b 000000111110; //     62 0x3E 
         10'd 6     :data =   12'b 000001001011; //     75 0x4B 
         10'd 7     :data =   12'b 000001010111; //     87 0x57 
         10'd 8     :data =   12'b 000001100100; //    100 0x64 
         10'd 9     :data =   12'b 000001110000; //    112 0x70 
         10'd 10    :data =   12'b 000001111101; //    125 0x7D 
         10'd 11    :data =   12'b 000010001010; //    138 0x8A 
         10'd 12    :data =   12'b 000010010110; //    150 0x96 
         10'd 13    :data =   12'b 000010100011; //    163 0xA3 
         10'd 14    :data =   12'b 000010101111; //    175 0xAF 
         10'd 15    :data =   12'b 000010111100; //    188 0xBC 
         10'd 16    :data =   12'b 000011001000; //    200 0xC8 
         10'd 17    :data =   12'b 000011010101; //    213 0xD5 
         10'd 18    :data =   12'b 000011100001; //    225 0xE1 
         10'd 19    :data =   12'b 000011101110; //    238 0xEE 
         10'd 20    :data =   12'b 000011111010; //    250 0xFA 
         10'd 21    :data =   12'b 000100000111; //    263 0x107 
         10'd 22    :data =   12'b 000100010011; //    275 0x113 
         10'd 23    :data =   12'b 000100011111; //    287 0x11F 
         10'd 24    :data =   12'b 000100101100; //    300 0x12C 
         10'd 25    :data =   12'b 000100111000; //    312 0x138 
         10'd 26    :data =   12'b 000101000101; //    325 0x145 
         10'd 27    :data =   12'b 000101010001; //    337 0x151 
         10'd 28    :data =   12'b 000101011101; //    349 0x15D 
         10'd 29    :data =   12'b 000101101010; //    362 0x16A 
         10'd 30    :data =   12'b 000101110110; //    374 0x176 
         10'd 31    :data =   12'b 000110000011; //    387 0x183 
         10'd 32    :data =   12'b 000110001111; //    399 0x18F 
         10'd 33    :data =   12'b 000110011011; //    411 0x19B 
         10'd 34    :data =   12'b 000110100111; //    423 0x1A7 
         10'd 35    :data =   12'b 000110110100; //    436 0x1B4 
         10'd 36    :data =   12'b 000111000000; //    448 0x1C0 
         10'd 37    :data =   12'b 000111001100; //    460 0x1CC 
         10'd 38    :data =   12'b 000111011000; //    472 0x1D8 
         10'd 39    :data =   12'b 000111100101; //    485 0x1E5 
         10'd 40    :data =   12'b 000111110001; //    497 0x1F1 
         10'd 41    :data =   12'b 000111111101; //    509 0x1FD 
         10'd 42    :data =   12'b 001000001001; //    521 0x209 
         10'd 43    :data =   12'b 001000010101; //    533 0x215 
         10'd 44    :data =   12'b 001000100001; //    545 0x221 
         10'd 45    :data =   12'b 001000101110; //    558 0x22E 
         10'd 46    :data =   12'b 001000111010; //    570 0x23A 
         10'd 47    :data =   12'b 001001000110; //    582 0x246 
         10'd 48    :data =   12'b 001001010010; //    594 0x252 
         10'd 49    :data =   12'b 001001011110; //    606 0x25E 
         10'd 50    :data =   12'b 001001101010; //    618 0x26A 
         10'd 51    :data =   12'b 001001110110; //    630 0x276 
         10'd 52    :data =   12'b 001010000010; //    642 0x282 
         10'd 53    :data =   12'b 001010001110; //    654 0x28E 
         10'd 54    :data =   12'b 001010011001; //    665 0x299 
         10'd 55    :data =   12'b 001010100101; //    677 0x2A5 
         10'd 56    :data =   12'b 001010110001; //    689 0x2B1 
         10'd 57    :data =   12'b 001010111101; //    701 0x2BD 
         10'd 58    :data =   12'b 001011001001; //    713 0x2C9 
         10'd 59    :data =   12'b 001011010100; //    724 0x2D4 
         10'd 60    :data =   12'b 001011100000; //    736 0x2E0 
         10'd 61    :data =   12'b 001011101100; //    748 0x2EC 
         10'd 62    :data =   12'b 001011111000; //    760 0x2F8 
         10'd 63    :data =   12'b 001100000011; //    771 0x303 
         10'd 64    :data =   12'b 001100001111; //    783 0x30F 
         10'd 65    :data =   12'b 001100011010; //    794 0x31A 
         10'd 66    :data =   12'b 001100100110; //    806 0x326 
         10'd 67    :data =   12'b 001100110010; //    818 0x332 
         10'd 68    :data =   12'b 001100111101; //    829 0x33D 
         10'd 69    :data =   12'b 001101001000; //    840 0x348 
         10'd 70    :data =   12'b 001101010100; //    852 0x354 
         10'd 71    :data =   12'b 001101011111; //    863 0x35F 
         10'd 72    :data =   12'b 001101101011; //    875 0x36B 
         10'd 73    :data =   12'b 001101110110; //    886 0x376 
         10'd 74    :data =   12'b 001110000001; //    897 0x381 
         10'd 75    :data =   12'b 001110001101; //    909 0x38D 
         10'd 76    :data =   12'b 001110011000; //    920 0x398 
         10'd 77    :data =   12'b 001110100011; //    931 0x3A3 
         10'd 78    :data =   12'b 001110101110; //    942 0x3AE 
         10'd 79    :data =   12'b 001110111001; //    953 0x3B9 
         10'd 80    :data =   12'b 001111000100; //    964 0x3C4 
         10'd 81    :data =   12'b 001111010000; //    976 0x3D0 
         10'd 82    :data =   12'b 001111011011; //    987 0x3DB 
         10'd 83    :data =   12'b 001111100110; //    998 0x3E6 
         10'd 84    :data =   12'b 001111110000; //   1008 0x3F0 
         10'd 85    :data =   12'b 001111111011; //   1019 0x3FB 
         10'd 86    :data =   12'b 010000000110; //   1030 0x406 
         10'd 87    :data =   12'b 010000010001; //   1041 0x411 
         10'd 88    :data =   12'b 010000011100; //   1052 0x41C 
         10'd 89    :data =   12'b 010000100111; //   1063 0x427 
         10'd 90    :data =   12'b 010000110001; //   1073 0x431 
         10'd 91    :data =   12'b 010000111100; //   1084 0x43C 
         10'd 92    :data =   12'b 010001000111; //   1095 0x447 
         10'd 93    :data =   12'b 010001010001; //   1105 0x451 
         10'd 94    :data =   12'b 010001011100; //   1116 0x45C 
         10'd 95    :data =   12'b 010001100110; //   1126 0x466 
         10'd 96    :data =   12'b 010001110001; //   1137 0x471 
         10'd 97    :data =   12'b 010001111011; //   1147 0x47B 
         10'd 98    :data =   12'b 010010000110; //   1158 0x486 
         10'd 99    :data =   12'b 010010010000; //   1168 0x490 
         10'd 100   :data =   12'b 010010011010; //   1178 0x49A 
         10'd 101   :data =   12'b 010010100100; //   1188 0x4A4 
         10'd 102   :data =   12'b 010010101111; //   1199 0x4AF 
         10'd 103   :data =   12'b 010010111001; //   1209 0x4B9 
         10'd 104   :data =   12'b 010011000011; //   1219 0x4C3 
         10'd 105   :data =   12'b 010011001101; //   1229 0x4CD 
         10'd 106   :data =   12'b 010011010111; //   1239 0x4D7 
         10'd 107   :data =   12'b 010011100001; //   1249 0x4E1 
         10'd 108   :data =   12'b 010011101011; //   1259 0x4EB 
         10'd 109   :data =   12'b 010011110101; //   1269 0x4F5 
         10'd 110   :data =   12'b 010011111111; //   1279 0x4FF 
         10'd 111   :data =   12'b 010100001000; //   1288 0x508 
         10'd 112   :data =   12'b 010100010010; //   1298 0x512 
         10'd 113   :data =   12'b 010100011100; //   1308 0x51C 
         10'd 114   :data =   12'b 010100100101; //   1317 0x525 
         10'd 115   :data =   12'b 010100101111; //   1327 0x52F 
         10'd 116   :data =   12'b 010100111001; //   1337 0x539 
         10'd 117   :data =   12'b 010101000010; //   1346 0x542 
         10'd 118   :data =   12'b 010101001011; //   1355 0x54B 
         10'd 119   :data =   12'b 010101010101; //   1365 0x555 
         10'd 120   :data =   12'b 010101011110; //   1374 0x55E 
         10'd 121   :data =   12'b 010101100111; //   1383 0x567 
         10'd 122   :data =   12'b 010101110001; //   1393 0x571 
         10'd 123   :data =   12'b 010101111010; //   1402 0x57A 
         10'd 124   :data =   12'b 010110000011; //   1411 0x583 
         10'd 125   :data =   12'b 010110001100; //   1420 0x58C 
         10'd 126   :data =   12'b 010110010101; //   1429 0x595 
         10'd 127   :data =   12'b 010110011110; //   1438 0x59E 
         10'd 128   :data =   12'b 010110100111; //   1447 0x5A7 
         10'd 129   :data =   12'b 010110110000; //   1456 0x5B0 
         10'd 130   :data =   12'b 010110111001; //   1465 0x5B9 
         10'd 131   :data =   12'b 010111000001; //   1473 0x5C1 
         10'd 132   :data =   12'b 010111001010; //   1482 0x5CA 
         10'd 133   :data =   12'b 010111010011; //   1491 0x5D3 
         10'd 134   :data =   12'b 010111011011; //   1499 0x5DB 
         10'd 135   :data =   12'b 010111100100; //   1508 0x5E4 
         10'd 136   :data =   12'b 010111101100; //   1516 0x5EC 
         10'd 137   :data =   12'b 010111110101; //   1525 0x5F5 
         10'd 138   :data =   12'b 010111111101; //   1533 0x5FD 
         10'd 139   :data =   12'b 011000000101; //   1541 0x605 
         10'd 140   :data =   12'b 011000001110; //   1550 0x60E 
         10'd 141   :data =   12'b 011000010110; //   1558 0x616 
         10'd 142   :data =   12'b 011000011110; //   1566 0x61E 
         10'd 143   :data =   12'b 011000100110; //   1574 0x626 
         10'd 144   :data =   12'b 011000101110; //   1582 0x62E 
         10'd 145   :data =   12'b 011000110110; //   1590 0x636 
         10'd 146   :data =   12'b 011000111110; //   1598 0x63E 
         10'd 147   :data =   12'b 011001000101; //   1605 0x645 
         10'd 148   :data =   12'b 011001001101; //   1613 0x64D 
         10'd 149   :data =   12'b 011001010101; //   1621 0x655 
         10'd 150   :data =   12'b 011001011101; //   1629 0x65D 
         10'd 151   :data =   12'b 011001100100; //   1636 0x664 
         10'd 152   :data =   12'b 011001101100; //   1644 0x66C 
         10'd 153   :data =   12'b 011001110011; //   1651 0x673 
         10'd 154   :data =   12'b 011001111011; //   1659 0x67B 
         10'd 155   :data =   12'b 011010000010; //   1666 0x682 
         10'd 156   :data =   12'b 011010001001; //   1673 0x689 
         10'd 157   :data =   12'b 011010010000; //   1680 0x690 
         10'd 158   :data =   12'b 011010010111; //   1687 0x697 
         10'd 159   :data =   12'b 011010011111; //   1695 0x69F 
         10'd 160   :data =   12'b 011010100110; //   1702 0x6A6 
         10'd 161   :data =   12'b 011010101100; //   1708 0x6AC 
         10'd 162   :data =   12'b 011010110011; //   1715 0x6B3 
         10'd 163   :data =   12'b 011010111010; //   1722 0x6BA 
         10'd 164   :data =   12'b 011011000001; //   1729 0x6C1 
         10'd 165   :data =   12'b 011011001000; //   1736 0x6C8 
         10'd 166   :data =   12'b 011011001110; //   1742 0x6CE 
         10'd 167   :data =   12'b 011011010101; //   1749 0x6D5 
         10'd 168   :data =   12'b 011011011011; //   1755 0x6DB 
         10'd 169   :data =   12'b 011011100010; //   1762 0x6E2 
         10'd 170   :data =   12'b 011011101000; //   1768 0x6E8 
         10'd 171   :data =   12'b 011011101110; //   1774 0x6EE 
         10'd 172   :data =   12'b 011011110101; //   1781 0x6F5 
         10'd 173   :data =   12'b 011011111011; //   1787 0x6FB 
         10'd 174   :data =   12'b 011100000001; //   1793 0x701 
         10'd 175   :data =   12'b 011100000111; //   1799 0x707 
         10'd 176   :data =   12'b 011100001101; //   1805 0x70D 
         10'd 177   :data =   12'b 011100010011; //   1811 0x713 
         10'd 178   :data =   12'b 011100011000; //   1816 0x718 
         10'd 179   :data =   12'b 011100011110; //   1822 0x71E 
         10'd 180   :data =   12'b 011100100100; //   1828 0x724 
         10'd 181   :data =   12'b 011100101010; //   1834 0x72A 
         10'd 182   :data =   12'b 011100101111; //   1839 0x72F 
         10'd 183   :data =   12'b 011100110101; //   1845 0x735 
         10'd 184   :data =   12'b 011100111010; //   1850 0x73A 
         10'd 185   :data =   12'b 011100111111; //   1855 0x73F 
         10'd 186   :data =   12'b 011101000101; //   1861 0x745 
         10'd 187   :data =   12'b 011101001010; //   1866 0x74A 
         10'd 188   :data =   12'b 011101001111; //   1871 0x74F 
         10'd 189   :data =   12'b 011101010100; //   1876 0x754 
         10'd 190   :data =   12'b 011101011001; //   1881 0x759 
         10'd 191   :data =   12'b 011101011110; //   1886 0x75E 
         10'd 192   :data =   12'b 011101100011; //   1891 0x763 
         10'd 193   :data =   12'b 011101100111; //   1895 0x767 
         10'd 194   :data =   12'b 011101101100; //   1900 0x76C 
         10'd 195   :data =   12'b 011101110001; //   1905 0x771 
         10'd 196   :data =   12'b 011101110101; //   1909 0x775 
         10'd 197   :data =   12'b 011101111010; //   1914 0x77A 
         10'd 198   :data =   12'b 011101111110; //   1918 0x77E 
         10'd 199   :data =   12'b 011110000011; //   1923 0x783 
         10'd 200   :data =   12'b 011110000111; //   1927 0x787 
         10'd 201   :data =   12'b 011110001011; //   1931 0x78B 
         10'd 202   :data =   12'b 011110001111; //   1935 0x78F 
         10'd 203   :data =   12'b 011110010011; //   1939 0x793 
         10'd 204   :data =   12'b 011110010111; //   1943 0x797 
         10'd 205   :data =   12'b 011110011011; //   1947 0x79B 
         10'd 206   :data =   12'b 011110011111; //   1951 0x79F 
         10'd 207   :data =   12'b 011110100011; //   1955 0x7A3 
         10'd 208   :data =   12'b 011110100110; //   1958 0x7A6 
         10'd 209   :data =   12'b 011110101010; //   1962 0x7AA 
         10'd 210   :data =   12'b 011110101110; //   1966 0x7AE 
         10'd 211   :data =   12'b 011110110001; //   1969 0x7B1 
         10'd 212   :data =   12'b 011110110100; //   1972 0x7B4 
         10'd 213   :data =   12'b 011110111000; //   1976 0x7B8 
         10'd 214   :data =   12'b 011110111011; //   1979 0x7BB 
         10'd 215   :data =   12'b 011110111110; //   1982 0x7BE 
         10'd 216   :data =   12'b 011111000001; //   1985 0x7C1 
         10'd 217   :data =   12'b 011111000100; //   1988 0x7C4 
         10'd 218   :data =   12'b 011111000111; //   1991 0x7C7 
         10'd 219   :data =   12'b 011111001010; //   1994 0x7CA 
         10'd 220   :data =   12'b 011111001101; //   1997 0x7CD 
         10'd 221   :data =   12'b 011111001111; //   1999 0x7CF 
         10'd 222   :data =   12'b 011111010010; //   2002 0x7D2 
         10'd 223   :data =   12'b 011111010101; //   2005 0x7D5 
         10'd 224   :data =   12'b 011111010111; //   2007 0x7D7 
         10'd 225   :data =   12'b 011111011010; //   2010 0x7DA 
         10'd 226   :data =   12'b 011111011100; //   2012 0x7DC 
         10'd 227   :data =   12'b 011111011110; //   2014 0x7DE 
         10'd 228   :data =   12'b 011111100000; //   2016 0x7E0 
         10'd 229   :data =   12'b 011111100010; //   2018 0x7E2 
         10'd 230   :data =   12'b 011111100101; //   2021 0x7E5 
         10'd 231   :data =   12'b 011111100110; //   2022 0x7E6 
         10'd 232   :data =   12'b 011111101000; //   2024 0x7E8 
         10'd 233   :data =   12'b 011111101010; //   2026 0x7EA 
         10'd 234   :data =   12'b 011111101100; //   2028 0x7EC 
         10'd 235   :data =   12'b 011111101110; //   2030 0x7EE 
         10'd 236   :data =   12'b 011111101111; //   2031 0x7EF 
         10'd 237   :data =   12'b 011111110001; //   2033 0x7F1 
         10'd 238   :data =   12'b 011111110010; //   2034 0x7F2 
         10'd 239   :data =   12'b 011111110011; //   2035 0x7F3 
         10'd 240   :data =   12'b 011111110101; //   2037 0x7F5 
         10'd 241   :data =   12'b 011111110110; //   2038 0x7F6 
         10'd 242   :data =   12'b 011111110111; //   2039 0x7F7 
         10'd 243   :data =   12'b 011111111000; //   2040 0x7F8 
         10'd 244   :data =   12'b 011111111001; //   2041 0x7F9 
         10'd 245   :data =   12'b 011111111010; //   2042 0x7FA 
         10'd 246   :data =   12'b 011111111011; //   2043 0x7FB 
         10'd 247   :data =   12'b 011111111011; //   2043 0x7FB 
         10'd 248   :data =   12'b 011111111100; //   2044 0x7FC 
         10'd 249   :data =   12'b 011111111101; //   2045 0x7FD 
         10'd 250   :data =   12'b 011111111101; //   2045 0x7FD 
         10'd 251   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 252   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 253   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 254   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 255   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 256   :data =   12'b 011111111111; //   2047 0x7FF 
         10'd 257   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 258   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 259   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 260   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 261   :data =   12'b 011111111110; //   2046 0x7FE 
         10'd 262   :data =   12'b 011111111101; //   2045 0x7FD 
         10'd 263   :data =   12'b 011111111101; //   2045 0x7FD 
         10'd 264   :data =   12'b 011111111100; //   2044 0x7FC 
         10'd 265   :data =   12'b 011111111011; //   2043 0x7FB 
         10'd 266   :data =   12'b 011111111011; //   2043 0x7FB 
         10'd 267   :data =   12'b 011111111010; //   2042 0x7FA 
         10'd 268   :data =   12'b 011111111001; //   2041 0x7F9 
         10'd 269   :data =   12'b 011111111000; //   2040 0x7F8 
         10'd 270   :data =   12'b 011111110111; //   2039 0x7F7 
         10'd 271   :data =   12'b 011111110110; //   2038 0x7F6 
         10'd 272   :data =   12'b 011111110101; //   2037 0x7F5 
         10'd 273   :data =   12'b 011111110011; //   2035 0x7F3 
         10'd 274   :data =   12'b 011111110010; //   2034 0x7F2 
         10'd 275   :data =   12'b 011111110001; //   2033 0x7F1 
         10'd 276   :data =   12'b 011111101111; //   2031 0x7EF 
         10'd 277   :data =   12'b 011111101110; //   2030 0x7EE 
         10'd 278   :data =   12'b 011111101100; //   2028 0x7EC 
         10'd 279   :data =   12'b 011111101010; //   2026 0x7EA 
         10'd 280   :data =   12'b 011111101000; //   2024 0x7E8 
         10'd 281   :data =   12'b 011111100110; //   2022 0x7E6 
         10'd 282   :data =   12'b 011111100101; //   2021 0x7E5 
         10'd 283   :data =   12'b 011111100010; //   2018 0x7E2 
         10'd 284   :data =   12'b 011111100000; //   2016 0x7E0 
         10'd 285   :data =   12'b 011111011110; //   2014 0x7DE 
         10'd 286   :data =   12'b 011111011100; //   2012 0x7DC 
         10'd 287   :data =   12'b 011111011010; //   2010 0x7DA 
         10'd 288   :data =   12'b 011111010111; //   2007 0x7D7 
         10'd 289   :data =   12'b 011111010101; //   2005 0x7D5 
         10'd 290   :data =   12'b 011111010010; //   2002 0x7D2 
         10'd 291   :data =   12'b 011111001111; //   1999 0x7CF 
         10'd 292   :data =   12'b 011111001101; //   1997 0x7CD 
         10'd 293   :data =   12'b 011111001010; //   1994 0x7CA 
         10'd 294   :data =   12'b 011111000111; //   1991 0x7C7 
         10'd 295   :data =   12'b 011111000100; //   1988 0x7C4 
         10'd 296   :data =   12'b 011111000001; //   1985 0x7C1 
         10'd 297   :data =   12'b 011110111110; //   1982 0x7BE 
         10'd 298   :data =   12'b 011110111011; //   1979 0x7BB 
         10'd 299   :data =   12'b 011110111000; //   1976 0x7B8 
         10'd 300   :data =   12'b 011110110100; //   1972 0x7B4 
         10'd 301   :data =   12'b 011110110001; //   1969 0x7B1 
         10'd 302   :data =   12'b 011110101110; //   1966 0x7AE 
         10'd 303   :data =   12'b 011110101010; //   1962 0x7AA 
         10'd 304   :data =   12'b 011110100110; //   1958 0x7A6 
         10'd 305   :data =   12'b 011110100011; //   1955 0x7A3 
         10'd 306   :data =   12'b 011110011111; //   1951 0x79F 
         10'd 307   :data =   12'b 011110011011; //   1947 0x79B 
         10'd 308   :data =   12'b 011110010111; //   1943 0x797 
         10'd 309   :data =   12'b 011110010011; //   1939 0x793 
         10'd 310   :data =   12'b 011110001111; //   1935 0x78F 
         10'd 311   :data =   12'b 011110001011; //   1931 0x78B 
         10'd 312   :data =   12'b 011110000111; //   1927 0x787 
         10'd 313   :data =   12'b 011110000011; //   1923 0x783 
         10'd 314   :data =   12'b 011101111110; //   1918 0x77E 
         10'd 315   :data =   12'b 011101111010; //   1914 0x77A 
         10'd 316   :data =   12'b 011101110101; //   1909 0x775 
         10'd 317   :data =   12'b 011101110001; //   1905 0x771 
         10'd 318   :data =   12'b 011101101100; //   1900 0x76C 
         10'd 319   :data =   12'b 011101100111; //   1895 0x767 
         10'd 320   :data =   12'b 011101100011; //   1891 0x763 
         10'd 321   :data =   12'b 011101011110; //   1886 0x75E 
         10'd 322   :data =   12'b 011101011001; //   1881 0x759 
         10'd 323   :data =   12'b 011101010100; //   1876 0x754 
         10'd 324   :data =   12'b 011101001111; //   1871 0x74F 
         10'd 325   :data =   12'b 011101001010; //   1866 0x74A 
         10'd 326   :data =   12'b 011101000101; //   1861 0x745 
         10'd 327   :data =   12'b 011100111111; //   1855 0x73F 
         10'd 328   :data =   12'b 011100111010; //   1850 0x73A 
         10'd 329   :data =   12'b 011100110101; //   1845 0x735 
         10'd 330   :data =   12'b 011100101111; //   1839 0x72F 
         10'd 331   :data =   12'b 011100101010; //   1834 0x72A 
         10'd 332   :data =   12'b 011100100100; //   1828 0x724 
         10'd 333   :data =   12'b 011100011110; //   1822 0x71E 
         10'd 334   :data =   12'b 011100011000; //   1816 0x718 
         10'd 335   :data =   12'b 011100010011; //   1811 0x713 
         10'd 336   :data =   12'b 011100001101; //   1805 0x70D 
         10'd 337   :data =   12'b 011100000111; //   1799 0x707 
         10'd 338   :data =   12'b 011100000001; //   1793 0x701 
         10'd 339   :data =   12'b 011011111011; //   1787 0x6FB 
         10'd 340   :data =   12'b 011011110101; //   1781 0x6F5 
         10'd 341   :data =   12'b 011011101110; //   1774 0x6EE 
         10'd 342   :data =   12'b 011011101000; //   1768 0x6E8 
         10'd 343   :data =   12'b 011011100010; //   1762 0x6E2 
         10'd 344   :data =   12'b 011011011011; //   1755 0x6DB 
         10'd 345   :data =   12'b 011011010101; //   1749 0x6D5 
         10'd 346   :data =   12'b 011011001110; //   1742 0x6CE 
         10'd 347   :data =   12'b 011011001000; //   1736 0x6C8 
         10'd 348   :data =   12'b 011011000001; //   1729 0x6C1 
         10'd 349   :data =   12'b 011010111010; //   1722 0x6BA 
         10'd 350   :data =   12'b 011010110011; //   1715 0x6B3 
         10'd 351   :data =   12'b 011010101100; //   1708 0x6AC 
         10'd 352   :data =   12'b 011010100110; //   1702 0x6A6 
         10'd 353   :data =   12'b 011010011111; //   1695 0x69F 
         10'd 354   :data =   12'b 011010010111; //   1687 0x697 
         10'd 355   :data =   12'b 011010010000; //   1680 0x690 
         10'd 356   :data =   12'b 011010001001; //   1673 0x689 
         10'd 357   :data =   12'b 011010000010; //   1666 0x682 
         10'd 358   :data =   12'b 011001111011; //   1659 0x67B 
         10'd 359   :data =   12'b 011001110011; //   1651 0x673 
         10'd 360   :data =   12'b 011001101100; //   1644 0x66C 
         10'd 361   :data =   12'b 011001100100; //   1636 0x664 
         10'd 362   :data =   12'b 011001011101; //   1629 0x65D 
         10'd 363   :data =   12'b 011001010101; //   1621 0x655 
         10'd 364   :data =   12'b 011001001101; //   1613 0x64D 
         10'd 365   :data =   12'b 011001000101; //   1605 0x645 
         10'd 366   :data =   12'b 011000111110; //   1598 0x63E 
         10'd 367   :data =   12'b 011000110110; //   1590 0x636 
         10'd 368   :data =   12'b 011000101110; //   1582 0x62E 
         10'd 369   :data =   12'b 011000100110; //   1574 0x626 
         10'd 370   :data =   12'b 011000011110; //   1566 0x61E 
         10'd 371   :data =   12'b 011000010110; //   1558 0x616 
         10'd 372   :data =   12'b 011000001110; //   1550 0x60E 
         10'd 373   :data =   12'b 011000000101; //   1541 0x605 
         10'd 374   :data =   12'b 010111111101; //   1533 0x5FD 
         10'd 375   :data =   12'b 010111110101; //   1525 0x5F5 
         10'd 376   :data =   12'b 010111101100; //   1516 0x5EC 
         10'd 377   :data =   12'b 010111100100; //   1508 0x5E4 
         10'd 378   :data =   12'b 010111011011; //   1499 0x5DB 
         10'd 379   :data =   12'b 010111010011; //   1491 0x5D3 
         10'd 380   :data =   12'b 010111001010; //   1482 0x5CA 
         10'd 381   :data =   12'b 010111000001; //   1473 0x5C1 
         10'd 382   :data =   12'b 010110111001; //   1465 0x5B9 
         10'd 383   :data =   12'b 010110110000; //   1456 0x5B0 
         10'd 384   :data =   12'b 010110100111; //   1447 0x5A7 
         10'd 385   :data =   12'b 010110011110; //   1438 0x59E 
         10'd 386   :data =   12'b 010110010101; //   1429 0x595 
         10'd 387   :data =   12'b 010110001100; //   1420 0x58C 
         10'd 388   :data =   12'b 010110000011; //   1411 0x583 
         10'd 389   :data =   12'b 010101111010; //   1402 0x57A 
         10'd 390   :data =   12'b 010101110001; //   1393 0x571 
         10'd 391   :data =   12'b 010101100111; //   1383 0x567 
         10'd 392   :data =   12'b 010101011110; //   1374 0x55E 
         10'd 393   :data =   12'b 010101010101; //   1365 0x555 
         10'd 394   :data =   12'b 010101001011; //   1355 0x54B 
         10'd 395   :data =   12'b 010101000010; //   1346 0x542 
         10'd 396   :data =   12'b 010100111001; //   1337 0x539 
         10'd 397   :data =   12'b 010100101111; //   1327 0x52F 
         10'd 398   :data =   12'b 010100100101; //   1317 0x525 
         10'd 399   :data =   12'b 010100011100; //   1308 0x51C 
         10'd 400   :data =   12'b 010100010010; //   1298 0x512 
         10'd 401   :data =   12'b 010100001000; //   1288 0x508 
         10'd 402   :data =   12'b 010011111111; //   1279 0x4FF 
         10'd 403   :data =   12'b 010011110101; //   1269 0x4F5 
         10'd 404   :data =   12'b 010011101011; //   1259 0x4EB 
         10'd 405   :data =   12'b 010011100001; //   1249 0x4E1 
         10'd 406   :data =   12'b 010011010111; //   1239 0x4D7 
         10'd 407   :data =   12'b 010011001101; //   1229 0x4CD 
         10'd 408   :data =   12'b 010011000011; //   1219 0x4C3 
         10'd 409   :data =   12'b 010010111001; //   1209 0x4B9 
         10'd 410   :data =   12'b 010010101111; //   1199 0x4AF 
         10'd 411   :data =   12'b 010010100100; //   1188 0x4A4 
         10'd 412   :data =   12'b 010010011010; //   1178 0x49A 
         10'd 413   :data =   12'b 010010010000; //   1168 0x490 
         10'd 414   :data =   12'b 010010000110; //   1158 0x486 
         10'd 415   :data =   12'b 010001111011; //   1147 0x47B 
         10'd 416   :data =   12'b 010001110001; //   1137 0x471 
         10'd 417   :data =   12'b 010001100110; //   1126 0x466 
         10'd 418   :data =   12'b 010001011100; //   1116 0x45C 
         10'd 419   :data =   12'b 010001010001; //   1105 0x451 
         10'd 420   :data =   12'b 010001000111; //   1095 0x447 
         10'd 421   :data =   12'b 010000111100; //   1084 0x43C 
         10'd 422   :data =   12'b 010000110001; //   1073 0x431 
         10'd 423   :data =   12'b 010000100111; //   1063 0x427 
         10'd 424   :data =   12'b 010000011100; //   1052 0x41C 
         10'd 425   :data =   12'b 010000010001; //   1041 0x411 
         10'd 426   :data =   12'b 010000000110; //   1030 0x406 
         10'd 427   :data =   12'b 001111111011; //   1019 0x3FB 
         10'd 428   :data =   12'b 001111110000; //   1008 0x3F0 
         10'd 429   :data =   12'b 001111100110; //    998 0x3E6 
         10'd 430   :data =   12'b 001111011011; //    987 0x3DB 
         10'd 431   :data =   12'b 001111010000; //    976 0x3D0 
         10'd 432   :data =   12'b 001111000100; //    964 0x3C4 
         10'd 433   :data =   12'b 001110111001; //    953 0x3B9 
         10'd 434   :data =   12'b 001110101110; //    942 0x3AE 
         10'd 435   :data =   12'b 001110100011; //    931 0x3A3 
         10'd 436   :data =   12'b 001110011000; //    920 0x398 
         10'd 437   :data =   12'b 001110001101; //    909 0x38D 
         10'd 438   :data =   12'b 001110000001; //    897 0x381 
         10'd 439   :data =   12'b 001101110110; //    886 0x376 
         10'd 440   :data =   12'b 001101101011; //    875 0x36B 
         10'd 441   :data =   12'b 001101011111; //    863 0x35F 
         10'd 442   :data =   12'b 001101010100; //    852 0x354 
         10'd 443   :data =   12'b 001101001000; //    840 0x348 
         10'd 444   :data =   12'b 001100111101; //    829 0x33D 
         10'd 445   :data =   12'b 001100110010; //    818 0x332 
         10'd 446   :data =   12'b 001100100110; //    806 0x326 
         10'd 447   :data =   12'b 001100011010; //    794 0x31A 
         10'd 448   :data =   12'b 001100001111; //    783 0x30F 
         10'd 449   :data =   12'b 001100000011; //    771 0x303 
         10'd 450   :data =   12'b 001011111000; //    760 0x2F8 
         10'd 451   :data =   12'b 001011101100; //    748 0x2EC 
         10'd 452   :data =   12'b 001011100000; //    736 0x2E0 
         10'd 453   :data =   12'b 001011010100; //    724 0x2D4 
         10'd 454   :data =   12'b 001011001001; //    713 0x2C9 
         10'd 455   :data =   12'b 001010111101; //    701 0x2BD 
         10'd 456   :data =   12'b 001010110001; //    689 0x2B1 
         10'd 457   :data =   12'b 001010100101; //    677 0x2A5 
         10'd 458   :data =   12'b 001010011001; //    665 0x299 
         10'd 459   :data =   12'b 001010001110; //    654 0x28E 
         10'd 460   :data =   12'b 001010000010; //    642 0x282 
         10'd 461   :data =   12'b 001001110110; //    630 0x276 
         10'd 462   :data =   12'b 001001101010; //    618 0x26A 
         10'd 463   :data =   12'b 001001011110; //    606 0x25E 
         10'd 464   :data =   12'b 001001010010; //    594 0x252 
         10'd 465   :data =   12'b 001001000110; //    582 0x246 
         10'd 466   :data =   12'b 001000111010; //    570 0x23A 
         10'd 467   :data =   12'b 001000101110; //    558 0x22E 
         10'd 468   :data =   12'b 001000100001; //    545 0x221 
         10'd 469   :data =   12'b 001000010101; //    533 0x215 
         10'd 470   :data =   12'b 001000001001; //    521 0x209 
         10'd 471   :data =   12'b 000111111101; //    509 0x1FD 
         10'd 472   :data =   12'b 000111110001; //    497 0x1F1 
         10'd 473   :data =   12'b 000111100101; //    485 0x1E5 
         10'd 474   :data =   12'b 000111011000; //    472 0x1D8 
         10'd 475   :data =   12'b 000111001100; //    460 0x1CC 
         10'd 476   :data =   12'b 000111000000; //    448 0x1C0 
         10'd 477   :data =   12'b 000110110100; //    436 0x1B4 
         10'd 478   :data =   12'b 000110100111; //    423 0x1A7 
         10'd 479   :data =   12'b 000110011011; //    411 0x19B 
         10'd 480   :data =   12'b 000110001111; //    399 0x18F 
         10'd 481   :data =   12'b 000110000011; //    387 0x183 
         10'd 482   :data =   12'b 000101110110; //    374 0x176 
         10'd 483   :data =   12'b 000101101010; //    362 0x16A 
         10'd 484   :data =   12'b 000101011101; //    349 0x15D 
         10'd 485   :data =   12'b 000101010001; //    337 0x151 
         10'd 486   :data =   12'b 000101000101; //    325 0x145 
         10'd 487   :data =   12'b 000100111000; //    312 0x138 
         10'd 488   :data =   12'b 000100101100; //    300 0x12C 
         10'd 489   :data =   12'b 000100011111; //    287 0x11F 
         10'd 490   :data =   12'b 000100010011; //    275 0x113 
         10'd 491   :data =   12'b 000100000111; //    263 0x107 
         10'd 492   :data =   12'b 000011111010; //    250 0xFA 
         10'd 493   :data =   12'b 000011101110; //    238 0xEE 
         10'd 494   :data =   12'b 000011100001; //    225 0xE1 
         10'd 495   :data =   12'b 000011010101; //    213 0xD5 
         10'd 496   :data =   12'b 000011001000; //    200 0xC8 
         10'd 497   :data =   12'b 000010111100; //    188 0xBC 
         10'd 498   :data =   12'b 000010101111; //    175 0xAF 
         10'd 499   :data =   12'b 000010100011; //    163 0xA3 
         10'd 500   :data =   12'b 000010010110; //    150 0x96 
         10'd 501   :data =   12'b 000010001010; //    138 0x8A 
         10'd 502   :data =   12'b 000001111101; //    125 0x7D 
         10'd 503   :data =   12'b 000001110000; //    112 0x70 
         10'd 504   :data =   12'b 000001100100; //    100 0x64 
         10'd 505   :data =   12'b 000001010111; //     87 0x57 
         10'd 506   :data =   12'b 000001001011; //     75 0x4B 
         10'd 507   :data =   12'b 000000111110; //     62 0x3E 
         10'd 508   :data =   12'b 000000110010; //     50 0x32 
         10'd 509   :data =   12'b 000000100101; //     37 0x25 
         10'd 510   :data =   12'b 000000011001; //     25 0x19 
         10'd 511   :data =   12'b 000000001100; //     12 0xC 
         10'd 512   :data =   12'b 000000000000; //      0 0x0 
         10'd 513   :data =   12'b 111111110100; //    -12 0xFF4 
         10'd 514   :data =   12'b 111111100111; //    -25 0xFE7 
         10'd 515   :data =   12'b 111111011011; //    -37 0xFDB 
         10'd 516   :data =   12'b 111111001110; //    -50 0xFCE 
         10'd 517   :data =   12'b 111111000010; //    -62 0xFC2 
         10'd 518   :data =   12'b 111110110101; //    -75 0xFB5 
         10'd 519   :data =   12'b 111110101001; //    -87 0xFA9 
         10'd 520   :data =   12'b 111110011100; //   -100 0xF9C 
         10'd 521   :data =   12'b 111110010000; //   -112 0xF90 
         10'd 522   :data =   12'b 111110000011; //   -125 0xF83 
         10'd 523   :data =   12'b 111101110110; //   -138 0xF76 
         10'd 524   :data =   12'b 111101101010; //   -150 0xF6A 
         10'd 525   :data =   12'b 111101011101; //   -163 0xF5D 
         10'd 526   :data =   12'b 111101010001; //   -175 0xF51 
         10'd 527   :data =   12'b 111101000100; //   -188 0xF44 
         10'd 528   :data =   12'b 111100111000; //   -200 0xF38 
         10'd 529   :data =   12'b 111100101011; //   -213 0xF2B 
         10'd 530   :data =   12'b 111100011111; //   -225 0xF1F 
         10'd 531   :data =   12'b 111100010010; //   -238 0xF12 
         10'd 532   :data =   12'b 111100000110; //   -250 0xF06 
         10'd 533   :data =   12'b 111011111001; //   -263 0xEF9 
         10'd 534   :data =   12'b 111011101101; //   -275 0xEED 
         10'd 535   :data =   12'b 111011100001; //   -287 0xEE1 
         10'd 536   :data =   12'b 111011010100; //   -300 0xED4 
         10'd 537   :data =   12'b 111011001000; //   -312 0xEC8 
         10'd 538   :data =   12'b 111010111011; //   -325 0xEBB 
         10'd 539   :data =   12'b 111010101111; //   -337 0xEAF 
         10'd 540   :data =   12'b 111010100011; //   -349 0xEA3 
         10'd 541   :data =   12'b 111010010110; //   -362 0xE96 
         10'd 542   :data =   12'b 111010001010; //   -374 0xE8A 
         10'd 543   :data =   12'b 111001111101; //   -387 0xE7D 
         10'd 544   :data =   12'b 111001110001; //   -399 0xE71 
         10'd 545   :data =   12'b 111001100101; //   -411 0xE65 
         10'd 546   :data =   12'b 111001011001; //   -423 0xE59 
         10'd 547   :data =   12'b 111001001100; //   -436 0xE4C 
         10'd 548   :data =   12'b 111001000000; //   -448 0xE40 
         10'd 549   :data =   12'b 111000110100; //   -460 0xE34 
         10'd 550   :data =   12'b 111000101000; //   -472 0xE28 
         10'd 551   :data =   12'b 111000011011; //   -485 0xE1B 
         10'd 552   :data =   12'b 111000001111; //   -497 0xE0F 
         10'd 553   :data =   12'b 111000000011; //   -509 0xE03 
         10'd 554   :data =   12'b 110111110111; //   -521 0xDF7 
         10'd 555   :data =   12'b 110111101011; //   -533 0xDEB 
         10'd 556   :data =   12'b 110111011111; //   -545 0xDDF 
         10'd 557   :data =   12'b 110111010010; //   -558 0xDD2 
         10'd 558   :data =   12'b 110111000110; //   -570 0xDC6 
         10'd 559   :data =   12'b 110110111010; //   -582 0xDBA 
         10'd 560   :data =   12'b 110110101110; //   -594 0xDAE 
         10'd 561   :data =   12'b 110110100010; //   -606 0xDA2 
         10'd 562   :data =   12'b 110110010110; //   -618 0xD96 
         10'd 563   :data =   12'b 110110001010; //   -630 0xD8A 
         10'd 564   :data =   12'b 110101111110; //   -642 0xD7E 
         10'd 565   :data =   12'b 110101110010; //   -654 0xD72 
         10'd 566   :data =   12'b 110101100111; //   -665 0xD67 
         10'd 567   :data =   12'b 110101011011; //   -677 0xD5B 
         10'd 568   :data =   12'b 110101001111; //   -689 0xD4F 
         10'd 569   :data =   12'b 110101000011; //   -701 0xD43 
         10'd 570   :data =   12'b 110100110111; //   -713 0xD37 
         10'd 571   :data =   12'b 110100101100; //   -724 0xD2C 
         10'd 572   :data =   12'b 110100100000; //   -736 0xD20 
         10'd 573   :data =   12'b 110100010100; //   -748 0xD14 
         10'd 574   :data =   12'b 110100001000; //   -760 0xD08 
         10'd 575   :data =   12'b 110011111101; //   -771 0xCFD 
         10'd 576   :data =   12'b 110011110001; //   -783 0xCF1 
         10'd 577   :data =   12'b 110011100110; //   -794 0xCE6 
         10'd 578   :data =   12'b 110011011010; //   -806 0xCDA 
         10'd 579   :data =   12'b 110011001110; //   -818 0xCCE 
         10'd 580   :data =   12'b 110011000011; //   -829 0xCC3 
         10'd 581   :data =   12'b 110010111000; //   -840 0xCB8 
         10'd 582   :data =   12'b 110010101100; //   -852 0xCAC 
         10'd 583   :data =   12'b 110010100001; //   -863 0xCA1 
         10'd 584   :data =   12'b 110010010101; //   -875 0xC95 
         10'd 585   :data =   12'b 110010001010; //   -886 0xC8A 
         10'd 586   :data =   12'b 110001111111; //   -897 0xC7F 
         10'd 587   :data =   12'b 110001110011; //   -909 0xC73 
         10'd 588   :data =   12'b 110001101000; //   -920 0xC68 
         10'd 589   :data =   12'b 110001011101; //   -931 0xC5D 
         10'd 590   :data =   12'b 110001010010; //   -942 0xC52 
         10'd 591   :data =   12'b 110001000111; //   -953 0xC47 
         10'd 592   :data =   12'b 110000111100; //   -964 0xC3C 
         10'd 593   :data =   12'b 110000110000; //   -976 0xC30 
         10'd 594   :data =   12'b 110000100101; //   -987 0xC25 
         10'd 595   :data =   12'b 110000011010; //   -998 0xC1A 
         10'd 596   :data =   12'b 110000010000; //  -1008 0xC10 
         10'd 597   :data =   12'b 110000000101; //  -1019 0xC05 
         10'd 598   :data =   12'b 101111111010; //  -1030 0xBFA 
         10'd 599   :data =   12'b 101111101111; //  -1041 0xBEF 
         10'd 600   :data =   12'b 101111100100; //  -1052 0xBE4 
         10'd 601   :data =   12'b 101111011001; //  -1063 0xBD9 
         10'd 602   :data =   12'b 101111001111; //  -1073 0xBCF 
         10'd 603   :data =   12'b 101111000100; //  -1084 0xBC4 
         10'd 604   :data =   12'b 101110111001; //  -1095 0xBB9 
         10'd 605   :data =   12'b 101110101111; //  -1105 0xBAF 
         10'd 606   :data =   12'b 101110100100; //  -1116 0xBA4 
         10'd 607   :data =   12'b 101110011010; //  -1126 0xB9A 
         10'd 608   :data =   12'b 101110001111; //  -1137 0xB8F 
         10'd 609   :data =   12'b 101110000101; //  -1147 0xB85 
         10'd 610   :data =   12'b 101101111010; //  -1158 0xB7A 
         10'd 611   :data =   12'b 101101110000; //  -1168 0xB70 
         10'd 612   :data =   12'b 101101100110; //  -1178 0xB66 
         10'd 613   :data =   12'b 101101011100; //  -1188 0xB5C 
         10'd 614   :data =   12'b 101101010001; //  -1199 0xB51 
         10'd 615   :data =   12'b 101101000111; //  -1209 0xB47 
         10'd 616   :data =   12'b 101100111101; //  -1219 0xB3D 
         10'd 617   :data =   12'b 101100110011; //  -1229 0xB33 
         10'd 618   :data =   12'b 101100101001; //  -1239 0xB29 
         10'd 619   :data =   12'b 101100011111; //  -1249 0xB1F 
         10'd 620   :data =   12'b 101100010101; //  -1259 0xB15 
         10'd 621   :data =   12'b 101100001011; //  -1269 0xB0B 
         10'd 622   :data =   12'b 101100000001; //  -1279 0xB01 
         10'd 623   :data =   12'b 101011111000; //  -1288 0xAF8 
         10'd 624   :data =   12'b 101011101110; //  -1298 0xAEE 
         10'd 625   :data =   12'b 101011100100; //  -1308 0xAE4 
         10'd 626   :data =   12'b 101011011011; //  -1317 0xADB 
         10'd 627   :data =   12'b 101011010001; //  -1327 0xAD1 
         10'd 628   :data =   12'b 101011000111; //  -1337 0xAC7 
         10'd 629   :data =   12'b 101010111110; //  -1346 0xABE 
         10'd 630   :data =   12'b 101010110101; //  -1355 0xAB5 
         10'd 631   :data =   12'b 101010101011; //  -1365 0xAAB 
         10'd 632   :data =   12'b 101010100010; //  -1374 0xAA2 
         10'd 633   :data =   12'b 101010011001; //  -1383 0xA99 
         10'd 634   :data =   12'b 101010001111; //  -1393 0xA8F 
         10'd 635   :data =   12'b 101010000110; //  -1402 0xA86 
         10'd 636   :data =   12'b 101001111101; //  -1411 0xA7D 
         10'd 637   :data =   12'b 101001110100; //  -1420 0xA74 
         10'd 638   :data =   12'b 101001101011; //  -1429 0xA6B 
         10'd 639   :data =   12'b 101001100010; //  -1438 0xA62 
         10'd 640   :data =   12'b 101001011001; //  -1447 0xA59 
         10'd 641   :data =   12'b 101001010000; //  -1456 0xA50 
         10'd 642   :data =   12'b 101001000111; //  -1465 0xA47 
         10'd 643   :data =   12'b 101000111111; //  -1473 0xA3F 
         10'd 644   :data =   12'b 101000110110; //  -1482 0xA36 
         10'd 645   :data =   12'b 101000101101; //  -1491 0xA2D 
         10'd 646   :data =   12'b 101000100101; //  -1499 0xA25 
         10'd 647   :data =   12'b 101000011100; //  -1508 0xA1C 
         10'd 648   :data =   12'b 101000010100; //  -1516 0xA14 
         10'd 649   :data =   12'b 101000001011; //  -1525 0xA0B 
         10'd 650   :data =   12'b 101000000011; //  -1533 0xA03 
         10'd 651   :data =   12'b 100111111011; //  -1541 0x9FB 
         10'd 652   :data =   12'b 100111110010; //  -1550 0x9F2 
         10'd 653   :data =   12'b 100111101010; //  -1558 0x9EA 
         10'd 654   :data =   12'b 100111100010; //  -1566 0x9E2 
         10'd 655   :data =   12'b 100111011010; //  -1574 0x9DA 
         10'd 656   :data =   12'b 100111010010; //  -1582 0x9D2 
         10'd 657   :data =   12'b 100111001010; //  -1590 0x9CA 
         10'd 658   :data =   12'b 100111000010; //  -1598 0x9C2 
         10'd 659   :data =   12'b 100110111011; //  -1605 0x9BB 
         10'd 660   :data =   12'b 100110110011; //  -1613 0x9B3 
         10'd 661   :data =   12'b 100110101011; //  -1621 0x9AB 
         10'd 662   :data =   12'b 100110100011; //  -1629 0x9A3 
         10'd 663   :data =   12'b 100110011100; //  -1636 0x99C 
         10'd 664   :data =   12'b 100110010100; //  -1644 0x994 
         10'd 665   :data =   12'b 100110001101; //  -1651 0x98D 
         10'd 666   :data =   12'b 100110000101; //  -1659 0x985 
         10'd 667   :data =   12'b 100101111110; //  -1666 0x97E 
         10'd 668   :data =   12'b 100101110111; //  -1673 0x977 
         10'd 669   :data =   12'b 100101110000; //  -1680 0x970 
         10'd 670   :data =   12'b 100101101001; //  -1687 0x969 
         10'd 671   :data =   12'b 100101100001; //  -1695 0x961 
         10'd 672   :data =   12'b 100101011010; //  -1702 0x95A 
         10'd 673   :data =   12'b 100101010100; //  -1708 0x954 
         10'd 674   :data =   12'b 100101001101; //  -1715 0x94D 
         10'd 675   :data =   12'b 100101000110; //  -1722 0x946 
         10'd 676   :data =   12'b 100100111111; //  -1729 0x93F 
         10'd 677   :data =   12'b 100100111000; //  -1736 0x938 
         10'd 678   :data =   12'b 100100110010; //  -1742 0x932 
         10'd 679   :data =   12'b 100100101011; //  -1749 0x92B 
         10'd 680   :data =   12'b 100100100101; //  -1755 0x925 
         10'd 681   :data =   12'b 100100011110; //  -1762 0x91E 
         10'd 682   :data =   12'b 100100011000; //  -1768 0x918 
         10'd 683   :data =   12'b 100100010010; //  -1774 0x912 
         10'd 684   :data =   12'b 100100001011; //  -1781 0x90B 
         10'd 685   :data =   12'b 100100000101; //  -1787 0x905 
         10'd 686   :data =   12'b 100011111111; //  -1793 0x8FF 
         10'd 687   :data =   12'b 100011111001; //  -1799 0x8F9 
         10'd 688   :data =   12'b 100011110011; //  -1805 0x8F3 
         10'd 689   :data =   12'b 100011101101; //  -1811 0x8ED 
         10'd 690   :data =   12'b 100011101000; //  -1816 0x8E8 
         10'd 691   :data =   12'b 100011100010; //  -1822 0x8E2 
         10'd 692   :data =   12'b 100011011100; //  -1828 0x8DC 
         10'd 693   :data =   12'b 100011010110; //  -1834 0x8D6 
         10'd 694   :data =   12'b 100011010001; //  -1839 0x8D1 
         10'd 695   :data =   12'b 100011001011; //  -1845 0x8CB 
         10'd 696   :data =   12'b 100011000110; //  -1850 0x8C6 
         10'd 697   :data =   12'b 100011000001; //  -1855 0x8C1 
         10'd 698   :data =   12'b 100010111011; //  -1861 0x8BB 
         10'd 699   :data =   12'b 100010110110; //  -1866 0x8B6 
         10'd 700   :data =   12'b 100010110001; //  -1871 0x8B1 
         10'd 701   :data =   12'b 100010101100; //  -1876 0x8AC 
         10'd 702   :data =   12'b 100010100111; //  -1881 0x8A7 
         10'd 703   :data =   12'b 100010100010; //  -1886 0x8A2 
         10'd 704   :data =   12'b 100010011101; //  -1891 0x89D 
         10'd 705   :data =   12'b 100010011001; //  -1895 0x899 
         10'd 706   :data =   12'b 100010010100; //  -1900 0x894 
         10'd 707   :data =   12'b 100010001111; //  -1905 0x88F 
         10'd 708   :data =   12'b 100010001011; //  -1909 0x88B 
         10'd 709   :data =   12'b 100010000110; //  -1914 0x886 
         10'd 710   :data =   12'b 100010000010; //  -1918 0x882 
         10'd 711   :data =   12'b 100001111101; //  -1923 0x87D 
         10'd 712   :data =   12'b 100001111001; //  -1927 0x879 
         10'd 713   :data =   12'b 100001110101; //  -1931 0x875 
         10'd 714   :data =   12'b 100001110001; //  -1935 0x871 
         10'd 715   :data =   12'b 100001101101; //  -1939 0x86D 
         10'd 716   :data =   12'b 100001101001; //  -1943 0x869 
         10'd 717   :data =   12'b 100001100101; //  -1947 0x865 
         10'd 718   :data =   12'b 100001100001; //  -1951 0x861 
         10'd 719   :data =   12'b 100001011101; //  -1955 0x85D 
         10'd 720   :data =   12'b 100001011010; //  -1958 0x85A 
         10'd 721   :data =   12'b 100001010110; //  -1962 0x856 
         10'd 722   :data =   12'b 100001010010; //  -1966 0x852 
         10'd 723   :data =   12'b 100001001111; //  -1969 0x84F 
         10'd 724   :data =   12'b 100001001100; //  -1972 0x84C 
         10'd 725   :data =   12'b 100001001000; //  -1976 0x848 
         10'd 726   :data =   12'b 100001000101; //  -1979 0x845 
         10'd 727   :data =   12'b 100001000010; //  -1982 0x842 
         10'd 728   :data =   12'b 100000111111; //  -1985 0x83F 
         10'd 729   :data =   12'b 100000111100; //  -1988 0x83C 
         10'd 730   :data =   12'b 100000111001; //  -1991 0x839 
         10'd 731   :data =   12'b 100000110110; //  -1994 0x836 
         10'd 732   :data =   12'b 100000110011; //  -1997 0x833 
         10'd 733   :data =   12'b 100000110001; //  -1999 0x831 
         10'd 734   :data =   12'b 100000101110; //  -2002 0x82E 
         10'd 735   :data =   12'b 100000101011; //  -2005 0x82B 
         10'd 736   :data =   12'b 100000101001; //  -2007 0x829 
         10'd 737   :data =   12'b 100000100110; //  -2010 0x826 
         10'd 738   :data =   12'b 100000100100; //  -2012 0x824 
         10'd 739   :data =   12'b 100000100010; //  -2014 0x822 
         10'd 740   :data =   12'b 100000100000; //  -2016 0x820 
         10'd 741   :data =   12'b 100000011110; //  -2018 0x81E 
         10'd 742   :data =   12'b 100000011011; //  -2021 0x81B 
         10'd 743   :data =   12'b 100000011010; //  -2022 0x81A 
         10'd 744   :data =   12'b 100000011000; //  -2024 0x818 
         10'd 745   :data =   12'b 100000010110; //  -2026 0x816 
         10'd 746   :data =   12'b 100000010100; //  -2028 0x814 
         10'd 747   :data =   12'b 100000010010; //  -2030 0x812 
         10'd 748   :data =   12'b 100000010001; //  -2031 0x811 
         10'd 749   :data =   12'b 100000001111; //  -2033 0x80F 
         10'd 750   :data =   12'b 100000001110; //  -2034 0x80E 
         10'd 751   :data =   12'b 100000001101; //  -2035 0x80D 
         10'd 752   :data =   12'b 100000001011; //  -2037 0x80B 
         10'd 753   :data =   12'b 100000001010; //  -2038 0x80A 
         10'd 754   :data =   12'b 100000001001; //  -2039 0x809 
         10'd 755   :data =   12'b 100000001000; //  -2040 0x808 
         10'd 756   :data =   12'b 100000000111; //  -2041 0x807 
         10'd 757   :data =   12'b 100000000110; //  -2042 0x806 
         10'd 758   :data =   12'b 100000000101; //  -2043 0x805 
         10'd 759   :data =   12'b 100000000101; //  -2043 0x805 
         10'd 760   :data =   12'b 100000000100; //  -2044 0x804 
         10'd 761   :data =   12'b 100000000011; //  -2045 0x803 
         10'd 762   :data =   12'b 100000000011; //  -2045 0x803 
         10'd 763   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 764   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 765   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 766   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 767   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 768   :data =   12'b 100000000001; //  -2047 0x801 
         10'd 769   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 770   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 771   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 772   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 773   :data =   12'b 100000000010; //  -2046 0x802 
         10'd 774   :data =   12'b 100000000011; //  -2045 0x803 
         10'd 775   :data =   12'b 100000000011; //  -2045 0x803 
         10'd 776   :data =   12'b 100000000100; //  -2044 0x804 
         10'd 777   :data =   12'b 100000000101; //  -2043 0x805 
         10'd 778   :data =   12'b 100000000101; //  -2043 0x805 
         10'd 779   :data =   12'b 100000000110; //  -2042 0x806 
         10'd 780   :data =   12'b 100000000111; //  -2041 0x807 
         10'd 781   :data =   12'b 100000001000; //  -2040 0x808 
         10'd 782   :data =   12'b 100000001001; //  -2039 0x809 
         10'd 783   :data =   12'b 100000001010; //  -2038 0x80A 
         10'd 784   :data =   12'b 100000001011; //  -2037 0x80B 
         10'd 785   :data =   12'b 100000001101; //  -2035 0x80D 
         10'd 786   :data =   12'b 100000001110; //  -2034 0x80E 
         10'd 787   :data =   12'b 100000001111; //  -2033 0x80F 
         10'd 788   :data =   12'b 100000010001; //  -2031 0x811 
         10'd 789   :data =   12'b 100000010010; //  -2030 0x812 
         10'd 790   :data =   12'b 100000010100; //  -2028 0x814 
         10'd 791   :data =   12'b 100000010110; //  -2026 0x816 
         10'd 792   :data =   12'b 100000011000; //  -2024 0x818 
         10'd 793   :data =   12'b 100000011010; //  -2022 0x81A 
         10'd 794   :data =   12'b 100000011011; //  -2021 0x81B 
         10'd 795   :data =   12'b 100000011110; //  -2018 0x81E 
         10'd 796   :data =   12'b 100000100000; //  -2016 0x820 
         10'd 797   :data =   12'b 100000100010; //  -2014 0x822 
         10'd 798   :data =   12'b 100000100100; //  -2012 0x824 
         10'd 799   :data =   12'b 100000100110; //  -2010 0x826 
         10'd 800   :data =   12'b 100000101001; //  -2007 0x829 
         10'd 801   :data =   12'b 100000101011; //  -2005 0x82B 
         10'd 802   :data =   12'b 100000101110; //  -2002 0x82E 
         10'd 803   :data =   12'b 100000110001; //  -1999 0x831 
         10'd 804   :data =   12'b 100000110011; //  -1997 0x833 
         10'd 805   :data =   12'b 100000110110; //  -1994 0x836 
         10'd 806   :data =   12'b 100000111001; //  -1991 0x839 
         10'd 807   :data =   12'b 100000111100; //  -1988 0x83C 
         10'd 808   :data =   12'b 100000111111; //  -1985 0x83F 
         10'd 809   :data =   12'b 100001000010; //  -1982 0x842 
         10'd 810   :data =   12'b 100001000101; //  -1979 0x845 
         10'd 811   :data =   12'b 100001001000; //  -1976 0x848 
         10'd 812   :data =   12'b 100001001100; //  -1972 0x84C 
         10'd 813   :data =   12'b 100001001111; //  -1969 0x84F 
         10'd 814   :data =   12'b 100001010010; //  -1966 0x852 
         10'd 815   :data =   12'b 100001010110; //  -1962 0x856 
         10'd 816   :data =   12'b 100001011010; //  -1958 0x85A 
         10'd 817   :data =   12'b 100001011101; //  -1955 0x85D 
         10'd 818   :data =   12'b 100001100001; //  -1951 0x861 
         10'd 819   :data =   12'b 100001100101; //  -1947 0x865 
         10'd 820   :data =   12'b 100001101001; //  -1943 0x869 
         10'd 821   :data =   12'b 100001101101; //  -1939 0x86D 
         10'd 822   :data =   12'b 100001110001; //  -1935 0x871 
         10'd 823   :data =   12'b 100001110101; //  -1931 0x875 
         10'd 824   :data =   12'b 100001111001; //  -1927 0x879 
         10'd 825   :data =   12'b 100001111101; //  -1923 0x87D 
         10'd 826   :data =   12'b 100010000010; //  -1918 0x882 
         10'd 827   :data =   12'b 100010000110; //  -1914 0x886 
         10'd 828   :data =   12'b 100010001011; //  -1909 0x88B 
         10'd 829   :data =   12'b 100010001111; //  -1905 0x88F 
         10'd 830   :data =   12'b 100010010100; //  -1900 0x894 
         10'd 831   :data =   12'b 100010011001; //  -1895 0x899 
         10'd 832   :data =   12'b 100010011101; //  -1891 0x89D 
         10'd 833   :data =   12'b 100010100010; //  -1886 0x8A2 
         10'd 834   :data =   12'b 100010100111; //  -1881 0x8A7 
         10'd 835   :data =   12'b 100010101100; //  -1876 0x8AC 
         10'd 836   :data =   12'b 100010110001; //  -1871 0x8B1 
         10'd 837   :data =   12'b 100010110110; //  -1866 0x8B6 
         10'd 838   :data =   12'b 100010111011; //  -1861 0x8BB 
         10'd 839   :data =   12'b 100011000001; //  -1855 0x8C1 
         10'd 840   :data =   12'b 100011000110; //  -1850 0x8C6 
         10'd 841   :data =   12'b 100011001011; //  -1845 0x8CB 
         10'd 842   :data =   12'b 100011010001; //  -1839 0x8D1 
         10'd 843   :data =   12'b 100011010110; //  -1834 0x8D6 
         10'd 844   :data =   12'b 100011011100; //  -1828 0x8DC 
         10'd 845   :data =   12'b 100011100010; //  -1822 0x8E2 
         10'd 846   :data =   12'b 100011101000; //  -1816 0x8E8 
         10'd 847   :data =   12'b 100011101101; //  -1811 0x8ED 
         10'd 848   :data =   12'b 100011110011; //  -1805 0x8F3 
         10'd 849   :data =   12'b 100011111001; //  -1799 0x8F9 
         10'd 850   :data =   12'b 100011111111; //  -1793 0x8FF 
         10'd 851   :data =   12'b 100100000101; //  -1787 0x905 
         10'd 852   :data =   12'b 100100001011; //  -1781 0x90B 
         10'd 853   :data =   12'b 100100010010; //  -1774 0x912 
         10'd 854   :data =   12'b 100100011000; //  -1768 0x918 
         10'd 855   :data =   12'b 100100011110; //  -1762 0x91E 
         10'd 856   :data =   12'b 100100100101; //  -1755 0x925 
         10'd 857   :data =   12'b 100100101011; //  -1749 0x92B 
         10'd 858   :data =   12'b 100100110010; //  -1742 0x932 
         10'd 859   :data =   12'b 100100111000; //  -1736 0x938 
         10'd 860   :data =   12'b 100100111111; //  -1729 0x93F 
         10'd 861   :data =   12'b 100101000110; //  -1722 0x946 
         10'd 862   :data =   12'b 100101001101; //  -1715 0x94D 
         10'd 863   :data =   12'b 100101010100; //  -1708 0x954 
         10'd 864   :data =   12'b 100101011010; //  -1702 0x95A 
         10'd 865   :data =   12'b 100101100001; //  -1695 0x961 
         10'd 866   :data =   12'b 100101101001; //  -1687 0x969 
         10'd 867   :data =   12'b 100101110000; //  -1680 0x970 
         10'd 868   :data =   12'b 100101110111; //  -1673 0x977 
         10'd 869   :data =   12'b 100101111110; //  -1666 0x97E 
         10'd 870   :data =   12'b 100110000101; //  -1659 0x985 
         10'd 871   :data =   12'b 100110001101; //  -1651 0x98D 
         10'd 872   :data =   12'b 100110010100; //  -1644 0x994 
         10'd 873   :data =   12'b 100110011100; //  -1636 0x99C 
         10'd 874   :data =   12'b 100110100011; //  -1629 0x9A3 
         10'd 875   :data =   12'b 100110101011; //  -1621 0x9AB 
         10'd 876   :data =   12'b 100110110011; //  -1613 0x9B3 
         10'd 877   :data =   12'b 100110111011; //  -1605 0x9BB 
         10'd 878   :data =   12'b 100111000010; //  -1598 0x9C2 
         10'd 879   :data =   12'b 100111001010; //  -1590 0x9CA 
         10'd 880   :data =   12'b 100111010010; //  -1582 0x9D2 
         10'd 881   :data =   12'b 100111011010; //  -1574 0x9DA 
         10'd 882   :data =   12'b 100111100010; //  -1566 0x9E2 
         10'd 883   :data =   12'b 100111101010; //  -1558 0x9EA 
         10'd 884   :data =   12'b 100111110010; //  -1550 0x9F2 
         10'd 885   :data =   12'b 100111111011; //  -1541 0x9FB 
         10'd 886   :data =   12'b 101000000011; //  -1533 0xA03 
         10'd 887   :data =   12'b 101000001011; //  -1525 0xA0B 
         10'd 888   :data =   12'b 101000010100; //  -1516 0xA14 
         10'd 889   :data =   12'b 101000011100; //  -1508 0xA1C 
         10'd 890   :data =   12'b 101000100101; //  -1499 0xA25 
         10'd 891   :data =   12'b 101000101101; //  -1491 0xA2D 
         10'd 892   :data =   12'b 101000110110; //  -1482 0xA36 
         10'd 893   :data =   12'b 101000111111; //  -1473 0xA3F 
         10'd 894   :data =   12'b 101001000111; //  -1465 0xA47 
         10'd 895   :data =   12'b 101001010000; //  -1456 0xA50 
         10'd 896   :data =   12'b 101001011001; //  -1447 0xA59 
         10'd 897   :data =   12'b 101001100010; //  -1438 0xA62 
         10'd 898   :data =   12'b 101001101011; //  -1429 0xA6B 
         10'd 899   :data =   12'b 101001110100; //  -1420 0xA74 
         10'd 900   :data =   12'b 101001111101; //  -1411 0xA7D 
         10'd 901   :data =   12'b 101010000110; //  -1402 0xA86 
         10'd 902   :data =   12'b 101010001111; //  -1393 0xA8F 
         10'd 903   :data =   12'b 101010011001; //  -1383 0xA99 
         10'd 904   :data =   12'b 101010100010; //  -1374 0xAA2 
         10'd 905   :data =   12'b 101010101011; //  -1365 0xAAB 
         10'd 906   :data =   12'b 101010110101; //  -1355 0xAB5 
         10'd 907   :data =   12'b 101010111110; //  -1346 0xABE 
         10'd 908   :data =   12'b 101011000111; //  -1337 0xAC7 
         10'd 909   :data =   12'b 101011010001; //  -1327 0xAD1 
         10'd 910   :data =   12'b 101011011011; //  -1317 0xADB 
         10'd 911   :data =   12'b 101011100100; //  -1308 0xAE4 
         10'd 912   :data =   12'b 101011101110; //  -1298 0xAEE 
         10'd 913   :data =   12'b 101011111000; //  -1288 0xAF8 
         10'd 914   :data =   12'b 101100000001; //  -1279 0xB01 
         10'd 915   :data =   12'b 101100001011; //  -1269 0xB0B 
         10'd 916   :data =   12'b 101100010101; //  -1259 0xB15 
         10'd 917   :data =   12'b 101100011111; //  -1249 0xB1F 
         10'd 918   :data =   12'b 101100101001; //  -1239 0xB29 
         10'd 919   :data =   12'b 101100110011; //  -1229 0xB33 
         10'd 920   :data =   12'b 101100111101; //  -1219 0xB3D 
         10'd 921   :data =   12'b 101101000111; //  -1209 0xB47 
         10'd 922   :data =   12'b 101101010001; //  -1199 0xB51 
         10'd 923   :data =   12'b 101101011100; //  -1188 0xB5C 
         10'd 924   :data =   12'b 101101100110; //  -1178 0xB66 
         10'd 925   :data =   12'b 101101110000; //  -1168 0xB70 
         10'd 926   :data =   12'b 101101111010; //  -1158 0xB7A 
         10'd 927   :data =   12'b 101110000101; //  -1147 0xB85 
         10'd 928   :data =   12'b 101110001111; //  -1137 0xB8F 
         10'd 929   :data =   12'b 101110011010; //  -1126 0xB9A 
         10'd 930   :data =   12'b 101110100100; //  -1116 0xBA4 
         10'd 931   :data =   12'b 101110101111; //  -1105 0xBAF 
         10'd 932   :data =   12'b 101110111001; //  -1095 0xBB9 
         10'd 933   :data =   12'b 101111000100; //  -1084 0xBC4 
         10'd 934   :data =   12'b 101111001111; //  -1073 0xBCF 
         10'd 935   :data =   12'b 101111011001; //  -1063 0xBD9 
         10'd 936   :data =   12'b 101111100100; //  -1052 0xBE4 
         10'd 937   :data =   12'b 101111101111; //  -1041 0xBEF 
         10'd 938   :data =   12'b 101111111010; //  -1030 0xBFA 
         10'd 939   :data =   12'b 110000000101; //  -1019 0xC05 
         10'd 940   :data =   12'b 110000010000; //  -1008 0xC10 
         10'd 941   :data =   12'b 110000011010; //   -998 0xC1A 
         10'd 942   :data =   12'b 110000100101; //   -987 0xC25 
         10'd 943   :data =   12'b 110000110000; //   -976 0xC30 
         10'd 944   :data =   12'b 110000111100; //   -964 0xC3C 
         10'd 945   :data =   12'b 110001000111; //   -953 0xC47 
         10'd 946   :data =   12'b 110001010010; //   -942 0xC52 
         10'd 947   :data =   12'b 110001011101; //   -931 0xC5D 
         10'd 948   :data =   12'b 110001101000; //   -920 0xC68 
         10'd 949   :data =   12'b 110001110011; //   -909 0xC73 
         10'd 950   :data =   12'b 110001111111; //   -897 0xC7F 
         10'd 951   :data =   12'b 110010001010; //   -886 0xC8A 
         10'd 952   :data =   12'b 110010010101; //   -875 0xC95 
         10'd 953   :data =   12'b 110010100001; //   -863 0xCA1 
         10'd 954   :data =   12'b 110010101100; //   -852 0xCAC 
         10'd 955   :data =   12'b 110010111000; //   -840 0xCB8 
         10'd 956   :data =   12'b 110011000011; //   -829 0xCC3 
         10'd 957   :data =   12'b 110011001110; //   -818 0xCCE 
         10'd 958   :data =   12'b 110011011010; //   -806 0xCDA 
         10'd 959   :data =   12'b 110011100110; //   -794 0xCE6 
         10'd 960   :data =   12'b 110011110001; //   -783 0xCF1 
         10'd 961   :data =   12'b 110011111101; //   -771 0xCFD 
         10'd 962   :data =   12'b 110100001000; //   -760 0xD08 
         10'd 963   :data =   12'b 110100010100; //   -748 0xD14 
         10'd 964   :data =   12'b 110100100000; //   -736 0xD20 
         10'd 965   :data =   12'b 110100101100; //   -724 0xD2C 
         10'd 966   :data =   12'b 110100110111; //   -713 0xD37 
         10'd 967   :data =   12'b 110101000011; //   -701 0xD43 
         10'd 968   :data =   12'b 110101001111; //   -689 0xD4F 
         10'd 969   :data =   12'b 110101011011; //   -677 0xD5B 
         10'd 970   :data =   12'b 110101100111; //   -665 0xD67 
         10'd 971   :data =   12'b 110101110010; //   -654 0xD72 
         10'd 972   :data =   12'b 110101111110; //   -642 0xD7E 
         10'd 973   :data =   12'b 110110001010; //   -630 0xD8A 
         10'd 974   :data =   12'b 110110010110; //   -618 0xD96 
         10'd 975   :data =   12'b 110110100010; //   -606 0xDA2 
         10'd 976   :data =   12'b 110110101110; //   -594 0xDAE 
         10'd 977   :data =   12'b 110110111010; //   -582 0xDBA 
         10'd 978   :data =   12'b 110111000110; //   -570 0xDC6 
         10'd 979   :data =   12'b 110111010010; //   -558 0xDD2 
         10'd 980   :data =   12'b 110111011111; //   -545 0xDDF 
         10'd 981   :data =   12'b 110111101011; //   -533 0xDEB 
         10'd 982   :data =   12'b 110111110111; //   -521 0xDF7 
         10'd 983   :data =   12'b 111000000011; //   -509 0xE03 
         10'd 984   :data =   12'b 111000001111; //   -497 0xE0F 
         10'd 985   :data =   12'b 111000011011; //   -485 0xE1B 
         10'd 986   :data =   12'b 111000101000; //   -472 0xE28 
         10'd 987   :data =   12'b 111000110100; //   -460 0xE34 
         10'd 988   :data =   12'b 111001000000; //   -448 0xE40 
         10'd 989   :data =   12'b 111001001100; //   -436 0xE4C 
         10'd 990   :data =   12'b 111001011001; //   -423 0xE59 
         10'd 991   :data =   12'b 111001100101; //   -411 0xE65 
         10'd 992   :data =   12'b 111001110001; //   -399 0xE71 
         10'd 993   :data =   12'b 111001111101; //   -387 0xE7D 
         10'd 994   :data =   12'b 111010001010; //   -374 0xE8A 
         10'd 995   :data =   12'b 111010010110; //   -362 0xE96 
         10'd 996   :data =   12'b 111010100011; //   -349 0xEA3 
         10'd 997   :data =   12'b 111010101111; //   -337 0xEAF 
         10'd 998   :data =   12'b 111010111011; //   -325 0xEBB 
         10'd 999   :data =   12'b 111011001000; //   -312 0xEC8 
         10'd 1000  :data =   12'b 111011010100; //   -300 0xED4 
         10'd 1001  :data =   12'b 111011100001; //   -287 0xEE1 
         10'd 1002  :data =   12'b 111011101101; //   -275 0xEED 
         10'd 1003  :data =   12'b 111011111001; //   -263 0xEF9 
         10'd 1004  :data =   12'b 111100000110; //   -250 0xF06 
         10'd 1005  :data =   12'b 111100010010; //   -238 0xF12 
         10'd 1006  :data =   12'b 111100011111; //   -225 0xF1F 
         10'd 1007  :data =   12'b 111100101011; //   -213 0xF2B 
         10'd 1008  :data =   12'b 111100111000; //   -200 0xF38 
         10'd 1009  :data =   12'b 111101000100; //   -188 0xF44 
         10'd 1010  :data =   12'b 111101010001; //   -175 0xF51 
         10'd 1011  :data =   12'b 111101011101; //   -163 0xF5D 
         10'd 1012  :data =   12'b 111101101010; //   -150 0xF6A 
         10'd 1013  :data =   12'b 111101110110; //   -138 0xF76 
         10'd 1014  :data =   12'b 111110000011; //   -125 0xF83 
         10'd 1015  :data =   12'b 111110010000; //   -112 0xF90 
         10'd 1016  :data =   12'b 111110011100; //   -100 0xF9C 
         10'd 1017  :data =   12'b 111110101001; //    -87 0xFA9 
         10'd 1018  :data =   12'b 111110110101; //    -75 0xFB5 
         10'd 1019  :data =   12'b 111111000010; //    -62 0xFC2 
         10'd 1020  :data =   12'b 111111001110; //    -50 0xFCE 
         10'd 1021  :data =   12'b 111111011011; //    -37 0xFDB 
         10'd 1022  :data =   12'b 111111100111; //    -25 0xFE7 
         10'd 1023  :data =   12'b 111111110100; //    -12 0xFF4 
      default : data =   0;
      endcase
    endmodule 
    
    `timescale 1ns/1ps
    
    //parameter   cycle    =   5;//时钟周期
    
    module tb_top_dds;
    reg				clk;
    reg				rst_n;
    reg		[31:0]	fword;
    reg		[09:0]	pword;
    reg 	[07:0]	vword;
    wire	[11:0]	data_0;	
    wire	[11:0]	data_1;
    
    top_dds inst(
    		.clk		(clk),
    		.rst_n		(rst_n),
    		.fword		(fword),
    		.pword		(pword),
    		.vword		(vword),
    		.data_0		(data_0),
    		.data_1		(data_1)	
    		);
    initial begin
    	clk 	= 1'b0;
    	rst_n 	= 1'b0;
    
    
    #10
    	rst_n	= 1'b1		;
    	fword	= 32'd85899	;
    	pword	= 10'd63	;
    	vword   = 8'd1		;
    	#2000000
    
        $stop;
    	
    end
    
    always #2.5  clk = ~clk;              //时钟周期 50MHz
    
    endmodule
    
  2. Makefile脚本编写

    all: com sim
    
    com:
    	vcs tb_top_dds.v top_dds.v dds.v rom.v -l readme.log +v2kk -debug_all
    
    sim:
    	./simv -gui
    
    clean:
    	rm -r csrc DVEfiles simv.daidir *.vpd simv *.key
    
  3. 仿真实验调波形

    [IC@IC 02_vcs_sim]$ ls
    dds.v  Makefile  rom.v  tb_top_dds.v  top_dds.v
    [IC@IC 02_vcs_sim]$ make
    vcs tb_top_dds.v top_dds.v dds.v rom.v -l readme.log +v2k -debug_all
                             Chronologic VCS (TM)
                Version I-2014.03 -- Wed Apr 12 09:11:17 2023
                   Copyright (c) 1991-2014 by Synopsys Inc.
                             ALL RIGHTS RESERVED
    
    This program is proprietary and confidential information of Synopsys Inc.
    and may be used and disclosed only as authorized in a license agreement
    controlling such use and disclosure.
    
    Parsing design file 'tb_top_dds.v'
    Parsing design file 'top_dds.v'
    Parsing design file 'dds.v'
    Parsing design file 'rom.v'
    Top Level Modules:
           tb_top_dds
    TimeScale is 1 ns / 1 ps
    Starting vcs inline pass...
    2 modules and 0 UDP read.
    recompiling module tb_top_dds
    recompiling module rom
    Both modules done.
    make[1]: Entering directory `/home/IC/Desktop/DDS_IC/02_vcs_sim/csrc'
    rm -f _csrc*.so linux_scvhdl_*.so pre_vcsobj_*.so share_vcsobj_*.so
    ld -m elf_i386 -shared -o .//../simv.daidir//_csrc1.so --whole-archive _vcsobj_1_1.a  --no-whole-archive
    ld -m elf_i386 -shared -o .//../simv.daidir//_csrc0.so 5NrI_d.o 5NrIB_d.o SIM_l.o  
    if [ -x ../simv ]; then chmod -x ../simv; fi
    g++  -o ../simv  -m32 -m32   -Wl,-rpath-link=./ -Wl,-rpath='$ORIGIN'/simv.daidir/ -Wl,-rpath='$ORIGIN'/simv.daidir//scsim.db.dir  _csrc1.so _csrc0.so     rmapats_mop.o rmapats.o rmar.o           /opt/Synopsys/VCS2014/linux/lib/libzerosoft_rt_stubs.so /opt/Synopsys/VCS2014/linux/lib/libvirsim.so /opt/Synopsys/VCS2014/linux/lib/librterrorinf.so /opt/Synopsys/VCS2014/linux/lib/libsnpsmalloc.so    /opt/Synopsys/VCS2014/linux/lib/libvcsnew.so /opt/Synopsys/VCS2014/linux/lib/libuclinative.so   -Wl,-whole-archive /opt/Synopsys/VCS2014/linux/lib/libvcsucli.so -Wl,-no-whole-archive          /opt/Synopsys/VCS2014/linux/lib/vcs_save_restore_new.o /opt/Synopsys/VCS2014/linux/lib/ctype-stubs_32.a -ldl -lm  -lc -lpthread -ldl 
    ../simv up to date
    make[1]: Leaving directory `/home/IC/Desktop/DDS_IC/02_vcs_sim/csrc'
    CPU time: .159 seconds to compile + .065 seconds to elab + .065 seconds to link
    ./simv -gui
    
    

ppO7NHU.jpg
ppO7aEF.jpg
ppO7tBT.jpg
ppO7Gj0.jpg
ppO7YuV.jpg
ppO7dN4.jpg
ppO7w4J.jpg
ppO7D3R.jpg
ppO7BC9.jpg