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

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

?? switchasyncfifo.v

?? 基于802.3以太網(wǎng)的mac源碼
?? V
字號:
//// Module SwitchAsyncFIFO//// the differences between this FIFO and the general one are listed below//    1. because there is no any write and read acknowledgements, the user should take advantage of the status flags to generate the write and read requests.//    2. after the qWFull flag has been asserted, the word can not be written into the FIFO.//    3. after the qREmpty flag has been asserted, the data can not be read out from the FIFO.//    4. 2 flip-flops are used to re-synchronize the addresses of the different clock domains.//    5. to decrease 1 clock, the negedge of the clock is utilized by the 1st flip-flop.//    6. to provide guaranteed free space information, the qRNumberLeft has been subtracted 4.//// Created://          by - Xinchun Liu//          at - 2006-09-27//// revised://          by - Xinchun Liu//          at - 2007-05-15//    1. to decrease the clock to output time, a output register has been added.//    2. 1 cycle latency has been added to the output data and empty flag.//`resetall`timescale 1ns/10psmodule SwitchAsyncFIFO(   inReset,   iWClk,   iWEn,   ivDataIn,   qWFull,   qvWCount,   iRClk,   iREn,   ovDataOut,   qREmpty,   qvRNumberLeft);// Default address and data widthparameter   pDepthWidth = 5 ;parameter   pWordWidth = 16 ;input   inReset ;input   iWClk ;input iWEn ;input [pWordWidth-1:0]   ivDataIn ;output   qWFull ;output   [pDepthWidth:0]   qvWCount ;input   iRClk ;input   iREn ;output   [pWordWidth-1:0]   ovDataOut ;output   qREmpty ;output   [pDepthWidth:0]   qvRNumberLeft ;wire   inReset ;wire   iWClk ;wire   iWEn ;wire  [pWordWidth-1:0]   ivDataIn ;wire   qWFull ;wire  [pDepthWidth:0]   qvWCount ;wire   iRClk ;wire   iREn ;wire  [pWordWidth-1:0]   ovDataOut ;wire   qREmpty ;wire  [pDepthWidth:0]   qvRNumberLeft ;wire  MemWEn;wire  [pDepthWidth-1:0] vWriteAddr ;wire  [pDepthWidth-1:0] vReadAddr ;wire   [pWordWidth-1:0] MemDataOut ;DualPortRAM_ASYN #( pDepthWidth, pWordWidth ) Fifo_Storage   (      // Generic synchronous two-port RAM interface      .WriteClock    ( iWClk ),      .MemWEn        ( MemWEn ),      .MemWAddr      ( vWriteAddr ),      .MemDataIn     ( ivDataIn ),      .ReadClock     ( iRClk ),      .MemRAddr      ( vReadAddr ),      .MemDataOut    ( MemDataOut )    );FifoControl_ASYN #( pDepthWidth, pWordWidth ) Fifo_Controller   (      .inReset       ( inReset ) ,      .WriteClock    ( iWClk ) ,      .iWEn          ( iWEn ) ,      .MemWEn        ( MemWEn ) ,      .vWAddr        ( vWriteAddr ) ,      .qWFull        ( qWFull ) ,       .qvWCount      ( qvWCount ) ,      .ReadClock     ( iRClk ) ,      .iREn          ( iREn ) ,      .vRAddr        ( vReadAddr ) ,      .qREmpty       ( qREmpty ) ,       .MemDataOut    ( MemDataOut ),      .qvDataOut     ( ovDataOut ),      .qvRNumberLeft ( qvRNumberLeft )   ) ;endmodulemodule FifoControl_ASYN(   inReset ,   WriteClock ,   iWEn ,   MemWEn ,   vWAddr ,   qWFull ,    qvWCount ,   ReadClock ,   iREn ,   vRAddr ,   qREmpty ,    MemDataOut ,    qvDataOut ,    qvRNumberLeft);// Default address and data widthparameter   pDepthWidth = 5 ;parameter   pWordWidth = 16 ;input  inReset ;input  WriteClock ;input  iWEn ;output  MemWEn ;output  [pDepthWidth-1:0] vWAddr ;output  qWFull ;output  [pDepthWidth:0] qvWCount ;input   ReadClock ;input   iREn ;output  [pDepthWidth-1:0] vRAddr ;output  qREmpty ; input   [pWordWidth-1:0]  MemDataOut ;output  [pWordWidth-1:0]  qvDataOut ;output  [pDepthWidth:0]   qvRNumberLeft ;wire  inReset ;wire  WriteClock ;wire  iWEn ;wire  MemWEn ;wire  [pDepthWidth-1:0] vWAddr ;reg   qWFull ;reg   [pDepthWidth:0]   qvWCount ;wire  ReadClock ;wire  iREn ;wire  [pDepthWidth-1:0] vRAddr ;reg   qREmpty ; wire  [pWordWidth-1:0]  MemDataOut ;reg   [pWordWidth-1:0]  qvDataOut ;reg   [pDepthWidth:0]   qvRNumberLeft ;// internal variables   // write clock domainreg  [pDepthWidth:0] qvWAddr ;reg  [pDepthWidth:0] qvNextWAddr ;reg  [pDepthWidth:0] qvPreWGrayAddr ;reg  [pDepthWidth:0] qvWGrayAddr ;reg  [pDepthWidth:0] qvRGrayAddr_WSync1 ;reg  [pDepthWidth:0] qvRGrayAddr_WSync2 ;reg  [pDepthWidth:0] qvRAddr_WSync2 ;   // read clock domainreg  [pDepthWidth:0] qvRAddr ;reg  [pDepthWidth:0] qvNextRAddr ;reg  [pDepthWidth:0] qvRGrayAddr ;reg  [pDepthWidth:0] qvPreWGrayAddr_RSync1 ;reg  [pDepthWidth:0] qvPreWGrayAddr_RSync2 ;reg  [pDepthWidth:0] qvPreWAddr_RSync2 ;reg  [pDepthWidth:0] qvWGrayAddr_RSync1 ;reg  [pDepthWidth:0] qvWGrayAddr_RSync2 ;reg  [pDepthWidth:0] qvPointerForNumLeft ;reg  [pDepthWidth:0] qvNextPointerForNumLeft ;reg   qREmpty_int ;wire  MemREn ;assign MemREn = !qREmpty_int && ( qREmpty || iREn ) ;assign MemWEn = iWEn && ( !qWFull ) ;assign vWAddr = qvWAddr[pDepthWidth-1:0] ;assign vRAddr = MemREn ? qvNextRAddr[pDepthWidth-1:0] : qvRAddr[pDepthWidth-1:0] ;// logicinteger i;// write clock domain   // write addressalways @ ( negedge inReset or posedge WriteClock )begin   if( !inReset ) begin      qvWAddr <= 1 ;      qvNextWAddr <= 2 ;      qvPreWGrayAddr <= 0 ;      qvWGrayAddr <= 1 ;   end   else  if( MemWEn )   begin      qvWAddr <= qvNextWAddr ;      qvNextWAddr <= qvNextWAddr + 1'b1 ;      qvPreWGrayAddr <= qvWGrayAddr ;      qvWGrayAddr <= ( qvNextWAddr >> 1 ) ^ qvNextWAddr ;//      qvPreWGrayAddr <= ( qvWAddr >> 1 ) ^ qvWAddr ;   endend   // re-synchronize the read addresses within write clock domain      // the 1st synchronizing cyclealways @ ( negedge inReset or posedge WriteClock )  begin   if( !inReset ) begin      qvRGrayAddr_WSync1 <= 1 ;   end   else  begin      qvRGrayAddr_WSync1 <= qvRGrayAddr ;   endend      // the 2nd synchronizing cyclealways @ ( negedge inReset or posedge WriteClock )  begin   if( !inReset ) begin         qvRGrayAddr_WSync2 <= 1 ;   end   else  begin      qvRGrayAddr_WSync2 <= qvRGrayAddr_WSync1 ;   endend   //   to calculate the read address in write clock domainalways @ ( negedge inReset or posedge WriteClock )  begin   // 1 cycle delay will be added   if( !inReset ) begin         qvRAddr_WSync2 <= 1 ;   end   else  begin      for( i=0; i<=pDepthWidth; i=i+1 )         qvRAddr_WSync2[i] <= ^( qvRGrayAddr_WSync2 >>i ) ;   // Gray To Binary Conversion   endend//always @ ( qvRGrayAddr_WSync2 )   // Gray To Binary Conversion//   for( i=0; i<=pDepthWidth; i=i+1 )//      qvRAddr_WSync2[i] = ^( qvRGrayAddr_WSync2 >>i ) ;   // calculates qvWCount always @ ( negedge inReset or posedge WriteClock )  begin   if( !inReset ) begin         qvWCount <= 0 ;   end   else  begin      if( MemWEn )         qvWCount <= qvNextWAddr - qvRAddr_WSync2 ;      else         qvWCount <= qvWAddr - qvRAddr_WSync2 ;    end            end   // generates qWFullalways @ ( qvWCount[pDepthWidth] )   qWFull <= qvWCount[pDepthWidth] ;// read clock domain   // read addressalways @ ( negedge inReset or posedge ReadClock )begin   if( !inReset ) begin      qvRAddr <= 1 ;      qvNextRAddr <= 2 ;      qvRGrayAddr <= 1 ;      qvPointerForNumLeft <= { 1'b1, {pDepthWidth{1'b0}} } ;      qvNextPointerForNumLeft <= { 1'b1, {(pDepthWidth-1){1'b0}}, 1'b1 } ;   end   else  if( MemREn )   begin      qvRAddr <= qvNextRAddr ;      qvNextRAddr <= qvNextRAddr + 1'b1 ;      qvRGrayAddr <= ( qvNextRAddr >> 1 ) ^ qvNextRAddr ;      qvNextPointerForNumLeft <= qvNextPointerForNumLeft + 1'b1 ;      qvPointerForNumLeft <= qvNextPointerForNumLeft ;//      qvPointerForNumLeft <= qvPointerForNumLeft + 1'b1 ;    endend   // re-synchronize the write addresses within read clock domain      // the 1st synchronizing cyclealways @ ( negedge inReset or posedge ReadClock )  begin   if( !inReset ) begin         qvPreWGrayAddr_RSync1 <= 0 ;      qvWGrayAddr_RSync1 <= 1 ;   end   else  begin      qvPreWGrayAddr_RSync1 <= qvPreWGrayAddr ;      qvWGrayAddr_RSync1 <= qvWGrayAddr ;   endend      // the 2nd synchronizing cyclealways @ ( negedge inReset or posedge ReadClock )  begin   if( !inReset ) begin         qvPreWGrayAddr_RSync2 <= 0 ;      qvWGrayAddr_RSync2 <= 1 ;   end   else  begin      qvPreWGrayAddr_RSync2 <= qvPreWGrayAddr_RSync1 ;      qvWGrayAddr_RSync2 <= qvWGrayAddr_RSync1 ;   endend   //   to calculate the write address in read clock domainalways @ ( negedge inReset or posedge ReadClock )  begin   // 1 cycle delay will be added   if( !inReset ) begin         qvPreWAddr_RSync2 <= 0 ;   end   else  begin      for( i=0; i<=pDepthWidth; i=i+1 )         qvPreWAddr_RSync2[i] <= ^( qvPreWGrayAddr_RSync2 >>i ) ;   // Gray To Binary Conversion   endend//always @ ( qvPreWGrayAddr_RSync2 )   // Gray To Binary Conversion//   for( i=0; i<=pDepthWidth; i=i+1 )//      qvWAddr_RSync2[i] <= ^( qvPreWGrayAddr_RSync2 >>i ) ;   // Gray To Binary Conversion   // calculates qvRNumberLeftreg  [pDepthWidth:0] qvRNumberLeft_int ;always @ ( negedge inReset or posedge ReadClock )  begin   if( !inReset ) begin         qvRNumberLeft_int <= { 1'b1, {pDepthWidth{1'b0}} } ;   end   else  begin      if( MemREn )         qvRNumberLeft_int <= qvNextPointerForNumLeft - qvPreWAddr_RSync2 ;      else         qvRNumberLeft_int <= qvPointerForNumLeft - qvPreWAddr_RSync2 ;    end            endalways @ ( negedge inReset or posedge ReadClock )  begin   if( !inReset ) begin         qvRNumberLeft <= { 1'b1, {pDepthWidth{1'b0}} } ;   end   else  begin      if( qvRNumberLeft_int >= 4 )  qvRNumberLeft <= qvRNumberLeft_int - 4 ;       else  qvRNumberLeft <= 0 ;    end            end   // generates qREmpty_intalways @ ( negedge inReset or posedge ReadClock )  begin   if( !inReset ) begin         qREmpty_int <= 1 ;   end   else  begin      if( ~qREmpty_int ) begin         if( MemREn && ( qvRGrayAddr == qvPreWGrayAddr_RSync2 ) )            qREmpty_int <= 1 ;      end       else  begin          if( qvRGrayAddr != qvWGrayAddr_RSync2 )             qREmpty_int <= 0 ;       end   end            end//always @ ( qvRNumberLeft_int[pDepthWidth] )//   qREmpty_int <= qvRNumberLeft_int[pDepthWidth] ;always @ ( negedge inReset or posedge ReadClock )  begin   if( !inReset ) begin         qREmpty <= 1'b1 ;   end   else  begin      if( qREmpty )  begin         if( !qREmpty_int )   qREmpty <= 1'b0 ;       end       else         if( qREmpty_int && iREn )   qREmpty <= 1'b1 ;    end            endalways @ ( negedge inReset or posedge ReadClock )  begin   if( !inReset ) begin         qvDataOut <= {pWordWidth{1'b0}} ;   end   else  begin      if( MemREn )  begin         qvDataOut <= MemDataOut ;      end    end            endendmodule module DualPortRAM_ASYN   (      // Generic synchronous two-port RAM interface   WriteClock ,   MemWEn ,   MemWAddr ,   MemDataIn ,   ReadClock ,   MemRAddr ,   MemDataOut     );// Default address and data widthparameter   pDepthWidth = 5 ;                      parameter   pWordWidth = 16 ;                      // Generic synchronous two-port RAM interfaceinput WriteClock ;input MemWEn ;input MemWAddr ;input MemDataIn ;input ReadClock ;input  [pDepthWidth-1:0] MemRAddr ;output  [pWordWidth-1:0] MemDataOut ;wire  WriteClock ;wire  MemWEn ;wire  [pDepthWidth-1:0] MemWAddr ;wire  [pWordWidth-1:0] MemDataIn ;wire  ReadClock ;wire  [pDepthWidth-1:0] MemRAddr ;wire  [pWordWidth-1:0] MemDataOut ;reg   [pWordWidth-1:0]  mem [(1<<pDepthWidth)-1:0] /*synthesis syn_ramstyle="no_rw_check"*/; // RAM read and write// a port for writealways @ ( posedge WriteClock )   if( MemWEn )      mem[MemWAddr] <= MemDataIn ;// RAM read and write//b for read/* registered address */reg   [pDepthWidth-1:0] qvRAddr ;always @ ( posedge ReadClock )   qvRAddr <= MemRAddr ;   assign MemDataOut = mem[qvRAddr] ;endmodule 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品乱码久久久久久| 91精品国产91久久久久久最新毛片 | 午夜国产不卡在线观看视频| 欧美日韩美少妇| 日韩和欧美一区二区三区| 欧美一区二区三级| 国产精品资源站在线| 国产精品无遮挡| 91丨porny丨户外露出| 亚洲高清视频中文字幕| 欧美一区二区三区不卡| 国产成人精品综合在线观看| 日韩美女视频19| 欧美在线观看一二区| 久久精品国产澳门| 国产精品卡一卡二卡三| 91久久久免费一区二区| 丝袜美腿亚洲一区二区图片| 久久精品欧美日韩精品| 91日韩在线专区| 日韩电影在线免费看| 欧美精品一区二区久久婷婷| 99久久久国产精品免费蜜臀| 爽好久久久欧美精品| 国产欧美日韩在线| 欧美亚洲国产一区在线观看网站| 久久精品国产久精国产| 亚洲伦理在线精品| 欧美电视剧在线看免费| 91小视频在线观看| 激情综合网激情| 亚洲婷婷国产精品电影人久久| 91精品国产综合久久婷婷香蕉| 国产精品99久久不卡二区| 一区二区三区在线播放| 久久久噜噜噜久久人人看 | 国产精品一区二区男女羞羞无遮挡| 国产精品美女久久久久久久| 欧美猛男超大videosgay| 高潮精品一区videoshd| 日韩av网站在线观看| 国产欧美日韩三区| 日韩视频免费直播| 色综合久久综合网97色综合| 国产伦精品一区二区三区视频青涩 | 国产99久久久久| 美腿丝袜一区二区三区| 一二三区精品视频| 欧美国产一区视频在线观看| 91精品婷婷国产综合久久竹菊| 91在线看国产| 99国产欧美久久久精品| 国产麻豆精品一区二区| 日本不卡高清视频| 伊人夜夜躁av伊人久久| 国产精品狼人久久影院观看方式| 精品av久久707| 欧美一区二区三区免费在线看| 91麻豆精品国产| 欧美少妇性性性| 色偷偷88欧美精品久久久| 国产成人免费视频网站高清观看视频 | 3d动漫精品啪啪1区2区免费| 在线看日韩精品电影| 成人av在线观| 波多野结衣中文一区| 国产成人精品综合在线观看 | 欧美aaaaaa午夜精品| 午夜视黄欧洲亚洲| 亚洲午夜在线观看视频在线| 亚洲精品成人少妇| 亚洲国产精品传媒在线观看| 亚洲精品在线免费观看视频| 日韩美女主播在线视频一区二区三区| 欧美日韩三级视频| 欧美日韩国产三级| 欧美日韩国产高清一区二区| 91极品美女在线| 欧美婷婷六月丁香综合色| 欧美亚洲禁片免费| 91精品免费在线| 91精品国产全国免费观看| 91麻豆精品国产91久久久资源速度 | 视频在线观看一区二区三区| 日一区二区三区| 免费人成精品欧美精品 | 夜夜嗨av一区二区三区中文字幕| 亚洲欧洲综合另类| 亚洲韩国精品一区| 亚洲3atv精品一区二区三区| 偷拍一区二区三区| 九一久久久久久| 国产91丝袜在线播放九色| 成人黄色av电影| 日本乱码高清不卡字幕| 欧美狂野另类xxxxoooo| 精品久久久久久久久久久院品网 | 亚洲二区在线观看| 日韩国产在线观看| 激情综合一区二区三区| 成人黄色在线网站| 欧美三级欧美一级| 日韩亚洲欧美成人一区| 中文幕一区二区三区久久蜜桃| 中文字幕中文在线不卡住| 亚洲午夜久久久久久久久久久| 久久99久久精品| 99久久免费精品高清特色大片| 欧美日韩免费在线视频| 精品国产成人系列| 国产精品久久久久影院老司| 亚洲欧美日韩综合aⅴ视频| 日本强好片久久久久久aaa| 国产精品一区二区果冻传媒| 91蝌蚪国产九色| 日韩一区二区电影在线| 国产精品天美传媒| 日韩经典一区二区| 大陆成人av片| 在线播放欧美女士性生活| 国产性色一区二区| 天天综合网天天综合色| 成人午夜又粗又硬又大| 色天使久久综合网天天| 亚洲精品一区二区三区99| 午夜视频在线观看一区二区| 国产成人av影院| 宅男在线国产精品| 亚洲伊人伊色伊影伊综合网| 国产成人一级电影| 日韩免费高清av| 日本欧美一区二区三区| 成人精品gif动图一区| 91精品午夜视频| 依依成人综合视频| 成人免费视频app| 日韩三级免费观看| 亚洲国产精品一区二区尤物区| 91免费看片在线观看| 久久色中文字幕| 午夜影视日本亚洲欧洲精品| 国产精品一区三区| 日韩一区二区三区视频在线| 亚洲综合在线观看视频| 成人丝袜18视频在线观看| 欧美一激情一区二区三区| 亚洲一线二线三线视频| av亚洲精华国产精华精华 | 欧美精品乱码久久久久久| 国产精品色一区二区三区| 老司机精品视频导航| 欧美在线综合视频| 亚洲色图丝袜美腿| 成人app软件下载大全免费| 精品粉嫩aⅴ一区二区三区四区| 肉色丝袜一区二区| 欧美日本乱大交xxxxx| 亚洲在线视频一区| 欧美性一二三区| 亚洲国产人成综合网站| 一本大道久久a久久综合婷婷| 国产精品久久久久天堂| av资源站一区| 国产精品免费观看视频| 国产91精品欧美| 国产精品女上位| 成人av中文字幕| 亚洲人精品午夜| 色综合视频一区二区三区高清| 国产精品护士白丝一区av| www.亚洲精品| 亚洲欧洲成人精品av97| 色综合天天综合色综合av| 亚洲欧美一区二区久久| 91福利视频久久久久| 亚洲影院久久精品| 欧美一区二区视频在线观看2022| 日韩中文字幕1| 日韩一区二区三区四区五区六区| 久久国产乱子精品免费女| 久久久久久免费毛片精品| 东方aⅴ免费观看久久av| 国产精品白丝在线| 欧美色偷偷大香| 免费在线观看不卡| 久久久久97国产精华液好用吗| 成人黄色电影在线| 一区二区三区在线免费视频 | 色综合色狠狠天天综合色| 亚洲一区二区三区中文字幕| 欧美一区二区三区人| 国产大陆亚洲精品国产| 综合久久久久久久| 欧美群妇大交群中文字幕| 美女视频免费一区| 国产精品色婷婷久久58| 在线视频亚洲一区| 麻豆视频观看网址久久| 国产精品素人一区二区| 欧美日韩另类一区|