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

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

?? wb_master_behavioral.v

?? FPGA數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實(shí)例導(dǎo)航光盤內(nèi)附源碼
?? V
?? 第 1 頁 / 共 2 頁
字號:
/

`include "wb_model_defines.v"
`include "timescale.v"
module WB_MASTER_BEHAVIORAL
(
    CLK_I,
    RST_I,
    TAG_I,
    TAG_O,
    ACK_I,
    ADR_O,
    CYC_O,
    DAT_I,
    DAT_O,
    ERR_I,
    RTY_I,
    SEL_O,
    STB_O,
    WE_O,
    CAB_O
);

    input                    CLK_I;
    input                    RST_I;
    input    `WB_TAG_TYPE    TAG_I;
    output   `WB_TAG_TYPE    TAG_O;
    input                    ACK_I;
    output   `WB_ADDR_TYPE   ADR_O;
    output                   CYC_O;
    input    `WB_DATA_TYPE   DAT_I;
    output   `WB_DATA_TYPE   DAT_O;
    input                    ERR_I;
    input                    RTY_I;
    output   `WB_SEL_TYPE    SEL_O;
    output                   STB_O;
    output                   WE_O;
    output                   CAB_O;

// instantiate low level master module
WB_MASTER32 wbm_low_level
(
    .CLK_I(CLK_I),
    .RST_I(RST_I),
    .TAG_I(TAG_I),
    .TAG_O(TAG_O),
    .ACK_I(ACK_I),
    .ADR_O(ADR_O),
    .CYC_O(CYC_O),
    .DAT_I(DAT_I),
    .DAT_O(DAT_O),
    .ERR_I(ERR_I),
    .RTY_I(RTY_I),
    .SEL_O(SEL_O),
    .STB_O(STB_O),
    .WE_O(WE_O),
    .CAB_O(CAB_O)
) ;

// block read and write buffers definition
// single write buffer
reg `WRITE_STIM_TYPE  blk_write_data    [0:(`MAX_BLK_SIZE - 1)] ;
// read stimulus buffer - addresses, tags, selects etc.
reg `READ_STIM_TYPE   blk_read_data_in  [0:(`MAX_BLK_SIZE - 1)] ;
// read return buffer - data and tags received while performing block reads
reg `READ_RETURN_TYPE blk_read_data_out [0:(`MAX_BLK_SIZE - 1)] ;

// single write task
task wb_single_write ;
    input `WRITE_STIM_TYPE write_data ;
    input `WB_TRANSFER_FLAGS   write_flags ;
    inout `WRITE_RETURN_TYPE return ;
    reg in_use ;
    reg cab ;
    reg ok ;
    integer cyc_count ;
    integer rty_count ;
    reg retry ;
begin:main

    return`TB_ERROR_BIT = 1'b0 ;
    cab = 0 ;
    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_single_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) ;

        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_single_write

task wb_single_read ;
    input `READ_STIM_TYPE read_data ;
    input `WB_TRANSFER_FLAGS   read_flags ;
    inout `READ_RETURN_TYPE return ;
    reg in_use ;
    reg cab ;
    reg ok ;
    integer cyc_count ;
    integer rty_count ;
    reg retry ;
begin:main

    return`TB_ERROR_BIT = 1'b0 ;
    cab = 0 ;
    rty_count = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;

    // check if task was called before previous call finished
    if ( in_use === 1 )
    begin
        $display("*E, wb_single_read 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) ;

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

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

        wbm_low_level.wbm_read(read_data, return) ;

        if ( return`CYC_ERR === 0 && return`CYC_ACK === 0 && return`CYC_RTY === 1 && read_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_read, Time %t ", $time) ;
                 retry = 0 ;
            end
            else
            begin
                retry     = 1 ;
                rty_count = rty_count + 1 ;
            end
        end
        else
        begin
            retry = 0 ;
        end

        // 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 = read_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_single_read

task wb_RMW_read ;
    input `READ_STIM_TYPE read_data ;
    input `WB_TRANSFER_FLAGS   read_flags ;
    inout `READ_RETURN_TYPE return ;
    reg in_use ;
    reg cab ;
    reg ok ;
    integer cyc_count ;
    integer rty_count ;
    reg retry ;
begin:main

    return`TB_ERROR_BIT = 1'b0 ;
    cab = 0 ;
    rty_count = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;

    // check if task was called before previous call finished
    if ( in_use === 1 )
    begin
        $display("*E, wb_RMW_read 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) ;

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

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

        wbm_low_level.wbm_read(read_data, return) ;

        if ( return`CYC_ERR === 0 && return`CYC_ACK === 0 && return`CYC_RTY === 1 && read_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_RMW_read, Time %t ", $time) ;
                 retry = 0 ;
            end
            else
            begin
                retry     = 1 ;
                rty_count = rty_count + 1 ;
            end
        end
        else
        begin
            retry = 0 ;
        end

        // 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 = read_flags`SUBSEQ_WAITS ;
        while ( cyc_count > 0 )
        begin
            @(posedge CLK_I) ;
            cyc_count = cyc_count - 1 ;
        end

        if (retry === 1)
            wbm_low_level.end_cycle ;
        else
            wbm_low_level.modify_cycle ;
    end

    in_use = 0 ;

end //main
endtask // wb_RMW_read

task wb_RMW_write ;
    input `WRITE_STIM_TYPE write_data ;
    input `WB_TRANSFER_FLAGS   write_flags ;
    inout `WRITE_RETURN_TYPE return ;
    reg in_use ;
    reg cab ;
    reg ok ;
    integer cyc_count ;
    integer rty_count ;
    reg retry ;
begin:main

    return`TB_ERROR_BIT = 1'b0 ;
    cab = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;
    rty_count = 0 ;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久精品一区二区| 亚洲欧美日韩在线不卡| 日韩成人免费电影| 欧美性淫爽ww久久久久无| 国产精品久久久一本精品| 激情五月播播久久久精品| 精品精品国产高清a毛片牛牛 | 欧美一区二区三区视频免费| 亚洲国产精品久久不卡毛片 | 欧美一区二区三区在线| 午夜伊人狠狠久久| 欧美军同video69gay| 亚洲va国产天堂va久久en| 日韩欧美一区二区视频| 精品一区二区三区在线观看| 国产欧美日韩在线看| 91麻豆产精品久久久久久| 亚洲伊人色欲综合网| 日韩精品自拍偷拍| 成人午夜视频在线观看| 亚洲国产精品久久人人爱蜜臀| 欧美日韩激情一区二区三区| 麻豆91小视频| 一区二区三区四区精品在线视频| 欧美日韩精品三区| 国产黄色91视频| 亚洲丶国产丶欧美一区二区三区| 日韩久久久精品| 91麻豆精品一区二区三区| 韩国三级电影一区二区| 综合欧美亚洲日本| 久久影院视频免费| 在线电影国产精品| 91在线porny国产在线看| 国产综合色精品一区二区三区| 亚洲伊人伊色伊影伊综合网| 国产欧美一区二区精品性色| 91麻豆国产精品久久| 国产一区二区精品久久99| 亚洲mv在线观看| 亚洲伊人色欲综合网| 亚洲美女屁股眼交| 中文字幕一区日韩精品欧美| 日韩欧美国产一区二区在线播放| 色婷婷精品大在线视频| 99久久精品免费看| 风流少妇一区二区| 国精产品一区一区三区mba视频| 免费观看在线色综合| 日韩不卡一区二区| 人人精品人人爱| 免费人成黄页网站在线一区二区| 视频一区二区三区入口| 天天影视涩香欲综合网| 亚洲一区二区三区四区在线观看 | 国产高清不卡一区二区| 成人午夜电影小说| 日本高清不卡一区| 色激情天天射综合网| 91麻豆产精品久久久久久| 成人在线综合网| 国产精品一区二区无线| 99国产精品国产精品毛片| 欧美日韩日日摸| 欧美电影精品一区二区| 一区在线观看视频| 日韩综合在线视频| 国产白丝网站精品污在线入口| aaa欧美色吧激情视频| 欧美性猛交一区二区三区精品 | 国产一区二区电影| 欧美日韩国产一级二级| 国产欧美日韩在线看| 天堂va蜜桃一区二区三区漫画版| 国产精品白丝av| 欧美一区二区三区人| 国产精品毛片无遮挡高清| 日本欧美一区二区三区乱码| 国产iv一区二区三区| 欧美日韩国产区一| 亚洲免费色视频| av亚洲精华国产精华| 久久欧美中文字幕| 日本美女视频一区二区| 欧美婷婷六月丁香综合色| 国产精品超碰97尤物18| 国产ts人妖一区二区| 久久久亚洲国产美女国产盗摄| 五月综合激情婷婷六月色窝| 在线观看亚洲一区| 夜夜精品视频一区二区| 欧美午夜电影在线播放| 亚洲福中文字幕伊人影院| 欧美精品在线观看播放| 一区二区三区欧美视频| 欧美亚洲一区二区三区四区| 亚洲综合激情网| 欧美这里有精品| 首页综合国产亚洲丝袜| 欧美疯狂性受xxxxx喷水图片| 日韩av一二三| 国产亚洲污的网站| 96av麻豆蜜桃一区二区| 亚洲一区二区欧美激情| 777欧美精品| 国产乱子伦一区二区三区国色天香| 久久久久综合网| 一本色道亚洲精品aⅴ| 亚洲www啪成人一区二区麻豆| 欧美一区二区国产| 成人av免费观看| 视频一区二区三区在线| 久久精品综合网| 欧美午夜电影一区| 国产成人综合亚洲91猫咪| 中文字幕亚洲一区二区av在线| 日本道色综合久久| 国产一区二区三区日韩| 一区二区三区中文在线| 久久久www成人免费无遮挡大片| av在线不卡电影| 精品无人区卡一卡二卡三乱码免费卡| 国产精品毛片a∨一区二区三区| 精品视频色一区| 色又黄又爽网站www久久| 国产在线视视频有精品| 亚洲综合在线视频| 国产精品美女久久久久高潮| 久久中文娱乐网| 日韩一级完整毛片| 欧美精选一区二区| 91麻豆精品国产91久久久久久 | 欧美理论电影在线| 欧美性做爰猛烈叫床潮| av在线不卡观看免费观看| 国产乱人伦偷精品视频免下载| 日韩av电影免费观看高清完整版| 亚洲国产日韩a在线播放| 一区二区高清免费观看影视大全 | 日韩一区二区在线免费观看| 欧美日韩黄色一区二区| 中文字幕巨乱亚洲| 中国色在线观看另类| 国产精品视频yy9299一区| 国产精品萝li| 亚洲色图欧美偷拍| 一区二区三区成人| 亚洲6080在线| 国内外成人在线视频| 国产精品自拍毛片| 99精品一区二区三区| 色婷婷综合久久久久中文一区二区| 91伊人久久大香线蕉| 欧美情侣在线播放| 精品美女被调教视频大全网站| 日韩美女一区二区三区四区| 欧美在线视频日韩| 免费观看在线综合| 精品无人区卡一卡二卡三乱码免费卡| 91精品办公室少妇高潮对白| 欧美国产1区2区| 国产精品2024| 精品国产免费视频| 天涯成人国产亚洲精品一区av| 日本在线不卡一区| 91精品福利视频| 中文字幕久久午夜不卡| 久久精品国产色蜜蜜麻豆| 成人三级伦理片| 日韩一区二区三区电影| 国产精品灌醉下药二区| 日本网站在线观看一区二区三区| 国产成人综合视频| 欧美www视频| 五月天亚洲婷婷| 在线亚洲一区二区| 国产亚洲一区二区三区四区 | ㊣最新国产の精品bt伙计久久| 人人狠狠综合久久亚洲| 欧美日韩高清不卡| 亚洲v日本v欧美v久久精品| 欧洲一区二区av| 亚洲成va人在线观看| 51精品视频一区二区三区| 一级精品视频在线观看宜春院 | 日本在线播放一区二区三区| 欧美亚洲动漫精品| 一区二区三区四区av| 91麻豆福利精品推荐| 亚洲裸体xxx| 色999日韩国产欧美一区二区| 亚洲黄色av一区| 欧美日韩国产中文| 视频一区在线视频| 日韩精品专区在线| 丰满岳乱妇一区二区三区| **网站欧美大片在线观看| 91福利国产精品| 蜜臀av一区二区在线观看 | 日韩一区二区中文字幕|