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

Subversion Repositories srdydrdy_lib

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /srdydrdy_lib/trunk/examples/bridge/env
    from Rev 9 to Rev 11
    Reverse comparison

Rev 9 → Rev 11

/gmii_monitor.v
0,0 → 1,90
module gmii_monitor
(/*AUTOARG*/
// Inputs
clk, gmii_tx_en, gmii_txd
);
input clk;
input gmii_tx_en;
input [7:0] gmii_txd;
 
parameter depth = 2048;
reg [7:0] rxbuf [0:depth-1];
integer rxptr;
event pkt_rcvd;
integer state,rxpkt_num;
integer err_cnt;
integer i;
parameter st_idle = 4, st_norm = 0, st_pre = 1;
initial
begin
rxptr = 0;
state = st_idle;
rxpkt_num = 0;
err_cnt = 0;
end
always @(posedge clk)
begin
case (state)
st_idle :
begin
if (gmii_tx_en)
begin
if (gmii_txd == `GMII_SFD)
state = st_norm;
else
state = st_pre;
end
end
 
st_pre :
begin
if (gmii_txd == `GMII_SFD)
state = st_norm;
else if (!gmii_tx_en)
begin
$display ("%t: ERROR %m: Detected packet with no SFD", $time);
state = st_idle;
end
end
st_norm :
begin
if (gmii_tx_en)
begin
rxbuf[rxptr ] <= #1 gmii_txd;
rxptr = rxptr + 1;
end
else
begin
->pkt_rcvd;
state = st_idle;
end
end // case: st_norm
endcase
end // always @ (posedge clk)
 
always @(pkt_rcvd)
begin
#2;
rxpkt_num = rxpkt_num + 1;
//pid = {rxbuf[rxptr-2], rxbuf[rxptr-1]};
$display ("%t: INFO : %m: Received packet %0d length %0d", $time,rxpkt_num,rxptr);
 
for (i=0; i<rxptr; i=i+1)
begin
if (i % 16 == 0) $write ("%x: ", i[15:0]);
$write ("%x ", rxbuf[i]);
if (i % 16 == 7) $write ("| ");
if (i % 16 == 15) $write ("\n");
end
if (i % 16 != 0) $write ("\n");
rxptr = 0;
end
endmodule // it_monitor
/gmii_driver.v
67,6 → 67,21
end
endtask
 
task print_packet;
input [31:0] length;
integer i;
begin
for (i=0; i<length; i=i+1)
begin
if (i % 16 == 0) $write ("%x: ", i[15:0]);
$write ("%x ", rxbuf[i]);
if (i % 16 == 7) $write ("| ");
if (i % 16 == 15) $write ("\n");
end
if (i % 16 != 0) $write ("\n");
end
endtask
 
task send_packet;
input [47:0] da, sa;
input [15:0] length;
82,6 → 97,8
rxbuf[length-2], rxbuf[length-1] } = crc32_result;
 
$display ("%m : Sending packet DA=%x SA=%x of length %0d", da, sa, length);
print_packet (length);
repeat (7)
begin
@(posedge rx_clk);
/run
1,5 → 1,11
#!/bin/bash
 
which vcs &> /dev/null
if [ "$?" == "-1" ]; then
iverilog -f bridge.vf
./a.out
else
vcs -full64 +v2k -R -I -f bridge.vf
#vcd2vpd env_top.vcd env_top.vpd
fi
 
/bridge.vf
2,6 → 2,7
 
env_top.v
gmii_driver.v
gmii_monitor.v
 
../rtl/basic_hashfunc.v
../rtl/bridge_ex1.v
/env_top.v
12,8 → 12,12
 
initial
begin
`ifdef VCS
$vcdpluson;
`else
$dumpfile ("env_top.vcd");
$dumpvars;
`endif
reset = 1;
#200;
reset = 0;
35,26 → 39,26
 
/*AUTOWIRE*/
// Beginning of automatic wires (for undeclared instantiated-module outputs)
wire gmii_rx_clk_0; // From driver0 of gmii_driver.v
wire gmii_rx_clk_1; // From driver1 of gmii_driver.v
wire gmii_rx_clk_2; // From driver2 of gmii_driver.v
wire gmii_rx_clk_3; // From driver3 of gmii_driver.v
wire gmii_rx_dv_0; // From driver0 of gmii_driver.v
wire gmii_rx_dv_1; // From driver1 of gmii_driver.v
wire gmii_rx_dv_2; // From driver2 of gmii_driver.v
wire gmii_rx_dv_3; // From driver3 of gmii_driver.v
wire [7:0] gmii_rxd_0; // From driver0 of gmii_driver.v
wire [7:0] gmii_rxd_1; // From driver1 of gmii_driver.v
wire [7:0] gmii_rxd_2; // From driver2 of gmii_driver.v
wire [7:0] gmii_rxd_3; // From driver3 of gmii_driver.v
wire gmii_tx_dv_0; // From bridge of bridge_ex1.v
wire gmii_tx_dv_1; // From bridge of bridge_ex1.v
wire gmii_tx_dv_2; // From bridge of bridge_ex1.v
wire gmii_tx_dv_3; // From bridge of bridge_ex1.v
wire [7:0] gmii_txd_0; // From bridge of bridge_ex1.v
wire [7:0] gmii_txd_1; // From bridge of bridge_ex1.v
wire [7:0] gmii_txd_2; // From bridge of bridge_ex1.v
wire [7:0] gmii_txd_3; // From bridge of bridge_ex1.v
wire gmii_rx_clk_0; // From driver0 of gmii_driver.v
wire gmii_rx_clk_1; // From driver1 of gmii_driver.v
wire gmii_rx_clk_2; // From driver2 of gmii_driver.v
wire gmii_rx_clk_3; // From driver3 of gmii_driver.v
wire gmii_rx_dv_0; // From driver0 of gmii_driver.v
wire gmii_rx_dv_1; // From driver1 of gmii_driver.v
wire gmii_rx_dv_2; // From driver2 of gmii_driver.v
wire gmii_rx_dv_3; // From driver3 of gmii_driver.v
wire [7:0] gmii_rxd_0; // From driver0 of gmii_driver.v
wire [7:0] gmii_rxd_1; // From driver1 of gmii_driver.v
wire [7:0] gmii_rxd_2; // From driver2 of gmii_driver.v
wire [7:0] gmii_rxd_3; // From driver3 of gmii_driver.v
wire gmii_tx_en_0; // From bridge of bridge_ex1.v
wire gmii_tx_en_1; // From bridge of bridge_ex1.v
wire gmii_tx_en_2; // From bridge of bridge_ex1.v
wire gmii_tx_en_3; // From bridge of bridge_ex1.v
wire [7:0] gmii_txd_0; // From bridge of bridge_ex1.v
wire [7:0] gmii_txd_1; // From bridge of bridge_ex1.v
wire [7:0] gmii_txd_2; // From bridge of bridge_ex1.v
wire [7:0] gmii_txd_3; // From bridge of bridge_ex1.v
// End of automatics
 
/* gmii_driver AUTO_TEMPLATE
65,58 → 69,92
gmii_driver driver0
(/*AUTOINST*/
// Outputs
.rxd (gmii_rxd_0[7:0]), // Templated
.rx_dv (gmii_rx_dv_0), // Templated
.rx_clk (gmii_rx_clk_0)); // Templated
.rxd (gmii_rxd_0[7:0]), // Templated
.rx_dv (gmii_rx_dv_0), // Templated
.rx_clk (gmii_rx_clk_0)); // Templated
 
gmii_driver driver1
(/*AUTOINST*/
// Outputs
.rxd (gmii_rxd_1[7:0]), // Templated
.rx_dv (gmii_rx_dv_1), // Templated
.rx_clk (gmii_rx_clk_1)); // Templated
.rxd (gmii_rxd_1[7:0]), // Templated
.rx_dv (gmii_rx_dv_1), // Templated
.rx_clk (gmii_rx_clk_1)); // Templated
 
gmii_driver driver2
(/*AUTOINST*/
// Outputs
.rxd (gmii_rxd_2[7:0]), // Templated
.rx_dv (gmii_rx_dv_2), // Templated
.rx_clk (gmii_rx_clk_2)); // Templated
.rxd (gmii_rxd_2[7:0]), // Templated
.rx_dv (gmii_rx_dv_2), // Templated
.rx_clk (gmii_rx_clk_2)); // Templated
 
gmii_driver driver3
(/*AUTOINST*/
// Outputs
.rxd (gmii_rxd_3[7:0]), // Templated
.rx_dv (gmii_rx_dv_3), // Templated
.rx_clk (gmii_rx_clk_3)); // Templated
.rxd (gmii_rxd_3[7:0]), // Templated
.rx_dv (gmii_rx_dv_3), // Templated
.rx_clk (gmii_rx_clk_3)); // Templated
 
bridge_ex1 bridge
(/*AUTOINST*/
// Outputs
.gmii_tx_dv_0 (gmii_tx_dv_0),
.gmii_tx_dv_1 (gmii_tx_dv_1),
.gmii_tx_dv_2 (gmii_tx_dv_2),
.gmii_tx_dv_3 (gmii_tx_dv_3),
.gmii_txd_0 (gmii_txd_0[7:0]),
.gmii_txd_1 (gmii_txd_1[7:0]),
.gmii_txd_2 (gmii_txd_2[7:0]),
.gmii_txd_3 (gmii_txd_3[7:0]),
.gmii_tx_en_0 (gmii_tx_en_0),
.gmii_tx_en_1 (gmii_tx_en_1),
.gmii_tx_en_2 (gmii_tx_en_2),
.gmii_tx_en_3 (gmii_tx_en_3),
.gmii_txd_0 (gmii_txd_0[7:0]),
.gmii_txd_1 (gmii_txd_1[7:0]),
.gmii_txd_2 (gmii_txd_2[7:0]),
.gmii_txd_3 (gmii_txd_3[7:0]),
// Inputs
.clk (clk),
.reset (reset),
.gmii_rx_clk_0 (gmii_rx_clk_0),
.gmii_rx_clk_1 (gmii_rx_clk_1),
.gmii_rx_clk_2 (gmii_rx_clk_2),
.gmii_rx_clk_3 (gmii_rx_clk_3),
.gmii_rx_dv_0 (gmii_rx_dv_0),
.gmii_rx_dv_1 (gmii_rx_dv_1),
.gmii_rx_dv_2 (gmii_rx_dv_2),
.gmii_rx_dv_3 (gmii_rx_dv_3),
.gmii_rxd_0 (gmii_rxd_0[7:0]),
.gmii_rxd_1 (gmii_rxd_1[7:0]),
.gmii_rxd_2 (gmii_rxd_2[7:0]),
.gmii_rxd_3 (gmii_rxd_3[7:0]));
.clk (clk),
.reset (reset),
.gmii_rx_clk_0 (gmii_rx_clk_0),
.gmii_rx_clk_1 (gmii_rx_clk_1),
.gmii_rx_clk_2 (gmii_rx_clk_2),
.gmii_rx_clk_3 (gmii_rx_clk_3),
.gmii_rx_dv_0 (gmii_rx_dv_0),
.gmii_rx_dv_1 (gmii_rx_dv_1),
.gmii_rx_dv_2 (gmii_rx_dv_2),
.gmii_rx_dv_3 (gmii_rx_dv_3),
.gmii_rxd_0 (gmii_rxd_0[7:0]),
.gmii_rxd_1 (gmii_rxd_1[7:0]),
.gmii_rxd_2 (gmii_rxd_2[7:0]),
.gmii_rxd_3 (gmii_rxd_3[7:0]));
 
/* gmii_monitor AUTO_TEMPLATE
(
.clk (clk),
.\(.*\) (\1_@[]),
);
*/
gmii_monitor mon0
(/*AUTOINST*/
// Inputs
.clk (clk), // Templated
.gmii_tx_en (gmii_tx_en_0), // Templated
.gmii_txd (gmii_txd_0[7:0])); // Templated
 
gmii_monitor mon1
(/*AUTOINST*/
// Inputs
.clk (clk), // Templated
.gmii_tx_en (gmii_tx_en_1), // Templated
.gmii_txd (gmii_txd_1[7:0])); // Templated
 
gmii_monitor mon2
(/*AUTOINST*/
// Inputs
.clk (clk), // Templated
.gmii_tx_en (gmii_tx_en_2), // Templated
.gmii_txd (gmii_txd_2[7:0])); // Templated
 
gmii_monitor mon3
(/*AUTOINST*/
// Inputs
.clk (clk), // Templated
.gmii_tx_en (gmii_tx_en_3), // Templated
.gmii_txd (gmii_txd_3[7:0])); // Templated
 
endmodule // env_top
// Local Variables:
// verilog-library-directories:("." "../rtl")

powered by: WebSVN 2.1.0

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