以太网控制器MAC设计

2026/1/11 22:33:06

专业综合课程设计

? 如果发送数据的长度大于等于最小帧长MINFL,而且允许CRC校验,那么状态机就进

入到StateFCS,然后状态机进入状态StateDefer

? 如果发送数据的长度大于等于最小帧长MINFL,不允许进行CRC校验,那么状态机就

直接进入到StateDefer状态

? 如果发送数据的长度小于MILFL,并且允许进行扩展填充码,那么状态机就要进入到

StatePAD,然后进入到StateFCS状态,接着进入到状态StateDefer

? 如果发送数据的长度小于MINFL,不允许进行扩展填充码但允许CRC校验,那么状态

机就进入到StateFCS,接着进入到状态StateDefer

2.2.4 MAC控制模块

控制模块eth_maccontrol是执行实时数据流量控制的模块,仅工作在100Mbps速率下的全双工模式。该模块由下列两个子模块组成:

? eth_transmitcontrol,负责产生控制帧并发送 ? eth_receivecontrol,负责发现、解析控制帧

全双工模式通过控制操作码PAUSE实现流量控制。当主机不能继续接受传送过来的数据包,接受FIFO就将要填满,在FIFO溢出之前,上层主机发送PAUSE控制帧至数据发送者,该控制帧请求发送者停止发送数据一段特定时间。发送流量控制在子模块eth_transmitcontrol完成。

当MAC接收到了一个PAUSE控制帧,就依照接收到的PAUSE时间长度值启动PAUSE计时器。每经过1个时隙计时器减1。当计时器减至0,MAC发送模块重新开始发送。由子模块eth_receivecontrol完成。

当控制帧被发送时,填充码padding和CRC将自动产生。图2-7是MAC控制模块的整体框图,发送MAC帧模块产生控制帧,控制主模块通过信号CtrlMux来判决是发送控制帧还是直接发送从主机过来的数据帧到发送模块。在发送时如果没有收到PAUSE帧,则MAC控制模块部产生任何影响。

10

专业综合课程设计

发送控制帧结束输入端TxFlow发送MAC控制模块将要发送控制帧至主机接口至寄存器模块输出端发送控制帧CtrlData[7:0]复用控制阻止发送发送结束、放弃发送正在发 送数据正在发送数据发送开始 结束信号正在发送有效数据发送帧主模块要求pad和CRC校验来自主TxData[7:0]开始发送帧机接口结束发送帧、PAUSE请求TxFlow RxFlow来自寄存MAC[47:0]器配置接收结束、接收长度来自状态正确、接收包正确模块至主机接口至发送模块发送数据帧TxData[7:0]发送帧开始和结束信号开始发送帧正在发送有效数据来自接收模块RxData[7:0] RxValidRxStartFrm RxEndFrmPAUSE控制帧地址正确接收MAC控制模块RxFlow接收到PAUSE帧设置PAUSE时间至接收模块至主机接口至寄存器模块

图 2-7 MAC控制模块框图

2.2.5 MII模块

eth_mii模块是一个提供MAC层和外部以太网PHY芯片相连接的接口。从功能上看它可以分为两个部分:一个是和物理层PCS子层相连接的接口信号eth_mii模块;另一个是MII管理模块eth_miim,主要功能室设置和读写物理层PHY,进行寄存器的配置设定或从中读取数据。

PHYMAC层RX_DVRXD[3:0]4B/5B编解码模块Rx_erTx_erPHY Code[4:0]MRXDVMRXD[3:0]MRxErrMII接口模块MTxErrMTXD[3:0]MTxEn至接收模块TXD[3:0]PHY Code[4:0]Tx_en来自发送模块操作控制信号MDIOMDIMII管理模块寄存器数据片选信号输出时钟控制数据和PHY地址分频系数移位寄存器Bit计数器输出控制无前导码分频器模块PRSDMDO

图 2-8 MII模块整体框图

11

专业综合课程设计

2.3 HDL代码阐述

顶层模块:

`include \`include \module eth_top (

// WISHBONE common

wb_clk_i, wb_rst_i, wb_dat_i, wb_dat_o, // WISHBONE slave

wb_adr_i, wb_sel_i, wb_we_i, wb_cyc_i, wb_stb_i, wb_ack_o, wb_err_o, // WISHBONE master

m_wb_adr_o, m_wb_sel_o, m_wb_we_o, m_wb_dat_o, m_wb_dat_i, m_wb_cyc_o, m_wb_stb_o, m_wb_ack_i, m_wb_err_i, `ifdef ETH_WISHBONE_B3 m_wb_cti_o, m_wb_bte_o, `endif //TX

mtx_clk_pad_i, mtxd_pad_o, mtxen_pad_o, mtxerr_pad_o, //RX

mrx_clk_pad_i, mrxd_pad_i, mrxdv_pad_i, mrxerr_pad_i, mcoll_pad_i, mcrs_pad_i, // MIIM

mdc_pad_o, md_pad_i, md_pad_o, md_padoe_o, int_o // Bist

`ifdef ETH_BIST

// debug chain signals

scanb_rst, // bist scan reset scanb_clk, // bist scan clock scanb_si, // bist scan serial in scanb_so, // bist scan serial out scanb_en // bist scan shift enable `endif );

parameter Tp = 1;

// WISHBONE common

input wb_clk_i; // WISHBONE clock input wb_rst_i; // WISHBONE reset input [31:0] wb_dat_i; // WISHBONE data input output [31:0] wb_dat_o; // WISHBONE data output output wb_err_o; // WISHBONE error output // WISHBONE slave

input [11:2] wb_adr_i; // WISHBONE address input input [3:0] wb_sel_i; // WISHBONE byte select input input wb_we_i; // WISHBONE write enable input input wb_cyc_i; // WISHBONE cycle input input wb_stb_i; // WISHBONE strobe input

output wb_ack_o; // WISHBONE acknowledge output // WISHBONE master

output [31:0] m_wb_adr_o; output [3:0] m_wb_sel_o; output m_wb_we_o; input [31:0] m_wb_dat_i; output [31:0] m_wb_dat_o; output m_wb_cyc_o; output m_wb_stb_o; input m_wb_ack_i; input m_wb_err_i; `ifdef ETH_WISHBONE_B3

12

专业综合课程设计

output [2:0] m_wb_cti_o; // Cycle Type Identifier output [1:0] m_wb_bte_o; // Burst Type Extension `endif // Tx

input mtx_clk_pad_i; // Transmit clock (from PHY) output [3:0] mtxd_pad_o; // Transmit nibble (to PHY) output mtxen_pad_o; // Transmit enable (to PHY) output mtxerr_pad_o; // Transmit error (to PHY) // Rx

input mrx_clk_pad_i; // Receive clock (from PHY) input [3:0] mrxd_pad_i; // Receive nibble (from PHY)

input mrxdv_pad_i; // Receive data valid (from PHY) input mrxerr_pad_i; // Receive data error (from PHY) // Common Tx and Rx

input mcoll_pad_i; // Collision (from PHY)

input mcrs_pad_i; // Carrier sense (from PHY) // MII Management interface

input md_pad_i; // MII data input (from I/O cell)

output mdc_pad_o; // MII Management data clock (to PHY) output md_pad_o; // MII data output (to I/O cell)

output md_padoe_o; // MII data output enable (to I/O cell) output int_o; // Interrupt output // Bist

`ifdef ETH_BIST

input scanb_rst; // bist scan reset input scanb_clk; // bist scan clock input scanb_si; // bist scan serial in output scanb_so; // bist scan serial out input scanb_en; // bist scan shift enable `endif

wire [7:0] r_ClkDiv; wire r_MiiNoPre; wire [15:0] r_CtrlData; wire [4:0] r_FIAD; wire [4:0] r_RGAD;

wire r_WCtrlData; wire r_RStat; wire r_ScanStat; wire NValid_stat; wire Busy_stat; wire LinkFail;

wire [15:0] Prsd; // Read Status Data (data read from the PHY) wire WCtrlDataStart; wire RStatStart;

wire UpdateMIIRX_DATAReg; wire TxStartFrm; wire TxEndFrm; wire TxUsedData; wire [7:0] TxData; wire TxRetry; wire TxAbort;

wire TxUnderRun; wire TxDone; wire [5:0] CollValid;

reg WillSendControlFrame_sync1; reg WillSendControlFrame_sync2; reg WillSendControlFrame_sync3; reg RstTxPauseRq; reg TxPauseRq_sync1; reg TxPauseRq_sync2; reg TxPauseRq_sync3; reg TPauseRq;

13


以太网控制器MAC设计.doc 将本文的Word文档下载到电脑
搜索更多关于: 以太网控制器MAC设计 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219