Line 39... |
Line 39... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.4 2001/10/19 08:43:51 mohor
|
|
// eth_timescale.v changed to timescale.v This is done because of the
|
|
// simulation of the few cores in a one joined project.
|
|
//
|
// Revision 1.3 2001/10/18 12:07:11 mohor
|
// Revision 1.3 2001/10/18 12:07:11 mohor
|
// Status signals changed, Adress decoding changed, interrupt controller
|
// Status signals changed, Adress decoding changed, interrupt controller
|
// added.
|
// added.
|
//
|
//
|
// Revision 1.2 2001/09/24 15:02:56 mohor
|
// Revision 1.2 2001/09/24 15:02:56 mohor
|
Line 85... |
Line 89... |
r_IPGT, r_IPGR1, r_IPGR2, r_MinFL, r_MaxFL, r_MaxRet,
|
r_IPGT, r_IPGR1, r_IPGR2, r_MinFL, r_MaxFL, r_MaxRet,
|
r_CollValid, r_TxFlow, r_RxFlow, r_PassAll,
|
r_CollValid, r_TxFlow, r_RxFlow, r_PassAll,
|
r_MiiMRst, r_MiiNoPre, r_ClkDiv, r_WCtrlData, r_RStat, r_ScanStat,
|
r_MiiMRst, r_MiiNoPre, r_ClkDiv, r_WCtrlData, r_RStat, r_ScanStat,
|
r_RGAD, r_FIAD, r_CtrlData, NValid_stat, Busy_stat,
|
r_RGAD, r_FIAD, r_CtrlData, NValid_stat, Busy_stat,
|
LinkFail, r_MAC, WCtrlDataStart, RStatStart,
|
LinkFail, r_MAC, WCtrlDataStart, RStatStart,
|
UpdateMIIRX_DATAReg, Prsd, r_RxBDAddress, RX_BD_ADR_Wr, int_o
|
UpdateMIIRX_DATAReg, Prsd, r_RxBDNum, RX_BD_NUM_Wr, int_o
|
);
|
);
|
|
|
parameter Tp = 1;
|
parameter Tp = 1;
|
|
|
input [31:0] DataIn;
|
input [31:0] DataIn;
|
Line 167... |
Line 171... |
input NValid_stat;
|
input NValid_stat;
|
input Busy_stat;
|
input Busy_stat;
|
input LinkFail;
|
input LinkFail;
|
|
|
output [47:0]r_MAC;
|
output [47:0]r_MAC;
|
output [7:0] r_RxBDAddress;
|
output [7:0] r_RxBDNum;
|
output RX_BD_ADR_Wr;
|
output RX_BD_NUM_Wr;
|
output int_o;
|
output int_o;
|
|
|
reg irq_txb;
|
reg irq_txb;
|
reg irq_txe;
|
reg irq_txe;
|
reg irq_rxb;
|
reg irq_rxb;
|
Line 198... |
Line 202... |
wire MIITX_DATA_Wr = (Address == `ETH_MIITX_DATA_ADR ) & Write;
|
wire MIITX_DATA_Wr = (Address == `ETH_MIITX_DATA_ADR ) & Write;
|
wire MIIRX_DATA_Wr = UpdateMIIRX_DATAReg;
|
wire MIIRX_DATA_Wr = UpdateMIIRX_DATAReg;
|
wire MIISTATUS_Wr = (Address == `ETH_MIISTATUS_ADR ) & Write;
|
wire MIISTATUS_Wr = (Address == `ETH_MIISTATUS_ADR ) & Write;
|
wire MAC_ADDR0_Wr = (Address == `ETH_MAC_ADDR0_ADR ) & Write;
|
wire MAC_ADDR0_Wr = (Address == `ETH_MAC_ADDR0_ADR ) & Write;
|
wire MAC_ADDR1_Wr = (Address == `ETH_MAC_ADDR1_ADR ) & Write;
|
wire MAC_ADDR1_Wr = (Address == `ETH_MAC_ADDR1_ADR ) & Write;
|
assign RX_BD_ADR_Wr = (Address == `ETH_RX_BD_ADR_ADR ) & Write;
|
assign RX_BD_NUM_Wr = (Address == `ETH_RX_BD_NUM_ADR ) & Write;
|
|
|
|
|
|
|
wire [31:0] MODEROut;
|
wire [31:0] MODEROut;
|
wire [31:0] INT_SOURCEOut;
|
wire [31:0] INT_SOURCEOut;
|
Line 219... |
Line 223... |
wire [31:0] MIITX_DATAOut;
|
wire [31:0] MIITX_DATAOut;
|
wire [31:0] MIIRX_DATAOut;
|
wire [31:0] MIIRX_DATAOut;
|
wire [31:0] MIISTATUSOut;
|
wire [31:0] MIISTATUSOut;
|
wire [31:0] MAC_ADDR0Out;
|
wire [31:0] MAC_ADDR0Out;
|
wire [31:0] MAC_ADDR1Out;
|
wire [31:0] MAC_ADDR1Out;
|
wire [31:0] RX_BD_ADROut;
|
wire [31:0] RX_BD_NUMOut;
|
|
|
eth_register #(32) MODER (.DataIn(DataIn), .DataOut(MODEROut), .Write(MODER_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MODER_DEF));
|
eth_register #(32) MODER (.DataIn(DataIn), .DataOut(MODEROut), .Write(MODER_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MODER_DEF));
|
eth_register #(32) INT_MASK (.DataIn(DataIn), .DataOut(INT_MASKOut), .Write(INT_MASK_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_INT_MASK_DEF));
|
eth_register #(32) INT_MASK (.DataIn(DataIn), .DataOut(INT_MASKOut), .Write(INT_MASK_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_INT_MASK_DEF));
|
eth_register #(32) IPGT (.DataIn(DataIn), .DataOut(IPGTOut), .Write(IPGT_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_IPGT_DEF));
|
eth_register #(32) IPGT (.DataIn(DataIn), .DataOut(IPGTOut), .Write(IPGT_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_IPGT_DEF));
|
eth_register #(32) IPGR1 (.DataIn(DataIn), .DataOut(IPGR1Out), .Write(IPGR1_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_IPGR1_DEF));
|
eth_register #(32) IPGR1 (.DataIn(DataIn), .DataOut(IPGR1Out), .Write(IPGR1_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_IPGR1_DEF));
|
Line 253... |
Line 257... |
eth_register #(32) MIIRX_DATA (.DataIn({16'h0, Prsd}), .DataOut(MIIRX_DATAOut), .Write(MIIRX_DATA_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MIIRX_DATA_DEF));
|
eth_register #(32) MIIRX_DATA (.DataIn({16'h0, Prsd}), .DataOut(MIIRX_DATAOut), .Write(MIIRX_DATA_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MIIRX_DATA_DEF));
|
//eth_register #(32) MIISTATUS (.DataIn(DataIn), .DataOut(MIISTATUSOut), .Write(MIISTATUS_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MIISTATUS_DEF));
|
//eth_register #(32) MIISTATUS (.DataIn(DataIn), .DataOut(MIISTATUSOut), .Write(MIISTATUS_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MIISTATUS_DEF));
|
eth_register #(32) MAC_ADDR0 (.DataIn(DataIn), .DataOut(MAC_ADDR0Out), .Write(MAC_ADDR0_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MAC_ADDR0_DEF));
|
eth_register #(32) MAC_ADDR0 (.DataIn(DataIn), .DataOut(MAC_ADDR0Out), .Write(MAC_ADDR0_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MAC_ADDR0_DEF));
|
eth_register #(32) MAC_ADDR1 (.DataIn(DataIn), .DataOut(MAC_ADDR1Out), .Write(MAC_ADDR1_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MAC_ADDR1_DEF));
|
eth_register #(32) MAC_ADDR1 (.DataIn(DataIn), .DataOut(MAC_ADDR1Out), .Write(MAC_ADDR1_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_MAC_ADDR1_DEF));
|
|
|
assign RX_BD_ADROut[31:8] = 24'h0;
|
assign RX_BD_NUMOut[31:8] = 24'h0;
|
eth_register #(8) RX_BD_ADR (.DataIn(DataIn[7:0]), .DataOut(RX_BD_ADROut[7:0]), .Write(RX_BD_ADR_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_RX_BD_ADR_DEF));
|
eth_register #(8) RX_BD_NUM (.DataIn(DataIn[7:0]), .DataOut(RX_BD_NUMOut[7:0]), .Write(RX_BD_NUM_Wr), .Clk(Clk), .Reset(Reset), .Default(`ETH_RX_BD_NUM_DEF));
|
|
|
|
|
reg LinkFailRegister;
|
reg LinkFailRegister;
|
wire ResetLinkFailRegister = Address == `ETH_MIISTATUS_ADR & Read;
|
wire ResetLinkFailRegister = Address == `ETH_MIISTATUS_ADR & Read;
|
reg ResetLinkFailRegister_q1;
|
reg ResetLinkFailRegister_q1;
|
Line 286... |
Line 290... |
|
|
always @ (Address or Read or MODEROut or INT_SOURCEOut or INT_MASKOut or IPGTOut or
|
always @ (Address or Read or MODEROut or INT_SOURCEOut or INT_MASKOut or IPGTOut or
|
IPGR1Out or IPGR2Out or PACKETLENOut or COLLCONFOut or CTRLMODEROut or
|
IPGR1Out or IPGR2Out or PACKETLENOut or COLLCONFOut or CTRLMODEROut or
|
MIIMODEROut or MIICOMMANDOut or MIIADDRESSOut or MIITX_DATAOut or
|
MIIMODEROut or MIICOMMANDOut or MIIADDRESSOut or MIITX_DATAOut or
|
MIIRX_DATAOut or MIISTATUSOut or MAC_ADDR0Out or MAC_ADDR1Out or
|
MIIRX_DATAOut or MIISTATUSOut or MAC_ADDR0Out or MAC_ADDR1Out or
|
RX_BD_ADROut)
|
RX_BD_NUMOut)
|
begin
|
begin
|
if(Read) // read
|
if(Read) // read
|
begin
|
begin
|
case(Address)
|
case(Address)
|
`ETH_MODER_ADR : DataOut<=MODEROut;
|
`ETH_MODER_ADR : DataOut<=MODEROut;
|
Line 308... |
Line 312... |
`ETH_MIITX_DATA_ADR : DataOut<=MIITX_DATAOut;
|
`ETH_MIITX_DATA_ADR : DataOut<=MIITX_DATAOut;
|
`ETH_MIIRX_DATA_ADR : DataOut<=MIIRX_DATAOut;
|
`ETH_MIIRX_DATA_ADR : DataOut<=MIIRX_DATAOut;
|
`ETH_MIISTATUS_ADR : DataOut<=MIISTATUSOut;
|
`ETH_MIISTATUS_ADR : DataOut<=MIISTATUSOut;
|
`ETH_MAC_ADDR0_ADR : DataOut<=MAC_ADDR0Out;
|
`ETH_MAC_ADDR0_ADR : DataOut<=MAC_ADDR0Out;
|
`ETH_MAC_ADDR1_ADR : DataOut<=MAC_ADDR1Out;
|
`ETH_MAC_ADDR1_ADR : DataOut<=MAC_ADDR1Out;
|
`ETH_RX_BD_ADR_ADR : DataOut<=RX_BD_ADROut;
|
`ETH_RX_BD_NUM_ADR : DataOut<=RX_BD_NUMOut;
|
default: DataOut<=32'h0;
|
default: DataOut<=32'h0;
|
endcase
|
endcase
|
end
|
end
|
else
|
else
|
DataOut<=32'h0;
|
DataOut<=32'h0;
|
Line 376... |
Line 380... |
assign MIISTATUSOut[0] = LinkFailRegister ;
|
assign MIISTATUSOut[0] = LinkFailRegister ;
|
|
|
assign r_MAC[31:0] = MAC_ADDR0Out[31:0];
|
assign r_MAC[31:0] = MAC_ADDR0Out[31:0];
|
assign r_MAC[47:32] = MAC_ADDR1Out[15:0];
|
assign r_MAC[47:32] = MAC_ADDR1Out[15:0];
|
|
|
assign r_RxBDAddress[7:0] = RX_BD_ADROut[7:0];
|
assign r_RxBDNum[7:0] = RX_BD_NUMOut[7:0];
|
|
|
|
|
// Interrupt generation
|
// Interrupt generation
|
|
|
always @ (posedge Clk or posedge Reset)
|
always @ (posedge Clk or posedge Reset)
|