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

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

?? eth_cop.v

?? FPGA數字電子系統設計與開發實例導航光盤內附源碼
?? V
字號:


`include "tb_eth_defines.v"
`include "timescale.v"

module eth_cop
(
  // WISHBONE common
  wb_clk_i, wb_rst_i, 
  
  // WISHBONE MASTER 1
  m1_wb_adr_i, m1_wb_sel_i, m1_wb_we_i,  m1_wb_dat_o, 
  m1_wb_dat_i, m1_wb_cyc_i, m1_wb_stb_i, m1_wb_ack_o, 
  m1_wb_err_o, 

  // WISHBONE MASTER 2
  m2_wb_adr_i, m2_wb_sel_i, m2_wb_we_i,  m2_wb_dat_o, 
  m2_wb_dat_i, m2_wb_cyc_i, m2_wb_stb_i, m2_wb_ack_o, 
  m2_wb_err_o, 

  // WISHBONE slave 1
 	s1_wb_adr_o, s1_wb_sel_o, s1_wb_we_o,  s1_wb_cyc_o, 
 	s1_wb_stb_o, s1_wb_ack_i, s1_wb_err_i, s1_wb_dat_i,
 	s1_wb_dat_o, 
 	
  // WISHBONE slave 2
 	s2_wb_adr_o, s2_wb_sel_o, s2_wb_we_o,  s2_wb_cyc_o, 
 	s2_wb_stb_o, s2_wb_ack_i, s2_wb_err_i, s2_wb_dat_i,
 	s2_wb_dat_o
);

parameter Tp=1;

// WISHBONE common
input wb_clk_i, wb_rst_i;
  
// WISHBONE MASTER 1
input  [31:0] m1_wb_adr_i, m1_wb_dat_i;
input   [3:0] m1_wb_sel_i;
input         m1_wb_cyc_i, m1_wb_stb_i, m1_wb_we_i;
output [31:0] m1_wb_dat_o;
output        m1_wb_ack_o, m1_wb_err_o;

// WISHBONE MASTER 2
input  [31:0] m2_wb_adr_i, m2_wb_dat_i;
input   [3:0] m2_wb_sel_i;
input         m2_wb_cyc_i, m2_wb_stb_i, m2_wb_we_i;
output [31:0] m2_wb_dat_o;
output        m2_wb_ack_o, m2_wb_err_o;

// WISHBONE slave 1
input  [31:0] s1_wb_dat_i;
input         s1_wb_ack_i, s1_wb_err_i;
output [31:0] s1_wb_adr_o, s1_wb_dat_o;
output  [3:0] s1_wb_sel_o;
output        s1_wb_we_o,  s1_wb_cyc_o, s1_wb_stb_o;
 	
// WISHBONE slave 2
input  [31:0] s2_wb_dat_i;
input         s2_wb_ack_i, s2_wb_err_i;
output [31:0] s2_wb_adr_o, s2_wb_dat_o;
output  [3:0] s2_wb_sel_o;
output        s2_wb_we_o,  s2_wb_cyc_o, s2_wb_stb_o;

reg           m1_in_progress;
reg           m2_in_progress;
reg    [31:0] s1_wb_adr_o;
reg     [3:0] s1_wb_sel_o;
reg           s1_wb_we_o;
reg    [31:0] s1_wb_dat_o;
reg           s1_wb_cyc_o;
reg           s1_wb_stb_o;
reg    [31:0] s2_wb_adr_o;
reg     [3:0] s2_wb_sel_o;
reg           s2_wb_we_o;
reg    [31:0] s2_wb_dat_o;
reg           s2_wb_cyc_o;
reg           s2_wb_stb_o;

reg           m1_wb_ack_o;
reg    [31:0] m1_wb_dat_o;
reg           m2_wb_ack_o;
reg    [31:0] m2_wb_dat_o;

reg           m1_wb_err_o;
reg           m2_wb_err_o;

wire m_wb_access_finished;
wire m1_req = m1_wb_cyc_i & m1_wb_stb_i & (`M1_ADDRESSED_S1 | `M1_ADDRESSED_S2);
wire m2_req = m2_wb_cyc_i & m2_wb_stb_i & (`M2_ADDRESSED_S1 | `M2_ADDRESSED_S2);

always @ (posedge wb_clk_i or posedge wb_rst_i)
begin
  if(wb_rst_i)
    begin
      m1_in_progress <=#Tp 0;
      m2_in_progress <=#Tp 0;
      s1_wb_adr_o    <=#Tp 0;
      s1_wb_sel_o    <=#Tp 0;
      s1_wb_we_o     <=#Tp 0;
      s1_wb_dat_o    <=#Tp 0;
      s1_wb_cyc_o    <=#Tp 0;
      s1_wb_stb_o    <=#Tp 0;
      s2_wb_adr_o    <=#Tp 0;
      s2_wb_sel_o    <=#Tp 0;
      s2_wb_we_o     <=#Tp 0;
      s2_wb_dat_o    <=#Tp 0;
      s2_wb_cyc_o    <=#Tp 0;
      s2_wb_stb_o    <=#Tp 0;
    end
  else
    begin
      case({m1_in_progress, m2_in_progress, m1_req, m2_req, m_wb_access_finished})  // synopsys_full_case synopsys_paralel_case
        5'b00_10_0, 5'b00_11_0 :
          begin
            m1_in_progress <=#Tp 1'b1;  // idle: m1 or (m1 & m2) want access: m1 -> m
            if(`M1_ADDRESSED_S1)
              begin
                s1_wb_adr_o <=#Tp m1_wb_adr_i;
                s1_wb_sel_o <=#Tp m1_wb_sel_i;
                s1_wb_we_o  <=#Tp m1_wb_we_i;
                s1_wb_dat_o <=#Tp m1_wb_dat_i;
                s1_wb_cyc_o <=#Tp 1'b1;
                s1_wb_stb_o <=#Tp 1'b1;
              end
            else if(`M1_ADDRESSED_S2)
              begin
                s2_wb_adr_o <=#Tp m1_wb_adr_i;
                s2_wb_sel_o <=#Tp m1_wb_sel_i;
                s2_wb_we_o  <=#Tp m1_wb_we_i;
                s2_wb_dat_o <=#Tp m1_wb_dat_i;
                s2_wb_cyc_o <=#Tp 1'b1;
                s2_wb_stb_o <=#Tp 1'b1;
              end
            else
              $display("(%t)(%m)WISHBONE ERROR: Unspecified address space accessed", $time);
          end
        5'b00_01_0 :
          begin
            m2_in_progress <=#Tp 1'b1;  // idle: m2 wants access: m2 -> m
            if(`M2_ADDRESSED_S1)
              begin
                s1_wb_adr_o <=#Tp m2_wb_adr_i;
                s1_wb_sel_o <=#Tp m2_wb_sel_i;
                s1_wb_we_o  <=#Tp m2_wb_we_i;
                s1_wb_dat_o <=#Tp m2_wb_dat_i;
                s1_wb_cyc_o <=#Tp 1'b1;
                s1_wb_stb_o <=#Tp 1'b1;
              end
            else if(`M2_ADDRESSED_S2)
              begin
                s2_wb_adr_o <=#Tp m2_wb_adr_i;
                s2_wb_sel_o <=#Tp m2_wb_sel_i;
                s2_wb_we_o  <=#Tp m2_wb_we_i;
                s2_wb_dat_o <=#Tp m2_wb_dat_i;
                s2_wb_cyc_o <=#Tp 1'b1;
                s2_wb_stb_o <=#Tp 1'b1;
              end
            else
              $display("(%t)(%m)WISHBONE ERROR: Unspecified address space accessed", $time);
          end
        5'b10_10_1, 5'b10_11_1 :
          begin
            m1_in_progress <=#Tp 1'b0;  // m1 in progress. Cycle is finished. Send ack or err to m1.
            if(`M1_ADDRESSED_S1)
              begin
                s1_wb_cyc_o <=#Tp 1'b0;
                s1_wb_stb_o <=#Tp 1'b0;
              end
            else if(`M1_ADDRESSED_S2)
              begin
                s2_wb_cyc_o <=#Tp 1'b0;
                s2_wb_stb_o <=#Tp 1'b0;
              end
          end
        5'b01_01_1, 5'b01_11_1 :
          begin
            m2_in_progress <=#Tp 1'b0;  // m2 in progress. Cycle is finished. Send ack or err to m2.
            if(`M2_ADDRESSED_S1)
              begin
                s1_wb_cyc_o <=#Tp 1'b0;
                s1_wb_stb_o <=#Tp 1'b0;
              end
            else if(`M2_ADDRESSED_S2)
              begin
                s2_wb_cyc_o <=#Tp 1'b0;
                s2_wb_stb_o <=#Tp 1'b0;
              end
          end
      endcase
    end
end

// Generating Ack for master 1
always @ (m1_in_progress or m1_wb_adr_i or s1_wb_ack_i or s2_wb_ack_i or s1_wb_dat_i or s2_wb_dat_i or `M1_ADDRESSED_S1 or `M1_ADDRESSED_S2)
begin
  if(m1_in_progress)
    begin
      if(`M1_ADDRESSED_S1) begin
        m1_wb_ack_o <= s1_wb_ack_i;
        m1_wb_dat_o <= s1_wb_dat_i;
      end
      else if(`M1_ADDRESSED_S2) begin
        m1_wb_ack_o <= s2_wb_ack_i;
        m1_wb_dat_o <= s2_wb_dat_i;
      end
    end
  else
    m1_wb_ack_o <= 0;
end


// Generating Ack for master 2
always @ (m2_in_progress or m2_wb_adr_i or s1_wb_ack_i or s2_wb_ack_i or s1_wb_dat_i or s2_wb_dat_i or `M2_ADDRESSED_S1 or `M2_ADDRESSED_S2)
begin
  if(m2_in_progress)
    begin
      if(`M2_ADDRESSED_S1) begin
        m2_wb_ack_o <= s1_wb_ack_i;
        m2_wb_dat_o <= s1_wb_dat_i;
      end
      else if(`M2_ADDRESSED_S2) begin
        m2_wb_ack_o <= s2_wb_ack_i;
        m2_wb_dat_o <= s2_wb_dat_i;
      end
    end
  else
    m2_wb_ack_o <= 0;
end


// Generating Err for master 1
always @ (m1_in_progress or m1_wb_adr_i or s1_wb_err_i or s2_wb_err_i or `M2_ADDRESSED_S1 or `M2_ADDRESSED_S2 or
          m1_wb_cyc_i or m1_wb_stb_i)
begin
  if(m1_in_progress)  begin
    if(`M1_ADDRESSED_S1)
      m1_wb_err_o <= s1_wb_err_i;
    else if(`M1_ADDRESSED_S2)
      m1_wb_err_o <= s2_wb_err_i;
  end
  else if(m1_wb_cyc_i & m1_wb_stb_i & ~`M1_ADDRESSED_S1 & ~`M1_ADDRESSED_S2)
    m1_wb_err_o <= 1'b1;
  else
    m1_wb_err_o <= 1'b0;
end


// Generating Err for master 2
always @ (m2_in_progress or m2_wb_adr_i or s1_wb_err_i or s2_wb_err_i or `M2_ADDRESSED_S1 or `M2_ADDRESSED_S2 or
          m2_wb_cyc_i or m2_wb_stb_i)
begin
  if(m2_in_progress)  begin
    if(`M2_ADDRESSED_S1)
      m2_wb_err_o <= s1_wb_err_i;
    else if(`M2_ADDRESSED_S2)
      m2_wb_err_o <= s2_wb_err_i;
  end
  else if(m2_wb_cyc_i & m2_wb_stb_i & ~`M2_ADDRESSED_S1 & ~`M2_ADDRESSED_S2)
    m2_wb_err_o <= 1'b1;
  else
    m2_wb_err_o <= 1'b0;
end


assign m_wb_access_finished = m1_wb_ack_o | m1_wb_err_o | m2_wb_ack_o | m2_wb_err_o;


// Activity monitor
integer cnt;
always @ (posedge wb_clk_i or posedge wb_rst_i)
begin
  if(wb_rst_i)
    cnt <=#Tp 0;
  else
  if(s1_wb_ack_i | s1_wb_err_i | s2_wb_ack_i | s2_wb_err_i)
    cnt <=#Tp 0;
  else
  if(s1_wb_cyc_o | s2_wb_cyc_o)
    cnt <=#Tp cnt+1;
end

always @ (posedge wb_clk_i)
begin
  if(cnt==1000) begin
    $display("(%0t)(%m) ERROR: WB activity ??? ", $time);
    if(s1_wb_cyc_o) begin
      $display("s1_wb_dat_o = 0x%0x", s1_wb_dat_o);
      $display("s1_wb_adr_o = 0x%0x", s1_wb_adr_o);
      $display("s1_wb_sel_o = 0x%0x", s1_wb_sel_o);
      $display("s1_wb_we_o = 0x%0x", s1_wb_we_o);
    end
    else if(s2_wb_cyc_o) begin
      $display("s2_wb_dat_o = 0x%0x", s2_wb_dat_o);
      $display("s2_wb_adr_o = 0x%0x", s2_wb_adr_o);
      $display("s2_wb_sel_o = 0x%0x", s2_wb_sel_o);
      $display("s2_wb_we_o = 0x%0x", s2_wb_we_o);
    end

    $stop;
  end
end


always @ (posedge wb_clk_i)
begin
  if(s1_wb_err_i & s1_wb_cyc_o) begin
    $display("(%0t) ERROR: WB cycle finished with error acknowledge ", $time);
    $display("s1_wb_dat_o = 0x%0x", s1_wb_dat_o);
    $display("s1_wb_adr_o = 0x%0x", s1_wb_adr_o);
    $display("s1_wb_sel_o = 0x%0x", s1_wb_sel_o);
    $display("s1_wb_we_o = 0x%0x", s1_wb_we_o);
    $stop;
  end
  if(s2_wb_err_i & s2_wb_cyc_o) begin
    $display("(%0t) ERROR: WB cycle finished with error acknowledge ", $time);
    $display("s2_wb_dat_o = 0x%0x", s2_wb_dat_o);
    $display("s2_wb_adr_o = 0x%0x", s2_wb_adr_o);
    $display("s2_wb_sel_o = 0x%0x", s2_wb_sel_o);
    $display("s2_wb_we_o = 0x%0x", s2_wb_we_o);
    $stop;
  end
end



endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道久久综合亚洲91| 国产精品你懂的在线欣赏| 久久综合色鬼综合色| 亚洲另类春色校园小说| 激情国产一区二区| 欧美日韩高清一区二区三区| 中文字幕欧美日韩一区| 免费高清视频精品| 91福利国产精品| 亚洲国产激情av| 久久福利视频一区二区| 91黄色免费观看| 国产精品私房写真福利视频| 激情国产一区二区| 欧美一区二区三区喷汁尤物| 一区二区三区自拍| av福利精品导航| 国产欧美日韩一区二区三区在线观看 | 国产不卡在线一区| 欧美sm美女调教| 免费在线观看不卡| 欧美一区二区观看视频| 午夜电影一区二区三区| 色婷婷亚洲一区二区三区| 日本一区二区三区在线不卡| 国产精品一区二区男女羞羞无遮挡| 欧美精品99久久久**| 亚洲一区二区精品久久av| 日本韩国视频一区二区| 日韩av一区二区三区| 色屁屁一区二区| 夜夜夜精品看看| 在线欧美日韩精品| 亚洲成人黄色小说| 正在播放一区二区| 久久狠狠亚洲综合| 久久久久97国产精华液好用吗| 国产在线精品免费| 久久久精品黄色| 成人听书哪个软件好| 国产精品天天摸av网| 94-欧美-setu| 亚洲国产毛片aaaaa无费看 | 亚洲人成人一区二区在线观看 | 日韩美女视频一区二区 | 午夜欧美一区二区三区在线播放| 91国产成人在线| 偷拍与自拍一区| 欧美一区二区高清| 国产福利视频一区二区三区| 国产免费成人在线视频| 97aⅴ精品视频一二三区| 亚洲国产另类精品专区| 精品免费国产二区三区| 国产91高潮流白浆在线麻豆| 亚洲人成小说网站色在线 | 欧美在线看片a免费观看| 亚洲成人中文在线| 欧美精品一区二| 91丝袜美女网| 日本亚洲欧美天堂免费| 久久精品男人天堂av| 91日韩在线专区| 日韩在线一二三区| 国产精品入口麻豆原神| 欧美日韩一区二区在线观看| 国产又粗又猛又爽又黄91精品| 国产精品久久久久毛片软件| 欧美精品tushy高清| 成人永久免费视频| 亚洲第一成年网| 国产精品污www在线观看| 精品视频色一区| 高清成人在线观看| 天天综合日日夜夜精品| 中文字幕巨乱亚洲| 91精品国产免费| 99精品欧美一区二区三区小说| 亚洲bdsm女犯bdsm网站| 久久久久国产一区二区三区四区| 在线观看亚洲精品视频| 狠狠色丁香久久婷婷综| 亚洲图片欧美视频| 中文字幕中文乱码欧美一区二区 | 国产三级一区二区| 在线成人av网站| 色综合天天综合给合国产| 国产自产高清不卡| 日本在线不卡视频| 一区二区三区精密机械公司| 国产日产欧产精品推荐色 | 国产中文一区二区三区| 亚洲成人综合在线| 亚洲乱码国产乱码精品精的特点| 2017欧美狠狠色| 欧美电影一区二区三区| 在线视频欧美区| 99久久国产免费看| 高清不卡一二三区| 国产美女精品在线| 韩日欧美一区二区三区| 六月丁香综合在线视频| 五月天激情综合网| 亚洲国产精品久久久男人的天堂| 亚洲欧洲一区二区在线播放| 欧美国产综合色视频| 一级做a爱片久久| 日韩久久一区二区| 中文字幕在线不卡一区 | 日韩精品高清不卡| 亚洲国产美女搞黄色| 一区二区三区四区不卡在线| 亚洲欧美偷拍三级| 亚洲婷婷综合色高清在线| 中文字幕一区二区不卡| 中文字幕五月欧美| 自拍偷在线精品自拍偷无码专区| 亚洲欧洲av另类| 亚洲欧美一区二区视频| 亚洲激情中文1区| 亚洲综合区在线| 视频一区欧美精品| 极品少妇xxxx精品少妇偷拍| 激情另类小说区图片区视频区| 精品中文字幕一区二区| 国产剧情av麻豆香蕉精品| 国产成人午夜精品5599| 东方欧美亚洲色图在线| av一二三不卡影片| 欧美亚洲动漫精品| 91精品国产欧美一区二区成人 | 成人免费看片app下载| 成人美女视频在线观看| 91同城在线观看| 欧美日韩国产bt| 久久久久国色av免费看影院| 中文字幕精品一区| 亚洲综合色婷婷| 另类欧美日韩国产在线| 国产成人精品亚洲午夜麻豆| 99国产精品99久久久久久| 91国偷自产一区二区使用方法| 51精品国自产在线| 中文字幕+乱码+中文字幕一区| 亚洲欧美综合另类在线卡通| 亚洲高清久久久| 国产成人av电影在线| 欧美日韩中文一区| 亚洲精品一区二区三区蜜桃下载| 亚洲欧洲成人自拍| 久久99热这里只有精品| www.亚洲人| 精品日韩欧美一区二区| 中文字幕在线视频一区| 日韩电影在线一区二区三区| 成人久久18免费网站麻豆| 欧美三级电影网| 中文字幕免费一区| 日韩激情在线观看| 成人国产视频在线观看| 欧美一区二区三区日韩| 亚洲精品国产无套在线观| 国内精品写真在线观看| 欧美亚州韩日在线看免费版国语版| 精品国产一区二区精华| 亚洲h精品动漫在线观看| aaa欧美色吧激情视频| 日韩写真欧美这视频| 一区二区三区在线观看网站| 国产白丝网站精品污在线入口| 欧美男人的天堂一二区| 亚洲伦理在线精品| 成人做爰69片免费看网站| 欧美www视频| 午夜亚洲福利老司机| 91看片淫黄大片一级在线观看| 2014亚洲片线观看视频免费| 日本欧美一区二区三区乱码| 色综合色综合色综合| 国产精品私房写真福利视频| 极品销魂美女一区二区三区| 91精品国产91久久综合桃花| 亚洲一区二区在线免费观看视频| av在线一区二区| 国产精品国产三级国产专播品爱网| 久久狠狠亚洲综合| 日韩欧美的一区| 麻豆91免费观看| 日韩情涩欧美日韩视频| 日本成人超碰在线观看| 91精品国产综合久久蜜臀| 视频在线在亚洲| 欧美一区二区三区视频在线| 水蜜桃久久夜色精品一区的特点| 在线看日韩精品电影| 亚洲精品网站在线观看| 欧美最猛性xxxxx直播| 一区二区三区在线视频播放| 欧美影视一区在线| 亚洲成av人影院在线观看网|