Line 68... |
Line 68... |
|
|
`include "timescale.v"
|
`include "timescale.v"
|
|
|
module eth_outputcontrol(Clk, Reset, InProgress, ShiftedBit, BitCounter, WriteOp, NoPre, MdcEn_n, Mdo, MdoEn);
|
module eth_outputcontrol(Clk, Reset, InProgress, ShiftedBit, BitCounter, WriteOp, NoPre, MdcEn_n, Mdo, MdoEn);
|
|
|
parameter Tp = 1;
|
|
|
|
input Clk; // Host Clock
|
input Clk; // Host Clock
|
input Reset; // General Reset
|
input Reset; // General Reset
|
input WriteOp; // Write Operation Latch (When asserted, write operation is in progress)
|
input WriteOp; // Write Operation Latch (When asserted, write operation is in progress)
|
input NoPre; // No Preamble (no 32-bit preamble)
|
input NoPre; // No Preamble (no 32-bit preamble)
|
input InProgress; // Operation in progress
|
input InProgress; // Operation in progress
|
Line 104... |
Line 102... |
// Generation of the MdoEn signal
|
// Generation of the MdoEn signal
|
always @ (posedge Clk or posedge Reset)
|
always @ (posedge Clk or posedge Reset)
|
begin
|
begin
|
if(Reset)
|
if(Reset)
|
begin
|
begin
|
MdoEn_2d <= #Tp 1'b0;
|
MdoEn_2d <= 1'b0;
|
MdoEn_d <= #Tp 1'b0;
|
MdoEn_d <= 1'b0;
|
MdoEn <= #Tp 1'b0;
|
MdoEn <= 1'b0;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
if(MdcEn_n)
|
if(MdcEn_n)
|
begin
|
begin
|
MdoEn_2d <= #Tp SerialEn | InProgress & BitCounter<32;
|
MdoEn_2d <= SerialEn | InProgress & BitCounter<32;
|
MdoEn_d <= #Tp MdoEn_2d;
|
MdoEn_d <= MdoEn_2d;
|
MdoEn <= #Tp MdoEn_d;
|
MdoEn <= MdoEn_d;
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
|
|
// Generation of the Mdo signal.
|
// Generation of the Mdo signal.
|
always @ (posedge Clk or posedge Reset)
|
always @ (posedge Clk or posedge Reset)
|
begin
|
begin
|
if(Reset)
|
if(Reset)
|
begin
|
begin
|
Mdo_2d <= #Tp 1'b0;
|
Mdo_2d <= 1'b0;
|
Mdo_d <= #Tp 1'b0;
|
Mdo_d <= 1'b0;
|
Mdo <= #Tp 1'b0;
|
Mdo <= 1'b0;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
if(MdcEn_n)
|
if(MdcEn_n)
|
begin
|
begin
|
Mdo_2d <= #Tp ~SerialEn & BitCounter<32;
|
Mdo_2d <= ~SerialEn & BitCounter<32;
|
Mdo_d <= #Tp ShiftedBit | Mdo_2d;
|
Mdo_d <= ShiftedBit | Mdo_2d;
|
Mdo <= #Tp Mdo_d;
|
Mdo <= Mdo_d;
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
|
|