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

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

?? wb_master_behavioral.v

?? FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例導(dǎo)航(源程序)
?? V
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/

`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
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品日日摸夜夜摸av| 国产精品久久久久影院亚瑟| 国产乱理伦片在线观看夜一区 | 日韩欧美一区二区视频| 国产一区二区剧情av在线| 亚洲一二三四在线观看| 国产视频911| 日韩免费观看2025年上映的电影| 91亚洲男人天堂| 国产盗摄视频一区二区三区| 午夜精品久久久久久久久久| 1024国产精品| 国产亚洲精品7777| 精品国产免费人成在线观看| 欧美三级资源在线| 91猫先生在线| 成人小视频在线| 国产一区视频在线看| 日韩在线观看一区二区| 一区二区三区日韩精品视频| 国产精品免费看片| 国产午夜精品在线观看| 337p粉嫩大胆噜噜噜噜噜91av | 亚洲综合自拍偷拍| 国产精品久久久久9999吃药| 久久久久高清精品| 精品盗摄一区二区三区| 欧美一级一区二区| 欧美人妖巨大在线| 一本一道波多野结衣一区二区| 国产999精品久久久久久绿帽| 精品制服美女丁香| 青草国产精品久久久久久| 日韩国产在线观看| 丝袜美腿亚洲综合| 日本视频一区二区| 日韩国产欧美三级| 美女网站视频久久| 麻豆国产欧美一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 午夜久久久久久电影| 日韩主播视频在线| 人人爽香蕉精品| 捆绑变态av一区二区三区| 麻豆中文一区二区| 国内精品伊人久久久久av一坑| 韩国av一区二区三区| 国产成人免费视频网站| 成人免费视频播放| 91碰在线视频| 精品视频一区二区不卡| 欧美老肥妇做.爰bbww| 91精品麻豆日日躁夜夜躁| 日韩三级在线观看| 精品少妇一区二区三区在线播放| 久久综合视频网| 欧美激情一区二区三区在线| 综合av第一页| 亚洲成人www| 激情图区综合网| 成人在线综合网站| 在线免费亚洲电影| 日韩亚洲欧美成人一区| 国产日韩欧美精品电影三级在线 | 亚洲日本免费电影| 婷婷久久综合九色综合绿巨人| 男女激情视频一区| 国产传媒一区在线| 色哟哟一区二区| 4438成人网| 国产亚洲一本大道中文在线| 日韩毛片一二三区| 免费观看日韩av| www.爱久久.com| 91麻豆精品国产综合久久久久久| 精品三级av在线| 亚洲天堂成人网| 日本欧美在线观看| 成人97人人超碰人人99| 欧美精品久久久久久久多人混战| 久久久国产精品午夜一区ai换脸| 尤物视频一区二区| 国内欧美视频一区二区 | 色婷婷精品久久二区二区蜜臂av| 欧美日韩大陆在线| 国产精品妹子av| 日精品一区二区三区| proumb性欧美在线观看| 欧美一区二区三级| 亚洲精品高清在线观看| 国产在线精品免费av| 欧美午夜不卡视频| 国产精品污污网站在线观看| 性欧美疯狂xxxxbbbb| 不卡av在线网| 欧美精品一区二| 日韩av一区二区三区| 91一区二区三区在线观看| ww亚洲ww在线观看国产| 亚洲成av人在线观看| 91亚洲精品久久久蜜桃| 久久精品视频免费观看| 日韩成人免费看| 欧洲精品在线观看| 国产精品久99| 国产精品 欧美精品| 欧美一区二区三区视频免费| 亚洲精选视频在线| 成人一区二区三区在线观看 | 亚洲精品日日夜夜| 高清在线成人网| 精品999在线播放| 日韩成人精品在线| 欧美性感一区二区三区| 成人欧美一区二区三区小说| 国产黄色精品视频| 久久亚洲捆绑美女| 麻豆精品国产91久久久久久| 在线成人av网站| 亚洲午夜精品久久久久久久久| av一区二区久久| 中文一区在线播放| 国产不卡在线视频| 久久久激情视频| 国产一区福利在线| 日韩精品专区在线影院观看| 五月天激情综合| 在线观看亚洲精品| 亚洲一区免费视频| 精品视频一区二区不卡| 亚洲国产成人高清精品| 欧美在线视频你懂得| 亚洲精品v日韩精品| 在线视频欧美区| 亚洲国产欧美在线| 欧美日韩激情一区二区| 五月婷婷综合激情| 4438成人网| 极品美女销魂一区二区三区| 精品福利视频一区二区三区| 美国一区二区三区在线播放| 精品日韩一区二区| 国产精品中文字幕一区二区三区| 精品成人一区二区| 高清不卡一区二区| 亚洲欧洲制服丝袜| 欧美日韩电影在线| 看片网站欧美日韩| 亚洲国产电影在线观看| 97久久精品人人澡人人爽| 亚洲人妖av一区二区| 欧美自拍偷拍一区| 视频一区二区不卡| 日韩欧美成人一区| 粉嫩aⅴ一区二区三区四区| 亚洲视频网在线直播| 欧美专区在线观看一区| 蜜芽一区二区三区| 久久先锋资源网| 91麻豆精品一区二区三区| 亚洲成人免费影院| 精品成人一区二区三区四区| 成人激情校园春色| 亚洲一区在线播放| 久久综合久久久久88| 不卡一区二区三区四区| 五月天视频一区| 久久久不卡网国产精品一区| 色综合久久天天| 免费视频一区二区| 国产精品看片你懂得| 欧美日韩一区二区在线观看 | 欧美精品一级二级三级| 国产一区二区看久久| 一区二区在线电影| 日韩一级免费观看| caoporm超碰国产精品| 天堂影院一区二区| 国产欧美va欧美不卡在线| 欧美日韩一二三区| 国产精品一区一区三区| 亚洲综合区在线| 国产欧美日韩另类视频免费观看| 在线视频观看一区| 国产99久久久国产精品潘金网站| 一区二区三区美女视频| 久久久久综合网| 欧美美女黄视频| 成人免费黄色在线| 久久99日本精品| 一级日本不卡的影视| 久久精品视频网| 欧美一区二区三区在线观看视频| 成人精品高清在线| 国产一区在线看| 日本伊人精品一区二区三区观看方式| 国产精品久久三| 久久美女高清视频| 91麻豆精品国产91久久久久久 | 日本一区二区视频在线|