diff options
author | Martin Braun <martin.braun@ettus.com> | 2020-01-23 16:10:22 -0800 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2020-01-28 09:35:36 -0800 |
commit | bafa9d95453387814ef25e6b6256ba8db2df612f (patch) | |
tree | 39ba24b5b67072d354775272e687796bb511848d /fpga/usrp3/lib/vivado_ipi/interfaces | |
parent | 3075b981503002df3115d5f1d0b97d2619ba30f2 (diff) | |
download | uhd-bafa9d95453387814ef25e6b6256ba8db2df612f.tar.gz uhd-bafa9d95453387814ef25e6b6256ba8db2df612f.tar.bz2 uhd-bafa9d95453387814ef25e6b6256ba8db2df612f.zip |
Merge FPGA repository back into UHD repository
The FPGA codebase was removed from the UHD repository in 2014 to reduce
the size of the repository. However, over the last half-decade, the
split between the repositories has proven more burdensome than it has
been helpful. By merging the FPGA code back, it will be possible to
create atomic commits that touch both FPGA and UHD codebases. Continuous
integration testing is also simplified by merging the repositories,
because it was previously difficult to automatically derive the correct
UHD branch when testing a feature branch on the FPGA repository.
This commit also updates the license files and paths therein.
We are therefore merging the repositories again. Future development for
FPGA code will happen in the same repository as the UHD host code and
MPM code.
== Original Codebase and Rebasing ==
The original FPGA repository will be hosted for the foreseeable future
at its original local location: https://github.com/EttusResearch/fpga/
It can be used for bisecting, reference, and a more detailed history.
The final commit from said repository to be merged here is
05003794e2da61cabf64dd278c45685a7abad7ec. This commit is tagged as
v4.0.0.0-pre-uhd-merge.
If you have changes in the FPGA repository that you want to rebase onto
the UHD repository, simply run the following commands:
- Create a directory to store patches (this should be an empty
directory):
mkdir ~/patches
- Now make sure that your FPGA codebase is based on the same state as
the code that was merged:
cd src/fpga # Or wherever your FPGA code is stored
git rebase v4.0.0.0-pre-uhd-merge
Note: The rebase command may look slightly different depending on what
exactly you're trying to rebase.
- Create a patch set for your changes versus v4.0.0.0-pre-uhd-merge:
git format-patch v4.0.0.0-pre-uhd-merge -o ~/patches
Note: Make sure that only patches are stored in your output directory.
It should otherwise be empty. Make sure that you picked the correct
range of commits, and only commits you wanted to rebase were exported
as patch files.
- Go to the UHD repository and apply the patches:
cd src/uhd # Or wherever your UHD repository is stored
git am --directory fpga ~/patches/*
rm -rf ~/patches # This is for cleanup
== Contributors ==
The following people have contributed mainly to these files (this list
is not complete):
Co-authored-by: Alex Williams <alex.williams@ni.com>
Co-authored-by: Andrej Rode <andrej.rode@ettus.com>
Co-authored-by: Ashish Chaudhari <ashish@ettus.com>
Co-authored-by: Ben Hilburn <ben.hilburn@ettus.com>
Co-authored-by: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
Co-authored-by: Daniel Jepson <daniel.jepson@ni.com>
Co-authored-by: Derek Kozel <derek.kozel@ettus.com>
Co-authored-by: EJ Kreinar <ej@he360.com>
Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com>
Co-authored-by: Ian Buckley <ian.buckley@gmail.com>
Co-authored-by: Jörg Hofrichter <joerg.hofrichter@ni.com>
Co-authored-by: Jon Kiser <jon.kiser@ni.com>
Co-authored-by: Josh Blum <josh@joshknows.com>
Co-authored-by: Jonathon Pendlum <jonathan.pendlum@ettus.com>
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Matt Ettus <matt@ettus.com>
Co-authored-by: Michael West <michael.west@ettus.com>
Co-authored-by: Moritz Fischer <moritz.fischer@ettus.com>
Co-authored-by: Nick Foster <nick@ettus.com>
Co-authored-by: Nicolas Cuervo <nicolas.cuervo@ettus.com>
Co-authored-by: Paul Butler <paul.butler@ni.com>
Co-authored-by: Paul David <paul.david@ettus.com>
Co-authored-by: Ryan Marlow <ryan.marlow@ettus.com>
Co-authored-by: Sugandha Gupta <sugandha.gupta@ettus.com>
Co-authored-by: Sylvain Munaut <tnt@246tNt.com>
Co-authored-by: Trung Tran <trung.tran@ettus.com>
Co-authored-by: Vidush Vishwanath <vidush.vishwanath@ettus.com>
Co-authored-by: Wade Fife <wade.fife@ettus.com>
Diffstat (limited to 'fpga/usrp3/lib/vivado_ipi/interfaces')
18 files changed, 1575 insertions, 0 deletions
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd.xml new file mode 100644 index 000000000..66d44bdbd --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>analog.com</spirit:vendor> + <spirit:library>interface</spirit:library> + <spirit:name>fifo_rd</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:extends spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="fifo_read" spirit:version="1.0"/> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> + <spirit:description>FIFO Read Interface</spirit:description> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd_rtl.xml new file mode 100644 index 000000000..3c15f7203 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd_rtl.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>analog.com</spirit:vendor> + <spirit:library>interface</spirit:library> + <spirit:name>fifo_rd_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="analog.com" spirit:library="interface" spirit:name="fifo_rd" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>DATA</spirit:logicalName> + <spirit:description>FIFO Read Data</spirit:description> + <spirit:wire> + <spirit:qualifier> + <spirit:isData>true</spirit:isData> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + <spirit:defaultValue>0</spirit:defaultValue> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>EN</spirit:logicalName> + <spirit:description>FIFO Read Enable</spirit:description> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + <spirit:defaultValue>0</spirit:defaultValue> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>UNDERFLOW</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:width>1</spirit:width> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>VALID</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr.xml new file mode 100644 index 000000000..8e1f4d781 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>analog.com</spirit:vendor> + <spirit:library>interface</spirit:library> + <spirit:name>fifo_wr</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:extends spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="fifo_write" spirit:version="1.0"/> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> + <spirit:description>FIFO Write Interface</spirit:description> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr_rtl.xml new file mode 100644 index 000000000..49509dbfa --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr_rtl.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>analog.com</spirit:vendor> + <spirit:library>interface</spirit:library> + <spirit:name>fifo_wr_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="analog.com" spirit:library="interface" spirit:name="fifo_wr" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>DATA</spirit:logicalName> + <spirit:description/> + <spirit:wire> + <spirit:qualifier> + <spirit:isData>true</spirit:isData> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + <spirit:defaultValue>0</spirit:defaultValue> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>EN</spirit:logicalName> + <spirit:description/> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + <spirit:defaultValue>0</spirit:defaultValue> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>OVERFLOW</spirit:logicalName> + <spirit:description/> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>optional</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>optional</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + <spirit:defaultValue>0</spirit:defaultValue> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>SYNC</spirit:logicalName> + <spirit:description/> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>optional</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>optional</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + <spirit:defaultValue>0</spirit:defaultValue> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>XFER_REQ</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll.xml new file mode 100644 index 000000000..583c1f242 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_pll</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll_rtl.xml new file mode 100644 index 000000000..58d14d2f7 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll_rtl.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_pll_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_pll" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>cpll_rst_m</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>cpll_ref_clk_in</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isClock>true</spirit:isClock> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll.xml new file mode 100644 index 000000000..12e43a4c0 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_qpll</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll_rtl.xml new file mode 100644 index 000000000..486cb8b61 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll_rtl.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_qpll_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_qpll" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>qpll_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>qpll_ref_clk</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isClock>true</spirit:isClock> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx.xml new file mode 100644 index 000000000..24e435073 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_rx</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig.xml new file mode 100644 index 000000000..a8cae5ade --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_rx_ksig</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig_rtl.xml new file mode 100644 index 000000000..4e09e7982 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig_rtl.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_rx_ksig_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_rx_ksig" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>rx_gt_ilas_f</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_gt_ilas_q</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_gt_ilas_a</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_gt_ilas_r</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_gt_cgs_k</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_rtl.xml new file mode 100644 index 000000000..e2e49d1c3 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_rtl.xml @@ -0,0 +1,409 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_rx_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_rx" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>rx_p</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_n</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_rst_m</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_pll_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_gt_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_gt_rst_m</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_pll_locked</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_pll_locked_m</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_user_ready</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_user_ready_m</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_rst_done</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_rst_done_m</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_out_clk</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isClock>true</spirit:isClock> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_clk</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isClock>true</spirit:isClock> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_sysref</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_sync</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_sof</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_data</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>32</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>32</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_ip_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_ip_sof</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>4</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_ip_data</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>32</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>32</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_ip_sysref</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_ip_sync</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rx_ip_rst_done</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx.xml new file mode 100644 index 000000000..50eca29d0 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_tx</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx_rtl.xml new file mode 100644 index 000000000..faaa387f2 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx_rtl.xml @@ -0,0 +1,379 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_gt_tx_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_tx" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>tx_p</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_n</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_rst_m</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_pll_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_gt_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_gt_rst_m</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_pll_locked</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_pll_locked_m</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_user_ready</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_user_ready_m</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_rst_done</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_rst_done_m</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_out_clk</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isClock>true</spirit:isClock> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_clk</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isClock>true</spirit:isClock> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_sysref</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_sync</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_data</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>32</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>32</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_ip_rst</spirit:logicalName> + <spirit:wire> + <spirit:qualifier> + <spirit:isReset>true</spirit:isReset> + </spirit:qualifier> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_ip_data</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>32</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>32</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_ip_sysref</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_ip_sync</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>tx_ip_rst_done</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch.xml new file mode 100644 index 000000000..32a225486 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_xcvr_ch</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch_rtl.xml new file mode 100644 index 000000000..ba01aef9c --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch_rtl.xml @@ -0,0 +1,235 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_xcvr_ch_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_xcvr_ch" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>pll_locked</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rst</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>user_ready</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rst_done</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>lpm_dfe_n</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rate</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>3</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>3</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>sys_clk_sel</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>2</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>2</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>out_clk_sel</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>3</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>3</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>sel</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>8</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>8</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>enb</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>addr</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>12</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>12</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>wr</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>wdata</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>16</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>16</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rdata</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>16</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>16</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>ready</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm.xml new file mode 100644 index 000000000..218fd3686 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_xcvr_cm</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:directConnection>false</spirit:directConnection> + <spirit:isAddressable>false</spirit:isAddressable> + <spirit:maxMasters>1</spirit:maxMasters> + <spirit:maxSlaves>1</spirit:maxSlaves> +</spirit:busDefinition> diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm_rtl.xml new file mode 100644 index 000000000..beb223077 --- /dev/null +++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm_rtl.xml @@ -0,0 +1,115 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>ADI</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>if_xcvr_cm_rtl</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_xcvr_cm" spirit:version="1.0"/> + <spirit:ports> + <spirit:port> + <spirit:logicalName>sel</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>8</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>8</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>enb</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>addr</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>12</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>12</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>wr</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>wdata</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>16</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>16</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>rdata</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>16</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>16</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:logicalName>ready</spirit:logicalName> + <spirit:wire> + <spirit:onMaster> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>in</spirit:direction> + </spirit:onMaster> + <spirit:onSlave> + <spirit:presence>required</spirit:presence> + <spirit:width>1</spirit:width> + <spirit:direction>out</spirit:direction> + </spirit:onSlave> + </spirit:wire> + </spirit:port> + </spirit:ports> +</spirit:abstractionDefinition> |