Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new target NamcZynq board based on a SoC Zynq 7045 #69

Draft
wants to merge 28 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
a6ede29
add NamcZynq target
Jun 15, 2021
b92a00b
add AMC interface record and expand FMC with HPC ports to top_defines…
Jun 16, 2021
3b6b61a
build_ps and build_top tcl changes for targets without a specified BO…
Jun 16, 2021
dca8f03
add namc app files
Jul 1, 2021
b5f1403
add fmc_hpc_loopback module
Jul 1, 2021
eb6caaa
add fmcgtx ip in target_incl.tcl file
Jul 2, 2021
496c5fb
include soft blocks in NamcZynq app files
Jul 27, 2021
b9e1938
Merge branch 'master' into featureTargetNamcZynq
Oct 28, 2021
fb2c252
adapt NamcZynq.target.ini file to new format
Oct 28, 2021
b7b17da
adapt app files to new target organization
Oct 28, 2021
d141310
Update panda_ps.tcl file for vivado 2020.2
Nov 2, 2021
51a171d
Update targets/NamcZynq/target-top.dts:fclk-enable
Nov 3, 2021
e89cbd0
- correction of NamcZynq bd tcl parameters
Nov 4, 2021
bcfbdf3
try to fix qspi detection issue by the kernel
Nov 4, 2021
48814e7
change dts to fix QSPI detection issue
Nov 5, 2021
baf1c81
Merge branch 'master' into featureTargetNamcZynq
Nov 9, 2021
4d8cd9e
fixes qspi flash detection issue
Nov 10, 2021
f278750
fixes eth0 driver issue: change phy id from 88e1512 to 88e1510
Nov 10, 2021
928dfa3
add NamcZynq-fmc_lback.app.ini file in targets/NamcZynq/apps
Jan 11, 2022
1705283
Merge branch 'master' into featureTargetNamcZynq
Mar 29, 2023
b7ae319
add fmc_amc_eth module and NamcZynq-fmc_amc_eth app
Mar 29, 2023
aa43904
move NamcZynq_defines to fmc_amc_eth module_defines
Mar 30, 2023
f07f94b
change FMC interface in top_defines to prepare FMC HPC extension
Mar 30, 2023
f1a1fa0
- merge from featureFMCioExtension branch
Mar 30, 2023
1c06196
adapt NamcZynq target and fmc_hpc_loopback module to new FMC interfac…
Mar 31, 2023
c6b8103
change AMC io interface def in top_defines and NamcZynq_top
Mar 31, 2023
1b74ccb
adapt fmc_amc_eth module to new fmc and amc interfaces definition
Mar 31, 2023
1e8bdc8
remove NamcZynq target apps folder like other targets
Mar 31, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions apps/NamcZynq-fmc_amc_eth.app.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[.]
description:
Standard set of NamcZynq blocks with:
- FMC to AMC Ethernet passthough module
target: NamcZynq
includes: common_soft_blocks.include.ini

[FMC_AMC_ETH]
module: fmc_amc_eth
10 changes: 10 additions & 0 deletions apps/NamcZynq-fmc_lback.app.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[.]
description:
Standard set of NamcZynq blocks with:
- FMC HPC loopback module
Used for hardware testing only
target: NamcZynq
includes: common_soft_blocks.include.ini

[FMC_LBACK]
module: fmc_hpc_loopback
7 changes: 7 additions & 0 deletions apps/NamcZynq-no-fmc.app.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[.]
description:
Standard set of NamcZynq blocks with:
- no FMC module
- no AMC modules
target: NamcZynq
includes: common_soft_blocks.include.ini
44 changes: 37 additions & 7 deletions common/hdl/defines/top_defines.vhd
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ type FMC_input_interface is
FMC_PRSNT : std_logic;
FMC_CLK1_M2C_P : std_logic;
FMC_CLK1_M2C_N : std_logic;
GTREFCLK : std_logic;
RXP_IN : std_logic;
RXN_IN : std_logic;
GTREFCLK : std_logic_vector(1 downto 0);
RXP_IN : std_logic_vector(3 downto 0);
RXN_IN : std_logic_vector(3 downto 0);
MAC_ADDR : std_logic_vector(47 downto 0);
MAC_ADDR_WS : std_logic;
end record FMC_input_interface;
Expand All @@ -81,23 +81,32 @@ type FMC_inout_interface is
record
FMC_LA_P : std_logic_vector(33 downto 0);
FMC_LA_N : std_logic_vector(33 downto 0);
FMC_HA_P : std_logic_vector(21 downto 0);
FMC_HA_N : std_logic_vector(21 downto 0);
FMC_HB_P : std_logic_vector(21 downto 0);
FMC_HB_N : std_logic_vector(21 downto 0);

FMC_CLK0_M2C_P : std_logic;
FMC_CLK0_M2C_N : std_logic;
end record FMC_inout_interface;

constant FMC_io_init : FMC_inout_interface := (FMC_LA_P => (others => 'Z'),
FMC_LA_N => (others => 'Z'),
FMC_HA_P => (others => 'Z'),
FMC_HA_N => (others => 'Z'),
FMC_HB_P => (others => 'Z'),
FMC_HB_N => (others => 'Z'),
FMC_CLK0_M2C_P => 'Z',
FMC_CLK0_M2C_N => 'Z');

type FMC_output_interface is
record
TXP_OUT : std_logic;
TXN_OUT : std_logic;
TXP_OUT : std_logic_vector(3 downto 0);
TXN_OUT : std_logic_vector(3 downto 0);
end record FMC_output_interface;

constant FMC_o_init : FMC_output_interface := (TXP_OUT => 'Z',
TXN_OUT => 'Z');
constant FMC_o_init : FMC_output_interface := (TXP_OUT => (others => 'Z'),
TXN_OUT => (others => 'Z'));

-- SFP Block Record declarations

Expand Down Expand Up @@ -125,6 +134,27 @@ constant SFP_o_init : SFP_output_interface := (TXN_OUT => 'Z',
EVR_REC_CLK => '0',
LINK_UP => '0');

-- AMC Block Record declarations

type AMC_input_interface is
record
-- 4 Fat Pipe GTREFCLKs
FP_GTREFCLK : std_logic_vector(3 downto 0);
-- 8 Fat Pipe ports
FP_RXP_IN : std_logic_vector(7 downto 0);
FP_RXN_IN : std_logic_vector(7 downto 0);

end record AMC_input_interface;

type AMC_output_interface is
record
-- 8 Fat Pipe ports
FP_TXP_OUT : std_logic_vector(7 downto 0);
FP_TXN_OUT : std_logic_vector(7 downto 0);
end record AMC_output_interface;

constant AMC_o_init : AMC_output_interface := (FP_TXP_OUT => (others => 'Z'),
FP_TXN_OUT => (others => 'Z'));

type seq_t is
record
Expand Down
54 changes: 54 additions & 0 deletions modules/fmc_amc_eth/const/fmc_amc_eth_impl.xdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# -------------------------------------------------------------------
# Define asynchronous clocks
# -------------------------------------------------------------------
set_clock_groups -asynchronous -group [get_clocks \
{softblocks_inst/{{ block.name }}_inst/eth_phy2phy*/eth_phy_i*/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i/TXOUTCLK}]
#set_clock_groups -asynchronous -group [get_clocks \
#{softblocks_inst/{{ block.name }}_inst/eth_phy2phy*/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i/TXOUTCLK}]

# -------------------------------------------------------------------
# FMC-SFP MGTs - Bank 109
# -------------------------------------------------------------------
set_property LOC $FMC_HPC_GTX0_LOC \
[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[0].eth_phy_to_phy_i/eth_phy_i/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
set_property LOC $FMC_HPC_GTX1_LOC \
[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[1].eth_phy_to_phy_i/eth_phy_i/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
set_property LOC $FMC_HPC_GTX2_LOC \
[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[2].eth_phy_to_phy_i/eth_phy_i/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
set_property LOC $FMC_HPC_GTX3_LOC \
[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[3].eth_phy_to_phy_i/eth_phy_i/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]

# -------------------------------------------------------------------
# AMC MGTs - Bank 112
# -------------------------------------------------------------------
#set_property LOC $AMC_P4_GTX_LOC \
#[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[0].eth_phy_to_phy_i/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
#set_property LOC $AMC_P5_GTX_LOC \
#[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[1].eth_phy_to_phy_i/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
#set_property LOC $AMC_P6_GTX_LOC \
#[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[2].eth_phy_to_phy_i/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
#set_property LOC $AMC_P7_GTX_LOC \
#[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[3].eth_phy_to_phy_i/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]

# -------------------------------------------------------------------
# AMC MGTs - Bank 111
# -------------------------------------------------------------------
set_property LOC $AMC_P8_GTX_LOC \
[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[0].eth_phy_to_phy_i/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
set_property LOC $AMC_P9_GTX_LOC \
[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[1].eth_phy_to_phy_i/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
set_property LOC $AMC_P10_GTX_LOC \
[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[2].eth_phy_to_phy_i/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]
set_property LOC $AMC_P11_GTX_LOC \
[get_cells softblocks_inst/{{ block.name }}_inst/eth_phy2phy[3].eth_phy_to_phy_i/eth_phy_i2/core_support_i/pcs_pma_i/U0/transceiver_inst/gtwizard_inst/U0/gtwizard_i/gt0_GTWIZARD_i/gtxe2_i]

# -------------------------------------------------------------------
# FMC IO STANDARD
# -------------------------------------------------------------------
set_property IOSTANDARD LVCMOS18 [get_ports FMC_LA_N[*] ];
set_property IOSTANDARD LVCMOS18 [get_ports FMC_LA_P[*] ];
set_property IOSTANDARD LVCMOS18 [get_ports FMC_HA_N[*] ];
set_property IOSTANDARD LVCMOS18 [get_ports FMC_HA_P[*] ];
set_property IOSTANDARD LVCMOS18 [get_ports FMC_HB_N[*] ];
set_property IOSTANDARD LVCMOS18 [get_ports FMC_HB_P[*] ];

134 changes: 134 additions & 0 deletions modules/fmc_amc_eth/fmc_amc_eth.block.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
[.]
description: Ethernet passthrough links between AMC P8-P11 and FMC-4SFP module transceivers
entity: fmc_amc_eth
type: io
interfaces: fmc_i fmc_io fmc_o amc_i amc_o
constraints: const/fmc_amc_eth_impl.xdc
otherconst: mgt_pins
ip: eth_phy

[SOFT_RESET]
type: write action
description: GTX Soft Reset

[DATA_F2A_CNT_1]
type: read
description: Number of frames transfered from FMC-SFP1 to AMC port 8

[DATA_F2A_ERCNT_1]
type: read
description: Number of frame transfer errors from FMC-SFP1 to AMC port 8

[DATA_A2F_CNT_1]
type: read
description: Number of frames transfered from AMC port 8 to FMC-SFP1

[DATA_A2F_ERCNT_1]
type: read
description: Number of frame transfer errors from AMC port 8 to FMC-SFP1

[DATA_F2A_CNT_2]
type: read
description: Number of frames transfered from FMC-SFP2 to AMC port 9

[DATA_F2A_ERCNT_2]
type: read
description: Number of frame transfer errors from FMC-SFP2 to AMC port 9

[DATA_A2F_CNT_2]
type: read
description: Number of frames transfered from AMC port 9 to FMC-SFP2

[DATA_A2F_ERCNT_2]
type: read
description: Number of frame transfer errors from AMC port 9 to FMC-SFP2

[DATA_F2A_CNT_3]
type: read
description: Number of frames transfered from FMC-SFP3 to AMC port 10

[DATA_F2A_ERCNT_3]
type: read
description: Number of frame transfer errors from FMC-SFP3 to AMC port 10

[DATA_A2F_CNT_3]
type: read
description: Number of frames transfered from AMC port 10 to FMC-SFP3

[DATA_A2F_ERCNT_3]
type: read
description: Number of frame transfer errors from AMC port 10 to FMC-SFP3

[AMC_PHY_RESETDONE]
type: read
description: AMC_PHY_RESETDONE[3:0] is high when the AMC port 8-11 transceiver reset is done

[AMC_PHY_CPLLLOCK]
type: read
description: AMC_PHY_CPLLLOCK[3:0] is high when the AMC port 8-11 transceiver cpll is locked

[AMC_PHY8_STATUS]
type: read
description: pcs_pma core status_vector of AMC-Port8
[AMC_PHY9_STATUS]
type: read
description: pcs_pma core status_vector of AMC-Port9
[AMC_PHY10_STATUS]
type: read
description: pcs_pma core status_vector of AMC-Port10
[AMC_PHY11_STATUS]
type: read
description: pcs_pma core status_vector of AMC-Port11

[FMC_PHY_TX_FAULT]
type: read
description: TX_FAULT[3:0] is high when the SFP module is unplugged

[FMC_PHY_RX_LOS]
type: read
description: RX_LOS[3:0] is high when the SFP detect the input signal

[FMC_PHY_RESETDONE]
type: read
description: FMC_PHY_RESETDONE[3:0] is high when the SFP transceiver reset is done

[FMC_PHY_CPLLLOCK]
type: read
description: FMC_PHY_CPLLLOCK[3:0] is high when the SFP transceiver cpll is locked

[FMC_PHY1_STATUS]
type: read
description: pcs_pma core status_vector of FMC-SFP1
[FMC_PHY2_STATUS]
type: read
description: pcs_pma core status_vector of FMC-SFP2
[FMC_PHY3_STATUS]
type: read
description: pcs_pma core status_vector of FMC-SFP3
[FMC_PHY4_STATUS]
type: read
description: pcs_pma core status_vector of FMC-SFP4

[FMC_TX_DISABLE_1]
type: param bit
description: high to disable the transmission sfp1

[FMC_TX_DISABLE_2]
type: param bit
description: high to disable the transmission sfp2

[FMC_TX_DISABLE_3]
type: param bit
description: high to disable the transmission sfp3

[FMC_I2C_BUSY]
type: read
description: high when the controller is busy

[FMC_I2C_STATUS]
type: read enum
description: Error code assigned during the END_TRANSFER
0:no Error
1:Access I2C error
2:EEPROM integrity error
3:FREQUENCY_VALUE is out of range
6 changes: 6 additions & 0 deletions modules/fmc_amc_eth/fmc_amc_eth.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FMC_AMC_ETH - Ethernet passthrough links between AMC P8-P11 and FMC-4SFP module transceivers
======================================

Fields
------
.. block_fields:: modules/fmc_amc_eth/fmc_amc_eth.block.ini
Loading