OpenCores
URL https://opencores.org/ocsvn/ethmac10g/ethmac10g/trunk

Subversion Repositories ethmac10g

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 64 to Rev 65
    Reverse comparison

Rev 64 → Rev 65

/trunk/rtl/verilog/mgmt/manage_registers.v
68,7 → 68,7
output[1:0] mdio_opcode; //MDIO Opcode, equals mgmt_opcode
output mdio_out_valid; //Indicate mdio_data_out is valid
output[41:0] mdio_data_out; //Data to be writen to MDIO, {addr, data}
input[31:0] mdio_data_in; //Data read from MDIO
input[15:0] mdio_data_in; //Data read from MDIO
input mdio_in_valid; //Indicate mdio_data_in read from MDIO is valid
output[31:0] mgmt_config; //management configuration data, mainly used to set mdc frequency
 
503,7 → 503,7
else begin
case (state)
IDLE: begin
mgmt_rd_data <=#TP 0;
mgmt_rd_data <=#TP mgmt_rd_data;
data_sel <=#TP 1'b0;
read_done <=#TP 0;
mgmt_miim_rdy <=#TP 1;
535,11 → 535,12
end
MDIO_OPERATE: begin
if(~mdio_in_valid & mdio_in_valid_d1) begin
mgmt_rd_data <=#TP mdio_data_in;
mgmt_rd_data[15:0] <=#TP mdio_data_in;
mgmt_rd_data[31:16] <=#TP 0;
mgmt_miim_rdy <=#TP 1'b1;
end
else begin
mgmt_rd_data <=#TP 0;
mgmt_rd_data <=#TP mgmt_rd_data;
mgmt_miim_rdy <=#TP 1'b0;
end
end
621,15 → 622,28
mdio_opcode <=#TP mgmt_opcode;
end
 
reg[4:0] tmp_cnt;
always@(posedge mgmt_clk or posedge reset) begin
if(reset)
tmp_cnt <=#TP 0;
else if(mgmt_req & mgmt_miim_sel)
tmp_cnt <=#TP 0;
else if(tmp_cnt == 30)
tmp_cnt <=#TP tmp_cnt;
else
tmp_cnt <=#TP tmp_cnt + 1;
end
 
reg mdio_out_valid;
 
always@(posedge mgmt_clk or posedge reset) begin
if(reset)
mdio_out_valid <=#TP 0;
else if(mgmt_req & mgmt_miim_sel)
mdio_out_valid <=#TP 1'b1;
else if(tmp_cnt ==30)
mdio_out_valid <=#TP 1'b0;
else
mdio_out_valid <=#TP 1'b0;
mdio_out_valid <= #TP mdio_out_valid;
end
 
endmodule
/trunk/rtl/verilog/mgmt/mdio.v
48,7 → 48,7
//////////////////////////////////////////////////////////////////////
 
`define PRE 31'h7fffffff
`define ST 2'b00
`define ST 2'b01
`define TA 2'b10
 
module mdio(mgmt_clk, reset, mdc, mdio_t, mdio_i, mdio_o, mdio_opcode, mdio_in_valid, mdio_data_in, mdio_out_valid, mdio_data_out, mgmt_config);
188,7 → 188,7
always@(posedge mdc or posedge reset)begin
if(reset) begin
mdio_o <=#TP 0;
mdio_t <=#TP 1;
mdio_t <=#TP 0;
transmitting <=#TP 0;
receiving <=#TP 0;
end
195,8 → 195,8
else begin
case (state)
IDLE:begin
mdio_o <=#TP 0;
mdio_t <=#TP 1;
mdio_o <=#TP 1'b1;
mdio_t <=#TP 0;
receiving <=#TP 0;
transmitting <=#TP 0;
end
211,7 → 211,9
end
MDIO_READ:begin
mdio_o <=#TP mdio_data_reg[62];
mdio_t <=#TP 1'b0;
transmitting <=#TP 1'b1;
receiving <=#TP 0;
if (trans_cnt <45) begin //transmitting PRE, ST, OP, ADDR
mdio_t <=#TP 1'b0;
receiving <=#TP 1'b0;
220,11 → 222,18
mdio_t <=#TP 1'b1;
receiving <=#TP 1'b0;
end
// else if (trans_cnt == 46)begin //transmitting TA
// mdio_t <=#TP 1'b0;
// receiving <=#TP 1'b0;
// end
else if (trans_cnt == 63)begin //all data received
receiving <=#TP 0;
transmitting <=#TP 1'b0;
mdio_t <=#TP 1'b0;
mdio_o <=#TP 1'b1;
end
else if(trans_cnt >= 46)begin //receiving Data
mdio_t <=#TP 1'b0;
mdio_t <=#TP 1'b1;
receiving <=#TP 1'b1;
end
end

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.