OpenCores
URL https://opencores.org/ocsvn/10_100m_ethernet-fifo_convertor/10_100m_ethernet-fifo_convertor/trunk

Subversion Repositories 10_100m_ethernet-fifo_convertor

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 6 to Rev 7
    Reverse comparison

Rev 6 → Rev 7

/10_100m_ethernet-fifo_convertor/trunk/rtl/verilog/RxModule.v
4,13 → 4,20
 
////Next task: make the feedback to PC showing need data.
 
//vertion 0.4, add the function for TxModule to get start in a configurable ff_clk time after
// RxModule receiving the first frame. To modify the delay time just to
// change the value of the macro-variable delay_cnt_config.
//version 0.3, changed the changes made by version 0.2 back
//version 0.2, set empty when ff_data_buf_index's less significant bits is 3'b111 or 3'b000
 
`include "common.v"
 
`define eth_buf_len 1416 //1416=8*(8+6+6+2+3+148+4)
`define nibble_cnt_step 9'h001
 
`define delay_cnt_config 4'h0
`define delay_cnt_step 4'h1
 
module RxModule(phy_rxd, phy_rxen, phy_rxclk, phy_rxer,
ff_clk, ff_data, ff_en,
47,6 → 54,7
reg start=1'b0;
reg start_intra=1'b0;
reg[3:0] delay_cnt;
reg[3:0] ff_data_buf_index = 4'h0;
reg ff_state;
95,16 → 103,20
ff_cnt <= 8'h00;
ff_data_buf_index <= 4'hf;
ff_en <= 1'b0;
delay_cnt <= `delay_cnt_config;
end
else
case(ff_state)
transfer: begin
delay_cnt <= delay_cnt - `delay_cnt_step;
if(delay_cnt == 0) start <=1'b1;
if(ff_cnt==8'h00) begin //load new 148 bits
{ff_d[146:0],ff_data} <= ff_data_buf[ff_data_buf_index+4'h1];
ff_data_buf_index <= ff_data_buf_index + 4'h1;
ff_cnt <= ff_cnt + 8'h01;
ff_en <= 1'b1;
start <= 1'b1;
end
else if(ff_cnt == 8'd148) begin //every 148 bit need a gap
ff_en <= 1'b0;
/10_100m_ethernet-fifo_convertor/trunk/rtl/verilog/TxModule.v
59,6 → 59,7
reg[`ff_cnt_wide-1:0] ff_cnt=0;
reg[8:0] tx_cnt;
reg data_av;
reg Enable_Crc, Initialize_Crc; //declare the variables for the CRC module
wire [3:0] Data_Crc;
/10_100m_ethernet-fifo_convertor/trunk/rtl/verilog/test_feedback.v
0,0 → 1,41
//version 0.4, the test_feedback is created, main task is to test the top module, EthernetModule.v
// the ff_data_source is feed back to ff_data_sink
 
module test_feedback(reset, clk_in,
phy_rxd, phy_rxen, phy_rxclk, phy_rxer,
phy_txd, phy_txen, phy_txclk, phy_txer,
phy_reset, phy_col, phy_linksts, phy_crs,
test1, test2, test3, test4
);
input reset, clk_in;
output phy_reset, test1, test2, test3, test4;
input[3:0] phy_rxd; //MII interface for the phy chip
input phy_rxclk, phy_rxer;
output[3:0] phy_txd;
output phy_txer, phy_txen;
//declare them as inout port because when powerup reset, they act as output pins to config DM9161
//after reset, phy_txclk and phy_rxen must be input ports
inout phy_txclk, phy_col, phy_rxen, phy_linksts, phy_crs;
wire ff_en, ff_data;
wire clk_10K, ff_clk;
EthernetModule EthernetModule_inst(.reset(reset), .clk_10K(clk_10K),
.ff_clk(ff_clk), .ff_en_source(ff_en), .ff_en_sink(1'b1),
.ff_data_source(ff_data), .ff_data_sink(ff_data), //ff_clk should be a 270.33KHz clock
.phy_rxd(phy_rxd), .phy_rxen(phy_rxen), .phy_rxclk(phy_rxclk), .phy_rxer(phy_rxer),
.phy_txd(phy_txd), .phy_txen(phy_txen), .phy_txclk(phy_txclk), .phy_txer(phy_txer),
.phy_reset(phy_reset), .phy_col(phy_col), .phy_linksts(phy_linksts), .phy_crs(phy_crs),
.test1(test1), .test2(test2), .test3(test3), .test4(test4)
);
pll pll_inst (
.inclk0 ( clk_in ),
.c0 ( clk_10K ),
.c1 ( ff_clk )
);
 
endmodule
/10_100m_ethernet-fifo_convertor/trunk/rtl/verilog/common.v
6,8 → 6,8
//This file used to define some macro-varibles which can be used by all other files
 
//NOTE!!! Olny one of the following two definitions can be open
//`define frameIDfromRx //frameID comes from Rxmodule
`define frameIDcount //frameID counts for itself by adding one every frame
`define frameIDfromRx //frameID comes from Rxmodule
//`define frameIDcount //frameID counts for itself by adding one every frame
 
`define Preamble 64'hd555_5555_5555_5555
 

powered by: WebSVN 2.1.0

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