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

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

?? wb_master_behavioral.v

?? FPGA數字電子系統設計與開發實例導航(源程序)
?? V
?? 第 1 頁 / 共 2 頁
字號:
    // check if task was called before previous call finished
    if ( in_use === 1 )
    begin
        $display("*E, wb_RMW_write routine re-entered! Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    in_use = 1 ;

    retry = 1 ;

    while (retry === 1)
    begin
        // synchronize operation to clock
        //@(posedge CLK_I) ;
        ok = 1 ;
        if (rty_count !== 0)
            wbm_low_level.start_cycle(cab, 1'b1, ok) ;

        if ( ok !== 1 )
        begin
            $display("*E, Failed to initialize cycle! Routine wb_single_write, Time %t ", $time) ;
            return`TB_ERROR_BIT = 1'b1 ;
            disable main ;
        end

        // first insert initial wait states
        cyc_count = write_flags`INIT_WAITS ;
        while ( cyc_count > 0 )
        begin
            @(posedge CLK_I) ;
            cyc_count = cyc_count - 1 ;
        end

        wbm_low_level.wbm_write(write_data, return) ;

        if ( return`CYC_ERR === 0 && return`CYC_ACK === 0 && return`CYC_RTY === 1 && write_flags`WB_TRANSFER_AUTO_RTY === 1 && return`TB_ERROR_BIT === 0)
        begin
            if ( rty_count === `WB_TB_MAX_RTY )
            begin
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_single_write, Time %t ", $time) ;
                 retry = 0 ;
            end
            else
            begin
                retry     = 1 ;
                rty_count = rty_count + 1 ;
            end
        end
        else
            retry = 0 ;

        // if test bench error bit is set, there is no meaning in introducing subsequent wait states
        if ( return`TB_ERROR_BIT !== 0 )
        begin
            @(posedge CLK_I) ;
            wbm_low_level.end_cycle ;
            disable main ;
        end

        cyc_count = write_flags`SUBSEQ_WAITS ;
        while ( cyc_count > 0 )
        begin
            @(posedge CLK_I) ;
            cyc_count = cyc_count - 1 ;
        end

        wbm_low_level.end_cycle ;
    end

    in_use = 0 ;

end //main
endtask // wb_RMW_write

task wb_block_write ;
    input  `WB_TRANSFER_FLAGS write_flags ;
    inout  `WRITE_RETURN_TYPE return ;

    reg in_use ;
    reg `WRITE_STIM_TYPE  current_write ;
    reg cab ;
    reg ok ;
    integer cyc_count ;
    integer rty_count ;
    reg end_blk ;
begin:main

    return`CYC_ACTUAL_TRANSFER = 0 ;
    rty_count = 0 ;

    // check if task was called before previous call finished
    if ( in_use === 1 )
    begin
        $display("*E, wb_block_write routine re-entered! Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    if (write_flags`WB_TRANSFER_SIZE > `MAX_BLK_SIZE)
    begin
        $display("*E, number of transfers passed to wb_block_write routine exceeds defined maximum transaction length! Time %t", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    in_use = 1 ;
    @(posedge CLK_I) ;
    cab = write_flags`WB_TRANSFER_CAB ;
    wbm_low_level.start_cycle(cab, 1'b1, ok) ;
    if ( ok !== 1 )
    begin
        $display("*E, Failed to initialize cycle! Routine wb_block_write, Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    // insert initial wait states
    cyc_count = write_flags`INIT_WAITS ;
    while ( cyc_count > 0 )
    begin
        @(posedge CLK_I) ;
        cyc_count = cyc_count - 1 ;
    end

    end_blk = 0 ;
    while (end_blk === 0)
    begin
        // collect data for current data beat
        current_write = blk_write_data[return`CYC_ACTUAL_TRANSFER] ;
        wbm_low_level.wbm_write(current_write, return) ;

        // check result of write operation
        // check for severe test error
        if (return`TB_ERROR_BIT !== 0)
        begin
           @(posedge CLK_I) ;
           wbm_low_level.end_cycle ;
           disable main ;
        end

        // slave returned error or error signal had invalid value
        if (return`CYC_ERR !== 0)
            end_blk = 1 ;

        if (
            (return`CYC_RTY !== 0) && (return`CYC_RTY !== 1) ||
            (return`CYC_ACK !== 0) && (return`CYC_ACK !== 1) ||
            (return`CYC_ERR !== 0) && (return`CYC_ERR !== 1)
           )
        begin
            end_blk = 1 ;
            $display("*E, at least one slave response signal was invalid when cycle finished! Routine wb_block_write, Time %t ", $time) ;
            $display("ACK = %b \t RTY_O = %b \t ERR_O = %b \t", return`CYC_ACK, return`CYC_RTY, return`CYC_ERR) ;
        end

        if ((return`CYC_RTY === 1) && (write_flags`WB_TRANSFER_AUTO_RTY !== 1))
            end_blk = 1 ;

        if ((return`CYC_RTY === 1) && (write_flags`WB_TRANSFER_AUTO_RTY === 1))
        begin
            if ( rty_count === `WB_TB_MAX_RTY )
            begin
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_block_write, Time %t ", $time) ;
                 end_blk = 1 ;
            end
            else
            begin
                rty_count = rty_count + 1 ;
            end
        end
        else
            rty_count = 0 ;

        // check if slave responded at all
        if (return`CYC_RESPONSE === 0)
            end_blk = 1 ;

        // check if all intended data was transfered
        if (return`CYC_ACTUAL_TRANSFER === write_flags`WB_TRANSFER_SIZE)
            end_blk = 1 ;

        // insert subsequent wait cycles, if transfer is supposed to continue
        if ( end_blk === 0 )
        begin
            cyc_count = write_flags`SUBSEQ_WAITS ;
            while ( cyc_count > 0 )
            begin
                @(posedge CLK_I) ;
                cyc_count = cyc_count - 1 ;
            end
        end

        if ( (end_blk === 0) && (return`CYC_RTY === 1) )
        begin
            wbm_low_level.end_cycle ;
            @(posedge CLK_I) ;
            wbm_low_level.start_cycle(cab, 1'b1, ok) ;
            if ( ok !== 1 )
            begin
                $display("*E, Failed to initialize cycle! Routine wb_block_write, Time %t ", $time) ;
                return`TB_ERROR_BIT = 1'b1 ;
                end_blk = 1 ;
            end
        end
    end //while

    wbm_low_level.end_cycle ;
    in_use = 0 ;
end //main
endtask //wb_block_write

task wb_block_read ;
    input  `WB_TRANSFER_FLAGS      read_flags ;
    inout `READ_RETURN_TYPE       return ;

    reg in_use ;
    reg `READ_STIM_TYPE  current_read ;
    reg cab ;
    reg ok ;
    integer cyc_count ;
    integer rty_count ;
    reg end_blk ;
    integer transfered ;
begin:main

    return`CYC_ACTUAL_TRANSFER = 0 ;
    transfered = 0 ;
    rty_count = 0 ;

    // check if task was called before previous call finished
    if ( in_use === 1 )
    begin
        $display("*E, wb_block_read routine re-entered! Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    if (read_flags`WB_TRANSFER_SIZE > `MAX_BLK_SIZE)
    begin
        $display("*E, number of transfers passed to wb_block_read routine exceeds defined maximum transaction length! Time %t", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    in_use = 1 ;
    @(posedge CLK_I) ;
    cab = read_flags`WB_TRANSFER_CAB ;

    wbm_low_level.start_cycle(cab, 1'b0, ok) ;

    if ( ok !== 1 )
    begin
        $display("*E, Failed to initialize cycle! Routine wb_block_read, Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    // insert initial wait states
    cyc_count = read_flags`INIT_WAITS ;
    while ( cyc_count > 0 )
    begin
        @(posedge CLK_I) ;
        cyc_count = cyc_count - 1 ;
    end

    end_blk = 0 ;
    while (end_blk === 0)
    begin
        // collect data for current data beat
        current_read = blk_read_data_in[return`CYC_ACTUAL_TRANSFER] ;

        wbm_low_level.wbm_read(current_read, return) ;

        if ( transfered !== return`CYC_ACTUAL_TRANSFER )
        begin
            blk_read_data_out[transfered] = return ;
            transfered = return`CYC_ACTUAL_TRANSFER ;
        end

        // check result of read operation
        // check for severe test error
        if (return`TB_ERROR_BIT !== 0)
        begin
           @(posedge CLK_I) ;
           wbm_low_level.end_cycle ;
           disable main ;
        end

        // slave returned error or error signal had invalid value
        if (return`CYC_ERR !== 0)
            end_blk = 1 ;

        if (
            (return`CYC_RTY !== 0) && (return`CYC_RTY !== 1) ||
            (return`CYC_ACK !== 0) && (return`CYC_ACK !== 1) ||
            (return`CYC_ERR !== 0) && (return`CYC_ERR !== 1)
           )
        begin
            end_blk = 1 ;
            $display("*E, at least one slave response signal was invalid when cycle finished! Routine wb_block_read, Time %t ", $time) ;
            $display("ACK = %b \t RTY_O = %b \t ERR_O = %b \t", return`CYC_ACK, return`CYC_RTY, return`CYC_ERR) ;
        end

        if ((return`CYC_RTY === 1) && (read_flags`WB_TRANSFER_AUTO_RTY !== 1))
            end_blk = 1 ;

        if ((return`CYC_RTY === 1) && (read_flags`WB_TRANSFER_AUTO_RTY === 1))
        begin
            if ( rty_count === `WB_TB_MAX_RTY )
            begin
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_block_read, Time %t ", $time) ;
                 end_blk = 1 ;
            end
            else
            begin
                rty_count = rty_count + 1 ;
            end
        end
        else
            rty_count = 0 ;

        // check if slave responded at all
        if (return`CYC_RESPONSE === 0)
            end_blk = 1 ;

        // check if all intended data was transfered
        if (return`CYC_ACTUAL_TRANSFER === read_flags`WB_TRANSFER_SIZE)
            end_blk = 1 ;

        // insert subsequent wait cycles, if transfer is supposed to continue
        if ( end_blk === 0 )
        begin
            cyc_count = read_flags`SUBSEQ_WAITS ;
            while ( cyc_count > 0 )
            begin
                @(posedge CLK_I) ;
                cyc_count = cyc_count - 1 ;
            end
        end

        if ( (end_blk === 0) && (return`CYC_RTY === 1) )
        begin
            wbm_low_level.end_cycle ;
            @(posedge CLK_I) ;
            wbm_low_level.start_cycle(cab, 1'b0, ok) ;
            if ( ok !== 1 )
            begin
                $display("*E, Failed to initialize cycle! Routine wb_block_read, Time %t ", $time) ;
                return`TB_ERROR_BIT = 1'b1 ;
                end_blk = 1 ;
            end
        end
    end //while

    wbm_low_level.end_cycle ;
    in_use = 0 ;
end //main
endtask //wb_block_read

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产小视频| 成人18精品视频| 久久疯狂做爰流白浆xx| 一本大道久久a久久综合| 欧美一区二区免费| 一片黄亚洲嫩模| 成人午夜伦理影院| 337p日本欧洲亚洲大胆精品| 最近日韩中文字幕| 粗大黑人巨茎大战欧美成人| 日韩一区二区不卡| 亚洲一线二线三线视频| 成人激情电影免费在线观看| 日韩免费看的电影| 午夜精品视频一区| 欧美在线一区二区| 亚洲欧美日韩系列| 91在线视频在线| 国产亚洲精品福利| 国产综合久久久久久鬼色| 欧美另类videos死尸| 夜夜精品浪潮av一区二区三区| 国内不卡的二区三区中文字幕| 日韩一二三区视频| 免费看精品久久片| 欧美大片一区二区三区| 亚洲mv在线观看| 欧美视频中文一区二区三区在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 欧美性猛交xxxx黑人交| 成人免费在线播放视频| 91欧美一区二区| 亚洲日本一区二区三区| 91久久精品网| 亚洲妇熟xx妇色黄| 在线成人av影院| 久久精品国产亚洲高清剧情介绍| 日韩一区二区视频在线观看| 日韩**一区毛片| 欧美成人免费网站| 丰满亚洲少妇av| 亚洲精品视频一区二区| 欧美性做爰猛烈叫床潮| 三级久久三级久久久| 日韩欧美在线影院| 国产成人精品一区二| 中文字幕一区在线观看| 在线影院国内精品| 日本成人中文字幕在线视频 | 欧美性大战久久| 三级一区在线视频先锋| 精品国产制服丝袜高跟| 国产.欧美.日韩| 亚洲精品成a人| 欧美日韩精品系列| 国产一区二区在线免费观看| 国产精品污www在线观看| 色综合天天天天做夜夜夜夜做| 性久久久久久久久久久久| 欧美电视剧免费观看| 99久久久免费精品国产一区二区 | 久久99蜜桃精品| 国产亚洲成aⅴ人片在线观看| 成人av片在线观看| 午夜久久福利影院| 日本一区二区三级电影在线观看| 一本色道亚洲精品aⅴ| 日韩黄色免费网站| 中文字幕第一区二区| 91在线免费视频观看| 麻豆高清免费国产一区| 中文字幕成人网| 91精品一区二区三区在线观看| 国产精品一区二区三区四区| 亚洲欧美欧美一区二区三区| 精品免费国产二区三区| 欧美亚洲国产一卡| 大白屁股一区二区视频| 老司机精品视频在线| 一区二区三区中文免费| 国产视频一区二区三区在线观看| 在线观看视频一区二区欧美日韩| 九九精品一区二区| 亚洲第一狼人社区| 国产精品久久久久影视| 91精品国产91久久久久久最新毛片| av成人免费在线观看| 韩国在线一区二区| 日本欧美一区二区三区| 一区二区三区国产豹纹内裤在线| 国产欧美一区二区精品久导航| 91精品久久久久久蜜臀| 欧美视频一区二区在线观看| 国产成人在线观看| 国产真实乱子伦精品视频| 日韩在线卡一卡二| 香蕉成人伊视频在线观看| 中文字幕一区二区三区在线不卡| 久久一二三国产| 精品美女在线播放| 日韩欧美国产不卡| 7777女厕盗摄久久久| 欧美日韩国产成人在线免费| 色综合天天视频在线观看| bt欧美亚洲午夜电影天堂| 国内精品视频666| 韩国v欧美v亚洲v日本v| 免费观看一级欧美片| 日韩精品国产欧美| 亚洲v中文字幕| 亚洲va欧美va国产va天堂影院| 亚洲最新在线观看| 一区二区三区在线观看动漫 | 免费观看30秒视频久久| 亚洲成人自拍一区| 香蕉影视欧美成人| 午夜精品免费在线| 日产精品久久久久久久性色| 日韩一区精品视频| 日本午夜一本久久久综合| 美日韩黄色大片| 麻豆精品在线播放| 国产一区二区在线影院| 国产成人自拍网| 99久久777色| 欧美视频在线一区| 欧美一区二区啪啪| 久久综合九色综合97婷婷| 久久网这里都是精品| 日本一区二区不卡视频| 亚洲柠檬福利资源导航| 亚洲成人av在线电影| 免费成人美女在线观看| 国产成人综合亚洲91猫咪| 波多野结衣欧美| 欧美日韩国产天堂| 日韩一级欧美一级| 国产香蕉久久精品综合网| 亚洲欧洲精品成人久久奇米网| 亚洲精品高清在线观看| 日韩**一区毛片| 成人福利视频网站| 欧美日韩午夜影院| 精品久久久久久久久久久院品网 | 美脚の诱脚舐め脚责91| 国产乱国产乱300精品| 一本色道久久加勒比精品| 91麻豆精品国产自产在线| 欧美国产丝袜视频| 日韩成人伦理电影在线观看| 国产成人精品亚洲777人妖| 色婷婷久久综合| 欧美精品一区男女天堂| 亚洲三级电影网站| 九九视频精品免费| 日本高清不卡aⅴ免费网站| 久久你懂得1024| 亚洲国产精品自拍| 懂色av中文一区二区三区| 在线不卡中文字幕播放| 成人免费一区二区三区在线观看| 日本欧美久久久久免费播放网| 91在线视频观看| 久久久91精品国产一区二区精品| 亚洲午夜三级在线| 成人免费毛片app| 欧美成人r级一区二区三区| 一区二区三区在线看| 成人黄色av电影| 精品久久久久香蕉网| 亚洲成精国产精品女| 99热精品一区二区| 26uuu精品一区二区在线观看| 亚洲国产综合人成综合网站| 国产成人无遮挡在线视频| 在线不卡欧美精品一区二区三区| 中文字幕亚洲视频| 国产精品一区二区视频| 欧美大片拔萝卜| 日本怡春院一区二区| 91精彩视频在线观看| 国产精品污www在线观看| 国产一区激情在线| 精品少妇一区二区三区视频免付费 | 国产三级久久久| 麻豆91在线播放免费| 欧美精品日日鲁夜夜添| 亚洲一区二区高清| 在线观看不卡视频| 亚洲精品一二三区| 一本一本久久a久久精品综合麻豆| 欧美激情在线一区二区三区| 国产精品1区2区| 久久久亚洲精品一区二区三区| 麻豆精品一区二区三区| 日韩欧美国产电影| 精品一区二区免费在线观看| 日韩三级电影网址| 激情图片小说一区| 久久天天做天天爱综合色|