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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? wb_master_behavioral.v

?? FPGA數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實例導(dǎo)航光盤內(nèi)附源碼
?? 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美一区二区三区久本道91| www国产成人| 亚洲综合小说图片| 欧美亚日韩国产aⅴ精品中极品| 一区二区成人在线视频| 欧美丝袜第三区| 亚洲成人综合网站| 欧美一个色资源| 精品一区二区三区在线视频| 久久久av毛片精品| 成人av在线播放网站| 一区二区欧美国产| 欧美精品日韩一区| 精品一区二区三区久久| 中文字幕国产一区二区| 色婷婷综合久久久久中文 | 成人免费av网站| 亚洲免费观看在线观看| 欧美日韩激情一区| 紧缚奴在线一区二区三区| 国产精品麻豆视频| 在线观看网站黄不卡| 美女视频免费一区| 亚洲欧洲日韩av| 欧美一级片在线| zzijzzij亚洲日本少妇熟睡| 亚洲最大成人网4388xx| 日韩免费视频线观看| 成人动漫一区二区三区| 性做久久久久久久久| 久久久99精品免费观看不卡| 在线中文字幕一区| 极品少妇xxxx偷拍精品少妇| 亚洲欧美偷拍卡通变态| 精品国免费一区二区三区| 成人午夜电影久久影院| 日韩成人一区二区| 亚洲欧美日韩国产另类专区 | 欧美大片拔萝卜| 色偷偷88欧美精品久久久| 久久97超碰国产精品超碰| 亚洲精品日韩一| 国产亚洲综合色| 欧美一区二区三区四区久久| 99久久国产综合精品色伊| 久久99久久久久久久久久久| 亚洲另类色综合网站| 国产亚洲制服色| 日韩亚洲欧美高清| 欧美日韩一区精品| 99精品黄色片免费大全| 韩国一区二区视频| 天天色天天爱天天射综合| 亚洲欧洲日韩综合一区二区| 亚洲精品在线观| 91精品国产一区二区| 在线亚洲高清视频| 99热精品国产| 国产91对白在线观看九色| 另类小说色综合网站| 午夜一区二区三区视频| 亚洲日本成人在线观看| 久久久激情视频| 精品日产卡一卡二卡麻豆| 在线电影一区二区三区| 在线观看免费成人| 91欧美激情一区二区三区成人| 国产精品亚洲成人| 国产精品资源在线| 国产尤物一区二区| 国产麻豆精品视频| 国产一区二区毛片| 国产成人在线观看免费网站| 激情久久久久久久久久久久久久久久| 日韩精品电影一区亚洲| 爽爽淫人综合网网站| 午夜电影网一区| 韩国v欧美v日本v亚洲v| 久久不见久久见免费视频1| 喷水一区二区三区| 久久精品二区亚洲w码| 久久精品av麻豆的观看方式| 精品一区二区久久| 国产美女精品在线| 国产v日产∨综合v精品视频| 国产精品亚洲视频| www.亚洲国产| 色婷婷激情久久| 欧美亚洲综合网| 欧美精品色一区二区三区| 欧美一区二区三区四区五区| 欧美成人一区二区三区| 久久久久国产精品人| 国产精品传媒入口麻豆| 亚洲日本乱码在线观看| 亚洲一二三四区| 日韩av电影一区| 国产在线国偷精品产拍免费yy| 国产激情一区二区三区桃花岛亚洲| 国产尤物一区二区| 99九九99九九九视频精品| 欧美影院一区二区三区| 8x8x8国产精品| 久久久亚洲高清| 亚洲视频一区在线| 三级亚洲高清视频| 国产精品12区| 欧美三级韩国三级日本三斤 | 在线亚洲+欧美+日本专区| 正在播放亚洲一区| 国产日韩欧美精品一区| 亚洲精品视频观看| 激情久久五月天| 色偷偷久久人人79超碰人人澡| 欧美日本国产一区| 国产亚洲欧美日韩俺去了| 一区二区三区在线观看网站| 麻豆一区二区三| 99久久99久久综合| 日韩午夜av电影| 综合久久给合久久狠狠狠97色| 日韩精品福利网| 91色porny蝌蚪| 精品美女在线播放| 亚洲综合男人的天堂| 国内不卡的二区三区中文字幕| 99久久精品国产观看| 日韩欧美不卡在线观看视频| 亚洲人123区| 国产精品一区不卡| 91麻豆精品国产91久久久久| 亚洲欧洲日韩在线| 国产在线国偷精品免费看| 精品视频在线免费看| 中文字幕成人网| 美女精品一区二区| 欧美性生交片4| 亚洲欧美一区二区在线观看| 日本在线播放一区二区三区| 99久久精品国产一区| 久久久国产精品麻豆| 欧美a级理论片| 欧美性做爰猛烈叫床潮| 国产精品久久免费看| 韩国av一区二区| 日韩色视频在线观看| 亚洲成a人片在线观看中文| 不卡的av网站| 欧美国产乱子伦 | 国产寡妇亲子伦一区二区| 欧美高清一级片在线| 亚洲免费三区一区二区| 成人av网站在线观看免费| 久久久亚洲午夜电影| 九色|91porny| 欧美第一区第二区| 日本色综合中文字幕| 欧美视频完全免费看| 中文字幕一区二区三区不卡| 国产91精品精华液一区二区三区 | 国产成人午夜视频| 精品毛片乱码1区2区3区| 日韩中文字幕一区二区三区| 欧美色手机在线观看| 亚洲一区二区三区三| 日本久久一区二区| 一区二区在线观看av| 97久久久精品综合88久久| 国产精品素人一区二区| 处破女av一区二区| 欧美激情中文不卡| 成人av在线电影| 亚洲精品日日夜夜| 欧美性大战久久久久久久蜜臀 | 欧美视频在线播放| 一区二区三区精品久久久| 在线观看国产日韩| 手机精品视频在线观看| 欧美高清dvd| 老司机精品视频一区二区三区| 日韩视频一区在线观看| 国产主播一区二区| 国产精品网站在线观看| 色综合久久88色综合天天 | 欧美一级电影网站| 精品一区二区三区在线播放视频 | 69堂国产成人免费视频| 热久久免费视频| 久久精品视频一区| 9色porny自拍视频一区二区| 夜夜精品视频一区二区| 欧美一区二区三区在线电影| 精品一区二区三区免费视频| 国产精品网站导航| 欧美性生活一区| 久久国产精品色婷婷| 国产精品色婷婷| 欧美日韩在线精品一区二区三区激情 | 97se亚洲国产综合自在线观| 亚洲一二三区不卡|