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

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

?? eth_avalon_txdma.v

?? sopc builder 中網絡的eth_ocm核
?? V
?? 第 1 頁 / 共 2 頁
字號:
//////////////////////////////////////////////////////////////////////
////                                                              ////
////  eth_avalon_txdma.v                                          ////
////                                                              ////
////  This file is a patch used in conjunction with the           ////
////  Ethernet IP core project.                                   ////
////  http://www.opencores.org/projects/ethmac/                   ////
////                                                              ////
////  Author(s):                                                  ////
////      - Jakob Jones (jrjonsie@gmail.com)                      ////
////                                                              ////
////  All additional information is available in the Readme.txt   ////
////  file.                                                       ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
module eth_avalon_txdma    #(parameter FIFO_DEPTH=128) (
    //Commaon signals
    input               clk,
    input               reset,

    //Descriptor ram interface
    input       [6:0]   max_tx_bd,          //Highest index RX Descriptor
    input       [31:0]  bd_desc,            //Descriptor Control data input
    input       [31:0]  bd_ptr,             //Descriptor pointer input
    input               bd_wait,            //Descriptor RAM is busy

    output              bd_write,           //write control data to BD RAM
    output              bd_read,            //read control and pointer data from BD RAM
    output  reg [6:0]   bd_index,           //Which descriptor to read
    output      [31:0]  bd_writedata,       //Control data to be written to descriptor

    //Memory port interface
    input               av_waitrequest,     //Memory port is busy
    input       [31:0]  av_readdata,        //Memory port readdata
    input               av_readdatavalid,   //Memory port readdata valid signal

    output  reg         av_read,            //Memory port read
    output  reg [31:0]  av_address,         //Memory port address

    //Streaming interface
    input               TxEn,               //Enable transmit
    input               txclk,              //Transmit clock
    output      [7:0]   tx_data,            //output data
    output              tx_dv,              //qualifies dataout, startofpacket, and endofpacket
    output              tx_sop,             //start of data packet
    output              tx_eop,             //end of data packet
    input               tx_ack,             //Acknowledge TX data
    input       [8:0]   tx_stat,            //Status bits
    input               tx_stat_valid,      //Status is valid
    output              tx_stat_ack,
    input               tx_retry,

    output              PerPacketPad,       //Per packet pad
    output              PerPacketCrc,       //Per packet crc
    output              TxUnderRun,         //An underrun occured

    //Interrupt outputs
    output  reg         TxB_IRQ,
    output  reg         TxE_IRQ 
);

//Some useful constant functions
`include "eth_avalon_functions.v"

localparam  MINFD   = max(FIFO_DEPTH,128);  //Minimum 128 byte FIFO depth
localparam  RFD     = nextPow2(MINFD)>>2;   //FIFO depth next power of 2 (and divide by 4)

//FF_FULL_THRESHOLD is the number of words in the FIFO before we set the
//almost FULL flag. In other words. We pause reading data from memory if
//the FIFO reaches this level. If we are overrunning the FIFO, this
//number needs to be reduced.
localparam  FF_FULL_THRESHOLD = RFD - 16;

//Bit descriptions for TX descriptor
localparam  BIT_LEN_H   = 31,   //Upper bit of length field
            BIT_LEN_L   = 16,   //Lower bit of length field
            //Control bits
            BIT_READY   = 15,   //Ready control bit (1=READY Controller can write to it)
            BIT_IRQ     = 14,   //Generate an interrupt at end of TX
            BIT_WRAP    = 13,   //Wrap to first RX descriptor after this one
            BIT_PAD     = 12,   //Add Padding to small frames
            BIT_CRC     = 11,   //Add CRC
            BIT_RSVD_H  = 10,   //Upper bit of reserved field
            BIT_RSVD_L  = 9,    //Lower bit of reserved field
            //Status bits
            BIT_UR      = 8,    //Buffer Underrun
            BIT_RTRY_H  = 7,    //Upper bit of retry count
            BIT_RTRY_L  = 4,    //Lower bit of retry count
            BIT_RL      = 3,    //Retransmission Limit
            BIT_LC      = 2,    //Late Collision
            BIT_DF      = 1,    //Defer Indication
            BIT_CS      = 0;    //Carrier Sense Lost

//State bits
localparam  ST_IDLE     =   0,
            ST_BD_RD    =   1,  //Read Descriptor
            ST_DMA1     =   2,  //Transfer first word
            ST_DMA2     =   3,  //Wait for data to be written to FIFO 
            ST_STAT     =   4,  //Wait for status from MAC
            ST_BD_WR    =   5;  //Write status back to MAC

//TX State machine bits
localparam  TX_IDLE     =   0,
            TX_SEND     =   1,
            TX_WAIT     =   2;

wire            pre_av_read;
wire    [31:0]  pre_av_address;

reg     [5:0]   state;
wire    [15:0]  bd_len;         //Frame length from descriptor

reg     [31:0]  ptr;
reg     [31:0]  desc;

wire    [1:0]   valid_cnt;
reg     [1:0]   first_valid_cnt;
reg     [1:0]   last_valid_cnt;

reg     [13:0]  tg_cnt;         //target count (number of words to read from memory)
reg     [13:0]  rd_cnt;         //read count (number of words read from memory)
reg     [13:0]  wr_cnt;         //write count (number of words written to FIFO)
wire    [15:0]  next_tg_cnt;    //intentionally 2 bits larger
wire    [13:0]  next_rd_cnt;
wire    [13:0]  next_wr_cnt;

wire            last_read;      //Last read from memory
reg             last_read_r;
wire            first_write;    //First write to FIFO
wire            last_write;     //Last write to FIFO

reg     [31:0]  rdata;          //registered av_readdata
reg             valid_rdata;    //registered av_readdatavalid

wire            stat_ready;     //Status ready from TX
reg     [BIT_UR:BIT_CS] stat;
wire            stat_error;     //Status indicates error


wire            dff_clear;
wire    [clogb2(RFD-1):0]   dff_wrused;
wire            dff_almost_full;
wire            dff_full;
wire            dff_write;
wire    [35:0]  dff_din;

wire            dff_read;
wire            dff_empty;
wire    [35:0]  dff_dout;

reg     [2:0]   tx_state;
reg             tx_stat_valid_r;
wire            last_byte;
wire    [7:0]   tx_ff_data [0:3];
wire    [1:0]   byte_cnt;
reg     [1:0]   byte_index;

//Avalon bus
assign  pre_av_address  = {ptr[31:2],2'b00};
assign  pre_av_read     = state[ST_DMA1 ] & ~dff_almost_full;
assign  valid_tx_rd     = pre_av_read & ~av_waitrequest;

//Descriptor bus
assign  bd_read     = state[ST_BD_RD];
assign  bd_write    = state[ST_BD_WR];
//Descriptor writeback data
assign  bd_writedata[BIT_LEN_H:BIT_LEN_L]   = desc[BIT_LEN_H:BIT_LEN_L];    //No modification to length
assign  bd_writedata[BIT_READY]             = 1'b0;             // Clear ready flag
assign  bd_writedata[BIT_IRQ]               = desc[BIT_IRQ];    //leave IRQ
assign  bd_writedata[BIT_WRAP]              = desc[BIT_WRAP];   //leave WRAP
assign  bd_writedata[BIT_PAD]               = desc[BIT_PAD];    //leave PAD
assign  bd_writedata[BIT_CRC]               = desc[BIT_CRC];    //leave CRC
assign  bd_writedata[BIT_RSVD_H:BIT_RSVD_L] = desc[BIT_RSVD_H:BIT_RSVD_L]; //leave reserved field
assign  bd_writedata[BIT_UR:BIT_CS]         = stat[BIT_UR:BIT_CS];  //set status flags

assign  bd_len      = bd_desc[BIT_LEN_H:BIT_LEN_L];

//Add a pipeline stage for Avalon reads
always @(posedge clk or posedge reset)
    if(reset)                   av_read     <= 1'b0;
    else if(~av_waitrequest)    av_read     <= pre_av_read;

always @(posedge clk)
        if(~av_waitrequest)     av_address  <= pre_av_address;

always @(posedge clk or posedge reset)
    if(reset)                                       state   <= 6'd1;
    else begin                                      state   <= 6'd0;
        //This really is a parallel case 
        case(1'b1) // synopsys parallel_case 
            state[ST_IDLE ]: // do nothing
                if(TxEn & ~stat_ready)              state[ST_BD_RD] <= 1'b1;
                else                                state[ST_IDLE]  <= 1'b1;
            state[ST_BD_RD]: // read descriptor
                if(~bd_wait & bd_desc[BIT_READY])   state[ST_DMA1 ] <= 1'b1;
                else                                state[ST_BD_RD] <= 1'b1;
            state[ST_DMA1 ]: // issue all reads
                if(valid_tx_rd & last_read)
                                                    state[ST_DMA2 ] <= 1'b1;
                else                                state[ST_DMA1 ] <= 1'b1;
            state[ST_DMA2 ]: // wait here for stat                    
                if(last_write & valid_rdata)        state[ST_STAT ] <= 1'b1;
                else                                state[ST_DMA2 ] <= 1'b1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久精品人人澡人人爽| 国产精品入口麻豆原神| 五月综合激情网| 欧美年轻男男videosbes| 亚洲福利视频三区| 欧美一区二区三区视频在线 | 高清免费成人av| 日韩一区欧美一区| 欧美三级韩国三级日本一级| 免费成人美女在线观看| 国产亚洲精品7777| 91亚洲精品乱码久久久久久蜜桃| 亚洲一区视频在线观看视频| 91麻豆精品国产91久久久久久久久| 美国三级日本三级久久99| 国产午夜精品久久| 色88888久久久久久影院按摩| 亚洲电影一级黄| 日韩精品中文字幕一区二区三区| 国产成人av一区二区三区在线观看| 中文字幕在线不卡国产视频| 欧美三电影在线| 丰满白嫩尤物一区二区| 亚洲一二三四在线观看| 久久综合九色综合欧美亚洲| 色综合一区二区| 精品制服美女丁香| 亚洲色图欧美在线| 欧美成人三级电影在线| 91麻豆文化传媒在线观看| 麻豆精品在线播放| ...av二区三区久久精品| 欧美一级一区二区| 91视频在线看| 国产白丝网站精品污在线入口| 一区二区成人在线| 国产亚洲精品资源在线26u| 欧美在线制服丝袜| 国产精品99久久久久久久女警| 亚洲影院免费观看| 欧美经典一区二区| 91精品久久久久久久91蜜桃| 色婷婷综合中文久久一本| 国产一区二区三区久久悠悠色av| 亚洲成av人影院| 中文字幕一区二区三区蜜月| 精品国产乱码久久久久久影片| 日本伦理一区二区| 9l国产精品久久久久麻豆| 久久精品国产在热久久| 日韩黄色免费网站| 一区二区三区**美女毛片| 国产精品素人一区二区| 欧美福利视频导航| 成人黄色免费短视频| 久久精品国产免费看久久精品| 亚洲国产日产av| 亚洲少妇最新在线视频| 久久精品视频一区二区三区| 91麻豆精品国产无毒不卡在线观看| 色婷婷综合久色| jlzzjlzz亚洲日本少妇| 成人性生交大片免费看中文网站| 欧美一区二区三区视频在线| 久久国产精品99精品国产 | 日韩vs国产vs欧美| 欧美一区二区精品在线| 国产麻豆精品一区二区| 日韩激情视频网站| 欧美一二三在线| 视频一区欧美精品| 成人免费观看视频| 日韩欧美专区在线| 欧美日韩三级在线| 在线日韩av片| 91黄视频在线观看| 色女孩综合影院| 日本高清不卡一区| 色婷婷综合久久久中文字幕| 色婷婷激情久久| 欧美日韩和欧美的一区二区| 欧美系列在线观看| 欧美性猛片xxxx免费看久爱| 欧美午夜影院一区| 在线不卡的av| 欧美草草影院在线视频| 久久婷婷色综合| 国产丝袜在线精品| 久久亚洲综合色| 国产午夜精品在线观看| 国产女主播一区| 国产午夜精品理论片a级大结局| 日韩欧美一区二区三区在线| 日韩免费成人网| 欧美国产1区2区| 国产精品免费久久久久| 一区二区三区四区视频精品免费| 五月天激情综合| 国产尤物一区二区| 99精品国产视频| 欧美日韩国产欧美日美国产精品| 欧美日本视频在线| 日韩你懂的电影在线观看| 国产日韩成人精品| 一区二区三区不卡视频| 麻豆精品一二三| 国产91精品露脸国语对白| 日本韩国欧美一区二区三区| 欧美成人一区二区三区| 国产精品久久久久久久午夜片| 亚洲不卡一区二区三区| 激情综合网av| 91久久精品网| 精品va天堂亚洲国产| 国产精品欧美综合在线| 亚洲小说春色综合另类电影| 九九**精品视频免费播放| 91视频在线看| 欧美xxxxx牲另类人与| 亚洲美女偷拍久久| 精品一区二区三区av| 播五月开心婷婷综合| 91精品国产手机| 亚洲欧洲三级电影| 另类小说综合欧美亚洲| 91在线丨porny丨国产| 欧美一区二区三区四区高清| 亚洲三级在线免费观看| 毛片不卡一区二区| 色婷婷久久久亚洲一区二区三区 | av电影在线不卡| 欧美精品第1页| 亚洲日本在线a| 激情av综合网| 97久久超碰国产精品| 久久理论电影网| 日韩黄色免费网站| 欧美制服丝袜第一页| 国产精品久久久久9999吃药| 久久精品国产99久久6| 欧美专区亚洲专区| 1000部国产精品成人观看| 国产在线视频精品一区| 欧美日韩国产中文| 亚洲精品欧美激情| 99天天综合性| 欧美国产乱子伦| 激情六月婷婷综合| 日韩一二三四区| 亚洲va国产天堂va久久en| 色哟哟国产精品免费观看| 国产精品久久一卡二卡| 国产白丝精品91爽爽久久| 精品国产3级a| 久草中文综合在线| 欧美一区二区三区小说| 日韩成人精品在线观看| 欧美老女人第四色| 亚洲网友自拍偷拍| 精品视频在线免费观看| 亚洲午夜一区二区三区| 欧美性猛交xxxx黑人交| 亚洲丶国产丶欧美一区二区三区| 色综合天天综合网天天狠天天| 日本一区二区三区视频视频| 国产高清在线精品| 久久久久久久av麻豆果冻| 日韩中文欧美在线| 欧美日韩国产bt| 亚洲妇熟xx妇色黄| 99国产欧美久久久精品| 中文字幕中文字幕一区| 97成人超碰视| 亚洲大型综合色站| 7777精品伊人久久久大香线蕉超级流畅| 亚洲成人综合网站| 欧美精品乱码久久久久久按摩| 日韩精品成人一区二区在线| 欧美一区二区三区婷婷月色| 九九在线精品视频| 亚洲精品一区二区三区影院| 久久精品999| 国产日韩欧美激情| 91在线一区二区三区| 亚洲一区二区在线免费观看视频| 99精品桃花视频在线观看| 亚洲精品国久久99热| 欧美少妇性性性| 经典三级在线一区| 欧美激情艳妇裸体舞| 91在线观看下载| 午夜久久久久久久久久一区二区| 日韩一区二区在线免费观看| 偷拍亚洲欧洲综合| 日韩欧美国产一区二区在线播放 | 奇米影视一区二区三区| 欧美tk—视频vk| 岛国一区二区在线观看| 亚洲最大成人网4388xx| 制服.丝袜.亚洲.另类.中文|