亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 220model.v

?? 一本老師推薦的經典的VHDL覆蓋基礎的入門書籍
?? V
?? 第 1 頁 / 共 5 頁
字號:
            (lpm_representation != "UNSIGNED"))
        begin
            $display("Error!  LPM_REPRESENTATION value must be \"SIGNED\" or \"UNSIGNED\".");
            $finish;
        end    
        if (lpm_width <= 0)
        begin
            $display("Value of lpm_width parameter must be greater than 0(ERROR)");
            $finish;
        end
    end

// ALWAYS CONSTRUCT BLOCK
    // get the status of comparison 
    always @(dataa or datab or i_aclr)
    begin
        if (i_aclr) // reset all variables
            for (i = 0; i <= lpm_pipeline; i = i + 1)
            begin
                tmp_aeb2[i] = 'b0;
                tmp_agb2[i] = 'b0;
                tmp_alb2[i] = 'b0;
                tmp_aleb2[i] = 'b0;
                tmp_aneb2[i] = 'b0;
                tmp_ageb2[i] = 'b0;
            end
        else
        begin
            tmp_aeb2[lpm_pipeline] = (dataa == datab);
            tmp_aneb2[lpm_pipeline] = (dataa != datab);
    
            if ((lpm_representation == "SIGNED") &&
                (dataa[lpm_width-1] ^ datab[lpm_width-1]) == 1)
            begin
                // create latency
                tmp_alb2[lpm_pipeline] = (dataa > datab);
                tmp_agb2[lpm_pipeline] = (dataa < datab);
                tmp_aleb2[lpm_pipeline] = (dataa >= datab);
                tmp_ageb2[lpm_pipeline] = (dataa <= datab);
            end
            else
            begin
            // create latency   
                tmp_alb2[lpm_pipeline] = (dataa < datab);
                tmp_agb2[lpm_pipeline] = (dataa > datab);
                tmp_aleb2[lpm_pipeline] = (dataa <= datab);
                tmp_ageb2[lpm_pipeline] = (dataa >= datab);
            end
        end
    end

    // pipelining process
    always @(posedge i_clock)
    begin
        if ((!i_aclr) && (i_clken == 1))
            for (i = 0; i < lpm_pipeline; i = i + 1)
            begin
                tmp_alb2[i] <= tmp_alb2[i+1];
                tmp_aeb2[i] <= tmp_aeb2[i+1];
                tmp_agb2[i] <= tmp_agb2[i+1];
                tmp_aleb2[i] <= tmp_aleb2[i+1];
                tmp_aneb2[i] <= tmp_aneb2[i+1];
                tmp_ageb2[i] <= tmp_ageb2[i+1];
            end
    end

// CONTINOUS ASSIGNMENT
    assign alb = tmp_alb2[0];
    assign aeb = tmp_aeb2[0];
    assign agb = tmp_agb2[0];
    assign aleb = tmp_aleb2[0];
    assign aneb = tmp_aneb2[0];
    assign ageb = tmp_ageb2[0];

endmodule // lpm_compare

//START_MODULE_NAME------------------------------------------------------------
//
// Module Name     :  lpm_mult
//
// Description     :  Parameterized multiplier megafunction.
//
// Limitation      :  n/a
//
// Results expected:  dataa[] * datab[] + sum[].
//
//END_MODULE_NAME--------------------------------------------------------------

// BEGINNING OF MODULE
`timescale 1 ps / 1 ps

// MODULE DECLARATION
module lpm_mult ( 
    dataa,  // Multiplicand. (Required)
    datab,  // Multiplier. (Required)
    sum,    // Partial sum.
    aclr,   // Asynchronous clear for pipelined usage.
    clock,  // Clock for pipelined usage.
    clken,  // Clock enable for pipelined usage.
    result  // result = dataa[] * datab[] + sum. The product LSB is aligned with the sum LSB.
);

// GLOBAL PARAMETER DECLARATION
    parameter lpm_widtha = 1; // Width of the dataa[] port. (Required)
    parameter lpm_widthb = 1; // Width of the datab[] port. (Required)
    parameter lpm_widthp = 1; // Width of the result[] port. (Required)
    parameter lpm_widths = 1; // Width of the sum[] port. (Required)
    parameter lpm_representation  = "UNSIGNED"; // Type of multiplication performed
    parameter lpm_pipeline  = 0; // Number of clock cycles of latency 
    parameter lpm_type = "lpm_mult";
    parameter lpm_hint = "UNUSED";

// INPUT PORT DECLARATION    
    input  [lpm_widtha-1:0] dataa;
    input  [lpm_widthb-1:0] datab;
    input  [lpm_widths-1:0] sum;
    input  aclr;
    input  clock;
    input  clken;
    
// OUTPUT PORT DECLARATION    
    output [lpm_widthp-1:0] result;

// INTERNAL REGISTER/SIGNAL DECLARATION
    reg [lpm_widthp-1:0] resulttmp [lpm_pipeline:0];
    reg [lpm_widthp-1:0] i_prod;
    reg [lpm_widthp-1:0] t_p;
    reg [lpm_widths-1:0] i_prod_s;
    reg [lpm_widths-1:0] t_s;
    reg [lpm_widtha+lpm_widthb-1:0] i_prod_ab;
    reg [lpm_widtha-1:0] t_a;
    reg [lpm_widthb-1:0] t_b;
    reg sign_ab;
    reg sign_s;

// LOCAL INTEGER DECLARATION
    integer i;

// INTERNAL TRI DECLARATION
    tri0 aclr;
    tri0 clock;
    tri1 clken;

    buf (i_aclr, aclr);
    buf (i_clock, clock);
    buf (i_clken, clken);

// INITIAL CONSTRUCT BLOCK
    initial
    begin
        // check if lpm_widtha > 0
        if (lpm_widtha <= 0)
        begin
            $display("Error!  lpm_widtha must be greater than 0.\n");
            $finish;
        end    
        // check if lpm_widthb > 0
        if (lpm_widthb <= 0)
        begin
            $display("Error!  lpm_widthb must be greater than 0.\n");
            $finish;
        end
        // check if lpm_widthp > 0
        if (lpm_widthp <= 0)
        begin
            $display("Error!  lpm_widthp must be greater than 0.\n");
            $finish;
        end
        // check if lpm_widthp > 0
        if (lpm_widths <= 0)
        begin
            $display("Error!  lpm_widths must be greater than 0.\n");
            $finish;
        end
        // check for valid lpm_rep value
        if ((lpm_representation != "SIGNED") && (lpm_representation != "UNSIGNED"))
        begin
            $display("Error!  lpm_representation value must be \"SIGNED\" or \"UNSIGNED\".", $time);
            $finish;
        end
    end

// ALWAYS CONSTRUCT BLOCK
    always @(dataa or datab or sum or i_aclr)
    begin
        if (i_aclr) // clear the pipeline for result to 0
            for (i = 0; i <= lpm_pipeline; i = i + 1)
                resulttmp[i] = 'b0;
        else
        begin
            t_a = dataa;
            t_b = datab;
            t_s = sum;
            sign_ab = 0;
            sign_s = 0;

            // if inputs are sign number    
            if (lpm_representation == "SIGNED")
            begin
                sign_ab = dataa[lpm_widtha-1] ^ datab[lpm_widthb-1];
                sign_s = sum[lpm_widths-1];

                // if negative number, represent them as 2 compliment number.
                if (dataa[lpm_widtha-1] == 1)
                    t_a = (~dataa) + 1;
                if (datab[lpm_widthb-1] == 1)
                    t_b = (~datab) + 1;
                if (sum[lpm_widths-1] == 1)
                    t_s = (~sum) + 1;
            end
    
            // if sum port is not used
            if (sum === {lpm_widths{1'bz}})
            begin
                t_s = 0;
                sign_s = 0;
            end

            if (sign_ab == sign_s)
            begin
                i_prod = (t_a * t_b) + t_s;
                i_prod_s = (t_a * t_b) + t_s;
                i_prod_ab = (t_a * t_b) + t_s;
            end
            else
            begin
                i_prod = (t_a * t_b) - t_s;
                i_prod_s = (t_a * t_b) - t_s;
                i_prod_ab = (t_a * t_b) - t_s;
            end

            // if dataa[] * datab[] produces negative number, compliment the result
            if (sign_ab)
            begin
                i_prod = (~i_prod) + 1;
                i_prod_s = (~i_prod_s) + 1;
                i_prod_ab = (~i_prod_ab) + 1;
            end

            if ((lpm_widthp < lpm_widths) || (lpm_widthp < lpm_widtha+lpm_widthb))
                for (i = 0; i < lpm_widthp; i = i + 1)
                    i_prod[lpm_widthp-1-i] = (lpm_widths > lpm_widtha+lpm_widthb)
                                             ? i_prod_s[lpm_widths-1-i]
                                             : i_prod_ab[lpm_widtha+lpm_widthb-1-i];
                                             
            // pipelining the result
            resulttmp[lpm_pipeline] = i_prod;
        end
    end

    always @(posedge i_clock)
    begin
        if (!i_aclr && i_clken == 1)
            for (i = 0; i < lpm_pipeline; i = i + 1)
                resulttmp[i] <= resulttmp[i+1];
    end

// CONTINOUS ASSIGNMENT
    assign result = resulttmp[0];

endmodule // lpm_mult
// END OF MODULE

//START_MODULE_NAME------------------------------------------------------------
//
// Module Name     :  lpm_divide
//
// Description     :  Parameterized divider megafunction. This function performs a
//                    divide operation such that denom * quotient + remain = numer
//                    The function allows for all combinations of signed(two's 
//                    complement) and unsigned inputs. If any of the inputs is 
//                    signed, the output is signed. Otherwise the output is unsigned.
//                    The function also allows the remainder to be specified as
//                    always positive (in which case remain >= 0); otherwise remain
//                    is zero or the same sign as the numerator
//                    (this parameter is ignored in the case of purely unsigned
//                    division). Finally the function is also pipelinable.
//
// Limitation      :  n/a
//
// Results expected:  Return quotient and remainder. 
//
//END_MODULE_NAME--------------------------------------------------------------

// BEGINNING OF MODULE
`timescale 1 ps / 1 ps

// MODULE DECLARATION
module lpm_divide ( 
    numer,  // The numerator (Required)
    denom,  // The denominator (Required)
    clock,  // Clock input for pipelined usage
    aclr,   // Asynchronous clear signal
    clken,  // Clock enable for pipelined usage.
    quotient, // Quotient (Required)
    remain    // Remainder (Required)
);

// GLOBAL PARAMETER DECLARATION
    parameter lpm_widthn = 1;  // Width of the numer[] and quotient[] port. (Required)
    parameter lpm_widthd = 1;  // Width of the denom[] and remain[] port. (Required)
    parameter lpm_nrepresentation = "UNSIGNED";  // The representation of numer
    parameter lpm_drepresentation = "UNSIGNED";  // The representation of denom
    parameter lpm_pipeline = 0; // Number of Clock cycles of latency
    parameter lpm_type = "lpm_divide";
    parameter lpm_hint = "LPM_REMAINDERPOSITIVE=TRUE";

// INPUT PORT DECLARATION
    input  [lpm_widthn-1:0] numer;
    input  [lpm_widthd-1:0] denom;
    input  clock;
    input  aclr;
    input  clken;

// OUTPUT PORT DECLARATION
    output [lpm_widthn-1:0] quotient;
    output [lpm_widthd-1:0] remain;

// INTERNAL REGISTER/SIGNAL DECLARATION
    reg [lpm_widthn-1:0] tmp_quotient [lpm_pipeline:0];
    reg [lpm_widthd-1:0] tmp_remain [lpm_pipeline:0];
    reg [lpm_widthn-1:0] ZEROS;
    reg [lpm_widthd-1:0] RZEROS;
    reg [lpm_widthn-1:0] not_numer, int_numer;
    reg [lpm_widthd-1:0] not_denom, int_denom;
    reg [lpm_widthn-1:0] t_numer, t_q;
    reg [lpm_widthd-1:0] t_denom, t_r;
    reg sign_q, sign_r, sign_n, sign_d;
    reg [8*5:1] lpm_remainderpositive;


// LOCAL INTEGER DECLARATION
    integer i;
    integer rsig;

// INTERNAL TRI DECLARATION
    tri0 aclr;
    tri0 clock;
    tri1 clken;

    buf (i_aclr, aclr);
    buf (i_clock, clock);
    buf (i_clken, clken);

// COMPONENT INSTANTIATIONS
    LPM_HINT_EVALUATION eva();


// INITIAL CONSTRUCT BLOCK
    initial
    begin
        // check if lpm_widthn > 0
        if (lpm_widthn <= 0)
        begin
            $display("Error!  LPM_WIDTHN must be greater than 0.\n");
            $finish;
        end
        // check if lpm_widthd > 0
        if (lpm_widthd <= 0)
        begin
            $display("Error!  LPM_WIDTHD must be greater than 0.\n");
            $finish;
        end
        // check for valid lpm_nrepresentation value
        if ((lpm_nrepresentation != "SIGNED") && (lpm_nrepresentation != "UNSIGNED"))
        begin
            $display("Error!  LPM_NREPRESENTATION value must be \"SIGNED\" or \"UNSIGNED\".");
            $finish;
        end
        // check for valid lpm_drepresentation value
        if ((lpm_drepresentation != "SIGNED") && (lpm_drepresentation != "UNSIGNED"))
        begin
            $display("Error!  LPM_DREPRESENTATION value must be \"SIGNED\" or \"UNSIGNED\".");
            $finish;
        end
        // check for valid lpm_remainderpositive value
        lpm_remainderpositive = eva.GET_P

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品视频一区| 午夜伊人狠狠久久| 亚洲国产色一区| 日韩精品影音先锋| 欧美精品vⅰdeose4hd| 99re在线精品| 91免费视频观看| 毛片av一区二区| 午夜成人免费电影| 亚洲精品欧美激情| 国产精品理伦片| 亚洲欧美国产三级| 国产精品久久久久aaaa| 成人福利电影精品一区二区在线观看 | www激情久久| 欧美丰满一区二区免费视频| 日韩精品专区在线影院重磅| 久久久精品蜜桃| 亚洲在线观看免费| 捆绑紧缚一区二区三区视频 | 亚洲不卡一区二区三区| 午夜精品成人在线视频| 国产精品自在在线| 99热这里都是精品| 精品日产卡一卡二卡麻豆| 国产精品一区二区久久精品爱涩 | 成人理论电影网| 亚洲最快最全在线视频| 欧美一区二区三区影视| 高清beeg欧美| 日本成人中文字幕| 国产精品美女久久久久av爽李琼| 欧洲精品在线观看| 国产精品一二一区| 调教+趴+乳夹+国产+精品| 久久久美女艺术照精彩视频福利播放| 91猫先生在线| 黄网站免费久久| 亚洲国产精品欧美一二99| 国产欧美一区二区精品性色超碰| 欧美四级电影网| 成人国产亚洲欧美成人综合网| 青娱乐精品视频| 一区二区三区在线视频观看| 26uuu成人网一区二区三区| 色八戒一区二区三区| 国产精品一线二线三线精华| 午夜欧美大尺度福利影院在线看| 国产午夜精品福利| 日韩美女在线视频| 欧洲av在线精品| 91小视频在线免费看| 国产一区二区不卡老阿姨| 亚洲成av人影院| 亚洲激情中文1区| 国产精品蜜臀av| 欧美精品一区二区三区在线播放| 欧美日韩在线播放一区| 色综合久久综合中文综合网| 国产成人免费视频一区| 美女视频一区二区三区| 亚洲第一搞黄网站| 一区二区三区波多野结衣在线观看 | 黄一区二区三区| 日韩高清在线电影| 伊人色综合久久天天人手人婷| 国产精品伦一区| 国产日韩欧美综合一区| 久久日韩精品一区二区五区| 五月综合激情网| 久久精品视频在线看| 精品国产乱码久久久久久久| 成人福利电影精品一区二区在线观看| 综合电影一区二区三区| 91麻豆精品国产自产在线观看一区| 日韩成人一区二区| 中文字幕乱码亚洲精品一区| 欧美日韩一区二区不卡| 久久国产生活片100| 国产精品免费aⅴ片在线观看| 欧美三级中文字幕| 色婷婷综合久久久中文一区二区 | 亚洲一区二区三区免费视频| 国产精品国产精品国产专区不蜜 | 日韩精品一区二区三区四区| 制服丝袜成人动漫| 欧美精品第1页| 日韩欧美国产1| 精品久久久久久无| 久久久久九九视频| 中文字幕精品在线不卡| 亚洲视频一区二区免费在线观看| 国产精品私人影院| 亚洲自拍偷拍麻豆| 亚洲高清三级视频| 麻豆成人免费电影| 国产成人av一区| av影院午夜一区| 欧美综合在线视频| 91精品国产一区二区三区蜜臀| 日韩欧美亚洲一区二区| 国产亲近乱来精品视频| 亚洲色图欧美偷拍| 午夜日韩在线观看| 激情五月激情综合网| 97se亚洲国产综合自在线观| 欧美亚洲一区二区在线| 精品国产乱码久久久久久浪潮 | 亚洲福利一区二区三区| 麻豆久久一区二区| 成人激情图片网| 欧美午夜精品久久久| 欧美一区二区三区在线电影| 国产欧美一区二区三区在线看蜜臀| 亚洲美女免费在线| 日韩av二区在线播放| 粉嫩av亚洲一区二区图片| 欧美午夜不卡在线观看免费| 久久综合九色综合欧美亚洲| 亚洲人成小说网站色在线| 日韩—二三区免费观看av| va亚洲va日韩不卡在线观看| 在线播放91灌醉迷j高跟美女| 亚洲国产日产av| 国产91精品欧美| 亚洲一区二区三区四区五区黄| 亚洲中国最大av网站| 成人性生交大合| 日韩三级中文字幕| 亚洲国产视频直播| 成人国产精品免费观看视频| 精品视频999| 国产午夜精品久久久久久免费视 | 日韩欧美在线123| 国产精品天干天干在观线| 亚洲v精品v日韩v欧美v专区| 岛国精品一区二区| 欧美另类一区二区三区| 国产精品嫩草99a| 麻豆精品视频在线观看| 日本精品一区二区三区高清| 久久久精品免费观看| 蜜桃av噜噜一区| 欧美日韩你懂得| 亚洲精品综合在线| 丁香啪啪综合成人亚洲小说| 日韩免费福利电影在线观看| 亚洲一区二区三区视频在线 | 一区二区三区免费网站| 国产99精品国产| 精品国产一区二区亚洲人成毛片| 一区二区在线观看免费| av在线这里只有精品| 国产精品日产欧美久久久久| 国产一区 二区| 亚洲精品在线三区| 精品在线视频一区| 欧美一区午夜视频在线观看| 亚洲成人资源网| 欧美日韩一区二区在线观看视频 | 国产乱码精品一区二区三区忘忧草 | 国产a区久久久| 久久综合给合久久狠狠狠97色69| 免费人成精品欧美精品| 7777精品伊人久久久大香线蕉的 | 粉嫩av一区二区三区在线播放| 精品久久久影院| 狠狠色狠狠色综合| 欧美精品一区二区久久婷婷| 蜜桃视频第一区免费观看| 欧美精品 国产精品| 日本女人一区二区三区| 日韩一区二区电影| 国产一区欧美二区| 26uuu国产电影一区二区| 国产精品自在在线| 欧美高清在线精品一区| 亚洲色图视频网| 欧美一级免费大片| 在线播放91灌醉迷j高跟美女| 欧美日韩一级片在线观看| 国产精品一区二区视频| 亚洲444eee在线观看| 国产精品入口麻豆原神| 精品国产乱码久久久久久夜甘婷婷| av电影在线观看不卡| 国产一区二区电影| 国产精品一级在线| 亚洲精品视频在线看| 日韩三级高清在线| 精品欧美一区二区在线观看| 国产精品天天看| 国产美女在线观看一区| 中文字幕中文字幕在线一区| 色婷婷综合久久久中文一区二区 | 不卡的av在线播放| 亚洲一区二区三区激情| 精品久久国产97色综合| 99久久久久免费精品国产 | 国产精品伦理在线|