码迷,mamicode.com
首页 > 其他好文 > 详细

lut 查找表乘法器

时间:2015-06-14 15:01:53      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:

1.lut乘法器:

ab = ( ( a + b )2 )/4 - ( ( a - b )2 )/4

(一)取得 I1,取得 I2

I1 <= { A[7], A } + { B[7], B }; // C =A + B;

I2 <= { A[7], A } + { ~B[7], ( ~B + 1‘b1 ) }; // C = A - B;

(二)正值化 I1 和 I2

I1 <= I1[8] ? ( ~I1 + 1‘b1 ) : I1;

I2 <= I2[8] ? ( ~I2 + 1‘b1 ) : I2;

(三)正值化后的 I1 和 I2 送往查表。

     首先必须建立一个0-255的查表模块

module lut_module (
                            input clk,
                            input rst_n,
                            input [7:0] addr,
                            output [15:0] q
                            );
//----------------
reg [15:0] rq;
always@(posedge clk or negedge rst_n)
    if(!rst_n)
        rq <= 16d0;
    else 
        case (addr)
                0,1 : rq <= 16d0;
                2 : rq <= 16d1;
                3 : rq <= 16d2;
                4 : rq <= 16d4;
                5 : rq <= 16d6;
                6 : rq <= 16d9;
                7 : rq <= 16d12;
                8 : rq <= 16d16;
                9 : rq <= 16d20;
                10 : rq <= 16d25;
                11 : rq <= 16d30;
                12 : rq <= 16d36;
                13 : rq <= 16d42;
                14 : rq <= 16d49;
                15 : rq <= 16d56;
                16 : rq <= 16d64;
                17 : rq <= 16d72;
                18 : rq <= 16d81;
                19 : rq <= 16d90;
                20 : rq <= 16d100;
                21 : rq <= 16d110;
                22 : rq <= 16d121;
                23 : rq <= 16d132;
                24 : rq <= 16d144;
                25 : rq <= 16d156;
                26 : rq <= 16d169;
                27 : rq <= 16d182;
                28 : rq <= 16d196;
                29 : rq <= 16d210;
                30 : rq <= 16d225;
                31 : rq <= 16d240;
                32 : rq <= 16d256;
                33 : rq <= 16d272;
                34 : rq <= 16d289;
                35 : rq <= 16d306;
                36 : rq <= 16d324;
                37 : rq <= 16d342;
                38 : rq <= 16d361;
                39 : rq <= 16d380;
                40 : rq <= 16d400;
                41 : rq <= 16d420;
                42 : rq <= 16d441;
                43 : rq <= 16d462;
                44 : rq <= 16d484;
                45 : rq <= 16d506;
                46 : rq <= 16d529;
                47 : rq <= 16d552;
                48 : rq <= 16d576;
                49 : rq <= 16d600;
                50 : rq <= 16d625;
                51 : rq <= 16d650;
                52 : rq <= 16d676;
                53 : rq <= 16d702;
                54 : rq <= 16d729;
                55 : rq <= 16d756;
                56 : rq <= 16d784;
                57 : rq <= 16d812;
                58 : rq <= 16d841;
                59 : rq <= 16d870;
                60 : rq <= 16d900;
                61 : rq <= 16d930;
                62 : rq <= 16d961;
                63 : rq <= 16d992;
                64 : rq <= 16d1024;
                65 : rq <= 16d1056;
                66 : rq <= 16d1089;
                67 : rq <= 16d1122;
                68 : rq <= 16d1156;
                69 : rq <= 16d1190;
                70 : rq <= 16d1225;
                71 : rq <= 16d1260;
                72 : rq <= 16d1296;
                73 : rq <= 16d1332;
                74 : rq <= 16d1369;
                75 : rq <= 16d1406;
                76 : rq <= 16d1444;
                77 : rq <= 16d1482;
                78 : rq <= 16d1521;
                79 : rq <= 16d1560;
                80 : rq <= 16d1600;
                 81 : rq <= 16d1640;
                 82 : rq <= 16d1681;
                 83 : rq <= 16d1722;
                 84 : rq <= 16d1764;
                 85 : rq <= 16d1806;
                 86 : rq <= 16d1849;
                 87 : rq <= 16d1892;
                 88 : rq <= 16d1936;
                 89 : rq <= 16d1980;
                 90 : rq <= 16d2025;
                 91 : rq <= 16d2070;
                 92 : rq <= 16d2116;
                 93 : rq <= 16d2162;
                 94 : rq <= 16d2209;
                 95 : rq <= 16d2256;
                 96 : rq <= 16d2304;
                 97 : rq <= 16d2352;
                 98 : rq <= 16d2401;
                 99 : rq <= 16d2450;
                 100 : rq <= 16d2500;
                 101 : rq <= 16d2550;
                 102 : rq <= 16d2601;
                 103 : rq <= 16d2652;
                 104 : rq <= 16d2704;
                 105 : rq <= 16d2756;
                 106 : rq <= 16d2809;
                 107 : rq <= 16d2862;
                 108 : rq <= 16d2916;
                 109 : rq <= 16d2970;
                 110 : rq <= 16d3025;
                 111 : rq <= 16d3080;
                 112 : rq <= 16d3136;
                 113 : rq <= 16d3192;
                 114 : rq <= 16d3249;
                 115 : rq <= 16d3306;
                 116 : rq <= 16d3364;
                 117 : rq <= 16d3422;
                 118 : rq <= 16d3481;
                 119 : rq <= 16d3540;
                 120 : rq <= 16d3600;
                 121 : rq <= 16d3660;
                 122 : rq <= 16d3721;
                 123 : rq <= 16d3782;
                 124 : rq <= 16d3844;
                 125 : rq <= 16d3906;
                 126 : rq <= 16d3969;
                 127 : rq <= 16d4032;
                 128 : rq <= 16d4096;
                 129 : rq <= 16d4160;
                 130 : rq <= 16d4225;
                 131 : rq <= 16d4290;
                 132 : rq <= 16d4356;
                 133 : rq <= 16d4422;
                 134 : rq <= 16d4489;
                 135 : rq <= 16d4556;
                 136 : rq <= 16d4624;
                 137 : rq <= 16d4692;
                 138 : rq <= 16d4761;
                 139 : rq <= 16d4830;
                 140 : rq <= 16d4900;
                 141 : rq <= 16d4970;
                 142 : rq <= 16d5041;
                 143 : rq <= 16d5112;
                 144 : rq <= 16d5184;
                 145 : rq <= 16d5256;
                 146 : rq <= 16d5329;
                 147 : rq <= 16d5402;
                 148 : rq <= 16d5476;
                 149 : rq <= 16d5550;
                 150 : rq <= 16d5625;
                 151 : rq <= 16d5700;
                 152 : rq <= 16d5776;
                 153 : rq <= 16d5852;
                 154 : rq <= 16d5929;
                 155 : rq <= 16d6006;
                 156 : rq <= 16d6084;
                 157 : rq <= 16d6162;
                 158 : rq <= 16d6241;
                 159 : rq <= 16d6320;
                 160 : rq <= 16d6400;
                 161 : rq <= 16d6480;
                 162 : rq <= 16d6561;
                 163 : rq <= 16d6642;
                 164 : rq <= 16d6724;
                 165 : rq <= 16d6806;
                 166 : rq <= 16d6889;
                 167 : rq <= 16d6972;
                 168 : rq <= 16d7056;
                 169 : rq <= 16d7140;
                 170 : rq <= 16d7225;
                 171 : rq <= 16d7310;
                 172 : rq <= 16d7396;
                 173 : rq <= 16d7482;
                 174 : rq <= 16d7569;
                 175 : rq <= 16d7656;
                 176 : rq <= 16d7744;
                 177 : rq <= 16d7832;
                 178 : rq <= 16d7921;
                 179 : rq <= 16d8010;
                 180 : rq <= 16d8100;
                 181 : rq <= 16d8190;
                 182 : rq <= 16d8281;
                 183 : rq <= 16d8372;
                 184 : rq <= 16d8464;
                 185 : rq <= 16d8556;
                 186 : rq <= 16d8649;
                 187 : rq <= 16d8742;
                 188 : rq <= 16d8836;
                 189 : rq <= 16d8930;
                 190 : rq <= 16d9025;
                 191 : rq <= 16d9120;
                 192 : rq <= 16d9216;
                 193 : rq <= 16d9312;
                 194 : rq <= 16d9409;
                 195 : rq <= 16d9506;
                 196 : rq <= 16d9604;
                 197 : rq <= 16d9702;
                 198 : rq <= 16d9801;
                 199 : rq <= 16d9900;
                 200 : rq <= 16d10000;
                 201 : rq <= 16d10100;
                 202 : rq <= 16d10201;
                 203 : rq <= 16d10302;
                 204 : rq <= 16d10404;
                 205 : rq <= 16d10506;
                 206 : rq <= 16d10609;
                 207 : rq <= 16d10712;
                 208 : rq <= 16d10816;
                 209 : rq <= 16d10920;
                 210 : rq <= 16d11025;
                 211 : rq <= 16d11130;
                 212 : rq <= 16d11236;
                 213 : rq <= 16d11342;
                 214 : rq <= 16d11449;
                 215 : rq <= 16d11556;
                 216 : rq <= 16d11664;
                 217 : rq <= 16d11772;
                 218 : rq <= 16d11881;
                 219 : rq <= 16d11990;
                 220 : rq <= 16d12100;
                 221 : rq <= 16d12210;
                 222 : rq <= 16d12321;
                 223 : rq <= 16d12432;
                 224 : rq <= 16d12544;
                 225 : rq <= 16d12656;
                 226 : rq <= 16d12769;
                 227 : rq <= 16d12882;
                 228 : rq <= 16d12996;
                 229 : rq <= 16d13100;
                 230 : rq <= 16d13225;
                 231 : rq <= 16d13340;
                 232 : rq <= 16d13456;
                 233 : rq <= 16d13572;
                 234 : rq <= 16d13689;
                 235 : rq <= 16d13806;
                 236 : rq <= 16d13924;
                 237 : rq <= 16d14042;
                 238 : rq <= 16d14161;
                 239 : rq <= 16d14280;
                 240 : rq <= 16d14400;
                 241 : rq <= 16d14520;
                 242 : rq <= 16d14641;
                 243 : rq <= 16d14762;
                 244 : rq <= 16d14884;
                 245 : rq <= 16d15006;
                 246 : rq <= 16d15129;
                 247 : rq <= 16d15252;
                 248 : rq <= 16d15376;
                 249 : rq <= 16d15500;
                 250 : rq <= 16d15625;
                 251 : rq <= 16d15750;
                 252 : rq <= 16d15876;
                 253 : rq <= 16d16002;
                 254 : rq <= 16d16129;
                 255 : rq <= 16d16256;

        endcase

//-----------------
 assign q = rq;
            


endmodule 

 

 

 

 

(四)取得查表结果 Q1_Sig 和 Q2_Sig 然后相减。

Data <= Q1_Sig + ( ~Q2_Sig + 1‘b1 ); i <= i + 1‘b1; end

(五)主module lut_multiplier_module  中需要注意的,调用时:

lut_module u1 (
                    .clk(clk),
                    .addr(i1[1][7:0]),
                    .q(q1_sig)
                    );

lut_module u2(
                    .clk(clk),
                    .addr(i2[1][7:0]),
                    .q(q2_sig)
                        );
            
//------------------
assign product = q1_sig + (~q2_sig + 1d1);

 

lut 查找表乘法器

标签:

原文地址:http://www.cnblogs.com/Dream666/p/4575061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!