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

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

?? wb_master_behavioral.v

?? 使用方法: 以太網編程,拷貝到硬盤
?? 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 ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合婷婷久久| 麻豆91精品91久久久的内涵| 99久久国产综合精品女不卡| 国产精品久久久久久亚洲毛片 | 久久国产精品99久久人人澡| 日韩欧美一级在线播放| 九九视频精品免费| 久久九九久精品国产免费直播| 国产成人日日夜夜| 18涩涩午夜精品.www| 91丨porny丨首页| 亚洲成人久久影院| 欧美精品一区二区精品网| 国产馆精品极品| 亚洲免费伊人电影| 91 com成人网| 国产91丝袜在线18| 亚洲永久免费av| 欧美精品一区二区在线播放| 成人aaaa免费全部观看| 亚洲国产成人av网| 久久综合色天天久久综合图片| 国产.欧美.日韩| 亚洲第一精品在线| 国产日韩欧美电影| 欧美理论片在线| 国产99久久久国产精品潘金| 亚洲v中文字幕| 欧美激情综合网| 欧美三级午夜理伦三级中视频| 另类小说综合欧美亚洲| 亚洲人亚洲人成电影网站色| 欧美一区二区黄| 不卡欧美aaaaa| 久久99精品久久久久久久久久久久| 中文字幕一区二区不卡| 日韩欧美国产综合一区| 91在线观看一区二区| 免费观看在线综合| 一区二区免费在线播放| 欧美国产日本韩| 日韩欧美国产精品| 欧美日韩在线亚洲一区蜜芽| 国产成人高清在线| 麻豆精品在线观看| 五月激情丁香一区二区三区| 亚洲女与黑人做爰| 日本一区二区三区免费乱视频| 欧美精品日韩一本| 日本精品视频一区二区三区| 国产精品中文字幕日韩精品| 美女网站视频久久| 五月婷婷色综合| 亚洲一区中文在线| 国产精品二三区| 久久毛片高清国产| 欧美成人女星排名| 91精品免费在线| 欧美日韩激情一区| 色综合天天综合给合国产| 国产成人在线免费观看| 久久精品国产色蜜蜜麻豆| 三级亚洲高清视频| 香蕉久久一区二区不卡无毒影院| 亚洲乱码国产乱码精品精小说 | 紧缚奴在线一区二区三区| 一区二区三区久久| 中文字幕欧美一| 国产亚洲一二三区| 国产日产欧美一区| 久久亚洲精华国产精华液| 日韩一级片在线观看| 日韩欧美一区二区在线视频| 欧美精选在线播放| 欧美亚洲国产bt| 在线观看视频一区二区欧美日韩| 91美女片黄在线观看| 99久久精品一区二区| av网站免费线看精品| 成人不卡免费av| av在线综合网| 91视频免费播放| 在线精品视频免费观看| 欧美日韩在线观看一区二区 | 精品国精品自拍自在线| 日韩一区二区三区免费观看| 亚洲婷婷国产精品电影人久久| 欧美人与性动xxxx| 日本高清成人免费播放| 欧美亚洲日本一区| 欧美日韩不卡视频| 欧美一区二区三区啪啪| 欧美一二三区在线观看| 日韩精品一区二| 国产日韩欧美高清在线| 国产精品久久久久久亚洲毛片| 日韩理论片中文av| 亚洲第一激情av| 国产一区在线看| 99久久国产综合精品色伊| 欧美这里有精品| 日韩欧美久久一区| 国产精品三级在线观看| 亚洲一区在线播放| 韩国精品在线观看| 91在线国产福利| 日韩三级视频在线看| 国产欧美一区二区三区沐欲| 亚洲精品视频免费观看| 日韩电影一区二区三区| 成人理论电影网| 成人一区二区三区视频在线观看 | 久久99精品视频| 91小宝寻花一区二区三区| 欧美色电影在线| xf在线a精品一区二区视频网站| 中文字幕中文在线不卡住| 亚洲一区视频在线| 国产伦精品一区二区三区免费 | 久久久www免费人成精品| 亚洲欧美日韩国产成人精品影院| 免费成人在线观看| 99久久国产综合精品女不卡| 欧美一区在线视频| 亚洲欧美在线观看| 极品少妇一区二区| 欧美性欧美巨大黑白大战| 国产午夜精品久久| 免费看欧美美女黄的网站| 91浏览器入口在线观看| 久久综合色一综合色88| 午夜av一区二区| 91丝袜美女网| 91久久香蕉国产日韩欧美9色| 日本国产一区二区| 国产亚洲精品bt天堂精选| 日韩电影一区二区三区| 日本韩国欧美在线| 国产精品三级av在线播放| 另类小说欧美激情| 884aa四虎影成人精品一区| 亚洲欧美一区二区三区国产精品| 国产精品综合av一区二区国产馆| 在线播放视频一区| 亚洲一区二区av电影| www.色综合.com| 国产欧美一区二区精品久导航 | 老司机免费视频一区二区三区| 色哦色哦哦色天天综合| 国产精品每日更新在线播放网址| 精品一区二区三区在线观看| 91精品国产综合久久福利| 亚洲欧美日本在线| 成年人国产精品| 国产精品久久久久婷婷| 成人久久18免费网站麻豆| 精品91自产拍在线观看一区| 日本一区中文字幕| 日韩西西人体444www| 麻豆一区二区三| 日韩精品一区二区三区在线播放| 五月婷婷色综合| 欧美美女直播网站| 亚洲va欧美va人人爽| 67194成人在线观看| 婷婷亚洲久悠悠色悠在线播放 | 欧美日韩一卡二卡三卡| 亚洲激情中文1区| 91尤物视频在线观看| 亚洲精品日韩一| 欧美日韩二区三区| 三级影片在线观看欧美日韩一区二区 | 亚洲成人1区2区| 欧美日韩国产一区二区三区地区| 亚洲国产一区二区三区| 欧美日韩一区二区欧美激情| 日韩黄色在线观看| 日韩欧美亚洲国产另类| 国产乱码精品一区二区三区忘忧草| 久久久噜噜噜久噜久久综合| 成人精品国产福利| 亚洲天堂2016| 欧美日韩一区二区电影| 日产国产高清一区二区三区 | 国产 欧美在线| 日韩久久一区二区| 欧美在线短视频| 免费三级欧美电影| 国产欧美1区2区3区| 一本到高清视频免费精品| 天天综合天天做天天综合| 欧美成人aa大片| 北条麻妃一区二区三区| 亚洲欧美福利一区二区| 欧美精品v日韩精品v韩国精品v| 精品一区在线看| 亚洲精品国产成人久久av盗摄| 91精品国产美女浴室洗澡无遮挡| 国产在线精品一区二区夜色| 亚洲视频小说图片|