diff --git a/fpga/01_get_redpitaya.sh b/fpga/01_get_redpitaya.sh
new file mode 100755
index 0000000..82992ac
--- /dev/null
+++ b/fpga/01_get_redpitaya.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+git clone https://github.com/RedPitaya/RedPitaya-FPGA.git --single-branch --branch Release_2024.1
+
diff --git a/fpga/01_build_bitfile.sh b/fpga/11_build_bitfile.sh
similarity index 100%
rename from fpga/01_build_bitfile.sh
rename to fpga/11_build_bitfile.sh
diff --git a/fpga/vivado/nonproject.tcl b/fpga/vivado/nonproject.tcl
index 362c033..54e3be7 100644
--- a/fpga/vivado/nonproject.tcl
+++ b/fpga/vivado/nonproject.tcl
@@ -9,6 +9,9 @@
# This is used by "synth_design".
set_part xc7z010clg400-1
+# Specify path to RedPitaya board definition.
+set_param board.repoPaths [list "RedPitaya-FPGA/brd"]
+
# Specify board type.
# Unclear whether this is required.
set_property board_part redpitaya.com:redpitaya:part0:1.1 [current_project]
diff --git a/fpga/vivado/redpitaya_puzzlefw.srcs/sources_1/bd/puzzlefw/puzzlefw.bd b/fpga/vivado/redpitaya_puzzlefw.srcs/sources_1/bd/puzzlefw/puzzlefw.bd
index f6f894b..99cce7c 100644
--- a/fpga/vivado/redpitaya_puzzlefw.srcs/sources_1/bd/puzzlefw/puzzlefw.bd
+++ b/fpga/vivado/redpitaya_puzzlefw.srcs/sources_1/bd/puzzlefw/puzzlefw.bd
@@ -14,16 +14,11 @@
"processing_system7_0": "",
"proc_sys_reset_0": "",
"axi_interconnect_0": {
- "xbar": "",
"s00_couplers": {
"auto_pc": ""
- },
- "m00_couplers": {},
- "m01_couplers": {}
+ }
},
- "axi_apb_bridge_0": "",
- "axi_bram_ctrl_0": "",
- "blk_mem_gen_0": ""
+ "axi_apb_bridge_0": ""
},
"interface_ports": {
"DDR_0": {
@@ -1324,8 +1319,11 @@
"inst_hier_path": "axi_interconnect_0",
"xci_name": "puzzlefw_axi_interconnect_0_0",
"parameters": {
+ "ENABLE_ADVANCED_OPTIONS": {
+ "value": "0"
+ },
"NUM_MI": {
- "value": "2"
+ "value": "1"
}
},
"interface_ports": {
@@ -1336,10 +1334,6 @@
"M00_AXI": {
"mode": "Master",
"vlnv": "xilinx.com:interface:aximm_rtl:1.0"
- },
- "M01_AXI": {
- "mode": "Master",
- "vlnv": "xilinx.com:interface:aximm_rtl:1.0"
}
},
"ports": {
@@ -1387,51 +1381,9 @@
"M00_ARESETN": {
"type": "rst",
"direction": "I"
- },
- "M01_ACLK": {
- "type": "clk",
- "direction": "I",
- "parameters": {
- "ASSOCIATED_BUSIF": {
- "value": "M01_AXI"
- },
- "ASSOCIATED_RESET": {
- "value": "M01_ARESETN"
- }
- }
- },
- "M01_ARESETN": {
- "type": "rst",
- "direction": "I"
}
},
"components": {
- "xbar": {
- "vlnv": "xilinx.com:ip:axi_crossbar:2.1",
- "xci_name": "puzzlefw_xbar_0",
- "xci_path": "ip/puzzlefw_xbar_0/puzzlefw_xbar_0.xci",
- "inst_hier_path": "axi_interconnect_0/xbar",
- "parameters": {
- "NUM_MI": {
- "value": "2"
- },
- "NUM_SI": {
- "value": "1"
- },
- "STRATEGY": {
- "value": "0"
- }
- },
- "interface_ports": {
- "S00_AXI": {
- "mode": "Slave",
- "bridges": [
- "M00_AXI",
- "M01_AXI"
- ]
- }
- }
- },
"s00_couplers": {
"interface_ports": {
"M_AXI": {
@@ -1529,127 +1481,13 @@
]
}
}
- },
- "m00_couplers": {
- "interface_ports": {
- "M_AXI": {
- "mode": "Master",
- "vlnv": "xilinx.com:interface:aximm_rtl:1.0"
- },
- "S_AXI": {
- "mode": "Slave",
- "vlnv": "xilinx.com:interface:aximm_rtl:1.0"
- }
- },
- "ports": {
- "M_ACLK": {
- "type": "clk",
- "direction": "I",
- "parameters": {
- "ASSOCIATED_BUSIF": {
- "value": "M_AXI"
- },
- "ASSOCIATED_RESET": {
- "value": "M_ARESETN"
- }
- }
- },
- "M_ARESETN": {
- "type": "rst",
- "direction": "I"
- },
- "S_ACLK": {
- "type": "clk",
- "direction": "I",
- "parameters": {
- "ASSOCIATED_BUSIF": {
- "value": "S_AXI"
- },
- "ASSOCIATED_RESET": {
- "value": "S_ARESETN"
- }
- }
- },
- "S_ARESETN": {
- "type": "rst",
- "direction": "I"
- }
- },
- "interface_nets": {
- "m00_couplers_to_m00_couplers": {
- "interface_ports": [
- "S_AXI",
- "M_AXI"
- ]
- }
- }
- },
- "m01_couplers": {
- "interface_ports": {
- "M_AXI": {
- "mode": "Master",
- "vlnv": "xilinx.com:interface:aximm_rtl:1.0"
- },
- "S_AXI": {
- "mode": "Slave",
- "vlnv": "xilinx.com:interface:aximm_rtl:1.0"
- }
- },
- "ports": {
- "M_ACLK": {
- "type": "clk",
- "direction": "I",
- "parameters": {
- "ASSOCIATED_BUSIF": {
- "value": "M_AXI"
- },
- "ASSOCIATED_RESET": {
- "value": "M_ARESETN"
- }
- }
- },
- "M_ARESETN": {
- "type": "rst",
- "direction": "I"
- },
- "S_ACLK": {
- "type": "clk",
- "direction": "I",
- "parameters": {
- "ASSOCIATED_BUSIF": {
- "value": "S_AXI"
- },
- "ASSOCIATED_RESET": {
- "value": "S_ARESETN"
- }
- }
- },
- "S_ARESETN": {
- "type": "rst",
- "direction": "I"
- }
- },
- "interface_nets": {
- "m01_couplers_to_m01_couplers": {
- "interface_ports": [
- "S_AXI",
- "M_AXI"
- ]
- }
- }
}
},
"interface_nets": {
- "m00_couplers_to_axi_interconnect_0": {
+ "s00_couplers_to_axi_interconnect_0": {
"interface_ports": [
"M00_AXI",
- "m00_couplers/M_AXI"
- ]
- },
- "s00_couplers_to_xbar": {
- "interface_ports": [
- "s00_couplers/M_AXI",
- "xbar/S00_AXI"
+ "s00_couplers/M_AXI"
]
},
"axi_interconnect_0_to_s00_couplers": {
@@ -1657,43 +1495,19 @@
"S00_AXI",
"s00_couplers/S_AXI"
]
- },
- "xbar_to_m01_couplers": {
- "interface_ports": [
- "xbar/M01_AXI",
- "m01_couplers/S_AXI"
- ]
- },
- "m01_couplers_to_axi_interconnect_0": {
- "interface_ports": [
- "M01_AXI",
- "m01_couplers/M_AXI"
- ]
- },
- "xbar_to_m00_couplers": {
- "interface_ports": [
- "xbar/M00_AXI",
- "m00_couplers/S_AXI"
- ]
}
},
"nets": {
"axi_interconnect_0_ACLK_net": {
"ports": [
- "ACLK",
- "xbar/aclk",
- "s00_couplers/M_ACLK",
- "m00_couplers/S_ACLK",
- "m01_couplers/S_ACLK"
+ "M00_ACLK",
+ "s00_couplers/M_ACLK"
]
},
"axi_interconnect_0_ARESETN_net": {
"ports": [
- "ARESETN",
- "xbar/aresetn",
- "s00_couplers/M_ARESETN",
- "m00_couplers/S_ARESETN",
- "m01_couplers/S_ARESETN"
+ "M00_ARESETN",
+ "s00_couplers/M_ARESETN"
]
},
"S00_ACLK_1": {
@@ -1707,30 +1521,6 @@
"S00_ARESETN",
"s00_couplers/S_ARESETN"
]
- },
- "M00_ACLK_1": {
- "ports": [
- "M00_ACLK",
- "m00_couplers/M_ACLK"
- ]
- },
- "M00_ARESETN_1": {
- "ports": [
- "M00_ARESETN",
- "m00_couplers/M_ARESETN"
- ]
- },
- "M01_ACLK_1": {
- "ports": [
- "M01_ACLK",
- "m01_couplers/M_ACLK"
- ]
- },
- "M01_ARESETN_1": {
- "ports": [
- "M01_ARESETN",
- "m01_couplers/M_ARESETN"
- ]
}
}
},
@@ -1755,67 +1545,31 @@
]
}
}
- },
- "axi_bram_ctrl_0": {
- "vlnv": "xilinx.com:ip:axi_bram_ctrl:4.1",
- "xci_name": "puzzlefw_axi_bram_ctrl_0_0",
- "xci_path": "ip/puzzlefw_axi_bram_ctrl_0_0/puzzlefw_axi_bram_ctrl_0_0.xci",
- "inst_hier_path": "axi_bram_ctrl_0",
- "parameters": {
- "PROTOCOL": {
- "value": "AXI4LITE"
- },
- "SINGLE_PORT_BRAM": {
- "value": "1"
- }
- },
- "hdl_attributes": {
- "BMM_INFO_ADDRESS_SPACE": {
- "value": "byte 0x40000000 32 > puzzlefw blk_mem_gen_0",
- "value_src": "default"
- },
- "KEEP_HIERARCHY": {
- "value": "yes",
- "value_src": "default"
- }
- }
- },
- "blk_mem_gen_0": {
- "vlnv": "xilinx.com:ip:blk_mem_gen:8.4",
- "xci_name": "puzzlefw_blk_mem_gen_0_0",
- "xci_path": "ip/puzzlefw_blk_mem_gen_0_0/puzzlefw_blk_mem_gen_0_0.xci",
- "inst_hier_path": "blk_mem_gen_0"
}
},
"interface_nets": {
+ "processing_system7_0_DDR": {
+ "interface_ports": [
+ "DDR_0",
+ "processing_system7_0/DDR"
+ ]
+ },
"S_AXI_HP0_0_1": {
"interface_ports": [
"S_AXI_HP0_0",
"processing_system7_0/S_AXI_HP0"
]
},
- "axi_bram_ctrl_0_BRAM_PORTA": {
- "interface_ports": [
- "axi_bram_ctrl_0/BRAM_PORTA",
- "blk_mem_gen_0/BRAM_PORTA"
- ]
- },
- "axi_interconnect_0_M01_AXI": {
- "interface_ports": [
- "axi_bram_ctrl_0/S_AXI",
- "axi_interconnect_0/M01_AXI"
- ]
- },
"axi_interconnect_0_M00_AXI": {
"interface_ports": [
"axi_interconnect_0/M00_AXI",
"axi_apb_bridge_0/AXI4_LITE"
]
},
- "processing_system7_0_DDR": {
+ "processing_system7_0_FIXED_IO": {
"interface_ports": [
- "DDR_0",
- "processing_system7_0/DDR"
+ "FIXED_IO_0",
+ "processing_system7_0/FIXED_IO"
]
},
"processing_system7_0_M_AXI_GP0": {
@@ -1829,12 +1583,6 @@
"APB_M_0",
"axi_apb_bridge_0/APB_M"
]
- },
- "processing_system7_0_FIXED_IO": {
- "interface_ports": [
- "FIXED_IO_0",
- "processing_system7_0/FIXED_IO"
- ]
}
},
"nets": {
@@ -1849,9 +1597,7 @@
"proc_sys_reset_0/peripheral_aresetn",
"axi_interconnect_0/S00_ARESETN",
"axi_interconnect_0/M00_ARESETN",
- "axi_apb_bridge_0/s_axi_aresetn",
- "axi_bram_ctrl_0/s_axi_aresetn",
- "axi_interconnect_0/M01_ARESETN"
+ "axi_apb_bridge_0/s_axi_aresetn"
]
},
"proc_sys_reset_0_interconnect_aresetn": {
@@ -1881,9 +1627,7 @@
"axi_interconnect_0/ACLK",
"axi_interconnect_0/S00_ACLK",
"axi_interconnect_0/M00_ACLK",
- "axi_apb_bridge_0/s_axi_aclk",
- "axi_bram_ctrl_0/s_axi_aclk",
- "axi_interconnect_0/M01_ACLK"
+ "axi_apb_bridge_0/s_axi_aclk"
]
},
"processing_system7_0_FCLK_CLK0": {
@@ -1929,11 +1673,6 @@
"address_block": "/APB_M_0/Reg",
"offset": "0x43000000",
"range": "2M"
- },
- "SEG_axi_bram_ctrl_0_Mem0": {
- "address_block": "/axi_bram_ctrl_0/S_AXI/Mem0",
- "offset": "0x40000000",
- "range": "8K"
}
}
}
diff --git a/fpga/vivado/redpitaya_puzzlefw.xpr b/fpga/vivado/redpitaya_puzzlefw.xpr
index 4fe72d7..6719bff 100644
--- a/fpga/vivado/redpitaya_puzzlefw.xpr
+++ b/fpga/vivado/redpitaya_puzzlefw.xpr
@@ -32,7 +32,7 @@
-
+
@@ -45,6 +45,7 @@
+
@@ -82,26 +83,14 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -116,18 +105,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -193,30 +254,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -255,9 +292,7 @@
-
- Vivado Synthesis Defaults
-
+
@@ -267,9 +302,7 @@
-
- Vivado Synthesis Defaults
-
+
@@ -279,9 +312,7 @@
-
- Vivado Synthesis Defaults
-
+
@@ -289,55 +320,7 @@
-
-
-
- Vivado Synthesis Defaults
-
-
-
-
-
-
-
-
-
-
-
- Vivado Synthesis Defaults
-
-
-
-
-
-
-
-
-
-
-
- Vivado Synthesis Defaults
-
-
-
-
-
-
-
-
-
-
-
- Vivado Synthesis Defaults
-
-
-
-
-
-
-
-
-
+
@@ -350,16 +333,13 @@
-
-
- Default settings for Implementation.
-
+
@@ -376,9 +356,7 @@
-
- Default settings for Implementation.
-
+
@@ -395,85 +373,7 @@
-
- Default settings for Implementation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Default settings for Implementation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Default settings for Implementation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Default settings for Implementation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Default settings for Implementation.
-
+
@@ -489,7 +389,12 @@
-
+
+
+
+
+
+