mirror of
https://github.com/corundum/corundum.git
synced 2025-01-16 08:12:53 +08:00
Update example design to use FIFO wrapper
This commit is contained in:
parent
bf0571332d
commit
6a012c992b
@ -16,6 +16,7 @@ SYN_FILES += rtl/debounce_switch.v
|
|||||||
SYN_FILES += rtl/sync_reset.v
|
SYN_FILES += rtl/sync_reset.v
|
||||||
SYN_FILES += rtl/sync_signal.v
|
SYN_FILES += rtl/sync_signal.v
|
||||||
SYN_FILES += lib/eth/rtl/gmii_phy_if.v
|
SYN_FILES += lib/eth/rtl/gmii_phy_if.v
|
||||||
|
SYN_FILES += lib/eth/rtl/eth_mac_1g_fifo.v
|
||||||
SYN_FILES += lib/eth/rtl/eth_mac_1g.v
|
SYN_FILES += lib/eth/rtl/eth_mac_1g.v
|
||||||
SYN_FILES += lib/eth/rtl/eth_mac_1g_rx.v
|
SYN_FILES += lib/eth/rtl/eth_mac_1g_rx.v
|
||||||
SYN_FILES += lib/eth/rtl/eth_mac_1g_tx.v
|
SYN_FILES += lib/eth/rtl/eth_mac_1g_tx.v
|
||||||
|
@ -79,9 +79,10 @@ wire [7:0] gmii_txd;
|
|||||||
wire gmii_tx_en;
|
wire gmii_tx_en;
|
||||||
wire gmii_tx_er;
|
wire gmii_tx_er;
|
||||||
|
|
||||||
// AXI between MAC and FIFO
|
// AXI between MAC and Ethernet modules
|
||||||
wire [7:0] rx_axis_tdata;
|
wire [7:0] rx_axis_tdata;
|
||||||
wire rx_axis_tvalid;
|
wire rx_axis_tvalid;
|
||||||
|
wire rx_axis_tready;
|
||||||
wire rx_axis_tlast;
|
wire rx_axis_tlast;
|
||||||
wire rx_axis_tuser;
|
wire rx_axis_tuser;
|
||||||
|
|
||||||
@ -89,19 +90,7 @@ wire [7:0] tx_axis_tdata;
|
|||||||
wire tx_axis_tvalid;
|
wire tx_axis_tvalid;
|
||||||
wire tx_axis_tready;
|
wire tx_axis_tready;
|
||||||
wire tx_axis_tlast;
|
wire tx_axis_tlast;
|
||||||
|
wire tx_axis_tuser;
|
||||||
// AXI between FIFO and Ethernet modules
|
|
||||||
wire [7:0] rx_fifo_axis_tdata;
|
|
||||||
wire rx_fifo_axis_tvalid;
|
|
||||||
wire rx_fifo_axis_tready;
|
|
||||||
wire rx_fifo_axis_tlast;
|
|
||||||
wire rx_fifo_axis_tuser = 0;
|
|
||||||
|
|
||||||
wire [7:0] tx_fifo_axis_tdata;
|
|
||||||
wire tx_fifo_axis_tvalid;
|
|
||||||
wire tx_fifo_axis_tready;
|
|
||||||
wire tx_fifo_axis_tlast;
|
|
||||||
wire tx_fifo_axis_tuser;
|
|
||||||
|
|
||||||
// Ethernet frame between Ethernet modules and UDP stack
|
// Ethernet frame between Ethernet modules and UDP stack
|
||||||
wire rx_eth_hdr_ready;
|
wire rx_eth_hdr_ready;
|
||||||
@ -350,101 +339,53 @@ gmii_phy_if_inst (
|
|||||||
.phy_gmii_tx_er(phy_tx_er)
|
.phy_gmii_tx_er(phy_tx_er)
|
||||||
);
|
);
|
||||||
|
|
||||||
eth_mac_1g #(
|
eth_mac_1g_fifo #(
|
||||||
.ENABLE_PADDING(1),
|
.ENABLE_PADDING(1),
|
||||||
.MIN_FRAME_LENGTH(64)
|
.MIN_FRAME_LENGTH(64)
|
||||||
)
|
)
|
||||||
eth_mac_1g_inst (
|
eth_mac_1g_fifo_inst (
|
||||||
.rx_clk(gmii_rx_clk),
|
.rx_clk(gmii_rx_clk),
|
||||||
.rx_rst(gmii_rx_rst),
|
.rx_rst(gmii_rx_rst),
|
||||||
.tx_clk(gmii_tx_clk),
|
.tx_clk(gmii_tx_clk),
|
||||||
.tx_rst(gmii_tx_rst),
|
.tx_rst(gmii_tx_rst),
|
||||||
|
.logic_clk(clk),
|
||||||
|
.logic_rst(rst),
|
||||||
|
|
||||||
.tx_axis_tdata(tx_axis_tdata),
|
.tx_axis_tdata(tx_axis_tdata),
|
||||||
.tx_axis_tvalid(tx_axis_tvalid),
|
.tx_axis_tvalid(tx_axis_tvalid),
|
||||||
.tx_axis_tready(tx_axis_tready),
|
.tx_axis_tready(tx_axis_tready),
|
||||||
.tx_axis_tlast(tx_axis_tlast),
|
.tx_axis_tlast(tx_axis_tlast),
|
||||||
.tx_axis_tuser(0),
|
.tx_axis_tuser(tx_axis_tuser),
|
||||||
|
|
||||||
.rx_axis_tdata(rx_axis_tdata),
|
.rx_axis_tdata(rx_axis_tdata),
|
||||||
.rx_axis_tvalid(rx_axis_tvalid),
|
.rx_axis_tvalid(rx_axis_tvalid),
|
||||||
|
.rx_axis_tready(rx_axis_tready),
|
||||||
.rx_axis_tlast(rx_axis_tlast),
|
.rx_axis_tlast(rx_axis_tlast),
|
||||||
.rx_axis_tuser(rx_axis_tuser),
|
.rx_axis_tuser(rx_axis_tuser),
|
||||||
|
|
||||||
.gmii_rxd(gmii_rxd),
|
.gmii_rxd(gmii_rxd),
|
||||||
.gmii_rx_dv(gmii_rx_dv),
|
.gmii_rx_dv(gmii_rx_dv),
|
||||||
.gmii_rx_er(gmii_rx_er),
|
.gmii_rx_er(gmii_rx_er),
|
||||||
.gmii_txd(gmii_txd),
|
.gmii_txd(gmii_txd),
|
||||||
.gmii_tx_en(gmii_tx_en),
|
.gmii_tx_en(gmii_tx_en),
|
||||||
.gmii_tx_er(gmii_tx_er),
|
.gmii_tx_er(gmii_tx_er),
|
||||||
|
|
||||||
.rx_error_bad_frame(rx_error_bad_frame),
|
.rx_error_bad_frame(rx_error_bad_frame),
|
||||||
.rx_error_bad_fcs(rx_error_bad_fcs),
|
.rx_error_bad_fcs(rx_error_bad_fcs),
|
||||||
|
|
||||||
.ifg_delay(12)
|
.ifg_delay(12)
|
||||||
);
|
);
|
||||||
|
|
||||||
axis_async_frame_fifo #(
|
|
||||||
.ADDR_WIDTH(12),
|
|
||||||
.DATA_WIDTH(8),
|
|
||||||
.DROP_WHEN_FULL(1)
|
|
||||||
)
|
|
||||||
rx_fifo (
|
|
||||||
// AXI input
|
|
||||||
.input_clk(gmii_rx_clk),
|
|
||||||
.input_rst(gmii_rx_rst),
|
|
||||||
|
|
||||||
.input_axis_tdata(rx_axis_tdata),
|
|
||||||
.input_axis_tvalid(rx_axis_tvalid),
|
|
||||||
.input_axis_tready(),
|
|
||||||
.input_axis_tlast(rx_axis_tlast),
|
|
||||||
.input_axis_tuser(rx_axis_tuser),
|
|
||||||
|
|
||||||
// AXI output
|
|
||||||
.output_clk(clk),
|
|
||||||
.output_rst(rst),
|
|
||||||
|
|
||||||
.output_axis_tdata(rx_fifo_axis_tdata),
|
|
||||||
.output_axis_tvalid(rx_fifo_axis_tvalid),
|
|
||||||
.output_axis_tready(rx_fifo_axis_tready),
|
|
||||||
.output_axis_tlast(rx_fifo_axis_tlast)
|
|
||||||
);
|
|
||||||
|
|
||||||
axis_async_frame_fifo #(
|
|
||||||
.ADDR_WIDTH(12),
|
|
||||||
.DATA_WIDTH(8)
|
|
||||||
)
|
|
||||||
tx_fifo (
|
|
||||||
// AXI input
|
|
||||||
.input_clk(clk),
|
|
||||||
.input_rst(rst),
|
|
||||||
|
|
||||||
.input_axis_tdata(tx_fifo_axis_tdata),
|
|
||||||
.input_axis_tvalid(tx_fifo_axis_tvalid),
|
|
||||||
.input_axis_tready(tx_fifo_axis_tready),
|
|
||||||
.input_axis_tlast(tx_fifo_axis_tlast),
|
|
||||||
.input_axis_tuser(tx_fifo_axis_tuser),
|
|
||||||
|
|
||||||
// AXI output
|
|
||||||
.output_clk(gmii_tx_clk),
|
|
||||||
.output_rst(gmii_tx_rst),
|
|
||||||
|
|
||||||
.output_axis_tdata(tx_axis_tdata),
|
|
||||||
.output_axis_tvalid(tx_axis_tvalid),
|
|
||||||
.output_axis_tready(tx_axis_tready),
|
|
||||||
.output_axis_tlast(tx_axis_tlast)
|
|
||||||
);
|
|
||||||
|
|
||||||
eth_axis_rx
|
eth_axis_rx
|
||||||
eth_axis_rx_inst (
|
eth_axis_rx_inst (
|
||||||
.clk(clk),
|
.clk(clk),
|
||||||
.rst(rst),
|
.rst(rst),
|
||||||
// AXI input
|
// AXI input
|
||||||
.input_axis_tdata(rx_fifo_axis_tdata),
|
.input_axis_tdata(rx_axis_tdata),
|
||||||
.input_axis_tvalid(rx_fifo_axis_tvalid),
|
.input_axis_tvalid(rx_axis_tvalid),
|
||||||
.input_axis_tready(rx_fifo_axis_tready),
|
.input_axis_tready(rx_axis_tready),
|
||||||
.input_axis_tlast(rx_fifo_axis_tlast),
|
.input_axis_tlast(rx_axis_tlast),
|
||||||
.input_axis_tuser(rx_fifo_axis_tuser),
|
.input_axis_tuser(rx_axis_tuser),
|
||||||
// Ethernet frame output
|
// Ethernet frame output
|
||||||
.output_eth_hdr_valid(rx_eth_hdr_valid),
|
.output_eth_hdr_valid(rx_eth_hdr_valid),
|
||||||
.output_eth_hdr_ready(rx_eth_hdr_ready),
|
.output_eth_hdr_ready(rx_eth_hdr_ready),
|
||||||
@ -477,11 +418,11 @@ eth_axis_tx_inst (
|
|||||||
.input_eth_payload_tlast(tx_eth_payload_tlast),
|
.input_eth_payload_tlast(tx_eth_payload_tlast),
|
||||||
.input_eth_payload_tuser(tx_eth_payload_tuser),
|
.input_eth_payload_tuser(tx_eth_payload_tuser),
|
||||||
// AXI output
|
// AXI output
|
||||||
.output_axis_tdata(tx_fifo_axis_tdata),
|
.output_axis_tdata(tx_axis_tdata),
|
||||||
.output_axis_tvalid(tx_fifo_axis_tvalid),
|
.output_axis_tvalid(tx_axis_tvalid),
|
||||||
.output_axis_tready(tx_fifo_axis_tready),
|
.output_axis_tready(tx_axis_tready),
|
||||||
.output_axis_tlast(tx_fifo_axis_tlast),
|
.output_axis_tlast(tx_axis_tlast),
|
||||||
.output_axis_tuser(tx_fifo_axis_tuser),
|
.output_axis_tuser(tx_axis_tuser),
|
||||||
// Status signals
|
// Status signals
|
||||||
.busy()
|
.busy()
|
||||||
);
|
);
|
||||||
|
@ -42,6 +42,7 @@ srcs = []
|
|||||||
|
|
||||||
srcs.append("../rtl/%s.v" % module)
|
srcs.append("../rtl/%s.v" % module)
|
||||||
srcs.append("../lib/eth/rtl/gmii_phy_if.v")
|
srcs.append("../lib/eth/rtl/gmii_phy_if.v")
|
||||||
|
srcs.append("../lib/eth/rtl/eth_mac_1g_fifo.v")
|
||||||
srcs.append("../lib/eth/rtl/eth_mac_1g.v")
|
srcs.append("../lib/eth/rtl/eth_mac_1g.v")
|
||||||
srcs.append("../lib/eth/rtl/eth_mac_1g_rx.v")
|
srcs.append("../lib/eth/rtl/eth_mac_1g_rx.v")
|
||||||
srcs.append("../lib/eth/rtl/eth_mac_1g_tx.v")
|
srcs.append("../lib/eth/rtl/eth_mac_1g_tx.v")
|
||||||
@ -256,7 +257,7 @@ def bench():
|
|||||||
|
|
||||||
rx_frame = gmii_sink_queue.get(False)
|
rx_frame = gmii_sink_queue.get(False)
|
||||||
check_eth_frame = eth_ep.EthFrame()
|
check_eth_frame = eth_ep.EthFrame()
|
||||||
check_eth_frame.parse_axis_fcs(bytearray(rx_frame)[8:])
|
check_eth_frame.parse_axis_fcs(rx_frame.data[8:])
|
||||||
check_frame = arp_ep.ARPFrame()
|
check_frame = arp_ep.ARPFrame()
|
||||||
check_frame.parse_eth(check_eth_frame)
|
check_frame.parse_eth(check_eth_frame)
|
||||||
|
|
||||||
@ -297,7 +298,7 @@ def bench():
|
|||||||
|
|
||||||
rx_frame = gmii_sink_queue.get(False)
|
rx_frame = gmii_sink_queue.get(False)
|
||||||
check_eth_frame = eth_ep.EthFrame()
|
check_eth_frame = eth_ep.EthFrame()
|
||||||
check_eth_frame.parse_axis_fcs(bytearray(rx_frame)[8:])
|
check_eth_frame.parse_axis_fcs(rx_frame.data[8:])
|
||||||
check_frame = udp_ep.UDPFrame()
|
check_frame = udp_ep.UDPFrame()
|
||||||
check_frame.parse_eth(check_eth_frame)
|
check_frame.parse_eth(check_eth_frame)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user