Add AXI4-Stream UART IP and associated files

- Created board.xit for physical constraints related to UART interface.
- Added vv_index.xml to define the AXI4-Stream UART IP with relevant metadata.
- Implemented GUI for AXI4-Stream UART parameters in AXI4Stream_UART_v1_0.tcl and AXI4Stream_UART_v1_1.tcl.
- Initialized Vivado project files for diligent_jstk and loopback_I2S designs, including synthesis and implementation settings.
- Configured file sets and simulation options for both projects.
This commit is contained in:
2025-05-12 18:16:58 +02:00
parent a4ec7ce43a
commit b11c65043f
20 changed files with 3906 additions and 6 deletions

View File

@@ -0,0 +1,58 @@
--Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.
----------------------------------------------------------------------------------
--Tool Version: Vivado v.2020.2 (win64) Build 3064766 Wed Nov 18 09:12:45 MST 2020
--Date : Mon May 12 18:14:19 2025
--Host : Davide-Samsung running 64-bit major release (build 9200)
--Command : generate_target loopback_I2S_wrapper.bd
--Design : loopback_I2S_wrapper
--Purpose : IP block netlist
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity loopback_I2S_wrapper is
port (
reset : in STD_LOGIC;
rx_lrck_0 : out STD_LOGIC;
rx_mclk_0 : out STD_LOGIC;
rx_sclk_0 : out STD_LOGIC;
rx_sdin_0 : in STD_LOGIC;
sys_clock : in STD_LOGIC;
tx_lrck_0 : out STD_LOGIC;
tx_mclk_0 : out STD_LOGIC;
tx_sclk_0 : out STD_LOGIC;
tx_sdout_0 : out STD_LOGIC
);
end loopback_I2S_wrapper;
architecture STRUCTURE of loopback_I2S_wrapper is
component loopback_I2S is
port (
reset : in STD_LOGIC;
sys_clock : in STD_LOGIC;
rx_sdin_0 : in STD_LOGIC;
tx_mclk_0 : out STD_LOGIC;
tx_lrck_0 : out STD_LOGIC;
tx_sclk_0 : out STD_LOGIC;
tx_sdout_0 : out STD_LOGIC;
rx_mclk_0 : out STD_LOGIC;
rx_lrck_0 : out STD_LOGIC;
rx_sclk_0 : out STD_LOGIC
);
end component loopback_I2S;
begin
loopback_I2S_i: component loopback_I2S
port map (
reset => reset,
rx_lrck_0 => rx_lrck_0,
rx_mclk_0 => rx_mclk_0,
rx_sclk_0 => rx_sclk_0,
rx_sdin_0 => rx_sdin_0,
sys_clock => sys_clock,
tx_lrck_0 => tx_lrck_0,
tx_mclk_0 => tx_mclk_0,
tx_sclk_0 => tx_sclk_0,
tx_sdout_0 => tx_sdout_0
);
end STRUCTURE;

View File

@@ -0,0 +1,288 @@
{
"design": {
"design_info": {
"boundary_crc": "0x82F7CD001DE2BC1E",
"device": "xc7a35tcpg236-1",
"name": "loopback_I2S",
"rev_ctrl_bd_flag": "RevCtrlBdOff",
"synth_flow_mode": "None",
"tool_version": "2020.2",
"validated": "true"
},
"design_tree": {
"proc_sys_reset_0": "",
"clk_wiz_0": "",
"proc_sys_reset_1": "",
"axis_dual_i2s_0": "",
"system_ila_0": ""
},
"ports": {
"reset": {
"type": "rst",
"direction": "I",
"parameters": {
"INSERT_VIP": {
"value": "0",
"value_src": "default"
},
"POLARITY": {
"value": "ACTIVE_HIGH"
}
}
},
"sys_clock": {
"type": "clk",
"direction": "I",
"parameters": {
"CLK_DOMAIN": {
"value": "loopback_I2S_sys_clock",
"value_src": "default"
},
"FREQ_HZ": {
"value": "100000000"
},
"FREQ_TOLERANCE_HZ": {
"value": "0",
"value_src": "default"
},
"INSERT_VIP": {
"value": "0",
"value_src": "default"
},
"PHASE": {
"value": "0.000"
}
}
},
"rx_sdin_0": {
"direction": "I"
},
"tx_mclk_0": {
"direction": "O"
},
"tx_lrck_0": {
"direction": "O"
},
"tx_sclk_0": {
"direction": "O"
},
"tx_sdout_0": {
"direction": "O"
},
"rx_mclk_0": {
"direction": "O"
},
"rx_lrck_0": {
"direction": "O"
},
"rx_sclk_0": {
"direction": "O"
}
},
"components": {
"proc_sys_reset_0": {
"vlnv": "xilinx.com:ip:proc_sys_reset:5.0",
"xci_name": "loopback_I2S_proc_sys_reset_0_0",
"xci_path": "ip\\loopback_I2S_proc_sys_reset_0_0\\loopback_I2S_proc_sys_reset_0_0.xci",
"inst_hier_path": "proc_sys_reset_0",
"parameters": {
"RESET_BOARD_INTERFACE": {
"value": "reset"
},
"USE_BOARD_FLOW": {
"value": "true"
}
}
},
"clk_wiz_0": {
"vlnv": "xilinx.com:ip:clk_wiz:6.0",
"xci_name": "loopback_I2S_clk_wiz_0_0",
"xci_path": "ip\\loopback_I2S_clk_wiz_0_0\\loopback_I2S_clk_wiz_0_0.xci",
"inst_hier_path": "clk_wiz_0",
"parameters": {
"CLKOUT1_JITTER": {
"value": "149.337"
},
"CLKOUT1_PHASE_ERROR": {
"value": "122.577"
},
"CLKOUT2_JITTER": {
"value": "201.826"
},
"CLKOUT2_PHASE_ERROR": {
"value": "122.577"
},
"CLKOUT2_REQUESTED_OUT_FREQ": {
"value": "22.579"
},
"CLKOUT2_USED": {
"value": "true"
},
"CLK_IN1_BOARD_INTERFACE": {
"value": "sys_clock"
},
"MMCM_CLKFBOUT_MULT_F": {
"value": "7.000"
},
"MMCM_CLKOUT0_DIVIDE_F": {
"value": "7.000"
},
"MMCM_CLKOUT1_DIVIDE": {
"value": "31"
},
"NUM_OUT_CLKS": {
"value": "2"
},
"USE_BOARD_FLOW": {
"value": "true"
}
}
},
"proc_sys_reset_1": {
"vlnv": "xilinx.com:ip:proc_sys_reset:5.0",
"xci_name": "loopback_I2S_proc_sys_reset_0_1",
"xci_path": "ip\\loopback_I2S_proc_sys_reset_0_1\\loopback_I2S_proc_sys_reset_0_1.xci",
"inst_hier_path": "proc_sys_reset_1",
"parameters": {
"RESET_BOARD_INTERFACE": {
"value": "reset"
},
"USE_BOARD_FLOW": {
"value": "true"
}
}
},
"axis_dual_i2s_0": {
"vlnv": "DigiLAB:ip:axis_dual_i2s:1.0",
"xci_name": "loopback_I2S_axis_dual_i2s_0_0",
"xci_path": "ip\\loopback_I2S_axis_dual_i2s_0_0\\loopback_I2S_axis_dual_i2s_0_0.xci",
"inst_hier_path": "axis_dual_i2s_0"
},
"system_ila_0": {
"vlnv": "xilinx.com:ip:system_ila:1.1",
"xci_name": "loopback_I2S_system_ila_0_0",
"xci_path": "ip\\loopback_I2S_system_ila_0_0\\loopback_I2S_system_ila_0_0.xci",
"inst_hier_path": "system_ila_0",
"parameters": {
"C_SLOT_0_INTF_TYPE": {
"value": "xilinx.com:interface:axis_rtl:1.0"
}
},
"interface_ports": {
"SLOT_0_AXIS": {
"mode": "Monitor",
"vlnv": "xilinx.com:interface:axis_rtl:1.0"
}
}
}
},
"interface_nets": {
"axis_dual_i2s_0_m_axis": {
"interface_ports": [
"axis_dual_i2s_0/s_axis",
"axis_dual_i2s_0/m_axis",
"system_ila_0/SLOT_0_AXIS"
]
}
},
"nets": {
"reset_1": {
"ports": [
"reset",
"proc_sys_reset_0/ext_reset_in",
"clk_wiz_0/reset",
"proc_sys_reset_1/ext_reset_in"
]
},
"sys_clock_1": {
"ports": [
"sys_clock",
"clk_wiz_0/clk_in1"
]
},
"clk_wiz_0_locked": {
"ports": [
"clk_wiz_0/locked",
"proc_sys_reset_0/dcm_locked",
"proc_sys_reset_1/dcm_locked"
]
},
"clk_wiz_0_clk_out1": {
"ports": [
"clk_wiz_0/clk_out1",
"system_ila_0/clk",
"axis_dual_i2s_0/aclk",
"proc_sys_reset_0/slowest_sync_clk"
]
},
"clk_wiz_0_clk_out2": {
"ports": [
"clk_wiz_0/clk_out2",
"proc_sys_reset_1/slowest_sync_clk",
"axis_dual_i2s_0/i2s_clk"
]
},
"proc_sys_reset_0_peripheral_aresetn": {
"ports": [
"proc_sys_reset_0/peripheral_aresetn",
"system_ila_0/resetn",
"axis_dual_i2s_0/aresetn"
]
},
"proc_sys_reset_1_peripheral_aresetn": {
"ports": [
"proc_sys_reset_1/peripheral_aresetn",
"axis_dual_i2s_0/i2s_resetn"
]
},
"rx_sdin_0_1": {
"ports": [
"rx_sdin_0",
"axis_dual_i2s_0/rx_sdin"
]
},
"axis_dual_i2s_0_tx_mclk": {
"ports": [
"axis_dual_i2s_0/tx_mclk",
"tx_mclk_0"
]
},
"axis_dual_i2s_0_tx_lrck": {
"ports": [
"axis_dual_i2s_0/tx_lrck",
"tx_lrck_0"
]
},
"axis_dual_i2s_0_tx_sclk": {
"ports": [
"axis_dual_i2s_0/tx_sclk",
"tx_sclk_0"
]
},
"axis_dual_i2s_0_tx_sdout": {
"ports": [
"axis_dual_i2s_0/tx_sdout",
"tx_sdout_0"
]
},
"axis_dual_i2s_0_rx_mclk": {
"ports": [
"axis_dual_i2s_0/rx_mclk",
"rx_mclk_0"
]
},
"axis_dual_i2s_0_rx_lrck": {
"ports": [
"axis_dual_i2s_0/rx_lrck",
"rx_lrck_0"
]
},
"axis_dual_i2s_0_rx_sclk": {
"ports": [
"axis_dual_i2s_0/rx_sclk",
"rx_sclk_0"
]
}
}
}
}

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
<key attr.name="base_addr" attr.type="string" for="node" id="BA"/>
<key attr.name="base_param" attr.type="string" for="node" id="BP"/>
<key attr.name="edge_hid" attr.type="int" for="edge" id="EH"/>
<key attr.name="high_addr" attr.type="string" for="node" id="HA"/>
<key attr.name="high_param" attr.type="string" for="node" id="HP"/>
<key attr.name="master_addrspace" attr.type="string" for="node" id="MA"/>
<key attr.name="master_instance" attr.type="string" for="node" id="MX"/>
<key attr.name="master_interface" attr.type="string" for="node" id="MI"/>
<key attr.name="master_segment" attr.type="string" for="node" id="MS"/>
<key attr.name="master_vlnv" attr.type="string" for="node" id="MV"/>
<key attr.name="memory_type" attr.type="string" for="node" id="TM"/>
<key attr.name="slave_instance" attr.type="string" for="node" id="SX"/>
<key attr.name="slave_interface" attr.type="string" for="node" id="SI"/>
<key attr.name="slave_segment" attr.type="string" for="node" id="SS"/>
<key attr.name="slave_vlnv" attr.type="string" for="node" id="SV"/>
<key attr.name="usage_type" attr.type="string" for="node" id="TU"/>
<key attr.name="vert_hid" attr.type="int" for="node" id="VH"/>
<key attr.name="vert_name" attr.type="string" for="node" id="VM"/>
<key attr.name="vert_type" attr.type="string" for="node" id="VT"/>
<graph edgedefault="undirected" id="G" parse.edgeids="canonical" parse.nodeids="canonical" parse.order="nodesfirst">
<node id="n0">
<data key="TU">active</data>
<data key="VH">2</data>
<data key="VT">PM</data>
</node>
<node id="n1">
<data key="VH">2</data>
<data key="VM">loopback_I2S</data>
<data key="VT">VR</data>
</node>
<node id="n2">
<data key="VM">loopback_I2S</data>
<data key="VT">BC</data>
</node>
<edge id="e0" source="n2" target="n1">
</edge>
<edge id="e1" source="n1" target="n0">
</edge>
</graph>
</graphml>