[WIP] developing xilinx-spi-based duifei
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "vivado_pub"]
|
||||||
|
path = vivado_pub
|
||||||
|
url = https://github.com/joshgao22/vivado.git
|
||||||
Submodule
+1
Submodule vivado_pub added at 118ade226e
@@ -0,0 +1,3 @@
|
|||||||
|
*.xsa filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.csv filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bit filter=lfs diff=lfs merge=lfs -text
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
################################################################################
|
||||||
|
########################## Basic Directory Structure ###########################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# everything
|
||||||
|
*
|
||||||
|
|
||||||
|
# exclude the directory structure
|
||||||
|
!/adi_library/
|
||||||
|
!/adi_library/**/*
|
||||||
|
!/common/
|
||||||
|
!/common/**/*
|
||||||
|
!/custom_ips/
|
||||||
|
!/custom_ips/**/*
|
||||||
|
!/modules/
|
||||||
|
!/modules/**/
|
||||||
|
!/projects/
|
||||||
|
!/projects/**/
|
||||||
|
!/.gitattributes
|
||||||
|
!/.gitignore
|
||||||
|
!/README.md
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
############################### Vivado Specific ################################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# exclude
|
||||||
|
.metadata
|
||||||
|
*.cache/
|
||||||
|
*.gen/
|
||||||
|
*.hw/
|
||||||
|
*.ip_user_files/
|
||||||
|
*.runs/**/*
|
||||||
|
*.sim/
|
||||||
|
|
||||||
|
# include xpr
|
||||||
|
!*.xpr
|
||||||
|
|
||||||
|
# include hardware (Xilinx support archive) file
|
||||||
|
!/projects/*/*/*.xsa
|
||||||
|
!/projects/*/*/*.md
|
||||||
|
|
||||||
|
# include board preset tcl (be careful about the path)
|
||||||
|
!/projects/*/*.tcl
|
||||||
|
|
||||||
|
# include design source
|
||||||
|
!**/*.srcs/**/*
|
||||||
|
|
||||||
|
# include design run results
|
||||||
|
!**/*.runs/impl_*/*.bit
|
||||||
|
!**/*.runs/impl_*/*.ltx
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
################################ Vitis Specific ################################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# include sdk directory and everything in it
|
||||||
|
!/projects/*/*/vitis/
|
||||||
|
!/projects/*/*/vitis/**
|
||||||
|
/projects/*/*/vitis/**.log
|
||||||
|
/projects/*/*/vitis/.analytics
|
||||||
|
|
||||||
|
# exclude some obscure hidden SDK folders
|
||||||
|
/projects/*/*/vitis/.metadata/
|
||||||
|
/projects/*/*/vitis/.sdk/
|
||||||
|
/projects/*/*/vitis/RemoteSystemsTempFiles/
|
||||||
|
/projects/*/*/vitis/webtalk/
|
||||||
|
|
||||||
|
# hw_platform: exclude the entire hw_platform folder, as everything can be
|
||||||
|
# generated from the .hdf file. Make sure to include the bitstream in the .hdf
|
||||||
|
# file when exporting from Vivado!
|
||||||
|
/projects/*/*/vitis/*_hw_platform_*/
|
||||||
|
|
||||||
|
# BSP: only keep `.cproject`, `.project`, `.sdkproject`, `.system.mss` and
|
||||||
|
# Makefile, ps lib files are regenerated automatically
|
||||||
|
/projects/*/*/vitis/*_bsp/*
|
||||||
|
!/projects/*/*/vitis/*_bsp/*.cproject
|
||||||
|
!/projects/*/*/vitis/*_bsp/*.project
|
||||||
|
!/projects/*/*/vitis/*_bsp/*.sdkproject
|
||||||
|
!/projects/*/*/vitis/*_bsp/system.mss
|
||||||
|
!/projects/*/*/vitis/*_bsp/Makefile
|
||||||
|
|
||||||
|
# Application: ignored file patterns, exclude Debug & Release folders
|
||||||
|
/projects/*/*/vitis/**/*.o
|
||||||
|
/projects/*/*/vitis/**/*.d
|
||||||
|
/projects/*/*/vitis/**/*.a
|
||||||
|
/projects/*/*/vitis/*/Debug/
|
||||||
|
/projects/*/*/vitis/*/Release/
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
############################ Vivado & Vitis Common #############################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# folders (and all of their contents) that should always be ignored, anywhere
|
||||||
|
# in the repo
|
||||||
|
.Xil/
|
||||||
|
|
||||||
|
# file patterns that should always be ignored (journal files, log files, dump
|
||||||
|
# files that are created upon Vivado/SDK errors)
|
||||||
|
*.jou
|
||||||
|
*.log
|
||||||
|
*.backup.jou
|
||||||
|
*.backup.log
|
||||||
|
*.upgrade_log
|
||||||
|
*.dmp
|
||||||
|
*.debug
|
||||||
|
vivado_pid*
|
||||||
|
*~
|
||||||
|
|
||||||
|
# vivado workspace files
|
||||||
|
xsim.dir/
|
||||||
|
xvlog.pb
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Vivado Git Repository
|
||||||
|
|
||||||
|
This repository includes all the design sources and third-party reference used in my private Vivado project.
|
||||||
+920
@@ -0,0 +1,920 @@
|
|||||||
|
{
|
||||||
|
"ltx_root": {
|
||||||
|
"version": 4,
|
||||||
|
"minor": 0,
|
||||||
|
"ltx_data": [
|
||||||
|
{
|
||||||
|
"name": "EDA_PROBESET",
|
||||||
|
"active": true,
|
||||||
|
"debug_cores": [
|
||||||
|
{
|
||||||
|
"type": "XSDB_V3",
|
||||||
|
"name": "dbg_hub",
|
||||||
|
"spec": "labtools_xsdbm_v3",
|
||||||
|
"clk_input_freq_hz": "47998465"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ILA_V3",
|
||||||
|
"name": "u_ila_rx",
|
||||||
|
"spec": "labtools_ila_v6",
|
||||||
|
"ipName": "ila",
|
||||||
|
"core_location": {
|
||||||
|
"user_chain": 1,
|
||||||
|
"slave_index": 0,
|
||||||
|
"bscan_switch_index": 0
|
||||||
|
},
|
||||||
|
"uuid": "9D7D6446E168544DABE22D286569B128",
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"name": "probe0",
|
||||||
|
"id": 0,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 0,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe1",
|
||||||
|
"id": 1,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 1,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe2",
|
||||||
|
"id": 2,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 2,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe3",
|
||||||
|
"id": 3,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 3,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe4",
|
||||||
|
"id": 4,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 4,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe5",
|
||||||
|
"id": 5,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 5,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe6",
|
||||||
|
"id": 6,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 6,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe7",
|
||||||
|
"id": 7,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 7,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ILA_V3",
|
||||||
|
"name": "u_ila_tx",
|
||||||
|
"spec": "labtools_ila_v6",
|
||||||
|
"ipName": "ila",
|
||||||
|
"core_location": {
|
||||||
|
"user_chain": 1,
|
||||||
|
"slave_index": 1,
|
||||||
|
"bscan_switch_index": 0
|
||||||
|
},
|
||||||
|
"uuid": "41C4DDF5215658A8812484234FB1A2B2",
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"name": "probe0",
|
||||||
|
"id": 8,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 0,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "tx_data_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe1",
|
||||||
|
"id": 9,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 1,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "tx_data_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ILA_V3",
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/ila_spi",
|
||||||
|
"spec": "labtools_ila_v6",
|
||||||
|
"ipName": "ila",
|
||||||
|
"core_location": {
|
||||||
|
"user_chain": 1,
|
||||||
|
"slave_index": 2,
|
||||||
|
"bscan_switch_index": 0
|
||||||
|
},
|
||||||
|
"uuid": "CB9485C3DF3B5651BD89B030E5DB6A08",
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"name": "probe0",
|
||||||
|
"id": 10,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 0,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_SCLK_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe1",
|
||||||
|
"id": 11,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 1,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_MOSI_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe2",
|
||||||
|
"id": 12,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 2,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/SPI0_MISO_I_0_1",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe3",
|
||||||
|
"id": 13,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 3,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_SS_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe4",
|
||||||
|
"id": 14,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 4,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_SS1_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe5",
|
||||||
|
"id": 15,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 5,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_SS2_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "VIO_V2",
|
||||||
|
"name": "u_vio_manual_ctrl",
|
||||||
|
"spec": "labtools_vio_v3",
|
||||||
|
"ipName": "vio",
|
||||||
|
"core_location": {
|
||||||
|
"user_chain": 1,
|
||||||
|
"slave_index": 3,
|
||||||
|
"bscan_switch_index": 0
|
||||||
|
},
|
||||||
|
"uuid": "6DFBBD640CB857419C054C66C7EA7B27",
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"name": "probe_out0",
|
||||||
|
"id": 16,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 1,
|
||||||
|
"portIndex": 0,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "waveform_sel",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "waveform_sel[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "waveform_sel[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe_out1",
|
||||||
|
"id": 17,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 1,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "sweep_on",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe_out2",
|
||||||
|
"id": 18,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 31,
|
||||||
|
"portIndex": 2,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "freq_set",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "freq_set[31]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[30]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[29]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[28]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[27]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[26]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[25]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[24]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[23]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[22]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[21]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[20]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[19]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[18]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[17]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[16]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[15]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[14]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[13]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[12]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe_out3",
|
||||||
|
"id": 19,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 1,
|
||||||
|
"portIndex": 3,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "iq_sel",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "iq_sel[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "iq_sel[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe_out4",
|
||||||
|
"id": 20,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 3,
|
||||||
|
"portIndex": 4,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "bb_rshift",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "bb_rshift[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bb_rshift[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bb_rshift[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bb_rshift[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
Binary file not shown.
+920
@@ -0,0 +1,920 @@
|
|||||||
|
{
|
||||||
|
"ltx_root": {
|
||||||
|
"version": 4,
|
||||||
|
"minor": 0,
|
||||||
|
"ltx_data": [
|
||||||
|
{
|
||||||
|
"name": "EDA_PROBESET",
|
||||||
|
"active": true,
|
||||||
|
"debug_cores": [
|
||||||
|
{
|
||||||
|
"type": "XSDB_V3",
|
||||||
|
"name": "dbg_hub",
|
||||||
|
"spec": "labtools_xsdbm_v3",
|
||||||
|
"clk_input_freq_hz": "47998465"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ILA_V3",
|
||||||
|
"name": "u_ila_rx",
|
||||||
|
"spec": "labtools_ila_v6",
|
||||||
|
"ipName": "ila",
|
||||||
|
"core_location": {
|
||||||
|
"user_chain": 1,
|
||||||
|
"slave_index": 0,
|
||||||
|
"bscan_switch_index": 0
|
||||||
|
},
|
||||||
|
"uuid": "9D7D6446E168544DABE22D286569B128",
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"name": "probe0",
|
||||||
|
"id": 0,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 0,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe1",
|
||||||
|
"id": 1,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 1,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch1_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe2",
|
||||||
|
"id": 2,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 2,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe3",
|
||||||
|
"id": 3,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 3,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch2_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe4",
|
||||||
|
"id": 4,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 4,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe5",
|
||||||
|
"id": 5,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 5,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch3_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe6",
|
||||||
|
"id": 6,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 6,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe7",
|
||||||
|
"id": 7,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 7,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rx_ch4_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ILA_V3",
|
||||||
|
"name": "u_ila_tx",
|
||||||
|
"spec": "labtools_ila_v6",
|
||||||
|
"ipName": "ila",
|
||||||
|
"core_location": {
|
||||||
|
"user_chain": 1,
|
||||||
|
"slave_index": 1,
|
||||||
|
"bscan_switch_index": 0
|
||||||
|
},
|
||||||
|
"uuid": "41C4DDF5215658A8812484234FB1A2B2",
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"name": "probe0",
|
||||||
|
"id": 8,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 0,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "tx_data_i",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_i[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe1",
|
||||||
|
"id": 9,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 11,
|
||||||
|
"portIndex": 1,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "tx_data_q",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tx_data_q[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ILA_V3",
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/ila_spi",
|
||||||
|
"spec": "labtools_ila_v6",
|
||||||
|
"ipName": "ila",
|
||||||
|
"core_location": {
|
||||||
|
"user_chain": 1,
|
||||||
|
"slave_index": 2,
|
||||||
|
"bscan_switch_index": 0
|
||||||
|
},
|
||||||
|
"uuid": "CB9485C3DF3B5651BD89B030E5DB6A08",
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"name": "probe0",
|
||||||
|
"id": 10,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 0,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_SCLK_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe1",
|
||||||
|
"id": 11,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 1,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_MOSI_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe2",
|
||||||
|
"id": 12,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 2,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/SPI0_MISO_I_0_1",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe3",
|
||||||
|
"id": 13,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 3,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_SS_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe4",
|
||||||
|
"id": 14,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 4,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_SS1_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe5",
|
||||||
|
"id": 15,
|
||||||
|
"type": "DATA_TRIGGER",
|
||||||
|
"direction": "IN",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 5,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "u_system_bd_wrapper/system_bd_i/processing_system7_0_SPI0_SS2_O",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "VIO_V2",
|
||||||
|
"name": "u_vio_manual_ctrl",
|
||||||
|
"spec": "labtools_vio_v3",
|
||||||
|
"ipName": "vio",
|
||||||
|
"core_location": {
|
||||||
|
"user_chain": 1,
|
||||||
|
"slave_index": 3,
|
||||||
|
"bscan_switch_index": 0
|
||||||
|
},
|
||||||
|
"uuid": "6DFBBD640CB857419C054C66C7EA7B27",
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"name": "probe_out0",
|
||||||
|
"id": 16,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 1,
|
||||||
|
"portIndex": 0,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "waveform_sel",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "waveform_sel[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "waveform_sel[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe_out1",
|
||||||
|
"id": 17,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": false,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 0,
|
||||||
|
"portIndex": 1,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "sweep_on",
|
||||||
|
"isBus": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe_out2",
|
||||||
|
"id": 18,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 31,
|
||||||
|
"portIndex": 2,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "freq_set",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "freq_set[31]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[30]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[29]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[28]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[27]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[26]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[25]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[24]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[23]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[22]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[21]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[20]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[19]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[18]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[17]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[16]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[15]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[14]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[13]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[12]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[11]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[10]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[8]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[7]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[6]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[5]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[4]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freq_set[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe_out3",
|
||||||
|
"id": 19,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 1,
|
||||||
|
"portIndex": 3,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "iq_sel",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "iq_sel[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "iq_sel[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "probe_out4",
|
||||||
|
"id": 20,
|
||||||
|
"type": "DATA",
|
||||||
|
"direction": "OUT",
|
||||||
|
"isVector": true,
|
||||||
|
"leftIndex": 0,
|
||||||
|
"rightIndex": 3,
|
||||||
|
"portIndex": 4,
|
||||||
|
"nets": [
|
||||||
|
{
|
||||||
|
"name": "bb_rshift",
|
||||||
|
"isBus": true,
|
||||||
|
"subnets": [
|
||||||
|
{
|
||||||
|
"name": "bb_rshift[3]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bb_rshift[2]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bb_rshift[1]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bb_rshift[0]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+192
@@ -0,0 +1,192 @@
|
|||||||
|
# df_z7100_2ad9361
|
||||||
|
|
||||||
|
## Timing Assertions Section
|
||||||
|
|
||||||
|
## Physical Constraints Section
|
||||||
|
|
||||||
|
# Clocks
|
||||||
|
set_property -dict {PACKAGE_PIN F15 IOSTANDARD LVDS } [get_ports clk_250m_p ] ;# FPGA_DAC_LOGIC_CLK_C_P
|
||||||
|
set_property -dict {PACKAGE_PIN E16 IOSTANDARD LVCMOS18} [get_ports ad9361_1_buffer_clk ] ;# AD9361_CLK_OUT
|
||||||
|
set_property -dict {PACKAGE_PIN F4 IOSTANDARD LVCMOS18} [get_ports ad9361_2_buffer_clk ] ;# B_AD9361_CLK_OUT
|
||||||
|
|
||||||
|
# HMC7044-1 Interface
|
||||||
|
set_property -dict {PACKAGE_PIN AD13 IOSTANDARD LVCMOS33} [get_ports hmc7044_spi_clk ] ;# HMC7044_1_SCLK
|
||||||
|
set_property -dict {PACKAGE_PIN AD14 IOSTANDARD LVCMOS33} [get_ports hmc7044_spi_csn ] ;# HMC7044_1_SLEN
|
||||||
|
set_property -dict {PACKAGE_PIN AG12 IOSTANDARD LVCMOS33} [get_ports hmc7044_spi_sdio ] ;# HMC7044_1_DATA
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN AE13 IOSTANDARD LVCMOS33} [get_ports hmc7044_reset ] ;# HMC7044_1_RESET
|
||||||
|
set_property -dict {PACKAGE_PIN AF13 IOSTANDARD LVCMOS33} [get_ports hmc7044_sync ] ;# HMC7044_1_SYNC
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN AH16 IOSTANDARD LVCMOS33} [get_ports hmc7044_gpio[0] ] ;# HMC7044_1_GPIO1
|
||||||
|
set_property -dict {PACKAGE_PIN AE12 IOSTANDARD LVCMOS33} [get_ports hmc7044_gpio[1] ] ;# HMC7044_1_GPIO2
|
||||||
|
set_property -dict {PACKAGE_PIN AF12 IOSTANDARD LVCMOS33} [get_ports hmc7044_gpio[2] ] ;# HMC7044_1_GPIO3
|
||||||
|
set_property -dict {PACKAGE_PIN AH14 IOSTANDARD LVCMOS33} [get_ports hmc7044_gpio[3] ] ;# HMC7044_1_GPIO4
|
||||||
|
|
||||||
|
# AD9361-1 Interface
|
||||||
|
set_property -dict {PACKAGE_PIN F5 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data_clk ] ;# AD9361_DATA_CLK_P
|
||||||
|
set_property -dict {PACKAGE_PIN J1 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_frame ] ;# AD9361_RX_FRAME_P
|
||||||
|
set_property -dict {PACKAGE_PIN B1 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[0] ] ;# AD9361_TX_00_D0_N
|
||||||
|
set_property -dict {PACKAGE_PIN B2 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[1] ] ;# AD9361_TX_01_D0_P
|
||||||
|
set_property -dict {PACKAGE_PIN C3 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[2] ] ;# AD9361_TX_02_D1_N
|
||||||
|
set_property -dict {PACKAGE_PIN C4 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[3] ] ;# AD9361_TX_03_D1_P
|
||||||
|
set_property -dict {PACKAGE_PIN B11 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[4] ] ;# AD9361_TX_04_D2_N
|
||||||
|
set_property -dict {PACKAGE_PIN C11 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[5] ] ;# AD9361_TX_05_D2_P
|
||||||
|
set_property -dict {PACKAGE_PIN B4 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[6] ] ;# AD9361_TX_06_D3_N
|
||||||
|
set_property -dict {PACKAGE_PIN B5 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[7] ] ;# AD9361_TX_07_D3_P
|
||||||
|
set_property -dict {PACKAGE_PIN A9 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[8] ] ;# AD9361_TX_08_D4_N
|
||||||
|
set_property -dict {PACKAGE_PIN B9 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[9] ] ;# AD9361_TX_09_D4_P
|
||||||
|
set_property -dict {PACKAGE_PIN B6 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[10] ] ;# AD9361_TX_10_D5_N
|
||||||
|
set_property -dict {PACKAGE_PIN C6 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[11] ] ;# AD9361_TX_11_D5_P
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN E13 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_fb_clk ] ;# AD9361_FB_CLK_P
|
||||||
|
set_property -dict {PACKAGE_PIN C12 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_frame ] ;# AD9361_TX_FRAME_P
|
||||||
|
set_property -dict {PACKAGE_PIN A2 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[0] ] ;# AD9361_RX_00_D0_N
|
||||||
|
set_property -dict {PACKAGE_PIN A3 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[1] ] ;# AD9361_RX_01_D0_P
|
||||||
|
set_property -dict {PACKAGE_PIN A4 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[2] ] ;# AD9361_RX_02_D1_N
|
||||||
|
set_property -dict {PACKAGE_PIN A5 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[3] ] ;# AD9361_RX_03_D1_P
|
||||||
|
set_property -dict {PACKAGE_PIN B7 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[4] ] ;# AD9361_RX_04_D2_N
|
||||||
|
set_property -dict {PACKAGE_PIN C7 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[5] ] ;# AD9361_RX_05_D2_P
|
||||||
|
set_property -dict {PACKAGE_PIN A10 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[6] ] ;# AD9361_RX_06_D3_N
|
||||||
|
set_property -dict {PACKAGE_PIN B10 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[7] ] ;# AD9361_RX_07_D3_P
|
||||||
|
set_property -dict {PACKAGE_PIN A7 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[8] ] ;# AD9361_RX_08_D4_N
|
||||||
|
set_property -dict {PACKAGE_PIN A8 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[9] ] ;# AD9361_RX_09_D4_P
|
||||||
|
set_property -dict {PACKAGE_PIN C8 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[10] ] ;# AD9361_RX_10_D5_N
|
||||||
|
set_property -dict {PACKAGE_PIN C9 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[11] ] ;# AD9361_RX_11_D5_P
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN G17 IOSTANDARD LVCMOS18} [get_ports ad9361_1_spi_clk ] ;# AD9361_SPI_CLK
|
||||||
|
set_property -dict {PACKAGE_PIN A15 IOSTANDARD LVCMOS18} [get_ports ad9361_1_spi_csn ] ;# AD9361_SPI_ENB
|
||||||
|
set_property -dict {PACKAGE_PIN H13 IOSTANDARD LVCMOS18} [get_ports ad9361_1_spi_mosi ] ;# AD9361_SPI_DI
|
||||||
|
set_property -dict {PACKAGE_PIN D14 IOSTANDARD LVCMOS18} [get_ports ad9361_1_spi_miso ] ;# AD9361_SPI_DO
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN J14 IOSTANDARD LVCMOS18} [get_ports ad9361_1_reset_b ] ;# AD9361_RESETB
|
||||||
|
set_property -dict {PACKAGE_PIN A17 IOSTANDARD LVCMOS18} [get_ports ad9361_1_en_agc ] ;# AD9361_EN_AGC
|
||||||
|
set_property -dict {PACKAGE_PIN C13 IOSTANDARD LVCMOS18} [get_ports ad9361_1_enable ] ;# AD9361_ENABLE
|
||||||
|
set_property -dict {PACKAGE_PIN A12 IOSTANDARD LVCMOS18} [get_ports ad9361_1_txnrx ] ;# AD9361_TXNRX
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN C14 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_in[0] ] ;# AD9361_CTRL_IN0
|
||||||
|
set_property -dict {PACKAGE_PIN H14 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_in[1] ] ;# AD9361_CTRL_IN1
|
||||||
|
set_property -dict {PACKAGE_PIN J13 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_in[2] ] ;# AD9361_CTRL_IN2
|
||||||
|
set_property -dict {PACKAGE_PIN B14 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_in[3] ] ;# AD9361_CTRL_IN3
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN D16 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[0] ] ;# AD9361_CTRL_OUT0
|
||||||
|
set_property -dict {PACKAGE_PIN C17 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[1] ] ;# AD9361_CTRL_OUT1
|
||||||
|
set_property -dict {PACKAGE_PIN A14 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[2] ] ;# AD9361_CTRL_OUT2
|
||||||
|
set_property -dict {PACKAGE_PIN G15 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[3] ] ;# AD9361_CTRL_OUT3
|
||||||
|
set_property -dict {PACKAGE_PIN G14 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[4] ] ;# AD9361_CTRL_OUT4
|
||||||
|
set_property -dict {PACKAGE_PIN B16 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[5] ] ;# AD9361_CTRL_OUT5
|
||||||
|
set_property -dict {PACKAGE_PIN B15 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[6] ] ;# AD9361_CTRL_OUT6
|
||||||
|
set_property -dict {PACKAGE_PIN M12 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[7] ] ;# AD9361_CTRL_OUT7
|
||||||
|
|
||||||
|
# AD9361-2 Interface
|
||||||
|
set_property -dict {PACKAGE_PIN G5 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data_clk ] ;# B_AD9361_DATA_CLK_P
|
||||||
|
set_property -dict {PACKAGE_PIN E1 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_frame ] ;# B_AD9361_RX_FRAME_P
|
||||||
|
set_property -dict {PACKAGE_PIN D5 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[0] ] ;# B_AD9361_TX_00_D0_N
|
||||||
|
set_property -dict {PACKAGE_PIN E6 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[1] ] ;# B_AD9361_TX_01_D0_P
|
||||||
|
set_property -dict {PACKAGE_PIN H3 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[2] ] ;# B_AD9361_TX_02_D1_N
|
||||||
|
set_property -dict {PACKAGE_PIN H4 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[3] ] ;# B_AD9361_TX_03_D1_P
|
||||||
|
set_property -dict {PACKAGE_PIN J6 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[4] ] ;# B_AD9361_TX_04_D2_N
|
||||||
|
set_property -dict {PACKAGE_PIN K6 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[5] ] ;# B_AD9361_TX_05_D2_P
|
||||||
|
set_property -dict {PACKAGE_PIN J5 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[6] ] ;# B_AD9361_TX_06_D3_N
|
||||||
|
set_property -dict {PACKAGE_PIN K5 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[7] ] ;# B_AD9361_TX_07_D3_P
|
||||||
|
set_property -dict {PACKAGE_PIN L2 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[8] ] ;# B_AD9361_TX_08_D4_N
|
||||||
|
set_property -dict {PACKAGE_PIN L3 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[9] ] ;# B_AD9361_TX_09_D4_P
|
||||||
|
set_property -dict {PACKAGE_PIN K2 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[10] ] ;# B_AD9361_TX_10_D5_N
|
||||||
|
set_property -dict {PACKAGE_PIN K3 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[11] ] ;# B_AD9361_TX_11_D5_P
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN G10 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_fb_clk ] ;# B_AD9361_FB_CLK_P
|
||||||
|
set_property -dict {PACKAGE_PIN H6 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_frame ] ;# B_AD9361_TX_FRAME_P
|
||||||
|
set_property -dict {PACKAGE_PIN E2 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[0] ] ;# B_AD9361_RX_00_D0_N
|
||||||
|
set_property -dict {PACKAGE_PIN E3 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[1] ] ;# B_AD9361_RX_01_D0_P
|
||||||
|
set_property -dict {PACKAGE_PIN F2 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[2] ] ;# B_AD9361_RX_02_D1_N
|
||||||
|
set_property -dict {PACKAGE_PIN G2 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[3] ] ;# B_AD9361_RX_03_D1_P
|
||||||
|
set_property -dict {PACKAGE_PIN J3 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[4] ] ;# B_AD9361_RX_04_D2_N
|
||||||
|
set_property -dict {PACKAGE_PIN J4 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[5] ] ;# B_AD9361_RX_05_D2_P
|
||||||
|
set_property -dict {PACKAGE_PIN H16 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[6] ] ;# B_AD9361_RX_06_D3_N
|
||||||
|
set_property -dict {PACKAGE_PIN J16 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[7] ] ;# B_AD9361_RX_07_D3_P
|
||||||
|
set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[8] ] ;# B_AD9361_RX_08_D4_N
|
||||||
|
set_property -dict {PACKAGE_PIN K15 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[9] ] ;# B_AD9361_RX_09_D4_P
|
||||||
|
set_property -dict {PACKAGE_PIN K13 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[10] ] ;# B_AD9361_RX_10_D5_N
|
||||||
|
set_property -dict {PACKAGE_PIN L13 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[11] ] ;# B_AD9361_RX_11_D5_P
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN L9 IOSTANDARD LVCMOS18} [get_ports ad9361_2_spi_clk ] ;# B_AD9361_SPI_CLK
|
||||||
|
set_property -dict {PACKAGE_PIN M10 IOSTANDARD LVCMOS18} [get_ports ad9361_2_spi_csn ] ;# B_AD9361_SPI_ENB
|
||||||
|
set_property -dict {PACKAGE_PIN L12 IOSTANDARD LVCMOS18} [get_ports ad9361_2_spi_mosi ] ;# B_AD9361_SPI_DI
|
||||||
|
set_property -dict {PACKAGE_PIN K12 IOSTANDARD LVCMOS18} [get_ports ad9361_2_spi_miso ] ;# B_AD9361_SPI_DO
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN J10 IOSTANDARD LVCMOS18} [get_ports ad9361_2_reset_b ] ;# B_AD9361_RESETB
|
||||||
|
set_property -dict {PACKAGE_PIN D4 IOSTANDARD LVCMOS18} [get_ports ad9361_2_en_agc ] ;# B_AD9361_EN_AGC
|
||||||
|
set_property -dict {PACKAGE_PIN D3 IOSTANDARD LVCMOS18} [get_ports ad9361_2_enable ] ;# B_AD9361_ENABLE
|
||||||
|
set_property -dict {PACKAGE_PIN J9 IOSTANDARD LVCMOS18} [get_ports ad9361_2_txnrx ] ;# B_AD9361_TXNRX
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN L10 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_in[0] ] ;# B_AD9361_CTRL_IN0
|
||||||
|
set_property -dict {PACKAGE_PIN D6 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_in[1] ] ;# B_AD9361_CTRL_IN1
|
||||||
|
set_property -dict {PACKAGE_PIN E7 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_in[2] ] ;# B_AD9361_CTRL_IN2
|
||||||
|
set_property -dict {PACKAGE_PIN K8 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_in[3] ] ;# B_AD9361_CTRL_IN3
|
||||||
|
|
||||||
|
set_property -dict {PACKAGE_PIN H11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[0] ] ;# B_AD9361_CTRL_OUT0
|
||||||
|
set_property -dict {PACKAGE_PIN J11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[1] ] ;# B_AD9361_CTRL_OUT1
|
||||||
|
set_property -dict {PACKAGE_PIN K7 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[2] ] ;# B_AD9361_CTRL_OUT2
|
||||||
|
set_property -dict {PACKAGE_PIN L7 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[3] ] ;# B_AD9361_CTRL_OUT3
|
||||||
|
set_property -dict {PACKAGE_PIN G7 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[4] ] ;# B_AD9361_CTRL_OUT4
|
||||||
|
set_property -dict {PACKAGE_PIN H7 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[5] ] ;# B_AD9361_CTRL_OUT5
|
||||||
|
set_property -dict {PACKAGE_PIN K10 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[6] ] ;# B_AD9361_CTRL_OUT6
|
||||||
|
set_property -dict {PACKAGE_PIN K11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[7] ] ;# B_AD9361_CTRL_OUT7
|
||||||
|
|
||||||
|
# Phased-Array Control
|
||||||
|
set_property -dict {PACKAGE_PIN AC28 IOSTANDARD LVTTL } [get_ports ant_clk ] ;# ANT_CLK
|
||||||
|
set_property -dict {PACKAGE_PIN AD25 IOSTANDARD LVTTL } [get_ports ant_en ] ;# ANT_EN
|
||||||
|
set_property -dict {PACKAGE_PIN AD29 IOSTANDARD LVTTL } [get_ports ant_data ] ;# ANT_DATA
|
||||||
|
set_property -dict {PACKAGE_PIN AE26 IOSTANDARD LVTTL } [get_ports ant_tr ] ;# ANT_TR
|
||||||
|
set_property -dict {PACKAGE_PIN AB27 IOSTANDARD LVTTL } [get_ports ant_dary ] ;# ANT_DARY
|
||||||
|
set_property -dict {PACKAGE_PIN AC27 IOSTANDARD LVTTL } [get_ports ant_dout ] ;# ANT_DOUT
|
||||||
|
|
||||||
|
# RF Synthesizer Control
|
||||||
|
set_property -dict {PACKAGE_PIN P21 IOSTANDARD LVCMOS33} [get_ports rf_standby ] ;# ANT_standby_R
|
||||||
|
set_property -dict {PACKAGE_PIN R22 IOSTANDARD LVCMOS33} [get_ports rf_sw_pll ] ;# ANT_SW_PLL_R
|
||||||
|
set_property -dict {PACKAGE_PIN T23 IOSTANDARD LVCMOS33} [get_ports rf_t ] ;# ANT_T_R
|
||||||
|
set_property -dict {PACKAGE_PIN U25 IOSTANDARD LVCMOS33} [get_ports rf_r ] ;# ANT_R_R
|
||||||
|
set_property -dict {PACKAGE_PIN T25 IOSTANDARD LVCMOS33} [get_ports rf_sw_bpf ] ;# ANT_SW_BPF_R
|
||||||
|
set_property -dict {PACKAGE_PIN R25 IOSTANDARD LVCMOS33} [get_ports rf_sclk1 ] ;# ANT_SCLK1_R
|
||||||
|
set_property -dict {PACKAGE_PIN T27 IOSTANDARD LVCMOS33} [get_ports rf_sdio1 ] ;# ANT_SDIO1_R
|
||||||
|
set_property -dict {PACKAGE_PIN R28 IOSTANDARD LVCMOS33} [get_ports rf_cs1 ] ;# ANT_CS1_R
|
||||||
|
set_property -dict {PACKAGE_PIN T28 IOSTANDARD LVCMOS33} [get_ports rf_ld1 ] ;# ANT_LD1_R
|
||||||
|
set_property -dict {PACKAGE_PIN U26 IOSTANDARD LVCMOS33} [get_ports rf_sclk2 ] ;# ANT_SCLK2_R
|
||||||
|
set_property -dict {PACKAGE_PIN V29 IOSTANDARD LVCMOS33} [get_ports rf_sdio2 ] ;# ANT_SDIO2_R
|
||||||
|
set_property -dict {PACKAGE_PIN W29 IOSTANDARD LVCMOS33} [get_ports rf_cs2 ] ;# ANT_CS2_R
|
||||||
|
set_property -dict {PACKAGE_PIN W30 IOSTANDARD LVCMOS33} [get_ports rf_ld2 ] ;# ANT_LD2_R
|
||||||
|
set_property -dict {PACKAGE_PIN AE28 IOSTANDARD LVCMOS33} [get_ports rf_sclk3 ] ;# ANT_SCLK3_R
|
||||||
|
set_property -dict {PACKAGE_PIN N29 IOSTANDARD LVCMOS33} [get_ports rf_sdio3 ] ;# ANT_SDIO3_R
|
||||||
|
set_property -dict {PACKAGE_PIN AH28 IOSTANDARD LVCMOS33} [get_ports rf_cs3 ] ;# ANT_CS3_R
|
||||||
|
set_property -dict {PACKAGE_PIN AJ30 IOSTANDARD LVCMOS33} [get_ports rf_ld3 ] ;# ANT_LD3_R
|
||||||
|
set_property -dict {PACKAGE_PIN AJ28 IOSTANDARD LVCMOS33} [get_ports rf_tmgc_16 ] ;# ANT_TMGC_16_R
|
||||||
|
set_property -dict {PACKAGE_PIN AH29 IOSTANDARD LVCMOS33} [get_ports rf_tmgc_8 ] ;# ANT_TMGC_8_R
|
||||||
|
set_property -dict {PACKAGE_PIN AF27 IOSTANDARD LVCMOS33} [get_ports rf_tmgc_4 ] ;# ANT_TMGC_4_R
|
||||||
|
set_property -dict {PACKAGE_PIN AG29 IOSTANDARD LVCMOS33} [get_ports rf_tmgc_2 ] ;# ANT_TMGC_2_R
|
||||||
|
set_property -dict {PACKAGE_PIN AE27 IOSTANDARD LVCMOS33} [get_ports rf_tmgc_1 ] ;# ANT_TMGC_1_R
|
||||||
|
set_property -dict {PACKAGE_PIN AG30 IOSTANDARD LVCMOS33} [get_ports rf_rmgc_16 ] ;# ANT_RMGC_16_R
|
||||||
|
set_property -dict {PACKAGE_PIN AF28 IOSTANDARD LVCMOS33} [get_ports rf_rmgc_8 ] ;# ANT_RMGC_8_R
|
||||||
|
set_property -dict {PACKAGE_PIN AG27 IOSTANDARD LVCMOS33} [get_ports rf_rmgc_4 ] ;# ANT_RMGC_4_R
|
||||||
|
set_property -dict {PACKAGE_PIN AD28 IOSTANDARD LVCMOS33} [get_ports rf_rmgc_2 ] ;# ANT_RMGC_2_R
|
||||||
|
set_property -dict {PACKAGE_PIN AK28 IOSTANDARD LVCMOS33} [get_ports rf_rmgc_1 ] ;# ANT_RMGC_1_R
|
||||||
|
set_property -dict {PACKAGE_PIN AK27 IOSTANDARD LVCMOS33} [get_ports rf_enable ] ;# ANT_ENABLE_R
|
||||||
|
set_property -dict {PACKAGE_PIN AH26 IOSTANDARD LVCMOS33} [get_ports rf_sc ] ;# ANT_SC_R
|
||||||
|
set_property -dict {PACKAGE_PIN AG26 IOSTANDARD LVCMOS33} [get_ports rf_sd ] ;# ANT_SD_R
|
||||||
|
set_property -dict {PACKAGE_PIN AE25 IOSTANDARD LVCMOS33} [get_ports rf_endsyn ] ;# ANT_END/SYN_R
|
||||||
|
set_property -dict {PACKAGE_PIN AF25 IOSTANDARD LVCMOS33} [get_ports rf_sdout ] ;# ANT_SDOUT_R
|
||||||
|
set_property -dict {PACKAGE_PIN AK30 IOSTANDARD LVCMOS33} [get_ports rf_dq_wd ] ;# ANT_DQ-WD_R 15
|
||||||
|
set_property -dict {PACKAGE_PIN AJ29 IOSTANDARD LVCMOS33} [get_ports rf_sw_rx ] ;# ANT_SW_RX_R
|
||||||
|
|
||||||
|
# Debug IO
|
||||||
|
set_property -dict {PACKAGE_PIN Y20 IOSTANDARD LVCMOS33} [get_ports uart1_txd ] ;# UART1_TXD
|
||||||
|
set_property -dict {PACKAGE_PIN AA20 IOSTANDARD LVCMOS33} [get_ports uart1_rxd ] ;# UART1_RXD
|
||||||
|
set_property -dict {PACKAGE_PIN AC18 IOSTANDARD LVCMOS33} [get_ports uart2_txd ] ;# UART2_TXD
|
||||||
|
set_property -dict {PACKAGE_PIN AC19 IOSTANDARD LVCMOS33} [get_ports uart2_rxd ] ;# UART2_RXD
|
||||||
|
set_property -dict {PACKAGE_PIN AD18 IOSTANDARD LVCMOS33} [get_ports uart3_txd ] ;# UART3_TXD
|
||||||
|
set_property -dict {PACKAGE_PIN AD19 IOSTANDARD LVCMOS33} [get_ports uart3_rxd ] ;# UART3_RXD
|
||||||
|
set_property -dict {PACKAGE_PIN L15 IOSTANDARD LVCMOS18} [get_ports debug_io_1 ] ;# DEBUG_IO_1
|
||||||
|
set_property -dict {PACKAGE_PIN K16 IOSTANDARD LVCMOS18} [get_ports debug_io_2 ] ;# DEBUG_IO_2
|
||||||
|
set_property -dict {PACKAGE_PIN AG16 IOSTANDARD LVCMOS33} [get_ports debug_io_3 ] ;# DEBUG_IO_3
|
||||||
|
set_property -dict {PACKAGE_PIN AF15 IOSTANDARD LVCMOS33} [get_ports debug_io_4 ] ;# DEBUG_IO_4
|
||||||
|
set_property -dict {PACKAGE_PIN AG15 IOSTANDARD LVCMOS33} [get_ports debug_io_5 ] ;# DEBUG_IO_5
|
||||||
|
set_property -dict {PACKAGE_PIN AF18 IOSTANDARD LVCMOS33} [get_ports debug_io_6 ] ;# DEBUG_IO_6
|
||||||
|
set_property -dict {PACKAGE_PIN AG17 IOSTANDARD LVCMOS33} [get_ports debug_io_7 ] ;# DEBUG_IO_7
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
set_property CLOCK_DEDICATED_ROUTE BACKBONE [get_nets u_clk_dist/u_ad9361_2_clk_gen/inst/clk_in1_ad9361_clk_gen_cmos_2t2r]
|
||||||
+6304
File diff suppressed because it is too large
Load Diff
+1174
File diff suppressed because it is too large
Load Diff
+49
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"schema": "xilinx.com:schema:json_instance:1.0",
|
||||||
|
"ip_inst": {
|
||||||
|
"xci_name": "system_bd_xlconstant_0_0",
|
||||||
|
"cell_name": "xlconstant_vcc",
|
||||||
|
"component_reference": "xilinx.com:ip:xlconstant:1.1",
|
||||||
|
"ip_revision": "8",
|
||||||
|
"gen_directory": "../../../../../../duifei_cmos_1t2r.gen/sources_1/bd/system_bd/ip/system_bd_xlconstant_0_0",
|
||||||
|
"parameters": {
|
||||||
|
"component_parameters": {
|
||||||
|
"Component_Name": [ { "value": "system_bd_xlconstant_0_0", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CONST_WIDTH": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CONST_VAL": [ { "value": "1", "resolve_type": "user", "usage": "all" } ]
|
||||||
|
},
|
||||||
|
"model_parameters": {
|
||||||
|
"CONST_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"CONST_VAL": [ { "value": "0x1", "resolve_type": "generated", "format": "bitString", "usage": "all" } ]
|
||||||
|
},
|
||||||
|
"project_parameters": {
|
||||||
|
"ARCHITECTURE": [ { "value": "zynq" } ],
|
||||||
|
"BASE_BOARD_PART": [ { "value": "" } ],
|
||||||
|
"BOARD_CONNECTIONS": [ { "value": "" } ],
|
||||||
|
"DEVICE": [ { "value": "xc7z100" } ],
|
||||||
|
"PACKAGE": [ { "value": "ffg900" } ],
|
||||||
|
"PREFHDL": [ { "value": "VERILOG" } ],
|
||||||
|
"SILICON_REVISION": [ { "value": "" } ],
|
||||||
|
"SIMULATOR_LANGUAGE": [ { "value": "MIXED" } ],
|
||||||
|
"SPEEDGRADE": [ { "value": "-2" } ],
|
||||||
|
"STATIC_POWER": [ { "value": "" } ],
|
||||||
|
"TEMPERATURE_GRADE": [ { "value": "" } ]
|
||||||
|
},
|
||||||
|
"runtime_parameters": {
|
||||||
|
"IPCONTEXT": [ { "value": "IP_Integrator" } ],
|
||||||
|
"IPREVISION": [ { "value": "8" } ],
|
||||||
|
"MANAGED": [ { "value": "TRUE" } ],
|
||||||
|
"OUTPUTDIR": [ { "value": "../../../../../../duifei_cmos_1t2r.gen/sources_1/bd/system_bd/ip/system_bd_xlconstant_0_0" } ],
|
||||||
|
"SELECTEDSIMMODEL": [ { "value": "" } ],
|
||||||
|
"SHAREDDIR": [ { "value": "../../ipshared" } ],
|
||||||
|
"SWVERSION": [ { "value": "2023.2.1" } ],
|
||||||
|
"SYNTHESISFLOW": [ { "value": "GLOBAL" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"boundary": {
|
||||||
|
"ports": {
|
||||||
|
"dout": [ { "direction": "out", "size_left": "0", "size_right": "0" } ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+588
@@ -0,0 +1,588 @@
|
|||||||
|
{
|
||||||
|
"design": {
|
||||||
|
"design_info": {
|
||||||
|
"boundary_crc": "0xA2DC993BA9BF7C0",
|
||||||
|
"device": "xc7z100ffg900-2",
|
||||||
|
"gen_directory": "../../../../duifei_cmos_1t2r.gen/sources_1/bd/system_bd",
|
||||||
|
"name": "system_bd",
|
||||||
|
"rev_ctrl_bd_flag": "RevCtrlBdOff",
|
||||||
|
"synth_flow_mode": "Hierarchical",
|
||||||
|
"tool_version": "2023.2.1",
|
||||||
|
"validated": "true"
|
||||||
|
},
|
||||||
|
"design_tree": {
|
||||||
|
"processing_system7_0": "",
|
||||||
|
"xlconstant_vcc": "",
|
||||||
|
"ila_spi": ""
|
||||||
|
},
|
||||||
|
"interface_ports": {
|
||||||
|
"DDR": {
|
||||||
|
"mode": "Master",
|
||||||
|
"vlnv_bus_definition": "xilinx.com:interface:ddrx:1.0",
|
||||||
|
"vlnv": "xilinx.com:interface:ddrx_rtl:1.0",
|
||||||
|
"parameters": {
|
||||||
|
"AXI_ARBITRATION_SCHEME": {
|
||||||
|
"value": "TDM",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"BURST_LENGTH": {
|
||||||
|
"value": "8",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"CAN_DEBUG": {
|
||||||
|
"value": "false",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"CAS_LATENCY": {
|
||||||
|
"value": "11",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"CAS_WRITE_LATENCY": {
|
||||||
|
"value": "11",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"CS_ENABLED": {
|
||||||
|
"value": "true",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"DATA_MASK_ENABLED": {
|
||||||
|
"value": "true",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"DATA_WIDTH": {
|
||||||
|
"value": "8",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"MEMORY_TYPE": {
|
||||||
|
"value": "COMPONENTS",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"MEM_ADDR_MAP": {
|
||||||
|
"value": "ROW_COLUMN_BANK",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"SLOT": {
|
||||||
|
"value": "Single",
|
||||||
|
"value_src": "default"
|
||||||
|
},
|
||||||
|
"TIMEPERIOD_PS": {
|
||||||
|
"value": "1250",
|
||||||
|
"value_src": "default"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CAS_N": {
|
||||||
|
"physical_name": "DDR_cas_n",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"CKE": {
|
||||||
|
"physical_name": "DDR_cke",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"CK_N": {
|
||||||
|
"physical_name": "DDR_ck_n",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"CK_P": {
|
||||||
|
"physical_name": "DDR_ck_p",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"CS_N": {
|
||||||
|
"physical_name": "DDR_cs_n",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"RESET_N": {
|
||||||
|
"physical_name": "DDR_reset_n",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"ODT": {
|
||||||
|
"physical_name": "DDR_odt",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"RAS_N": {
|
||||||
|
"physical_name": "DDR_ras_n",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"WE_N": {
|
||||||
|
"physical_name": "DDR_we_n",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"BA": {
|
||||||
|
"physical_name": "DDR_ba",
|
||||||
|
"direction": "IO",
|
||||||
|
"left": "2",
|
||||||
|
"right": "0"
|
||||||
|
},
|
||||||
|
"ADDR": {
|
||||||
|
"physical_name": "DDR_addr",
|
||||||
|
"direction": "IO",
|
||||||
|
"left": "14",
|
||||||
|
"right": "0"
|
||||||
|
},
|
||||||
|
"DM": {
|
||||||
|
"physical_name": "DDR_dm",
|
||||||
|
"direction": "IO",
|
||||||
|
"left": "3",
|
||||||
|
"right": "0"
|
||||||
|
},
|
||||||
|
"DQ": {
|
||||||
|
"physical_name": "DDR_dq",
|
||||||
|
"direction": "IO",
|
||||||
|
"left": "31",
|
||||||
|
"right": "0"
|
||||||
|
},
|
||||||
|
"DQS_N": {
|
||||||
|
"physical_name": "DDR_dqs_n",
|
||||||
|
"direction": "IO",
|
||||||
|
"left": "3",
|
||||||
|
"right": "0"
|
||||||
|
},
|
||||||
|
"DQS_P": {
|
||||||
|
"physical_name": "DDR_dqs_p",
|
||||||
|
"direction": "IO",
|
||||||
|
"left": "3",
|
||||||
|
"right": "0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FIXED_IO": {
|
||||||
|
"mode": "Master",
|
||||||
|
"vlnv_bus_definition": "xilinx.com:display_processing_system7:fixedio:1.0",
|
||||||
|
"vlnv": "xilinx.com:display_processing_system7:fixedio_rtl:1.0",
|
||||||
|
"parameters": {
|
||||||
|
"CAN_DEBUG": {
|
||||||
|
"value": "false",
|
||||||
|
"value_src": "default"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"MIO": {
|
||||||
|
"physical_name": "FIXED_IO_mio",
|
||||||
|
"direction": "IO",
|
||||||
|
"left": "53",
|
||||||
|
"right": "0"
|
||||||
|
},
|
||||||
|
"DDR_VRN": {
|
||||||
|
"physical_name": "FIXED_IO_ddr_vrn",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"DDR_VRP": {
|
||||||
|
"physical_name": "FIXED_IO_ddr_vrp",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"PS_SRSTB": {
|
||||||
|
"physical_name": "FIXED_IO_ps_srstb",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"PS_CLK": {
|
||||||
|
"physical_name": "FIXED_IO_ps_clk",
|
||||||
|
"direction": "IO"
|
||||||
|
},
|
||||||
|
"PS_PORB": {
|
||||||
|
"physical_name": "FIXED_IO_ps_porb",
|
||||||
|
"direction": "IO"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ports": {
|
||||||
|
"SPI0_SS_O_0": {
|
||||||
|
"direction": "O"
|
||||||
|
},
|
||||||
|
"SPI0_SS1_O_0": {
|
||||||
|
"direction": "O"
|
||||||
|
},
|
||||||
|
"SPI0_SS2_O_0": {
|
||||||
|
"direction": "O"
|
||||||
|
},
|
||||||
|
"SPI0_SCLK_O_0": {
|
||||||
|
"direction": "O"
|
||||||
|
},
|
||||||
|
"SPI0_MOSI_O_0": {
|
||||||
|
"direction": "O"
|
||||||
|
},
|
||||||
|
"SPI0_MISO_I_0": {
|
||||||
|
"direction": "I"
|
||||||
|
},
|
||||||
|
"GPIO_O_0": {
|
||||||
|
"direction": "O",
|
||||||
|
"left": "47",
|
||||||
|
"right": "0"
|
||||||
|
},
|
||||||
|
"GPIO_I_0": {
|
||||||
|
"direction": "I",
|
||||||
|
"left": "47",
|
||||||
|
"right": "0"
|
||||||
|
},
|
||||||
|
"GPIO_T_0": {
|
||||||
|
"direction": "O",
|
||||||
|
"left": "47",
|
||||||
|
"right": "0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"processing_system7_0": {
|
||||||
|
"vlnv": "xilinx.com:ip:processing_system7:5.5",
|
||||||
|
"ip_revision": "6",
|
||||||
|
"xci_name": "system_bd_processing_system7_0_0",
|
||||||
|
"xci_path": "ip/system_bd_processing_system7_0_0/system_bd_processing_system7_0_0.xci",
|
||||||
|
"inst_hier_path": "processing_system7_0",
|
||||||
|
"parameters": {
|
||||||
|
"PCW_ACT_APU_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "666.666687"
|
||||||
|
},
|
||||||
|
"PCW_ACT_CAN_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_DCI_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.158730"
|
||||||
|
},
|
||||||
|
"PCW_ACT_ENET0_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_ENET1_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "100.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_PCAP_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "200.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_QSPI_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "200.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_SDIO_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_SMC_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_SPI_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "166.666672"
|
||||||
|
},
|
||||||
|
"PCW_ACT_TPIU_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "200.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "111.111115"
|
||||||
|
},
|
||||||
|
"PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "111.111115"
|
||||||
|
},
|
||||||
|
"PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "111.111115"
|
||||||
|
},
|
||||||
|
"PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "111.111115"
|
||||||
|
},
|
||||||
|
"PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "111.111115"
|
||||||
|
},
|
||||||
|
"PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "111.111115"
|
||||||
|
},
|
||||||
|
"PCW_ACT_UART_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "10.000000"
|
||||||
|
},
|
||||||
|
"PCW_ACT_WDT_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "111.111115"
|
||||||
|
},
|
||||||
|
"PCW_CLK0_FREQ": {
|
||||||
|
"value": "100000000"
|
||||||
|
},
|
||||||
|
"PCW_CLK1_FREQ": {
|
||||||
|
"value": "10000000"
|
||||||
|
},
|
||||||
|
"PCW_CLK2_FREQ": {
|
||||||
|
"value": "10000000"
|
||||||
|
},
|
||||||
|
"PCW_CLK3_FREQ": {
|
||||||
|
"value": "10000000"
|
||||||
|
},
|
||||||
|
"PCW_DDR_RAM_HIGHADDR": {
|
||||||
|
"value": "0x1FFFFFFF"
|
||||||
|
},
|
||||||
|
"PCW_EN_EMIO_CD_SDIO1": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_EN_EMIO_GPIO": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_EN_EMIO_SDIO1": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_EN_EMIO_SPI0": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_EN_EMIO_WP_SDIO1": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_EN_QSPI": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_EN_SDIO1": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_EN_SPI0": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_FPGA0_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "100"
|
||||||
|
},
|
||||||
|
"PCW_FPGA_FCLK0_ENABLE": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_GPIO_EMIO_GPIO_ENABLE": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_GPIO_EMIO_GPIO_IO": {
|
||||||
|
"value": "48"
|
||||||
|
},
|
||||||
|
"PCW_GPIO_EMIO_GPIO_WIDTH": {
|
||||||
|
"value": "48"
|
||||||
|
},
|
||||||
|
"PCW_MIO_1_IOTYPE": {
|
||||||
|
"value": "LVCMOS 3.3V"
|
||||||
|
},
|
||||||
|
"PCW_MIO_1_PULLUP": {
|
||||||
|
"value": "enabled"
|
||||||
|
},
|
||||||
|
"PCW_MIO_1_SLEW": {
|
||||||
|
"value": "slow"
|
||||||
|
},
|
||||||
|
"PCW_MIO_2_IOTYPE": {
|
||||||
|
"value": "LVCMOS 3.3V"
|
||||||
|
},
|
||||||
|
"PCW_MIO_2_SLEW": {
|
||||||
|
"value": "slow"
|
||||||
|
},
|
||||||
|
"PCW_MIO_3_IOTYPE": {
|
||||||
|
"value": "LVCMOS 3.3V"
|
||||||
|
},
|
||||||
|
"PCW_MIO_3_SLEW": {
|
||||||
|
"value": "slow"
|
||||||
|
},
|
||||||
|
"PCW_MIO_4_IOTYPE": {
|
||||||
|
"value": "LVCMOS 3.3V"
|
||||||
|
},
|
||||||
|
"PCW_MIO_4_SLEW": {
|
||||||
|
"value": "slow"
|
||||||
|
},
|
||||||
|
"PCW_MIO_5_IOTYPE": {
|
||||||
|
"value": "LVCMOS 3.3V"
|
||||||
|
},
|
||||||
|
"PCW_MIO_5_SLEW": {
|
||||||
|
"value": "slow"
|
||||||
|
},
|
||||||
|
"PCW_MIO_6_IOTYPE": {
|
||||||
|
"value": "LVCMOS 3.3V"
|
||||||
|
},
|
||||||
|
"PCW_MIO_6_SLEW": {
|
||||||
|
"value": "slow"
|
||||||
|
},
|
||||||
|
"PCW_MIO_TREE_PERIPHERALS": {
|
||||||
|
"value": [
|
||||||
|
"unassigned#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI",
|
||||||
|
"Flash#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"PCW_MIO_TREE_SIGNALS": {
|
||||||
|
"value": "unassigned#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]/HOLD_B#qspi0_sclk#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned"
|
||||||
|
},
|
||||||
|
"PCW_QSPI_GRP_FBCLK_ENABLE": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_QSPI_GRP_IO1_ENABLE": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_QSPI_GRP_SINGLE_SS_ENABLE": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_QSPI_GRP_SINGLE_SS_IO": {
|
||||||
|
"value": "MIO 1 .. 6"
|
||||||
|
},
|
||||||
|
"PCW_QSPI_GRP_SS1_ENABLE": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_QSPI_PERIPHERAL_ENABLE": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_QSPI_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "200"
|
||||||
|
},
|
||||||
|
"PCW_QSPI_QSPI_IO": {
|
||||||
|
"value": "MIO 1 .. 6"
|
||||||
|
},
|
||||||
|
"PCW_SD1_PERIPHERAL_ENABLE": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_SDIO_PERIPHERAL_VALID": {
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"PCW_SINGLE_QSPI_DATA_MODE": {
|
||||||
|
"value": "x4"
|
||||||
|
},
|
||||||
|
"PCW_SPI0_PERIPHERAL_ENABLE": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_SPI0_SPI0_IO": {
|
||||||
|
"value": "EMIO"
|
||||||
|
},
|
||||||
|
"PCW_SPI_PERIPHERAL_FREQMHZ": {
|
||||||
|
"value": "166.666666"
|
||||||
|
},
|
||||||
|
"PCW_SPI_PERIPHERAL_VALID": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"PCW_UIPARAM_ACT_DDR_FREQ_MHZ": {
|
||||||
|
"value": "533.333374"
|
||||||
|
},
|
||||||
|
"PCW_UIPARAM_DDR_BUS_WIDTH": {
|
||||||
|
"value": "16 Bit"
|
||||||
|
},
|
||||||
|
"PCW_UIPARAM_DDR_ECC": {
|
||||||
|
"value": "Disabled"
|
||||||
|
},
|
||||||
|
"PCW_UIPARAM_DDR_PARTNO": {
|
||||||
|
"value": "MT41J256M16 RE-125"
|
||||||
|
},
|
||||||
|
"PCW_USE_M_AXI_GP0": {
|
||||||
|
"value": "0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xlconstant_vcc": {
|
||||||
|
"vlnv": "xilinx.com:ip:xlconstant:1.1",
|
||||||
|
"ip_revision": "8",
|
||||||
|
"xci_name": "system_bd_xlconstant_0_0",
|
||||||
|
"xci_path": "ip/system_bd_xlconstant_0_0/system_bd_xlconstant_0_0.xci",
|
||||||
|
"inst_hier_path": "xlconstant_vcc"
|
||||||
|
},
|
||||||
|
"ila_spi": {
|
||||||
|
"vlnv": "xilinx.com:ip:ila:6.2",
|
||||||
|
"ip_revision": "14",
|
||||||
|
"xci_name": "system_bd_ila_0_0",
|
||||||
|
"xci_path": "ip/system_bd_ila_0_0/system_bd_ila_0_0.xci",
|
||||||
|
"inst_hier_path": "ila_spi",
|
||||||
|
"parameters": {
|
||||||
|
"ALL_PROBE_SAME_MU_CNT": {
|
||||||
|
"value": "6"
|
||||||
|
},
|
||||||
|
"C_ADV_TRIGGER": {
|
||||||
|
"value": "true"
|
||||||
|
},
|
||||||
|
"C_DATA_DEPTH": {
|
||||||
|
"value": "16384"
|
||||||
|
},
|
||||||
|
"C_EN_STRG_QUAL": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"C_MONITOR_TYPE": {
|
||||||
|
"value": "Native"
|
||||||
|
},
|
||||||
|
"C_NUM_OF_PROBES": {
|
||||||
|
"value": "6"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"interface_nets": {
|
||||||
|
"processing_system7_0_DDR": {
|
||||||
|
"interface_ports": [
|
||||||
|
"DDR",
|
||||||
|
"processing_system7_0/DDR"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_FIXED_IO": {
|
||||||
|
"interface_ports": [
|
||||||
|
"FIXED_IO",
|
||||||
|
"processing_system7_0/FIXED_IO"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nets": {
|
||||||
|
"GPIO_I_0_1": {
|
||||||
|
"ports": [
|
||||||
|
"GPIO_I_0",
|
||||||
|
"processing_system7_0/GPIO_I"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"SPI0_MISO_I_0_1": {
|
||||||
|
"ports": [
|
||||||
|
"SPI0_MISO_I_0",
|
||||||
|
"processing_system7_0/SPI0_MISO_I",
|
||||||
|
"ila_spi/probe2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_FCLK_CLK0": {
|
||||||
|
"ports": [
|
||||||
|
"processing_system7_0/FCLK_CLK0",
|
||||||
|
"ila_spi/clk"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_GPIO_O": {
|
||||||
|
"ports": [
|
||||||
|
"processing_system7_0/GPIO_O",
|
||||||
|
"GPIO_O_0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_GPIO_T": {
|
||||||
|
"ports": [
|
||||||
|
"processing_system7_0/GPIO_T",
|
||||||
|
"GPIO_T_0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_SPI0_MOSI_O": {
|
||||||
|
"ports": [
|
||||||
|
"processing_system7_0/SPI0_MOSI_O",
|
||||||
|
"SPI0_MOSI_O_0",
|
||||||
|
"ila_spi/probe1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_SPI0_SCLK_O": {
|
||||||
|
"ports": [
|
||||||
|
"processing_system7_0/SPI0_SCLK_O",
|
||||||
|
"SPI0_SCLK_O_0",
|
||||||
|
"ila_spi/probe0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_SPI0_SS1_O": {
|
||||||
|
"ports": [
|
||||||
|
"processing_system7_0/SPI0_SS1_O",
|
||||||
|
"SPI0_SS1_O_0",
|
||||||
|
"ila_spi/probe4"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_SPI0_SS2_O": {
|
||||||
|
"ports": [
|
||||||
|
"processing_system7_0/SPI0_SS2_O",
|
||||||
|
"SPI0_SS2_O_0",
|
||||||
|
"ila_spi/probe5"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processing_system7_0_SPI0_SS_O": {
|
||||||
|
"ports": [
|
||||||
|
"processing_system7_0/SPI0_SS_O",
|
||||||
|
"SPI0_SS_O_0",
|
||||||
|
"ila_spi/probe3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"xlconstant_vcc_dout": {
|
||||||
|
"ports": [
|
||||||
|
"xlconstant_vcc/dout",
|
||||||
|
"processing_system7_0/SPI0_SS_I"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+203
@@ -0,0 +1,203 @@
|
|||||||
|
{
|
||||||
|
"graphjs": {
|
||||||
|
"version": "1.0",
|
||||||
|
"keys": [
|
||||||
|
{
|
||||||
|
"abrv": "VH",
|
||||||
|
"name": "vert_hid",
|
||||||
|
"type": "int",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "VM",
|
||||||
|
"name": "vert_name",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "VT",
|
||||||
|
"name": "vert_type",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "BA",
|
||||||
|
"name": "base_addr",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "HA",
|
||||||
|
"name": "high_addr",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "BP",
|
||||||
|
"name": "base_param",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "HP",
|
||||||
|
"name": "high_param",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "MA",
|
||||||
|
"name": "master_addrspace",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "MX",
|
||||||
|
"name": "master_instance",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "MI",
|
||||||
|
"name": "master_interface",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "MS",
|
||||||
|
"name": "master_segment",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "MV",
|
||||||
|
"name": "master_vlnv",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "SX",
|
||||||
|
"name": "slave_instance",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "SI",
|
||||||
|
"name": "slave_interface",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "MM",
|
||||||
|
"name": "slave_memmap",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "SS",
|
||||||
|
"name": "slave_segment",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "SV",
|
||||||
|
"name": "slave_vlnv",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "TM",
|
||||||
|
"name": "memory_type",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "TU",
|
||||||
|
"name": "usage_type",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "LT",
|
||||||
|
"name": "lock_type",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "BT",
|
||||||
|
"name": "boot_type",
|
||||||
|
"type": "string",
|
||||||
|
"for": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "EH",
|
||||||
|
"name": "edge_hid",
|
||||||
|
"type": "int",
|
||||||
|
"for": "edge"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertice_type_order": [
|
||||||
|
{
|
||||||
|
"abrv": "BC",
|
||||||
|
"desc": "Block Container"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "PR",
|
||||||
|
"desc": "Parital Reference"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "VR",
|
||||||
|
"desc": "Variant"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "PM",
|
||||||
|
"desc": "Variant Permutations"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "CX",
|
||||||
|
"desc": "Boundary Connection"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "AC",
|
||||||
|
"desc": "Assignment Coordinate"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "ACE",
|
||||||
|
"desc": "Excluded Assign Coordinate"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "APX",
|
||||||
|
"desc": "Boundary Aperture"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"abrv": "CIP",
|
||||||
|
"desc": "High level Processing System"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": {
|
||||||
|
"V0": {
|
||||||
|
"VM": "system_bd",
|
||||||
|
"VT": "BC"
|
||||||
|
},
|
||||||
|
"V1": {
|
||||||
|
"VH": "2",
|
||||||
|
"VM": "system_bd",
|
||||||
|
"VT": "VR"
|
||||||
|
},
|
||||||
|
"V2": {
|
||||||
|
"VH": "2",
|
||||||
|
"VT": "PM",
|
||||||
|
"TU": "active"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"edges": [
|
||||||
|
{
|
||||||
|
"src": "V0",
|
||||||
|
"trg": "V1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "V1",
|
||||||
|
"trg": "V2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"ActiveEmotionalView":"Default View",
|
||||||
|
"Default View_ScaleFactor":"1.0",
|
||||||
|
"Default View_TopLeft":"-486,-176",
|
||||||
|
"ExpandedHierarchyInLayout":"",
|
||||||
|
"guistr":"# # String gsaved with Nlview 7.5.8 2022-09-21 7111 VDI=41 GEI=38 GUI=JA:10.0 TLS
|
||||||
|
# -string -flagsOSRD
|
||||||
|
preplace port DDR -pg 1 -lvl 3 -x 600 -y 140 -defaultsOSRD
|
||||||
|
preplace port FIXED_IO -pg 1 -lvl 3 -x 600 -y 160 -defaultsOSRD
|
||||||
|
preplace port port-id_SPI0_SS_O_0 -pg 1 -lvl 3 -x 600 -y 240 -defaultsOSRD
|
||||||
|
preplace port port-id_SPI0_SS1_O_0 -pg 1 -lvl 3 -x 600 -y 260 -defaultsOSRD
|
||||||
|
preplace port port-id_SPI0_SS2_O_0 -pg 1 -lvl 3 -x 600 -y 280 -defaultsOSRD
|
||||||
|
preplace port port-id_SPI0_SCLK_O_0 -pg 1 -lvl 3 -x 600 -y 180 -defaultsOSRD
|
||||||
|
preplace port port-id_SPI0_MOSI_O_0 -pg 1 -lvl 3 -x 600 -y 200 -defaultsOSRD
|
||||||
|
preplace port port-id_SPI0_MISO_I_0 -pg 1 -lvl 3 -x 600 -y 220 -defaultsOSRD -right
|
||||||
|
preplace portBus GPIO_O_0 -pg 1 -lvl 3 -x 600 -y 100 -defaultsOSRD
|
||||||
|
preplace portBus GPIO_I_0 -pg 1 -lvl 3 -x 600 -y 80 -defaultsOSRD -right
|
||||||
|
preplace portBus GPIO_T_0 -pg 1 -lvl 3 -x 600 -y 120 -defaultsOSRD
|
||||||
|
preplace inst processing_system7_0 -pg 1 -lvl 1 -x 160 -y 210 -defaultsOSRD
|
||||||
|
preplace inst xlconstant_vcc -pg 1 -lvl 1 -x 160 -y 460 -defaultsOSRD
|
||||||
|
preplace inst ila_spi -pg 1 -lvl 2 -x 480 -y 400 -defaultsOSRD
|
||||||
|
preplace netloc GPIO_I_0_1 1 1 2 N 80 N
|
||||||
|
preplace netloc SPI0_MISO_I_0_1 1 1 2 350 220 N
|
||||||
|
preplace netloc processing_system7_0_GPIO_O 1 1 2 N 100 N
|
||||||
|
preplace netloc processing_system7_0_SPI0_MOSI_O 1 1 2 340 200 N
|
||||||
|
preplace netloc processing_system7_0_SPI0_SCLK_O 1 1 2 330 180 N
|
||||||
|
preplace netloc processing_system7_0_SPI0_SS1_O 1 1 2 370 260 N
|
||||||
|
preplace netloc processing_system7_0_SPI0_SS2_O 1 1 2 380 280 N
|
||||||
|
preplace netloc processing_system7_0_SPI0_SS_O 1 1 2 360 240 N
|
||||||
|
preplace netloc xlconstant_vcc_dout 1 1 1 320 260n
|
||||||
|
preplace netloc processing_system7_0_GPIO_T 1 1 2 N 120 N
|
||||||
|
preplace netloc processing_system7_0_FCLK_CLK0 1 1 1 N 340
|
||||||
|
preplace netloc processing_system7_0_DDR 1 1 2 NJ 140 N
|
||||||
|
preplace netloc processing_system7_0_FIXED_IO 1 1 2 NJ 160 N
|
||||||
|
levelinfo -pg 1 0 160 480 600
|
||||||
|
pagesize -pg 1 -db -bbox -sgen 0 0 770 520
|
||||||
|
"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"da_ps7_cnt":"1"
|
||||||
|
}
|
||||||
+713
@@ -0,0 +1,713 @@
|
|||||||
|
{
|
||||||
|
"schema": "xilinx.com:schema:json_instance:1.0",
|
||||||
|
"ip_inst": {
|
||||||
|
"xci_name": "ad9361_clk_gen_cmos_2t2r",
|
||||||
|
"component_reference": "xilinx.com:ip:clk_wiz:6.0",
|
||||||
|
"ip_revision": "13",
|
||||||
|
"gen_directory": "../../../../duifei_cmos_1t2r.gen/sources_1/ip/ad9361_clk_gen_cmos_2t2r",
|
||||||
|
"parameters": {
|
||||||
|
"component_parameters": {
|
||||||
|
"Component_Name": [ { "value": "ad9361_clk_gen_cmos_2t2r", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ0": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ1": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ2": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ3": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"ENABLE_CLOCK_MONITOR": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"OPTIMIZE_CLOCKING_STRUCTURE_EN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK0": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK1": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK2": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK3": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"Enable_PLL0": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"Enable_PLL1": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"REF_CLK_FREQ": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRECISION": [ { "value": "1", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIMITIVE": [ { "value": "MMCM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PRIMTYPE_SEL": [ { "value": "mmcm_adv", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLOCK_MGR_TYPE": [ { "value": "auto", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_FREQ_SYNTH": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_SPREAD_SPECTRUM": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_PHASE_ALIGNMENT": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_MIN_POWER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_DYN_PHASE_SHIFT": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_DYN_RECONFIG": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"JITTER_SEL": [ { "value": "No_Jitter", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PRIM_IN_FREQ": [ { "value": "96", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIM_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"IN_FREQ_UNITS": [ { "value": "Units_MHz", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PHASESHIFT_MODE": [ { "value": "WAVEFORM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"IN_JITTER_UNITS": [ { "value": "Units_UI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"RELATIVE_INCLK": [ { "value": "REL_PRIMARY", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_INCLK_SWITCHOVER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_PORT": [ { "value": "clk_in2", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SECONDARY_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"JITTER_OPTIONS": [ { "value": "UI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKIN1_UI_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN2_UI_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIM_IN_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN1_JITTER_PS": [ { "value": "104.16", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN2_JITTER_PS": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_USED": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT2_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT3_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT4_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT5_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT6_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT7_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"NUM_OUT_CLKS": [ { "value": "4", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLK_OUT1_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT2_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT3_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT4_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT5_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT6_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT7_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PRIMARY_PORT": [ { "value": "clk_in1", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT1_PORT": [ { "value": "clk_out1", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT2_PORT": [ { "value": "clk_out2", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT3_PORT": [ { "value": "clk_out3", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT4_PORT": [ { "value": "clk_out4", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT5_PORT": [ { "value": "clk_out5", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT6_PORT": [ { "value": "clk_out6", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT7_PORT": [ { "value": "clk_out7", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DADDR_PORT": [ { "value": "daddr", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DCLK_PORT": [ { "value": "dclk", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DRDY_PORT": [ { "value": "drdy", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DWE_PORT": [ { "value": "dwe", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIN_PORT": [ { "value": "din", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DOUT_PORT": [ { "value": "dout", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DEN_PORT": [ { "value": "den", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSCLK_PORT": [ { "value": "psclk", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSEN_PORT": [ { "value": "psen", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSINCDEC_PORT": [ { "value": "psincdec", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSDONE_PORT": [ { "value": "psdone", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_OUT_FREQ": [ { "value": "48", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_OUT_FREQ": [ { "value": "96", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_OUT_FREQ": [ { "value": "144", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_OUT_FREQ": [ { "value": "192", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USE_MAX_I_JITTER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_MIN_O_JITTER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT1_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT2_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT3_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT4_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT5_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT6_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT7_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PRIM_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT1_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT2_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT3_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT4_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT5_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT6_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT7_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"FEEDBACK_SOURCE": [ { "value": "FDBK_AUTO", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_SIGNALING": [ { "value": "SINGLE", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_PORT": [ { "value": "clkfb_in", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_P_PORT": [ { "value": "clkfb_in_p", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_N_PORT": [ { "value": "clkfb_in_n", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_PORT": [ { "value": "clkfb_out", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_P_PORT": [ { "value": "clkfb_out_p", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_N_PORT": [ { "value": "clkfb_out_n", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLATFORM": [ { "value": "UNKNOWN", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SUMMARY_STRINGS": [ { "value": "empty", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_LOCKED": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CALC_DONE": [ { "value": "empty", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_RESET": [ { "value": "false", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_POWER_DOWN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_STATUS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_FREEZE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLK_VALID": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_INCLK_STOPPED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLKFB_STOPPED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"RESET_PORT": [ { "value": "reset", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"LOCKED_PORT": [ { "value": "locked", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"POWER_DOWN_PORT": [ { "value": "power_down", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_VALID_PORT": [ { "value": "CLK_VALID", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"STATUS_PORT": [ { "value": "STATUS", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_IN_SEL_PORT": [ { "value": "clk_in_sel", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"INPUT_CLK_STOPPED_PORT": [ { "value": "input_clk_stopped", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_STOPPED_PORT": [ { "value": "clkfb_stopped", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SS_MODE": [ { "value": "CENTER_HIGH", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SS_MOD_FREQ": [ { "value": "250", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SS_MOD_TIME": [ { "value": "0.004", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"OVERRIDE_MMCM": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_NOTES": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_DIVCLK_DIVIDE": [ { "value": "1", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_MULT_F": [ { "value": "12.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKIN1_PERIOD": [ { "value": "10.417", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKIN2_PERIOD": [ { "value": "10.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_CASCADE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLOCK_HOLD": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_COMPENSATION": [ { "value": "ZHOLD", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_REF_JITTER1": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_REF_JITTER2": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_STARTUP_WAIT": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_DIVIDE_F": [ { "value": "24.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_DIVIDE": [ { "value": "12", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_DIVIDE": [ { "value": "8", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_DIVIDE": [ { "value": "6", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"OVERRIDE_PLL": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PLL_NOTES": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_CLKFBOUT_MULT": [ { "value": "4", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLK_FEEDBACK": [ { "value": "CLKFBOUT", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKIN_PERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_COMPENSATION": [ { "value": "SYSTEM_SYNCHRONOUS", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_REF_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"RESET_TYPE": [ { "value": "ACTIVE_HIGH", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_SAFE_CLOCK_STARTUP": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLOCK_SEQUENCING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT1_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT2_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT3_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT4_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT5_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT6_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT7_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"USE_BOARD_FLOW": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_IN1_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_IN2_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIFF_CLK_IN1_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIFF_CLK_IN2_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"AUTO_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"RESET_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"ENABLE_CDDC": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CDDCDONE_PORT": [ { "value": "cddcdone", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CDDCREQ_PORT": [ { "value": "cddcreq", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"ENABLE_CLKOUTPHY": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUTPHY_REQUESTED_FREQ": [ { "value": "600.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_JITTER": [ { "value": "139.139", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_PHASE_ERROR": [ { "value": "89.958", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_JITTER": [ { "value": "120.859", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_PHASE_ERROR": [ { "value": "89.958", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_JITTER": [ { "value": "112.241", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_PHASE_ERROR": [ { "value": "89.958", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_JITTER": [ { "value": "106.524", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_PHASE_ERROR": [ { "value": "89.958", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"INPUT_MODE": [ { "value": "frequency", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"INTERFACE_SELECTION": [ { "value": "Enable_AXI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"AXI_DRP": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PHASE_DUTY_CONFIG": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ]
|
||||||
|
},
|
||||||
|
"model_parameters": {
|
||||||
|
"C_CLKOUT2_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ0": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_AUTO_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ1": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ2": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ3": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_ENABLE_CLOCK_MONITOR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK0": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK1": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK2": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK3": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_Enable_PLL0": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_Enable_PLL1": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_REF_CLK_FREQ": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRECISION": [ { "value": "1", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT1_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT2_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT3_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT4_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"c_component_name": [ { "value": "ad9361_clk_gen_cmos_2t2r", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLATFORM": [ { "value": "UNKNOWN", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_FREQ_SYNTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_PHASE_ALIGNMENT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_JITTER_SEL": [ { "value": "No_Jitter", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_MIN_POWER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_MIN_O_JITTER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_MAX_I_JITTER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_DYN_PHASE_SHIFT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_OPTIMIZE_CLOCKING_STRUCTURE_EN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_INCLK_SWITCHOVER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_DYN_RECONFIG": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_SPREAD_SPECTRUM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_FAST_SIMULATION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIMTYPE_SEL": [ { "value": "AUTO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_CLK_VALID": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_FREQ": [ { "value": "96", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_IN_FREQ_UNITS": [ { "value": "Units_MHz", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_FEEDBACK_SOURCE": [ { "value": "FDBK_AUTO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PRIM_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PHASESHIFT_MODE": [ { "value": "WAVEFORM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_SIGNALING": [ { "value": "SINGLE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_RESET": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_RESET_LOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_LOCKED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_INCLK_STOPPED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKFB_STOPPED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_POWER_DOWN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_STATUS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_FREEZE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_NUM_OUT_CLKS": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW0": [ { "value": "Input Clock Freq (MHz) Input Jitter (UI)", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW1": [ { "value": "__primary______________96____________0.010", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW2": [ { "value": "no_secondary_input_clock ", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW0A": [ { "value": " Output Output Phase Duty Cycle Pk-to-Pk Phase", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW0B": [ { "value": " Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW1": [ { "value": "clk_out1__48.00000______0.000______50.0______139.139_____89.958", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW2": [ { "value": "clk_out2__96.00000______0.000______50.0______120.859_____89.958", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW3": [ { "value": "clk_out3__144.00000______0.000______50.0______112.241_____89.958", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW4": [ { "value": "clk_out4__192.00000______0.000______50.0______106.524_____89.958", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW5": [ { "value": "no_CLK_OUT5_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW6": [ { "value": "no_CLK_OUT6_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW7": [ { "value": "no_CLK_OUT7_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_OUT_FREQ": [ { "value": "48", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_OUT_FREQ": [ { "value": "96", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_OUT_FREQ": [ { "value": "144", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_OUT_FREQ": [ { "value": "192", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_OUT_FREQ": [ { "value": "48.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_OUT_FREQ": [ { "value": "96.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_OUT_FREQ": [ { "value": "144.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_OUT_FREQ": [ { "value": "192.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USE_SAFE_CLOCK_STARTUP": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLOCK_SEQUENCING": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_NOTES": [ { "value": "None", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_MULT_F": [ { "value": "12.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKIN1_PERIOD": [ { "value": "10.417", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKIN2_PERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_CASCADE": [ { "value": "FALSE", "resolve_type": "generated", "format": "bool", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLOCK_HOLD": [ { "value": "FALSE", "resolve_type": "generated", "format": "bool", "usage": "all" } ],
|
||||||
|
"C_MMCM_COMPENSATION": [ { "value": "ZHOLD", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_REF_JITTER1": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_REF_JITTER2": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_STARTUP_WAIT": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_DIVIDE_F": [ { "value": "24.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_DIVIDE": [ { "value": "12", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_DIVIDE": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_DIVIDE": [ { "value": "6", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_NOTES": [ { "value": "No notes", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_CLK_FEEDBACK": [ { "value": "CLKFBOUT", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKFBOUT_MULT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKIN_PERIOD": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_COMPENSATION": [ { "value": "SYSTEM_SYNCHRONOUS", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_REF_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLOCK_MGR_TYPE": [ { "value": "NA", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OVERRIDE_MMCM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_OVERRIDE_PLL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIMARY_PORT": [ { "value": "clk_in1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_PORT": [ { "value": "clk_in2", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT1_PORT": [ { "value": "clk_out1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT2_PORT": [ { "value": "clk_out2", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT3_PORT": [ { "value": "clk_out3", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT4_PORT": [ { "value": "clk_out4", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT5_PORT": [ { "value": "clk_out5", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT6_PORT": [ { "value": "clk_out6", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT7_PORT": [ { "value": "clk_out7", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_RESET_PORT": [ { "value": "reset", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCKED_PORT": [ { "value": "locked", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_PORT": [ { "value": "clkfb_in", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_P_PORT": [ { "value": "clkfb_in_p", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_N_PORT": [ { "value": "clkfb_in_n", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_PORT": [ { "value": "clkfb_out", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_P_PORT": [ { "value": "clkfb_out_p", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_N_PORT": [ { "value": "clkfb_out_n", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_POWER_DOWN_PORT": [ { "value": "power_down", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DADDR_PORT": [ { "value": "daddr", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DCLK_PORT": [ { "value": "dclk", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DRDY_PORT": [ { "value": "drdy", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DWE_PORT": [ { "value": "dwe", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIN_PORT": [ { "value": "din", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DOUT_PORT": [ { "value": "dout", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DEN_PORT": [ { "value": "den", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSCLK_PORT": [ { "value": "psclk", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSEN_PORT": [ { "value": "psen", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSINCDEC_PORT": [ { "value": "psincdec", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSDONE_PORT": [ { "value": "psdone", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_VALID_PORT": [ { "value": "CLK_VALID", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_STATUS_PORT": [ { "value": "STATUS", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_IN_SEL_PORT": [ { "value": "clk_in_sel", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INPUT_CLK_STOPPED_PORT": [ { "value": "input_clk_stopped", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_STOPPED_PORT": [ { "value": "clkfb_stopped", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKIN1_JITTER_PS": [ { "value": "104.16", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKIN2_JITTER_PS": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SS_MODE": [ { "value": "CENTER_HIGH", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SS_MOD_PERIOD": [ { "value": "4000", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_SS_MOD_TIME": [ { "value": "0.004", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_HAS_CDDC": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CDDCDONE_PORT": [ { "value": "cddcdone", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CDDCREQ_PORT": [ { "value": "cddcreq", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUTPHY_MODE": [ { "value": "VCO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_ENABLE_CLKOUTPHY": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_INTERFACE_SELECTION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_S_AXI_ADDR_WIDTH": [ { "value": "11", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_S_AXI_DATA_WIDTH": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_POWER_REG": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFBOUT_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFBOUT_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVCLK": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_3": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_FILTER_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_FILTER_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE1_AUTO": [ { "value": "1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE2_AUTO": [ { "value": "0.5", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE3_AUTO": [ { "value": "0.3333333333333333", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE4_AUTO": [ { "value": "0.25", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE5_AUTO": [ { "value": "0.041666666666666664", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE6_AUTO": [ { "value": "0.041666666666666664", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE7_AUTO": [ { "value": "0.041666666666666664", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV1": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV2": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV3": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV4": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV1": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV2": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV3": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV4": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV5": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV6": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV7": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_ACTUAL_FREQ": [ { "value": "48.00000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_ACTUAL_FREQ": [ { "value": "96.00000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_ACTUAL_FREQ": [ { "value": "144.00000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_ACTUAL_FREQ": [ { "value": "192.00000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_M_MAX": [ { "value": "64.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_M_MIN": [ { "value": "2.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_D_MAX": [ { "value": "93.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_D_MIN": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_O_MAX": [ { "value": "128.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_O_MIN": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_VCO_MIN": [ { "value": "600.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_VCO_MAX": [ { "value": "1440.000", "resolve_type": "generated", "format": "float", "usage": "all" } ]
|
||||||
|
},
|
||||||
|
"project_parameters": {
|
||||||
|
"ARCHITECTURE": [ { "value": "zynq" } ],
|
||||||
|
"BASE_BOARD_PART": [ { "value": "" } ],
|
||||||
|
"BOARD_CONNECTIONS": [ { "value": "" } ],
|
||||||
|
"DEVICE": [ { "value": "xc7z100" } ],
|
||||||
|
"PACKAGE": [ { "value": "ffg900" } ],
|
||||||
|
"PREFHDL": [ { "value": "VERILOG" } ],
|
||||||
|
"SILICON_REVISION": [ { "value": "" } ],
|
||||||
|
"SIMULATOR_LANGUAGE": [ { "value": "MIXED" } ],
|
||||||
|
"SPEEDGRADE": [ { "value": "-2" } ],
|
||||||
|
"STATIC_POWER": [ { "value": "" } ],
|
||||||
|
"TEMPERATURE_GRADE": [ { "value": "" } ]
|
||||||
|
},
|
||||||
|
"runtime_parameters": {
|
||||||
|
"IPCONTEXT": [ { "value": "IP_Flow" } ],
|
||||||
|
"IPREVISION": [ { "value": "13" } ],
|
||||||
|
"MANAGED": [ { "value": "TRUE" } ],
|
||||||
|
"OUTPUTDIR": [ { "value": "../../../../duifei_cmos_1t2r.gen/sources_1/ip/ad9361_clk_gen_cmos_2t2r" } ],
|
||||||
|
"SELECTEDSIMMODEL": [ { "value": "" } ],
|
||||||
|
"SHAREDDIR": [ { "value": "." } ],
|
||||||
|
"SWVERSION": [ { "value": "2023.2.1" } ],
|
||||||
|
"SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"boundary": {
|
||||||
|
"ports": {
|
||||||
|
"clk_in1": [ { "direction": "in" } ],
|
||||||
|
"clk_out1": [ { "direction": "out" } ],
|
||||||
|
"clk_out2": [ { "direction": "out" } ],
|
||||||
|
"clk_out3": [ { "direction": "out" } ],
|
||||||
|
"clk_out4": [ { "direction": "out" } ],
|
||||||
|
"locked": [ { "direction": "out" } ]
|
||||||
|
},
|
||||||
|
"interfaces": {
|
||||||
|
"clock_CLK_IN1": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "slave",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"BOARD.ASSOCIATED_PARAM": [ { "value": "CLK_IN1_BOARD_INTERFACE", "usage": "all", "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_IN1": [ { "physical_name": "clk_in1" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT1": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT1": [ { "physical_name": "clk_out1" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT2": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT2": [ { "physical_name": "clk_out2" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT3": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT3": [ { "physical_name": "clk_out3" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT4": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT4": [ { "physical_name": "clk_out4" } ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+652
@@ -0,0 +1,652 @@
|
|||||||
|
{
|
||||||
|
"schema": "xilinx.com:schema:json_instance:1.0",
|
||||||
|
"ip_inst": {
|
||||||
|
"xci_name": "ant_clk_gen_stg1",
|
||||||
|
"component_reference": "xilinx.com:ip:clk_wiz:6.0",
|
||||||
|
"ip_revision": "13",
|
||||||
|
"gen_directory": "../../../../duifei_cmos_1t2r.gen/sources_1/ip/ant_clk_gen_stg1",
|
||||||
|
"parameters": {
|
||||||
|
"component_parameters": {
|
||||||
|
"Component_Name": [ { "value": "ant_clk_gen_stg1", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ0": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ1": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ2": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ3": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"ENABLE_CLOCK_MONITOR": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"OPTIMIZE_CLOCKING_STRUCTURE_EN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK0": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK1": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK2": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK3": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"Enable_PLL0": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"Enable_PLL1": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"REF_CLK_FREQ": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRECISION": [ { "value": "1", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIMITIVE": [ { "value": "MMCM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PRIMTYPE_SEL": [ { "value": "mmcm_adv", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLOCK_MGR_TYPE": [ { "value": "auto", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_FREQ_SYNTH": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_SPREAD_SPECTRUM": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_PHASE_ALIGNMENT": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_MIN_POWER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_DYN_PHASE_SHIFT": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_DYN_RECONFIG": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"JITTER_SEL": [ { "value": "No_Jitter", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PRIM_IN_FREQ": [ { "value": "250", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIM_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"IN_FREQ_UNITS": [ { "value": "Units_MHz", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PHASESHIFT_MODE": [ { "value": "WAVEFORM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"IN_JITTER_UNITS": [ { "value": "Units_UI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"RELATIVE_INCLK": [ { "value": "REL_PRIMARY", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_INCLK_SWITCHOVER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_PORT": [ { "value": "clk_in2", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SECONDARY_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"JITTER_OPTIONS": [ { "value": "UI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKIN1_UI_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN2_UI_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIM_IN_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN1_JITTER_PS": [ { "value": "40.0", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN2_JITTER_PS": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_USED": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT2_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT3_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT4_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT5_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT6_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT7_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"NUM_OUT_CLKS": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLK_OUT1_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT2_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT3_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT4_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT5_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT6_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT7_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PRIMARY_PORT": [ { "value": "clk_in1", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT1_PORT": [ { "value": "clk_out1", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT2_PORT": [ { "value": "clk_out2", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT3_PORT": [ { "value": "clk_out3", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT4_PORT": [ { "value": "clk_out4", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT5_PORT": [ { "value": "clk_out5", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT6_PORT": [ { "value": "clk_out6", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT7_PORT": [ { "value": "clk_out7", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DADDR_PORT": [ { "value": "daddr", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DCLK_PORT": [ { "value": "dclk", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DRDY_PORT": [ { "value": "drdy", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DWE_PORT": [ { "value": "dwe", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIN_PORT": [ { "value": "din", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DOUT_PORT": [ { "value": "dout", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DEN_PORT": [ { "value": "den", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSCLK_PORT": [ { "value": "psclk", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSEN_PORT": [ { "value": "psen", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSINCDEC_PORT": [ { "value": "psincdec", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSDONE_PORT": [ { "value": "psdone", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_OUT_FREQ": [ { "value": "96", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USE_MAX_I_JITTER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_MIN_O_JITTER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT1_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT2_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT3_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT4_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT5_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT6_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT7_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PRIM_SOURCE": [ { "value": "Differential_clock_capable_pin", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT1_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT2_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT3_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT4_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT5_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT6_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT7_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"FEEDBACK_SOURCE": [ { "value": "FDBK_AUTO", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_SIGNALING": [ { "value": "SINGLE", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_PORT": [ { "value": "clkfb_in", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_P_PORT": [ { "value": "clkfb_in_p", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_N_PORT": [ { "value": "clkfb_in_n", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_PORT": [ { "value": "clkfb_out", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_P_PORT": [ { "value": "clkfb_out_p", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_N_PORT": [ { "value": "clkfb_out_n", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLATFORM": [ { "value": "UNKNOWN", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SUMMARY_STRINGS": [ { "value": "empty", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_LOCKED": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CALC_DONE": [ { "value": "empty", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_RESET": [ { "value": "false", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_POWER_DOWN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_STATUS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_FREEZE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLK_VALID": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_INCLK_STOPPED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLKFB_STOPPED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"RESET_PORT": [ { "value": "reset", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"LOCKED_PORT": [ { "value": "locked", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"POWER_DOWN_PORT": [ { "value": "power_down", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_VALID_PORT": [ { "value": "CLK_VALID", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"STATUS_PORT": [ { "value": "STATUS", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_IN_SEL_PORT": [ { "value": "clk_in_sel", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"INPUT_CLK_STOPPED_PORT": [ { "value": "input_clk_stopped", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_STOPPED_PORT": [ { "value": "clkfb_stopped", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SS_MODE": [ { "value": "CENTER_HIGH", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SS_MOD_FREQ": [ { "value": "250", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SS_MOD_TIME": [ { "value": "0.004", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"OVERRIDE_MMCM": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_NOTES": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_DIVCLK_DIVIDE": [ { "value": "5", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_MULT_F": [ { "value": "18.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKIN1_PERIOD": [ { "value": "4.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKIN2_PERIOD": [ { "value": "10.0", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_CASCADE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLOCK_HOLD": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_COMPENSATION": [ { "value": "ZHOLD", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_REF_JITTER1": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_REF_JITTER2": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_STARTUP_WAIT": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_DIVIDE_F": [ { "value": "9.375", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"OVERRIDE_PLL": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PLL_NOTES": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_CLKFBOUT_MULT": [ { "value": "4", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLK_FEEDBACK": [ { "value": "CLKFBOUT", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKIN_PERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_COMPENSATION": [ { "value": "SYSTEM_SYNCHRONOUS", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_REF_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"RESET_TYPE": [ { "value": "ACTIVE_HIGH", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_SAFE_CLOCK_STARTUP": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLOCK_SEQUENCING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT1_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT2_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT3_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT4_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT5_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT6_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT7_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"USE_BOARD_FLOW": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_IN1_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_IN2_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIFF_CLK_IN1_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIFF_CLK_IN2_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"AUTO_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"RESET_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"ENABLE_CDDC": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CDDCDONE_PORT": [ { "value": "cddcdone", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CDDCREQ_PORT": [ { "value": "cddcreq", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"ENABLE_CLKOUTPHY": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUTPHY_REQUESTED_FREQ": [ { "value": "600.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_JITTER": [ { "value": "168.397", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_PHASE_ERROR": [ { "value": "161.614", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"INPUT_MODE": [ { "value": "frequency", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"INTERFACE_SELECTION": [ { "value": "Enable_AXI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"AXI_DRP": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PHASE_DUTY_CONFIG": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ]
|
||||||
|
},
|
||||||
|
"model_parameters": {
|
||||||
|
"C_CLKOUT2_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ0": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_AUTO_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ1": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ2": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ3": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_ENABLE_CLOCK_MONITOR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK0": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK1": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK2": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK3": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_Enable_PLL0": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_Enable_PLL1": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_REF_CLK_FREQ": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRECISION": [ { "value": "1", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT1_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT2_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT3_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT4_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"c_component_name": [ { "value": "ant_clk_gen_stg1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLATFORM": [ { "value": "UNKNOWN", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_FREQ_SYNTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_PHASE_ALIGNMENT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_JITTER_SEL": [ { "value": "No_Jitter", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_MIN_POWER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_MIN_O_JITTER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_MAX_I_JITTER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_DYN_PHASE_SHIFT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_OPTIMIZE_CLOCKING_STRUCTURE_EN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_INCLK_SWITCHOVER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_DYN_RECONFIG": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_SPREAD_SPECTRUM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_FAST_SIMULATION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIMTYPE_SEL": [ { "value": "AUTO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_CLK_VALID": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_FREQ": [ { "value": "250", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_IN_FREQ_UNITS": [ { "value": "Units_MHz", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_FEEDBACK_SOURCE": [ { "value": "FDBK_AUTO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PRIM_SOURCE": [ { "value": "Differential_clock_capable_pin", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PHASESHIFT_MODE": [ { "value": "WAVEFORM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_SIGNALING": [ { "value": "SINGLE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_RESET": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_RESET_LOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_LOCKED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_INCLK_STOPPED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKFB_STOPPED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_POWER_DOWN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_STATUS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_FREEZE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_NUM_OUT_CLKS": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW0": [ { "value": "Input Clock Freq (MHz) Input Jitter (UI)", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW1": [ { "value": "__primary_____________250____________0.010", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW2": [ { "value": "no_secondary_input_clock ", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW0A": [ { "value": " Output Output Phase Duty Cycle Pk-to-Pk Phase", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW0B": [ { "value": " Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW1": [ { "value": "clk_out1__96.00000______0.000______50.0______168.397____161.614", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW2": [ { "value": "no_CLK_OUT2_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW3": [ { "value": "no_CLK_OUT3_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW4": [ { "value": "no_CLK_OUT4_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW5": [ { "value": "no_CLK_OUT5_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW6": [ { "value": "no_CLK_OUT6_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW7": [ { "value": "no_CLK_OUT7_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_OUT_FREQ": [ { "value": "96", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_OUT_FREQ": [ { "value": "96.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USE_SAFE_CLOCK_STARTUP": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLOCK_SEQUENCING": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_NOTES": [ { "value": "None", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_MULT_F": [ { "value": "18.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKIN1_PERIOD": [ { "value": "4.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKIN2_PERIOD": [ { "value": "10.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_CASCADE": [ { "value": "FALSE", "resolve_type": "generated", "format": "bool", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLOCK_HOLD": [ { "value": "FALSE", "resolve_type": "generated", "format": "bool", "usage": "all" } ],
|
||||||
|
"C_MMCM_COMPENSATION": [ { "value": "ZHOLD", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_DIVCLK_DIVIDE": [ { "value": "5", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_REF_JITTER1": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_REF_JITTER2": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_STARTUP_WAIT": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_DIVIDE_F": [ { "value": "9.375", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_NOTES": [ { "value": "No notes", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_CLK_FEEDBACK": [ { "value": "CLKFBOUT", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKFBOUT_MULT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKIN_PERIOD": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_COMPENSATION": [ { "value": "SYSTEM_SYNCHRONOUS", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_REF_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLOCK_MGR_TYPE": [ { "value": "NA", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OVERRIDE_MMCM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_OVERRIDE_PLL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIMARY_PORT": [ { "value": "clk_in1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_PORT": [ { "value": "clk_in2", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT1_PORT": [ { "value": "clk_out1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT2_PORT": [ { "value": "clk_out2", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT3_PORT": [ { "value": "clk_out3", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT4_PORT": [ { "value": "clk_out4", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT5_PORT": [ { "value": "clk_out5", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT6_PORT": [ { "value": "clk_out6", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT7_PORT": [ { "value": "clk_out7", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_RESET_PORT": [ { "value": "reset", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCKED_PORT": [ { "value": "locked", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_PORT": [ { "value": "clkfb_in", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_P_PORT": [ { "value": "clkfb_in_p", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_N_PORT": [ { "value": "clkfb_in_n", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_PORT": [ { "value": "clkfb_out", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_P_PORT": [ { "value": "clkfb_out_p", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_N_PORT": [ { "value": "clkfb_out_n", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_POWER_DOWN_PORT": [ { "value": "power_down", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DADDR_PORT": [ { "value": "daddr", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DCLK_PORT": [ { "value": "dclk", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DRDY_PORT": [ { "value": "drdy", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DWE_PORT": [ { "value": "dwe", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIN_PORT": [ { "value": "din", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DOUT_PORT": [ { "value": "dout", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DEN_PORT": [ { "value": "den", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSCLK_PORT": [ { "value": "psclk", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSEN_PORT": [ { "value": "psen", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSINCDEC_PORT": [ { "value": "psincdec", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSDONE_PORT": [ { "value": "psdone", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_VALID_PORT": [ { "value": "CLK_VALID", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_STATUS_PORT": [ { "value": "STATUS", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_IN_SEL_PORT": [ { "value": "clk_in_sel", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INPUT_CLK_STOPPED_PORT": [ { "value": "input_clk_stopped", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_STOPPED_PORT": [ { "value": "clkfb_stopped", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKIN1_JITTER_PS": [ { "value": "40.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKIN2_JITTER_PS": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SS_MODE": [ { "value": "CENTER_HIGH", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SS_MOD_PERIOD": [ { "value": "4000", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_SS_MOD_TIME": [ { "value": "0.004", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_HAS_CDDC": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CDDCDONE_PORT": [ { "value": "cddcdone", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CDDCREQ_PORT": [ { "value": "cddcreq", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUTPHY_MODE": [ { "value": "VCO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_ENABLE_CLKOUTPHY": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_INTERFACE_SELECTION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_S_AXI_ADDR_WIDTH": [ { "value": "11", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_S_AXI_DATA_WIDTH": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_POWER_REG": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFBOUT_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFBOUT_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVCLK": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_3": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_FILTER_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_FILTER_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE1_AUTO": [ { "value": "1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE2_AUTO": [ { "value": "0.10666666666666667", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE3_AUTO": [ { "value": "0.10666666666666667", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE4_AUTO": [ { "value": "0.10666666666666667", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE5_AUTO": [ { "value": "0.10666666666666667", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE6_AUTO": [ { "value": "0.10666666666666667", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE7_AUTO": [ { "value": "0.10666666666666667", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV1": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV2": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV3": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV4": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV1": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV2": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV3": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV4": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV5": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV6": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV7": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_ACTUAL_FREQ": [ { "value": "96.00000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_M_MAX": [ { "value": "64.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_M_MIN": [ { "value": "2.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_D_MAX": [ { "value": "93.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_D_MIN": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_O_MAX": [ { "value": "128.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_O_MIN": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_VCO_MIN": [ { "value": "600.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_VCO_MAX": [ { "value": "1440.000", "resolve_type": "generated", "format": "float", "usage": "all" } ]
|
||||||
|
},
|
||||||
|
"project_parameters": {
|
||||||
|
"ARCHITECTURE": [ { "value": "zynq" } ],
|
||||||
|
"BASE_BOARD_PART": [ { "value": "" } ],
|
||||||
|
"BOARD_CONNECTIONS": [ { "value": "" } ],
|
||||||
|
"DEVICE": [ { "value": "xc7z100" } ],
|
||||||
|
"PACKAGE": [ { "value": "ffg900" } ],
|
||||||
|
"PREFHDL": [ { "value": "VERILOG" } ],
|
||||||
|
"SILICON_REVISION": [ { "value": "" } ],
|
||||||
|
"SIMULATOR_LANGUAGE": [ { "value": "MIXED" } ],
|
||||||
|
"SPEEDGRADE": [ { "value": "-2" } ],
|
||||||
|
"STATIC_POWER": [ { "value": "" } ],
|
||||||
|
"TEMPERATURE_GRADE": [ { "value": "" } ]
|
||||||
|
},
|
||||||
|
"runtime_parameters": {
|
||||||
|
"IPCONTEXT": [ { "value": "IP_Flow" } ],
|
||||||
|
"IPREVISION": [ { "value": "13" } ],
|
||||||
|
"MANAGED": [ { "value": "TRUE" } ],
|
||||||
|
"OUTPUTDIR": [ { "value": "../../../../duifei_cmos_1t2r.gen/sources_1/ip/ant_clk_gen_stg1" } ],
|
||||||
|
"SELECTEDSIMMODEL": [ { "value": "" } ],
|
||||||
|
"SHAREDDIR": [ { "value": "." } ],
|
||||||
|
"SWVERSION": [ { "value": "2023.2.1" } ],
|
||||||
|
"SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"boundary": {
|
||||||
|
"ports": {
|
||||||
|
"clk_in1_p": [ { "direction": "in", "driver_value": "0" } ],
|
||||||
|
"clk_in1_n": [ { "direction": "in", "driver_value": "0" } ],
|
||||||
|
"clk_out1": [ { "direction": "out" } ],
|
||||||
|
"locked": [ { "direction": "out" } ]
|
||||||
|
},
|
||||||
|
"interfaces": {
|
||||||
|
"CLK_IN1_D": {
|
||||||
|
"vlnv": "xilinx.com:interface:diff_clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:interface:diff_clock_rtl:1.0",
|
||||||
|
"mode": "slave",
|
||||||
|
"parameters": {
|
||||||
|
"BOARD.ASSOCIATED_PARAM": [ { "value": "CLK_IN1_BOARD_INTERFACE", "value_src": "constant", "usage": "all" } ],
|
||||||
|
"CAN_DEBUG": [ { "value": "false", "resolve_type": "generated", "format": "bool", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_N": [ { "physical_name": "clk_in1_n" } ],
|
||||||
|
"CLK_P": [ { "physical_name": "clk_in1_p" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT1": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT1": [ { "physical_name": "clk_out1" } ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+713
@@ -0,0 +1,713 @@
|
|||||||
|
{
|
||||||
|
"schema": "xilinx.com:schema:json_instance:1.0",
|
||||||
|
"ip_inst": {
|
||||||
|
"xci_name": "ant_clk_gen_stg2",
|
||||||
|
"component_reference": "xilinx.com:ip:clk_wiz:6.0",
|
||||||
|
"ip_revision": "13",
|
||||||
|
"gen_directory": "../../../../duifei_cmos_1t2r.gen/sources_1/ip/ant_clk_gen_stg2",
|
||||||
|
"parameters": {
|
||||||
|
"component_parameters": {
|
||||||
|
"Component_Name": [ { "value": "ant_clk_gen_stg2", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ0": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ1": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ2": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USER_CLK_FREQ3": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"ENABLE_CLOCK_MONITOR": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"OPTIMIZE_CLOCKING_STRUCTURE_EN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK0": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK1": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK2": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"ENABLE_USER_CLOCK3": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"Enable_PLL0": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"Enable_PLL1": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"REF_CLK_FREQ": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRECISION": [ { "value": "1", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIMITIVE": [ { "value": "MMCM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PRIMTYPE_SEL": [ { "value": "mmcm_adv", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLOCK_MGR_TYPE": [ { "value": "auto", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_FREQ_SYNTH": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_SPREAD_SPECTRUM": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_PHASE_ALIGNMENT": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_MIN_POWER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_DYN_PHASE_SHIFT": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_DYN_RECONFIG": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"JITTER_SEL": [ { "value": "No_Jitter", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PRIM_IN_FREQ": [ { "value": "96", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIM_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"IN_FREQ_UNITS": [ { "value": "Units_MHz", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PHASESHIFT_MODE": [ { "value": "WAVEFORM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"IN_JITTER_UNITS": [ { "value": "Units_UI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"RELATIVE_INCLK": [ { "value": "REL_PRIMARY", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_INCLK_SWITCHOVER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_PORT": [ { "value": "clk_in2", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SECONDARY_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"JITTER_OPTIONS": [ { "value": "UI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKIN1_UI_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN2_UI_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PRIM_IN_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SECONDARY_IN_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN1_JITTER_PS": [ { "value": "104.16", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKIN2_JITTER_PS": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_USED": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT2_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT3_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT4_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT5_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT6_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT7_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"NUM_OUT_CLKS": [ { "value": "4", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLK_OUT1_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT2_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT3_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT4_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT5_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT6_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_OUT7_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PRIMARY_PORT": [ { "value": "clk_in1", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT1_PORT": [ { "value": "clk_out1", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT2_PORT": [ { "value": "clk_out2", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT3_PORT": [ { "value": "clk_out3", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT4_PORT": [ { "value": "clk_out4", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT5_PORT": [ { "value": "clk_out5", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT6_PORT": [ { "value": "clk_out6", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_OUT7_PORT": [ { "value": "clk_out7", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DADDR_PORT": [ { "value": "daddr", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DCLK_PORT": [ { "value": "dclk", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DRDY_PORT": [ { "value": "drdy", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DWE_PORT": [ { "value": "dwe", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIN_PORT": [ { "value": "din", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DOUT_PORT": [ { "value": "dout", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DEN_PORT": [ { "value": "den", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSCLK_PORT": [ { "value": "psclk", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSEN_PORT": [ { "value": "psen", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSINCDEC_PORT": [ { "value": "psincdec", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PSDONE_PORT": [ { "value": "psdone", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_OUT_FREQ": [ { "value": "96", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_OUT_FREQ": [ { "value": "48", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_OUT_FREQ": [ { "value": "32", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_OUT_FREQ": [ { "value": "19.2", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"USE_MAX_I_JITTER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_MIN_O_JITTER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT1_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT2_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT3_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT4_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT5_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT6_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT7_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PRIM_SOURCE": [ { "value": "Global_buffer", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT1_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT2_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT3_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT4_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT5_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT6_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKOUT7_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"FEEDBACK_SOURCE": [ { "value": "FDBK_AUTO", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_SIGNALING": [ { "value": "SINGLE", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_PORT": [ { "value": "clkfb_in", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_P_PORT": [ { "value": "clkfb_in_p", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_IN_N_PORT": [ { "value": "clkfb_in_n", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_PORT": [ { "value": "clkfb_out", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_P_PORT": [ { "value": "clkfb_out_p", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_OUT_N_PORT": [ { "value": "clkfb_out_n", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLATFORM": [ { "value": "UNKNOWN", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SUMMARY_STRINGS": [ { "value": "empty", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_LOCKED": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CALC_DONE": [ { "value": "empty", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_RESET": [ { "value": "false", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_POWER_DOWN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_STATUS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_FREEZE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLK_VALID": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_INCLK_STOPPED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLKFB_STOPPED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"RESET_PORT": [ { "value": "reset", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"LOCKED_PORT": [ { "value": "locked", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"POWER_DOWN_PORT": [ { "value": "power_down", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_VALID_PORT": [ { "value": "CLK_VALID", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"STATUS_PORT": [ { "value": "STATUS", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_IN_SEL_PORT": [ { "value": "clk_in_sel", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"INPUT_CLK_STOPPED_PORT": [ { "value": "input_clk_stopped", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLKFB_STOPPED_PORT": [ { "value": "clkfb_stopped", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SS_MODE": [ { "value": "CENTER_HIGH", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"SS_MOD_FREQ": [ { "value": "250", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"SS_MOD_TIME": [ { "value": "0.004", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"OVERRIDE_MMCM": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_NOTES": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_DIVCLK_DIVIDE": [ { "value": "1", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_MULT_F": [ { "value": "10.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKFBOUT_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKIN1_PERIOD": [ { "value": "10.417", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKIN2_PERIOD": [ { "value": "10.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_CASCADE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLOCK_HOLD": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_COMPENSATION": [ { "value": "ZHOLD", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"MMCM_REF_JITTER1": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_REF_JITTER2": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_STARTUP_WAIT": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_DIVIDE_F": [ { "value": "10.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT0_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_DIVIDE": [ { "value": "20", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT1_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_DIVIDE": [ { "value": "30", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT2_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_DIVIDE": [ { "value": "50", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT3_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT4_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT5_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"MMCM_CLKOUT6_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"OVERRIDE_PLL": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PLL_NOTES": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_CLKFBOUT_MULT": [ { "value": "4", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLK_FEEDBACK": [ { "value": "CLKFBOUT", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKIN_PERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_COMPENSATION": [ { "value": "SYSTEM_SYNCHRONOUS", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"PLL_REF_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"PLL_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"RESET_TYPE": [ { "value": "ACTIVE_HIGH", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"USE_SAFE_CLOCK_STARTUP": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"USE_CLOCK_SEQUENCING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUT1_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT2_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT3_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT4_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT5_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT6_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"CLKOUT7_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
|
||||||
|
"USE_BOARD_FLOW": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLK_IN1_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CLK_IN2_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIFF_CLK_IN1_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"DIFF_CLK_IN2_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"AUTO_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"RESET_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"ENABLE_CDDC": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CDDCDONE_PORT": [ { "value": "cddcdone", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"CDDCREQ_PORT": [ { "value": "cddcreq", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"ENABLE_CLKOUTPHY": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"CLKOUTPHY_REQUESTED_FREQ": [ { "value": "600.000", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_JITTER": [ { "value": "136.435", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT1_PHASE_ERROR": [ { "value": "101.715", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_JITTER": [ { "value": "158.351", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT2_PHASE_ERROR": [ { "value": "101.715", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_JITTER": [ { "value": "172.426", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT3_PHASE_ERROR": [ { "value": "101.715", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_JITTER": [ { "value": "190.665", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT4_PHASE_ERROR": [ { "value": "101.715", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT5_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT6_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"CLKOUT7_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
|
||||||
|
"INPUT_MODE": [ { "value": "frequency", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"INTERFACE_SELECTION": [ { "value": "Enable_AXI", "resolve_type": "user", "usage": "all" } ],
|
||||||
|
"AXI_DRP": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
|
||||||
|
"PHASE_DUTY_CONFIG": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ]
|
||||||
|
},
|
||||||
|
"model_parameters": {
|
||||||
|
"C_CLKOUT2_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ0": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_AUTO_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ1": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ2": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USER_CLK_FREQ3": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_ENABLE_CLOCK_MONITOR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK0": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK1": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK2": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_ENABLE_USER_CLOCK3": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_Enable_PLL0": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_Enable_PLL1": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_REF_CLK_FREQ": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRECISION": [ { "value": "1", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT1_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT2_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT3_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKOUT4_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"c_component_name": [ { "value": "ant_clk_gen_stg2", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLATFORM": [ { "value": "UNKNOWN", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_FREQ_SYNTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_PHASE_ALIGNMENT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_JITTER_SEL": [ { "value": "No_Jitter", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_MIN_POWER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_MIN_O_JITTER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_MAX_I_JITTER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_DYN_PHASE_SHIFT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_OPTIMIZE_CLOCKING_STRUCTURE_EN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_INCLK_SWITCHOVER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_DYN_RECONFIG": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_SPREAD_SPECTRUM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_FAST_SIMULATION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIMTYPE_SEL": [ { "value": "AUTO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_CLK_VALID": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_FREQ": [ { "value": "96", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRIM_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_IN_FREQ_UNITS": [ { "value": "Units_MHz", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_FEEDBACK_SOURCE": [ { "value": "FDBK_AUTO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PRIM_SOURCE": [ { "value": "Global_buffer", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PHASESHIFT_MODE": [ { "value": "WAVEFORM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_SIGNALING": [ { "value": "SINGLE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_USE_RESET": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_RESET_LOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_LOCKED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_INCLK_STOPPED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLKFB_STOPPED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_POWER_DOWN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_STATUS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_FREEZE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_NUM_OUT_CLKS": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW0": [ { "value": "Input Clock Freq (MHz) Input Jitter (UI)", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW1": [ { "value": "__primary______________96____________0.010", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INCLK_SUM_ROW2": [ { "value": "no_secondary_input_clock ", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW0A": [ { "value": " Output Output Phase Duty Cycle Pk-to-Pk Phase", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW0B": [ { "value": " Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW1": [ { "value": "clk_out1__96.00000______0.000______50.0______136.435____101.715", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW2": [ { "value": "clk_out2__48.00000______0.000______50.0______158.351____101.715", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW3": [ { "value": "clk_out3__32.00000______0.000______50.0______172.426____101.715", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW4": [ { "value": "clk_out4__19.20000______0.000______50.0______190.665____101.715", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW5": [ { "value": "no_CLK_OUT5_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW6": [ { "value": "no_CLK_OUT6_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OUTCLK_SUM_ROW7": [ { "value": "no_CLK_OUT7_output", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_OUT_FREQ": [ { "value": "96", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_OUT_FREQ": [ { "value": "48", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_OUT_FREQ": [ { "value": "32", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_OUT_FREQ": [ { "value": "19.2", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_OUT_FREQ": [ { "value": "96.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_OUT_FREQ": [ { "value": "48.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_OUT_FREQ": [ { "value": "32.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_OUT_FREQ": [ { "value": "19.20000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_USE_SAFE_CLOCK_STARTUP": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_USE_CLOCK_SEQUENCING": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_NOTES": [ { "value": "None", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_MULT_F": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKIN1_PERIOD": [ { "value": "10.417", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKIN2_PERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_CASCADE": [ { "value": "FALSE", "resolve_type": "generated", "format": "bool", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLOCK_HOLD": [ { "value": "FALSE", "resolve_type": "generated", "format": "bool", "usage": "all" } ],
|
||||||
|
"C_MMCM_COMPENSATION": [ { "value": "ZHOLD", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_REF_JITTER1": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_REF_JITTER2": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_STARTUP_WAIT": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_DIVIDE_F": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_DIVIDE": [ { "value": "20", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_DIVIDE": [ { "value": "30", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_DIVIDE": [ { "value": "50", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKFBOUT_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT0_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT1_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT2_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT3_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT4_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT5_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCM_CLKOUT6_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_NOTES": [ { "value": "No notes", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_CLK_FEEDBACK": [ { "value": "CLKFBOUT", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKFBOUT_MULT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKIN_PERIOD": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_COMPENSATION": [ { "value": "SYSTEM_SYNCHRONOUS", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLL_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_REF_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PLL_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLOCK_MGR_TYPE": [ { "value": "NA", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_OVERRIDE_MMCM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_OVERRIDE_PLL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_PRIMARY_PORT": [ { "value": "clk_in1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SECONDARY_PORT": [ { "value": "clk_in2", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT1_PORT": [ { "value": "clk_out1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT2_PORT": [ { "value": "clk_out2", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT3_PORT": [ { "value": "clk_out3", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT4_PORT": [ { "value": "clk_out4", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT5_PORT": [ { "value": "clk_out5", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT6_PORT": [ { "value": "clk_out6", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_OUT7_PORT": [ { "value": "clk_out7", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_RESET_PORT": [ { "value": "reset", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCKED_PORT": [ { "value": "locked", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_PORT": [ { "value": "clkfb_in", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_P_PORT": [ { "value": "clkfb_in_p", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_IN_N_PORT": [ { "value": "clkfb_in_n", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_PORT": [ { "value": "clkfb_out", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_P_PORT": [ { "value": "clkfb_out_p", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_OUT_N_PORT": [ { "value": "clkfb_out_n", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_POWER_DOWN_PORT": [ { "value": "power_down", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DADDR_PORT": [ { "value": "daddr", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DCLK_PORT": [ { "value": "dclk", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DRDY_PORT": [ { "value": "drdy", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DWE_PORT": [ { "value": "dwe", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIN_PORT": [ { "value": "din", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DOUT_PORT": [ { "value": "dout", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DEN_PORT": [ { "value": "den", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSCLK_PORT": [ { "value": "psclk", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSEN_PORT": [ { "value": "psen", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSINCDEC_PORT": [ { "value": "psincdec", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PSDONE_PORT": [ { "value": "psdone", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_VALID_PORT": [ { "value": "CLK_VALID", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_STATUS_PORT": [ { "value": "STATUS", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLK_IN_SEL_PORT": [ { "value": "clk_in_sel", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_INPUT_CLK_STOPPED_PORT": [ { "value": "input_clk_stopped", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFB_STOPPED_PORT": [ { "value": "clkfb_stopped", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKIN1_JITTER_PS": [ { "value": "104.16", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_CLKIN2_JITTER_PS": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SS_MODE": [ { "value": "CENTER_HIGH", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_SS_MOD_PERIOD": [ { "value": "4000", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_SS_MOD_TIME": [ { "value": "0.004", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_HAS_CDDC": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_CDDCDONE_PORT": [ { "value": "cddcdone", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CDDCREQ_PORT": [ { "value": "cddcreq", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUTPHY_MODE": [ { "value": "VCO", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_ENABLE_CLKOUTPHY": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_INTERFACE_SELECTION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_S_AXI_ADDR_WIDTH": [ { "value": "11", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_S_AXI_DATA_WIDTH": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
|
||||||
|
"C_POWER_REG": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFBOUT_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKFBOUT_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVCLK": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_LOCK_3": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_FILTER_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_FILTER_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE1_AUTO": [ { "value": "1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE2_AUTO": [ { "value": "2.0", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE3_AUTO": [ { "value": "3.0", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE4_AUTO": [ { "value": "5.0", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE5_AUTO": [ { "value": "0.1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE6_AUTO": [ { "value": "0.1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_DIVIDE7_AUTO": [ { "value": "0.1", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV1": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV2": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV3": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_PLLBUFGCEDIV4": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV1": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV2": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV3": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV4": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV5": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV6": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_MMCMBUFGCEDIV7": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT7_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT0_ACTUAL_FREQ": [ { "value": "96.00000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT1_ACTUAL_FREQ": [ { "value": "48.00000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT2_ACTUAL_FREQ": [ { "value": "32.00000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT3_ACTUAL_FREQ": [ { "value": "19.20000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT4_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT5_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_CLKOUT6_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ],
|
||||||
|
"C_M_MAX": [ { "value": "64.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_M_MIN": [ { "value": "2.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_D_MAX": [ { "value": "93.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_D_MIN": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_O_MAX": [ { "value": "128.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_O_MIN": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_VCO_MIN": [ { "value": "600.000", "resolve_type": "generated", "format": "float", "usage": "all" } ],
|
||||||
|
"C_VCO_MAX": [ { "value": "1440.000", "resolve_type": "generated", "format": "float", "usage": "all" } ]
|
||||||
|
},
|
||||||
|
"project_parameters": {
|
||||||
|
"ARCHITECTURE": [ { "value": "zynq" } ],
|
||||||
|
"BASE_BOARD_PART": [ { "value": "" } ],
|
||||||
|
"BOARD_CONNECTIONS": [ { "value": "" } ],
|
||||||
|
"DEVICE": [ { "value": "xc7z100" } ],
|
||||||
|
"PACKAGE": [ { "value": "ffg900" } ],
|
||||||
|
"PREFHDL": [ { "value": "VERILOG" } ],
|
||||||
|
"SILICON_REVISION": [ { "value": "" } ],
|
||||||
|
"SIMULATOR_LANGUAGE": [ { "value": "MIXED" } ],
|
||||||
|
"SPEEDGRADE": [ { "value": "-2" } ],
|
||||||
|
"STATIC_POWER": [ { "value": "" } ],
|
||||||
|
"TEMPERATURE_GRADE": [ { "value": "" } ]
|
||||||
|
},
|
||||||
|
"runtime_parameters": {
|
||||||
|
"IPCONTEXT": [ { "value": "IP_Flow" } ],
|
||||||
|
"IPREVISION": [ { "value": "13" } ],
|
||||||
|
"MANAGED": [ { "value": "TRUE" } ],
|
||||||
|
"OUTPUTDIR": [ { "value": "../../../../duifei_cmos_1t2r.gen/sources_1/ip/ant_clk_gen_stg2" } ],
|
||||||
|
"SELECTEDSIMMODEL": [ { "value": "" } ],
|
||||||
|
"SHAREDDIR": [ { "value": "." } ],
|
||||||
|
"SWVERSION": [ { "value": "2023.2.1" } ],
|
||||||
|
"SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"boundary": {
|
||||||
|
"ports": {
|
||||||
|
"clk_in1": [ { "direction": "in" } ],
|
||||||
|
"clk_out1": [ { "direction": "out" } ],
|
||||||
|
"clk_out2": [ { "direction": "out" } ],
|
||||||
|
"clk_out3": [ { "direction": "out" } ],
|
||||||
|
"clk_out4": [ { "direction": "out" } ],
|
||||||
|
"locked": [ { "direction": "out" } ]
|
||||||
|
},
|
||||||
|
"interfaces": {
|
||||||
|
"clock_CLK_IN1": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "slave",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"BOARD.ASSOCIATED_PARAM": [ { "value": "CLK_IN1_BOARD_INTERFACE", "usage": "all", "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_IN1": [ { "physical_name": "clk_in1" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT1": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT1": [ { "physical_name": "clk_out1" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT2": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT2": [ { "physical_name": "clk_out2" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT3": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT3": [ { "physical_name": "clk_out3" } ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock_CLK_OUT4": {
|
||||||
|
"vlnv": "xilinx.com:signal:clock:1.0",
|
||||||
|
"abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
|
||||||
|
"mode": "master",
|
||||||
|
"parameters": {
|
||||||
|
"FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
|
||||||
|
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
|
||||||
|
},
|
||||||
|
"port_maps": {
|
||||||
|
"CLK_OUT4": [ { "physical_name": "clk_out4" } ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+6299
File diff suppressed because it is too large
Load Diff
+6305
File diff suppressed because it is too large
Load Diff
+1631
File diff suppressed because it is too large
Load Diff
+133
@@ -0,0 +1,133 @@
|
|||||||
|
`timescale 1ns / 1ps
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Company:
|
||||||
|
// Engineer:
|
||||||
|
// _ _ ____
|
||||||
|
// | | ___ ___| |__ / ___| __ _ ___
|
||||||
|
// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
|
||||||
|
// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
|
||||||
|
// \___/ \___/|___/_| |_| \____|\__,_|\___/
|
||||||
|
//
|
||||||
|
// Create Date: 2022/11/01 11:15:25
|
||||||
|
// Design Name:
|
||||||
|
// Module Name: clk_dist
|
||||||
|
// Project Name:
|
||||||
|
// Target Devices:
|
||||||
|
// Tool Versions:
|
||||||
|
// Description: Clock distribution module
|
||||||
|
//
|
||||||
|
// Dependencies:
|
||||||
|
//
|
||||||
|
// Revision:
|
||||||
|
// Revision 0.01 - File Created
|
||||||
|
// Additional Comments:
|
||||||
|
//
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
module clk_dist
|
||||||
|
(
|
||||||
|
// input clocks
|
||||||
|
input clk_250m_p , // generated by ad9516, 250mhz
|
||||||
|
input clk_250m_n ,
|
||||||
|
input ad9361_1_rx_data_clk, // ad9361 rx data clock, 83.3333mhz
|
||||||
|
input ad9361_2_rx_data_clk, // ad9361 rx data clock, 83.3333mhz
|
||||||
|
|
||||||
|
// output clocks & reset
|
||||||
|
// global reset
|
||||||
|
output sys_rst , // global reset signal, active high
|
||||||
|
output ant_rst , // phased-array & rf control reset signal, active high
|
||||||
|
|
||||||
|
// pl signal processing clock
|
||||||
|
output sys_clk , // 41.6667mhz
|
||||||
|
output sys_clk_2x , // 83.3333mhz
|
||||||
|
output sys_clk_3x , // 125mhz
|
||||||
|
output sys_clk_4x , // 166.6667mhz
|
||||||
|
output sys_clk_ld , // system main clock locked indicator
|
||||||
|
|
||||||
|
// ad9361-1 clocks
|
||||||
|
output ad9361_1_clk , // 41.6667mhz
|
||||||
|
output ad9361_1_clk_2x , // 83.3333mhz
|
||||||
|
output ad9361_1_clk_3x , // 125mhz
|
||||||
|
output ad9361_1_clk_4x , // 166.6667mhz
|
||||||
|
output ad9361_1_clk_ld , // ad9361-1 clock group locked indicator
|
||||||
|
|
||||||
|
// ad9361-2 clocks
|
||||||
|
output ad9361_2_clk , // 41.6667mhz
|
||||||
|
output ad9361_2_clk_2x , // 83.3333mhz
|
||||||
|
output ad9361_2_clk_3x , // 125mhz
|
||||||
|
output ad9361_2_clk_4x , // 166.6667mhz
|
||||||
|
output ad9361_2_clk_ld , // ad9361-2 clock group locked indicator
|
||||||
|
|
||||||
|
// phased-array & rf control clocks
|
||||||
|
output clk_96m ,
|
||||||
|
output clk_48m ,
|
||||||
|
output clk_32m ,
|
||||||
|
output clk_19p2m
|
||||||
|
);
|
||||||
|
|
||||||
|
assign sys_clk = ad9361_1_clk ;
|
||||||
|
assign sys_clk_2x = ad9361_1_clk_2x;
|
||||||
|
assign sys_clk_3x = ad9361_1_clk_3x;
|
||||||
|
assign sys_clk_4x = ad9361_1_clk_4x;
|
||||||
|
assign sys_clk_ld = ad9361_1_clk_ld;
|
||||||
|
|
||||||
|
assign sys_rst = ~sys_clk_ld;
|
||||||
|
|
||||||
|
ad9361_clk_gen_cmos_2t2r u_ad9361_1_clk_gen
|
||||||
|
(
|
||||||
|
// Clock out ports
|
||||||
|
.clk_out1 (ad9361_1_clk ), // output clk_out1
|
||||||
|
.clk_out2 (ad9361_1_clk_2x ), // output clk_out2
|
||||||
|
.clk_out3 (ad9361_1_clk_3x ), // output clk_out3
|
||||||
|
.clk_out4 (ad9361_1_clk_4x ), // output clk_out4
|
||||||
|
// Status and control signals
|
||||||
|
.locked (ad9361_1_clk_ld ), // output locked
|
||||||
|
// Clock in ports
|
||||||
|
.clk_in1 (ad9361_1_rx_data_clk ) // input clk_in1
|
||||||
|
);
|
||||||
|
|
||||||
|
ad9361_clk_gen_cmos_2t2r u_ad9361_2_clk_gen
|
||||||
|
(
|
||||||
|
// Clock out ports
|
||||||
|
.clk_out1 (ad9361_2_clk ), // output clk_out1
|
||||||
|
.clk_out2 (ad9361_2_clk_2x ), // output clk_out2
|
||||||
|
.clk_out3 (ad9361_2_clk_3x ), // output clk_out3
|
||||||
|
.clk_out4 (ad9361_2_clk_4x ), // output clk_out4
|
||||||
|
// Status and control signals
|
||||||
|
.locked (ad9361_2_clk_ld ), // output locked
|
||||||
|
// Clock in ports
|
||||||
|
.clk_in1 (ad9361_2_rx_data_clk ) // input clk_in1
|
||||||
|
);
|
||||||
|
|
||||||
|
wire ant_clk_stg1_96m;
|
||||||
|
wire ant_clk_stg1_ld;
|
||||||
|
wire ant_clk_stg2_ld;
|
||||||
|
|
||||||
|
assign ant_rst = ~ant_clk_stg2_ld;
|
||||||
|
|
||||||
|
ant_clk_gen_stg1 u_ant_clk_gen_stg1
|
||||||
|
(
|
||||||
|
// Clock out ports
|
||||||
|
.clk_out1 (ant_clk_stg1_96m ), // output clk_out1
|
||||||
|
// Status and control signals
|
||||||
|
.locked (ant_clk_stg1_ld ), // output locked
|
||||||
|
// Clock in ports
|
||||||
|
.clk_in1_p (clk_250m_p ), // input clk_in1_p
|
||||||
|
.clk_in1_n (clk_250m_n ) // input clk_in1_n
|
||||||
|
);
|
||||||
|
|
||||||
|
ant_clk_gen_stg2 u_ant_clk_gen_stg2
|
||||||
|
(
|
||||||
|
// Clock out ports
|
||||||
|
.clk_out1 (clk_96m ), // output clk_out1
|
||||||
|
.clk_out2 (clk_48m ), // output clk_out2
|
||||||
|
.clk_out3 (clk_32m ), // output clk_out3
|
||||||
|
.clk_out4 (clk_19p2m ), // output clk_out4
|
||||||
|
// Status and control signals
|
||||||
|
.locked (ant_clk_stg2_ld ), // output locked
|
||||||
|
// Clock in ports
|
||||||
|
.clk_in1 (ant_clk_stg1_96m ) // input clk_in1
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule
|
||||||
+528
@@ -0,0 +1,528 @@
|
|||||||
|
`timescale 1ns / 1ps
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Company:
|
||||||
|
// Engineer:
|
||||||
|
// _ _ ____
|
||||||
|
// | | ___ ___| |__ / ___| __ _ ___
|
||||||
|
// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
|
||||||
|
// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
|
||||||
|
// \___/ \___/|___/_| |_| \____|\__,_|\___/
|
||||||
|
//
|
||||||
|
// Create Date: 2021/12/14 15:54:11
|
||||||
|
// Design Name:
|
||||||
|
// Module Name: system_top
|
||||||
|
// Project Name:
|
||||||
|
// Target Devices:
|
||||||
|
// Tool Versions:
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
// Dependencies:
|
||||||
|
//
|
||||||
|
// Revision:
|
||||||
|
// Revision 0.01 - File Created
|
||||||
|
// Additional Comments:
|
||||||
|
//
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
module system_top
|
||||||
|
(
|
||||||
|
/***************************************************************************
|
||||||
|
* Contents
|
||||||
|
* 01. Clocks
|
||||||
|
* 02. HMC7044 Interface
|
||||||
|
* 03. AD9361-1 Interface
|
||||||
|
* 04. AD9361-2 Interface
|
||||||
|
* 05. Phased-Array Control
|
||||||
|
* 06. RF Synthesizer Control
|
||||||
|
* 07. Debug IO
|
||||||
|
* 08. DDR and Fixed-io (Do NOT Modify)
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
// *************************************************************************
|
||||||
|
// ******************************** Clocks *********************************
|
||||||
|
// *************************************************************************
|
||||||
|
// fpga logic clock
|
||||||
|
input clk_250m_p , // generated by hmc7044, 250mhz
|
||||||
|
input clk_250m_n ,
|
||||||
|
// ad9361 buffered clock
|
||||||
|
input ad9361_1_buffer_clk , // derived from ad9361 input clock
|
||||||
|
input ad9361_2_buffer_clk , // derived from ad9361 input clock
|
||||||
|
// *************************************************************************
|
||||||
|
// *************************** HMC7044 Interface ***************************
|
||||||
|
// *************************************************************************
|
||||||
|
// spi interface
|
||||||
|
output hmc7044_spi_clk ,
|
||||||
|
output hmc7044_spi_csn ,
|
||||||
|
inout hmc7044_spi_sdio ,
|
||||||
|
// control signals
|
||||||
|
output hmc7044_reset , // hmc7044 active-high reset signal, set to 0 in normal operation
|
||||||
|
output hmc7044_sync , // hmc7044 multichip synchronization signal, set to 0 if not used
|
||||||
|
// gpio
|
||||||
|
inout [ 3:0] hmc7044_gpio ,
|
||||||
|
// *************************************************************************
|
||||||
|
// ************************** AD9361-1 Interface ***************************
|
||||||
|
// *************************************************************************
|
||||||
|
// rx data (rx channels are tied to ground physically)
|
||||||
|
input ad9361_1_rx_data_clk, // ad9361 rx data clock, 96mhz
|
||||||
|
input ad9361_1_rx_frame ,
|
||||||
|
input [11:0] ad9361_1_rx_data ,
|
||||||
|
// tx data
|
||||||
|
output ad9361_1_tx_fb_clk ,
|
||||||
|
output ad9361_1_tx_frame ,
|
||||||
|
output [11:0] ad9361_1_tx_data ,
|
||||||
|
// spi interface
|
||||||
|
output ad9361_1_spi_clk ,
|
||||||
|
output ad9361_1_spi_csn ,
|
||||||
|
output ad9361_1_spi_mosi ,
|
||||||
|
input ad9361_1_spi_miso ,
|
||||||
|
// control signals
|
||||||
|
output ad9361_1_reset_b , // ad9361 active-low reset control
|
||||||
|
output ad9361_1_en_agc , // ad9361 manual agc control
|
||||||
|
output ad9361_1_enable , // ad9361 enable state machine pin control (spi control is also allowed)
|
||||||
|
output ad9361_1_txnrx , // ad9361 enable state machine pin control (spi control is also allowed)
|
||||||
|
input [ 3:0] ad9361_1_ctrl_in ,
|
||||||
|
output [ 7:0] ad9361_1_ctrl_out ,
|
||||||
|
// *************************************************************************
|
||||||
|
// ************************** AD9361-2 Interface ***************************
|
||||||
|
// *************************************************************************
|
||||||
|
// rx data (rx channels are tied to ground physically)
|
||||||
|
input ad9361_2_rx_data_clk,
|
||||||
|
input ad9361_2_rx_frame ,
|
||||||
|
input [11:0] ad9361_2_rx_data ,
|
||||||
|
// tx data
|
||||||
|
output ad9361_2_tx_fb_clk ,
|
||||||
|
output ad9361_2_tx_frame ,
|
||||||
|
output [11:0] ad9361_2_tx_data ,
|
||||||
|
// spi interface
|
||||||
|
output ad9361_2_spi_clk ,
|
||||||
|
output ad9361_2_spi_csn ,
|
||||||
|
output ad9361_2_spi_mosi ,
|
||||||
|
input ad9361_2_spi_miso ,
|
||||||
|
// control signals
|
||||||
|
output ad9361_2_reset_b , // ad9361 active-low reset control
|
||||||
|
output ad9361_2_en_agc , // ad9361 manual agc control
|
||||||
|
output ad9361_2_enable , // ad9361 enable state machine pin control (spi control is also allowed)
|
||||||
|
output ad9361_2_txnrx , // ad9361 enable state machine pin control (spi control is also allowed)
|
||||||
|
input [ 3:0] ad9361_2_ctrl_in ,
|
||||||
|
output [ 7:0] ad9361_2_ctrl_out ,
|
||||||
|
// *************************************************************************
|
||||||
|
// ************************* Phased-Array Control **************************
|
||||||
|
// *************************************************************************
|
||||||
|
output ant_clk ,
|
||||||
|
output ant_en ,
|
||||||
|
output ant_data ,
|
||||||
|
output ant_tr ,
|
||||||
|
output ant_dary ,
|
||||||
|
input ant_dout ,
|
||||||
|
// *************************************************************************
|
||||||
|
// ************************ RF Synthesizer Control *************************
|
||||||
|
// *************************************************************************
|
||||||
|
output rf_standby ,
|
||||||
|
output rf_sw_pll ,
|
||||||
|
output rf_t ,
|
||||||
|
output rf_r ,
|
||||||
|
output rf_sw_bpf ,
|
||||||
|
output rf_sclk1 ,
|
||||||
|
output rf_sdio1 ,
|
||||||
|
output rf_cs1 ,
|
||||||
|
input rf_ld1 ,
|
||||||
|
output rf_sclk2 ,
|
||||||
|
output rf_sdio2 ,
|
||||||
|
output rf_cs2 ,
|
||||||
|
input rf_ld2 ,
|
||||||
|
output rf_sclk3 ,
|
||||||
|
output rf_sdio3 ,
|
||||||
|
output rf_cs3 ,
|
||||||
|
input rf_ld3 ,
|
||||||
|
output rf_tmgc_16 ,
|
||||||
|
output rf_tmgc_8 ,
|
||||||
|
output rf_tmgc_4 ,
|
||||||
|
output rf_tmgc_2 ,
|
||||||
|
output rf_tmgc_1 ,
|
||||||
|
output rf_rmgc_16 ,
|
||||||
|
output rf_rmgc_8 ,
|
||||||
|
output rf_rmgc_4 ,
|
||||||
|
output rf_rmgc_2 ,
|
||||||
|
output rf_rmgc_1 ,
|
||||||
|
output rf_enable ,
|
||||||
|
output rf_sc ,
|
||||||
|
output rf_sd ,
|
||||||
|
output rf_endsyn ,
|
||||||
|
input rf_sdout ,
|
||||||
|
inout rf_dq_wd ,
|
||||||
|
output rf_sw_rx ,
|
||||||
|
// *************************************************************************
|
||||||
|
// ******************************* Debug IO ********************************
|
||||||
|
// *************************************************************************
|
||||||
|
// 3.3v ports
|
||||||
|
output uart1_txd ,
|
||||||
|
input uart1_rxd ,
|
||||||
|
output uart2_txd ,
|
||||||
|
input uart2_rxd ,
|
||||||
|
output uart3_txd ,
|
||||||
|
input uart3_rxd ,
|
||||||
|
// 1.8v ports
|
||||||
|
inout debug_io_1 ,
|
||||||
|
inout debug_io_2 ,
|
||||||
|
// 3.3v ports
|
||||||
|
inout debug_io_3 ,
|
||||||
|
inout debug_io_4 ,
|
||||||
|
inout debug_io_5 ,
|
||||||
|
inout debug_io_6 ,
|
||||||
|
inout debug_io_7 ,
|
||||||
|
// *************************************************************************
|
||||||
|
// ******************* DDR and Fixed-io (Do NOT Modify) ********************
|
||||||
|
// *************************************************************************
|
||||||
|
// ddr
|
||||||
|
inout [14:0] ddr_addr ,
|
||||||
|
inout [ 2:0] ddr_ba ,
|
||||||
|
inout ddr_cas_n ,
|
||||||
|
inout ddr_ck_n ,
|
||||||
|
inout ddr_ck_p ,
|
||||||
|
inout ddr_cke ,
|
||||||
|
inout ddr_cs_n ,
|
||||||
|
inout [ 3:0] ddr_dm ,
|
||||||
|
inout [31:0] ddr_dq ,
|
||||||
|
inout [ 3:0] ddr_dqs_n ,
|
||||||
|
inout [ 3:0] ddr_dqs_p ,
|
||||||
|
inout ddr_odt ,
|
||||||
|
inout ddr_ras_n ,
|
||||||
|
inout ddr_reset_n ,
|
||||||
|
inout ddr_we_n ,
|
||||||
|
// fixed-io
|
||||||
|
inout fixed_io_ddr_vrn ,
|
||||||
|
inout fixed_io_ddr_vrp ,
|
||||||
|
inout [53:0] fixed_io_mio ,
|
||||||
|
inout fixed_io_ps_clk ,
|
||||||
|
inout fixed_io_ps_porb ,
|
||||||
|
inout fixed_io_ps_srstb
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////////////// System Clock Generation ////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// global reset
|
||||||
|
wire sys_rst ; // global reset signal, active high
|
||||||
|
wire ant_rst ; // phased-array & rf control reset signal, active high
|
||||||
|
|
||||||
|
// pl signal processing clock
|
||||||
|
wire sys_clk ; // 48MHz 41.6667MHz
|
||||||
|
wire sys_clk_2x ; // 96MHz 83.3333MHz
|
||||||
|
wire sys_clk_3x ; // 144MHz 125MHz
|
||||||
|
wire sys_clk_4x ; // 192MHz 166.6667MHz
|
||||||
|
wire sys_clk_ld ; // system main clock locked indicator
|
||||||
|
|
||||||
|
// ad9361-1 clocks
|
||||||
|
wire ad9361_1_clk ; // 48MHz 41.6667MHz
|
||||||
|
wire ad9361_1_clk_2x ; // 96MHz 83.3333MHz
|
||||||
|
wire ad9361_1_clk_3x ; // 144MHz 125MHz
|
||||||
|
wire ad9361_1_clk_4x ; // 192MHz 166.6667MHz
|
||||||
|
wire ad9361_1_clk_ld ; // ad9361-1 clock group locked indicator
|
||||||
|
|
||||||
|
// ad9361-2 clocks
|
||||||
|
wire ad9361_2_clk ; // 48MHz 41.6667MHz
|
||||||
|
wire ad9361_2_clk_2x ; // 96MHz 83.3333MHz
|
||||||
|
wire ad9361_2_clk_3x ; // 144MHz 125MHz
|
||||||
|
wire ad9361_2_clk_4x ; // 192MHz 166.6667MHz
|
||||||
|
wire ad9361_2_clk_ld ; // ad9361-2 clock group locked indicator
|
||||||
|
|
||||||
|
// phased-array & rf control clocks
|
||||||
|
wire clk_96m ;
|
||||||
|
wire clk_48m ;
|
||||||
|
wire clk_32m ;
|
||||||
|
wire clk_19p2m ;
|
||||||
|
|
||||||
|
clk_dist u_clk_dist
|
||||||
|
(
|
||||||
|
// input clocks
|
||||||
|
.clk_250m_p (clk_250m_p ), // generated by ad9516, 250mhz
|
||||||
|
.clk_250m_n (clk_250m_n ),
|
||||||
|
.ad9361_1_rx_data_clk(ad9361_1_rx_data_clk), // ad9361 rx data clock, 83.3333mhz
|
||||||
|
.ad9361_2_rx_data_clk(ad9361_2_rx_data_clk), // ad9361 rx data clock, 83.3333mhz
|
||||||
|
|
||||||
|
// output clocks & reset
|
||||||
|
// global reset
|
||||||
|
.sys_rst (sys_rst ), // global reset signal, active high
|
||||||
|
.ant_rst (ant_rst ), // phased-array & rf control reset signal, active high
|
||||||
|
|
||||||
|
// pl signal processing clock
|
||||||
|
.sys_clk (sys_clk ), // 48MHz 41.6667MHz
|
||||||
|
.sys_clk_2x (sys_clk_2x ), // 96MHz 83.3333MHz
|
||||||
|
.sys_clk_3x (sys_clk_3x ), // 144MHz 125MHz
|
||||||
|
.sys_clk_4x (sys_clk_4x ), // 192MHz 166.6667MHz
|
||||||
|
.sys_clk_ld (sys_clk_ld ), // system main clock locked indicator
|
||||||
|
|
||||||
|
// ad9361-1 clocks
|
||||||
|
.ad9361_1_clk (ad9361_1_clk ), // 48MHz 41.6667MHz
|
||||||
|
.ad9361_1_clk_2x (ad9361_1_clk_2x ), // 96MHz 83.3333MHz
|
||||||
|
.ad9361_1_clk_3x (ad9361_1_clk_3x ), // 144MHz 125MHz
|
||||||
|
.ad9361_1_clk_4x (ad9361_1_clk_4x ), // 192MHz 166.6667MHz
|
||||||
|
.ad9361_1_clk_ld (ad9361_1_clk_ld ), // ad9361-1 clock group locked indicator
|
||||||
|
|
||||||
|
// ad9361-2 clocks
|
||||||
|
.ad9361_2_clk (ad9361_2_clk ), // 48MHz 41.6667MHz
|
||||||
|
.ad9361_2_clk_2x (ad9361_2_clk_2x ), // 96MHz 83.3333MHz
|
||||||
|
.ad9361_2_clk_3x (ad9361_2_clk_3x ), // 144MHz 125MHz
|
||||||
|
.ad9361_2_clk_4x (ad9361_2_clk_4x ), // 192MHz 166.6667MHz
|
||||||
|
.ad9361_2_clk_ld (ad9361_2_clk_ld ), // ad9361-2 clock group locked indicator
|
||||||
|
|
||||||
|
// phased-array & rf control clocks
|
||||||
|
.clk_96m (clk_96m ),
|
||||||
|
.clk_48m (clk_48m ),
|
||||||
|
.clk_32m (clk_32m ),
|
||||||
|
.clk_19p2m (clk_19p2m )
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////// Block Design Interface ////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// gpio
|
||||||
|
wire [47:0] gpio_i;
|
||||||
|
wire [47:0] gpio_o;
|
||||||
|
wire [47:0] gpio_t;
|
||||||
|
wire ad9361_rx_fifo_rst;
|
||||||
|
wire spi_sdo_t;
|
||||||
|
|
||||||
|
assign gpio_i[47:39] = gpio_o[47:39];
|
||||||
|
|
||||||
|
// hmc7044
|
||||||
|
assign hmc7044_reset = gpio_o[ 0]; // hmc7044 reset
|
||||||
|
assign hmc7044_sync = gpio_o[ 1]; // hmc7044 multichip synchronization
|
||||||
|
assign hmc7044_gpio[0] = gpio_t[ 2] ? gpio_i[ 2] : gpio_o[ 2];
|
||||||
|
assign hmc7044_gpio[1] = gpio_t[ 3] ? gpio_i[ 3] : gpio_o[ 3];
|
||||||
|
assign hmc7044_gpio[2] = gpio_t[ 4] ? gpio_i[ 4] : gpio_o[ 4];
|
||||||
|
assign hmc7044_gpio[3] = gpio_t[ 5] ? gpio_i[ 5] : gpio_o[ 5];
|
||||||
|
// ad9361-1
|
||||||
|
assign ad9361_1_txnrx = gpio_o[ 6]; // ad9361 enable state machine control
|
||||||
|
assign ad9361_1_enable = gpio_o[ 7]; // ad9361 enable state machine control
|
||||||
|
assign ad9361_1_en_agc = gpio_o[ 8]; // ad9361 agc control
|
||||||
|
assign ad9361_1_reset_b = gpio_o[ 9]; // ad9361 reset
|
||||||
|
assign ad9361_1_ctrl_out = gpio_o[17:10];
|
||||||
|
assign gpio_i[21:18] = ad9361_1_ctrl_in;
|
||||||
|
// ad9361-2
|
||||||
|
assign ad9361_2_txnrx = gpio_o[22]; // ad9361 enable state machine control
|
||||||
|
assign ad9361_2_enable = gpio_o[23]; // ad9361 enable state machine control
|
||||||
|
assign ad9361_2_en_agc = gpio_o[24]; // ad9361 agc control
|
||||||
|
assign ad9361_2_reset_b = gpio_o[25]; // ad9361 reset
|
||||||
|
assign ad9361_2_ctrl_out = gpio_o[33:26];
|
||||||
|
assign gpio_i[37:34] = ad9361_2_ctrl_in;
|
||||||
|
// ad9361 rx fifo reset
|
||||||
|
assign ad9361_rx_fifo_rst = gpio_o[38];
|
||||||
|
// 3-wire spi inout tri-state control
|
||||||
|
assign spi_sdo_t = gpio_o[39];
|
||||||
|
|
||||||
|
// spi interface
|
||||||
|
wire spi_sclk ;
|
||||||
|
wire [ 2:0] spi_cs ;
|
||||||
|
reg spi_sdi ;
|
||||||
|
wire spi_sdo ;
|
||||||
|
|
||||||
|
// hmc7044 - three-wire spi
|
||||||
|
assign hmc7044_spi_clk = spi_sclk;
|
||||||
|
assign hmc7044_spi_csn = spi_cs[0];
|
||||||
|
assign hmc7044_spi_sdio = spi_sdo_t ? 1'bz : spi_sdo;
|
||||||
|
// ad9361-1 - three-wire spi or four-wire spi
|
||||||
|
assign ad9361_1_spi_clk = spi_sclk;
|
||||||
|
assign ad9361_1_spi_csn = spi_cs[1];
|
||||||
|
assign ad9361_1_spi_mosi = spi_sdo_t ? 1'bz : spi_sdo;
|
||||||
|
// ad9361-2 - three-wire spi or four-wire spi
|
||||||
|
assign ad9361_2_spi_clk = spi_sclk;
|
||||||
|
assign ad9361_2_spi_csn = spi_cs[2];
|
||||||
|
assign ad9361_2_spi_mosi = spi_sdo_t ? 1'bz : spi_sdo;
|
||||||
|
// select sdi signal
|
||||||
|
always @(*) begin
|
||||||
|
if (~hmc7044_spi_csn)
|
||||||
|
spi_sdi = hmc7044_spi_sdio;
|
||||||
|
else if (~ad9361_1_spi_csn)
|
||||||
|
spi_sdi = ad9361_1_spi_miso;
|
||||||
|
else if (~ad9361_2_spi_csn)
|
||||||
|
spi_sdi = ad9361_2_spi_miso;
|
||||||
|
else
|
||||||
|
spi_sdi = 1'bz;
|
||||||
|
end
|
||||||
|
|
||||||
|
system_bd_wrapper u_system_bd_wrapper
|
||||||
|
(
|
||||||
|
// ddr
|
||||||
|
.DDR_addr (ddr_addr ), // inout [14:0]DDR_addr
|
||||||
|
.DDR_ba (ddr_ba ), // inout [2:0]DDR_ba
|
||||||
|
.DDR_cas_n (ddr_cas_n ), // inout DDR_cas_n
|
||||||
|
.DDR_ck_n (ddr_ck_n ), // inout DDR_ck_n
|
||||||
|
.DDR_ck_p (ddr_ck_p ), // inout DDR_ck_p
|
||||||
|
.DDR_cke (ddr_cke ), // inout DDR_cke
|
||||||
|
.DDR_cs_n (ddr_cs_n ), // inout DDR_cs_n
|
||||||
|
.DDR_dm (ddr_dm ), // inout [3:0]DDR_dm
|
||||||
|
.DDR_dq (ddr_dq ), // inout [31:0]DDR_dq
|
||||||
|
.DDR_dqs_n (ddr_dqs_n ), // inout [3:0]DDR_dqs_n
|
||||||
|
.DDR_dqs_p (ddr_dqs_p ), // inout [3:0]DDR_dqs_p
|
||||||
|
.DDR_odt (ddr_odt ), // inout DDR_odt
|
||||||
|
.DDR_ras_n (ddr_ras_n ), // inout DDR_ras_n
|
||||||
|
.DDR_reset_n (ddr_reset_n ), // inout DDR_reset_n
|
||||||
|
.DDR_we_n (ddr_we_n ), // inout DDR_we_n
|
||||||
|
|
||||||
|
// fixed-io
|
||||||
|
.FIXED_IO_ddr_vrn (fixed_io_ddr_vrn ), // inout FIXED_IO_ddr_vrn
|
||||||
|
.FIXED_IO_ddr_vrp (fixed_io_ddr_vrp ), // inout FIXED_IO_ddr_vrp
|
||||||
|
.FIXED_IO_mio (fixed_io_mio ), // inout [53:0]FIXED_IO_mio
|
||||||
|
.FIXED_IO_ps_clk (fixed_io_ps_clk ), // inout FIXED_IO_ps_clk
|
||||||
|
.FIXED_IO_ps_porb (fixed_io_ps_porb ), // inout FIXED_IO_ps_porb
|
||||||
|
.FIXED_IO_ps_srstb (fixed_io_ps_srstb ), // inout FIXED_IO_ps_srstb
|
||||||
|
|
||||||
|
// gpio, for control signals
|
||||||
|
.GPIO_I_0 (gpio_i ), // input [47:0]GPIO_I_0
|
||||||
|
.GPIO_O_0 (gpio_o ), // output [47:0]GPIO_O_0
|
||||||
|
.GPIO_T_0 (gpio_t ), // output [47:0]GPIO_T_0
|
||||||
|
|
||||||
|
// spi interface
|
||||||
|
.SPI0_MISO_I_0 (spi_sdi ), // input SPI0_MISO_I_0
|
||||||
|
.SPI0_MOSI_O_0 (spi_sdo ), // output SPI0_MOSI_O_0
|
||||||
|
.SPI0_SCLK_O_0 (spi_sclk ), // output SPI0_SCLK_O_0
|
||||||
|
.SPI0_SS_O_0 (spi_cs[0] ), // output SPI0_SS_O_0
|
||||||
|
.SPI0_SS1_O_0 (spi_cs[1] ), // output SPI0_SS1_O_0
|
||||||
|
.SPI0_SS2_O_0 (spi_cs[2] ) // output SPI0_SS2_O_0
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////// Tx Signal ///////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// baseband signal
|
||||||
|
wire [11:0] tx_data_i;
|
||||||
|
wire [11:0] tx_data_q;
|
||||||
|
|
||||||
|
ad9361_tx_map_cmos_dual u_ad9361_tx_map
|
||||||
|
(
|
||||||
|
.clk_2x_in (ad9361_1_clk_2x ), // input clk_2x_in
|
||||||
|
.clk_in_rst (~ad9361_1_clk_ld ), // input clk_in_rst
|
||||||
|
|
||||||
|
.tx_data_clk (sys_clk ), // input tx_data_clk
|
||||||
|
.tx_data_clk_rst(sys_rst ), // input tx_data_clk_rst
|
||||||
|
|
||||||
|
.tx_ch1_i (tx_data_i ), // input [11:0] tx_ch1_i
|
||||||
|
.tx_ch1_q (tx_data_q ), // input [11:0] tx_ch1_q
|
||||||
|
.tx_ch2_i (tx_data_i ), // input [11:0] tx_ch2_i
|
||||||
|
.tx_ch2_q (tx_data_q ), // input [11:0] tx_ch2_q
|
||||||
|
.clk_out (ad9361_1_tx_fb_clk ), // output clk_out
|
||||||
|
.tx_frame (ad9361_1_tx_frame ), // output tx_frame
|
||||||
|
.tx_data (ad9361_1_tx_data ) // output [11:0] tx_data
|
||||||
|
);
|
||||||
|
|
||||||
|
assign ad9361_2_tx_fb_clk = ad9361_1_tx_fb_clk;
|
||||||
|
// assign ad9361_2_tx_frame = ad9361_1_tx_frame ;
|
||||||
|
// assign ad9361_2_tx_data = ad9361_1_tx_data ;
|
||||||
|
|
||||||
|
// <--------------------------------------------------------------------------->
|
||||||
|
// <--------------------- insert transmitter logic below ---------------------->
|
||||||
|
// <--------------------------------------------------------------------------->
|
||||||
|
wire [ 1:0] waveform_sel;
|
||||||
|
wire sweep_on ;
|
||||||
|
wire [31:0] freq_set ;
|
||||||
|
wire [ 1:0] iq_sel ;
|
||||||
|
wire [ 3:0] bb_rshift ;
|
||||||
|
|
||||||
|
tx_qpsk u_tx_qpsk
|
||||||
|
(
|
||||||
|
.clk (sys_clk ), // input clk
|
||||||
|
.rst (sys_rst ), // input rst
|
||||||
|
.tx_data_i (tx_data_i ), // output [11:0] tx_data_i
|
||||||
|
.tx_data_q (tx_data_q ), // output [11:0] tx_data_q
|
||||||
|
// debug ports
|
||||||
|
.waveform_sel (waveform_sel[1:0] ), // input [ 1:0] waveform_sel
|
||||||
|
.sweep_on (sweep_on ), // input sweep_on
|
||||||
|
.freq_set (freq_set ), // input [31:0] freq_set
|
||||||
|
.iq_sel (iq_sel ), // input [ 1:0] iq_sel
|
||||||
|
.bb_rshift (bb_rshift ) // input [ 3:0] bb_rshift
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////// RF control //////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////// Rx Signals //////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
wire [11:0] rx_ch1_i, rx_ch1_q;
|
||||||
|
wire [11:0] rx_ch2_i, rx_ch2_q;
|
||||||
|
wire [11:0] rx_ch3_i, rx_ch3_q;
|
||||||
|
wire [11:0] rx_ch4_i, rx_ch4_q;
|
||||||
|
|
||||||
|
ad9361_rx_map_cmos_dual u_ad9361_1_rx_map
|
||||||
|
(
|
||||||
|
.clk_2x_in (ad9361_1_clk_2x ), // input clk_2x_in
|
||||||
|
.clk_in_rst (~ad9361_1_clk_ld ), // input clk_in_rst
|
||||||
|
|
||||||
|
.rx_data_clk (sys_clk ), // input rx_data_clk
|
||||||
|
.rx_data_clk_rst(sys_rst ), // input rx_data_clk_rst
|
||||||
|
|
||||||
|
.rx_fifo_rst (ad9361_rx_fifo_rst ), // input rx_fifo_rst
|
||||||
|
|
||||||
|
.rx_frame (ad9361_1_rx_frame ), // input rx_frame
|
||||||
|
.rx_data (ad9361_1_rx_data ), // input [11:0] rx_data
|
||||||
|
.rx_ch1_i (rx_ch1_i ), // output [11:0] rx_ch1_i
|
||||||
|
.rx_ch1_q (rx_ch1_q ), // output [11:0] rx_ch1_q
|
||||||
|
.rx_ch2_i (rx_ch2_i ), // output [11:0] rx_ch2_i
|
||||||
|
.rx_ch2_q (rx_ch2_q ) // output [11:0] rx_ch2_q
|
||||||
|
);
|
||||||
|
|
||||||
|
ad9361_rx_map_cmos_dual u_ad9361_2_rx_map
|
||||||
|
(
|
||||||
|
.clk_2x_in (ad9361_2_clk_2x ), // input clk_2x_in
|
||||||
|
.clk_in_rst (~ad9361_2_clk_ld ), // input clk_in_rst
|
||||||
|
|
||||||
|
.rx_data_clk (sys_clk ), // input rx_data_clk
|
||||||
|
.rx_data_clk_rst(sys_rst ), // input rx_data_clk_rst
|
||||||
|
|
||||||
|
.rx_fifo_rst (ad9361_rx_fifo_rst ), // input rx_fifo_rst
|
||||||
|
|
||||||
|
.rx_frame (ad9361_2_rx_frame ), // input rx_frame
|
||||||
|
.rx_data (ad9361_2_rx_data ), // input [11:0] rx_data
|
||||||
|
.rx_ch1_i (rx_ch3_i ), // output [11:0] rx_ch1_i
|
||||||
|
.rx_ch1_q (rx_ch3_q ), // output [11:0] rx_ch1_q
|
||||||
|
.rx_ch2_i (rx_ch4_i ), // output [11:0] rx_ch2_i
|
||||||
|
.rx_ch2_q (rx_ch4_q ) // output [11:0] rx_ch2_q
|
||||||
|
);
|
||||||
|
|
||||||
|
// <--------------------------------------------------------------------------->
|
||||||
|
// <----------------------- insert receiver logic below ----------------------->
|
||||||
|
// <--------------------------------------------------------------------------->
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////// ILAs and VIOs /////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
ila_2x12x131072 u_ila_tx
|
||||||
|
(
|
||||||
|
.clk (sys_clk ), // input wire clk
|
||||||
|
.probe0 (tx_data_i ), // input wire [11:0] probe0
|
||||||
|
.probe1 (tx_data_q ) // input wire [11:0] probe1
|
||||||
|
);
|
||||||
|
|
||||||
|
ila_8x12x131072 u_ila_rx
|
||||||
|
(
|
||||||
|
.clk (sys_clk ), // input wire clk
|
||||||
|
.probe0 (rx_ch1_i ), // input wire [11:0] probe0
|
||||||
|
.probe1 (rx_ch1_q ), // input wire [11:0] probe1
|
||||||
|
.probe2 (rx_ch2_i ), // input wire [11:0] probe2
|
||||||
|
.probe3 (rx_ch2_q ), // input wire [11:0] probe3
|
||||||
|
.probe4 (rx_ch3_i ), // input wire [11:0] probe4
|
||||||
|
.probe5 (rx_ch3_q ), // input wire [11:0] probe5
|
||||||
|
.probe6 (rx_ch4_i ), // input wire [11:0] probe6
|
||||||
|
.probe7 (rx_ch4_q ) // input wire [11:0] probe7
|
||||||
|
);
|
||||||
|
|
||||||
|
vio_manual_ctrl u_vio_manual_ctrl
|
||||||
|
(
|
||||||
|
.clk (sys_clk ), // input wire clk
|
||||||
|
.probe_out0 (waveform_sel ), // output wire [1 : 0] probe_out0
|
||||||
|
.probe_out1 (sweep_on ), // output wire [0 : 0] probe_out1
|
||||||
|
.probe_out2 (freq_set ), // output wire [31 : 0] probe_out2
|
||||||
|
.probe_out3 (iq_sel ), // output wire [1 : 0] probe_out3
|
||||||
|
.probe_out4 (bb_rshift ) // output wire [3 : 0] probe_out4
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule
|
||||||
BIN
Binary file not shown.
@@ -0,0 +1,637 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Product Version: Vivado v2023.2.1 (64-bit) -->
|
||||||
|
<!-- -->
|
||||||
|
<!-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -->
|
||||||
|
<!-- Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved. -->
|
||||||
|
|
||||||
|
<Project Product="Vivado" Version="7" Minor="65" Path="/home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/duifei_cmos_1t2r.xpr">
|
||||||
|
<DefaultLaunch Dir="$PRUNDIR"/>
|
||||||
|
<Configuration>
|
||||||
|
<Option Name="Id" Val="c861de45c5e64679a446034457d06d8d"/>
|
||||||
|
<Option Name="Part" Val="xc7z100ffg900-2"/>
|
||||||
|
<Option Name="CompiledLibDir" Val="$PCACHEDIR/compile_simlib"/>
|
||||||
|
<Option Name="CompiledLibDirXSim" Val=""/>
|
||||||
|
<Option Name="CompiledLibDirModelSim" Val="$PCACHEDIR/compile_simlib/modelsim"/>
|
||||||
|
<Option Name="CompiledLibDirQuesta" Val="$PCACHEDIR/compile_simlib/questa"/>
|
||||||
|
<Option Name="CompiledLibDirXcelium" Val="$PCACHEDIR/compile_simlib/xcelium"/>
|
||||||
|
<Option Name="CompiledLibDirVCS" Val="$PCACHEDIR/compile_simlib/vcs"/>
|
||||||
|
<Option Name="CompiledLibDirRiviera" Val="$PCACHEDIR/compile_simlib/riviera"/>
|
||||||
|
<Option Name="CompiledLibDirActivehdl" Val="$PCACHEDIR/compile_simlib/activehdl"/>
|
||||||
|
<Option Name="SimulatorInstallDirModelSim" Val=""/>
|
||||||
|
<Option Name="SimulatorInstallDirQuesta" Val=""/>
|
||||||
|
<Option Name="SimulatorInstallDirXcelium" Val=""/>
|
||||||
|
<Option Name="SimulatorInstallDirVCS" Val=""/>
|
||||||
|
<Option Name="SimulatorInstallDirRiviera" Val=""/>
|
||||||
|
<Option Name="SimulatorInstallDirActiveHdl" Val=""/>
|
||||||
|
<Option Name="SimulatorGccInstallDirModelSim" Val=""/>
|
||||||
|
<Option Name="SimulatorGccInstallDirQuesta" Val=""/>
|
||||||
|
<Option Name="SimulatorGccInstallDirXcelium" Val=""/>
|
||||||
|
<Option Name="SimulatorGccInstallDirVCS" Val=""/>
|
||||||
|
<Option Name="SimulatorGccInstallDirRiviera" Val=""/>
|
||||||
|
<Option Name="SimulatorGccInstallDirActiveHdl" Val=""/>
|
||||||
|
<Option Name="SimulatorVersionXsim" Val="2023.2"/>
|
||||||
|
<Option Name="SimulatorVersionModelSim" Val="2023.2"/>
|
||||||
|
<Option Name="SimulatorVersionQuesta" Val="2023.2"/>
|
||||||
|
<Option Name="SimulatorVersionXcelium" Val="23.03.002"/>
|
||||||
|
<Option Name="SimulatorVersionVCS" Val="U-2023.03-1"/>
|
||||||
|
<Option Name="SimulatorVersionRiviera" Val="2022.10"/>
|
||||||
|
<Option Name="SimulatorVersionActiveHdl" Val="14.1"/>
|
||||||
|
<Option Name="SimulatorGccVersionXsim" Val="9.3.0"/>
|
||||||
|
<Option Name="SimulatorGccVersionModelSim" Val="7.4.0"/>
|
||||||
|
<Option Name="SimulatorGccVersionQuesta" Val="7.4.0"/>
|
||||||
|
<Option Name="SimulatorGccVersionXcelium" Val="9.3.0"/>
|
||||||
|
<Option Name="SimulatorGccVersionVCS" Val="9.2.0"/>
|
||||||
|
<Option Name="SimulatorGccVersionRiviera" Val="9.3.0"/>
|
||||||
|
<Option Name="SimulatorGccVersionActiveHdl" Val="9.3.0"/>
|
||||||
|
<Option Name="BoardPart" Val=""/>
|
||||||
|
<Option Name="ActiveSimSet" Val="sim_1"/>
|
||||||
|
<Option Name="DefaultLib" Val="xil_defaultlib"/>
|
||||||
|
<Option Name="ProjectType" Val="Default"/>
|
||||||
|
<Option Name="IPOutputRepo" Val="$PCACHEDIR/ip"/>
|
||||||
|
<Option Name="IPDefaultOutputPath" Val="$PGENDIR/sources_1"/>
|
||||||
|
<Option Name="IPCachePermission" Val="read"/>
|
||||||
|
<Option Name="IPCachePermission" Val="write"/>
|
||||||
|
<Option Name="EnableCoreContainer" Val="FALSE"/>
|
||||||
|
<Option Name="EnableResourceEstimation" Val="FALSE"/>
|
||||||
|
<Option Name="SimCompileState" Val="TRUE"/>
|
||||||
|
<Option Name="CreateRefXciForCoreContainers" Val="FALSE"/>
|
||||||
|
<Option Name="IPUserFilesDir" Val="$PIPUSERFILESDIR"/>
|
||||||
|
<Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
|
||||||
|
<Option Name="EnableBDX" Val="FALSE"/>
|
||||||
|
<Option Name="FeatureSet" Val="FeatureSet_Classic"/>
|
||||||
|
<Option Name="WTXSimLaunchSim" Val="0"/>
|
||||||
|
<Option Name="WTModelSimLaunchSim" Val="0"/>
|
||||||
|
<Option Name="WTQuestaLaunchSim" Val="0"/>
|
||||||
|
<Option Name="WTIesLaunchSim" Val="0"/>
|
||||||
|
<Option Name="WTVcsLaunchSim" Val="0"/>
|
||||||
|
<Option Name="WTRivieraLaunchSim" Val="0"/>
|
||||||
|
<Option Name="WTActivehdlLaunchSim" Val="0"/>
|
||||||
|
<Option Name="WTXSimExportSim" Val="7"/>
|
||||||
|
<Option Name="WTModelSimExportSim" Val="7"/>
|
||||||
|
<Option Name="WTQuestaExportSim" Val="7"/>
|
||||||
|
<Option Name="WTIesExportSim" Val="0"/>
|
||||||
|
<Option Name="WTVcsExportSim" Val="7"/>
|
||||||
|
<Option Name="WTRivieraExportSim" Val="7"/>
|
||||||
|
<Option Name="WTActivehdlExportSim" Val="7"/>
|
||||||
|
<Option Name="GenerateIPUpgradeLog" Val="TRUE"/>
|
||||||
|
<Option Name="XSimRadix" Val="hex"/>
|
||||||
|
<Option Name="XSimTimeUnit" Val="ns"/>
|
||||||
|
<Option Name="XSimArrayDisplayLimit" Val="1024"/>
|
||||||
|
<Option Name="XSimTraceLimit" Val="65536"/>
|
||||||
|
<Option Name="SimTypes" Val="rtl"/>
|
||||||
|
<Option Name="SimTypes" Val="bfm"/>
|
||||||
|
<Option Name="SimTypes" Val="tlm"/>
|
||||||
|
<Option Name="SimTypes" Val="tlm_dpi"/>
|
||||||
|
<Option Name="MEMEnableMemoryMapGeneration" Val="TRUE"/>
|
||||||
|
<Option Name="DcpsUptoDate" Val="TRUE"/>
|
||||||
|
<Option Name="ClassicSocBoot" Val="FALSE"/>
|
||||||
|
<Option Name="LocalIPRepoLeafDirName" Val="ip_repo"/>
|
||||||
|
</Configuration>
|
||||||
|
<FileSets Version="1" Minor="32">
|
||||||
|
<FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1" RelGenDir="$PGENDIR/sources_1">
|
||||||
|
<Filter Type="Srcs"/>
|
||||||
|
<File Path="$PSRCDIR/sources_1/ip/ila_2x12x131072/ila_2x12x131072.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/ip/ad9361_fifo/ad9361_fifo.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/cmpy_18x8/cmpy_18x8.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/dds_32b_8b/dds_32b_8b.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/hop_rom/hop_rom.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/hrc_64_12_025/hrc_64_12_025.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PSRCDIR/sources_1/bd/system_bd/system_bd.bd">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="ImportPath" Val="$PPRDIR/../duifei_basic/duifei_basic.srcs/sources_1/bd/system_bd/system_bd.bd"/>
|
||||||
|
<Attr Name="ImportTime" Val="1706099741"/>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
<CompFileExtendedInfo CompFileName="system_bd.bd" FileRelPathName="ip/system_bd_ila_0_0/system_bd_ila_0_0.xci">
|
||||||
|
<Proxy FileSetName="system_bd_ila_0_0"/>
|
||||||
|
</CompFileExtendedInfo>
|
||||||
|
<CompFileExtendedInfo CompFileName="system_bd.bd" FileRelPathName="ip/system_bd_processing_system7_0_0/system_bd_processing_system7_0_0.xci">
|
||||||
|
<Proxy FileSetName="system_bd_processing_system7_0_0"/>
|
||||||
|
</CompFileExtendedInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_cmos_dual.v">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_cmos_dual.v">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PSRCDIR/sources_1/new/clk_dist.v">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PGENDIR/sources_1/bd/system_bd/hdl/system_bd_wrapper.v">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/new/tx_qpsk.v">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PSRCDIR/sources_1/new/system_top.v">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="ImportPath" Val="$PPRDIR/../duifei_basic/duifei_basic.srcs/sources_1/new/system_top.v"/>
|
||||||
|
<Attr Name="ImportTime" Val="1706099693"/>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/coe/sweep_freq.coe">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../../../vivado_pub/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/coe/hrc_64_12_025.coe">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<Config>
|
||||||
|
<Option Name="DesignMode" Val="RTL"/>
|
||||||
|
<Option Name="TopModule" Val="system_top"/>
|
||||||
|
<Option Name="TopAutoSet" Val="TRUE"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="constrs_1" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1" RelGenDir="$PGENDIR/constrs_1">
|
||||||
|
<Filter Type="Constrs"/>
|
||||||
|
<File Path="$PSRCDIR/constrs_1/new/z7100_hmc7044_2ad9361.xdc">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<File Path="$PSRCDIR/constrs_1/new/z7100_hmc7044_2ad9361_timing.xdc">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<Config>
|
||||||
|
<Option Name="ConstrsType" Val="XDC"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="sim_1" Type="SimulationSrcs" RelSrcDir="$PSRCDIR/sim_1" RelGenDir="$PGENDIR/sim_1">
|
||||||
|
<Filter Type="Srcs"/>
|
||||||
|
<Config>
|
||||||
|
<Option Name="DesignMode" Val="RTL"/>
|
||||||
|
<Option Name="TopModule" Val="system_top"/>
|
||||||
|
<Option Name="TopLib" Val="xil_defaultlib"/>
|
||||||
|
<Option Name="TopAutoSet" Val="TRUE"/>
|
||||||
|
<Option Name="TransportPathDelay" Val="0"/>
|
||||||
|
<Option Name="TransportIntDelay" Val="0"/>
|
||||||
|
<Option Name="SelectedSimModel" Val="rtl"/>
|
||||||
|
<Option Name="PamDesignTestbench" Val=""/>
|
||||||
|
<Option Name="PamDutBypassFile" Val="xil_dut_bypass"/>
|
||||||
|
<Option Name="PamSignalDriverFile" Val="xil_bypass_driver"/>
|
||||||
|
<Option Name="PamPseudoTop" Val="pseudo_tb"/>
|
||||||
|
<Option Name="SrcSet" Val="sources_1"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="utils_1" Type="Utils" RelSrcDir="$PSRCDIR/utils_1" RelGenDir="$PGENDIR/utils_1">
|
||||||
|
<Filter Type="Utils"/>
|
||||||
|
<File Path="$PSRCDIR/utils_1/imports/synth_1/system_top.dcp">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedInSteps" Val="synth_1"/>
|
||||||
|
<Attr Name="AutoDcp" Val="1"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<Config>
|
||||||
|
<Option Name="TopAutoSet" Val="TRUE"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="ad9361_clk_gen_cmos_2t2r" Type="BlockSrcs" RelSrcDir="$PSRCDIR/ad9361_clk_gen_cmos_2t2r" RelGenDir="$PGENDIR/ad9361_clk_gen_cmos_2t2r">
|
||||||
|
<File Path="$PSRCDIR/sources_1/ip/ad9361_clk_gen_cmos_2t2r/ad9361_clk_gen_cmos_2t2r.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<Config>
|
||||||
|
<Option Name="TopModule" Val="ad9361_clk_gen_cmos_2t2r"/>
|
||||||
|
<Option Name="UseBlackboxStub" Val="1"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="ant_clk_gen_stg1" Type="BlockSrcs" RelSrcDir="$PSRCDIR/ant_clk_gen_stg1" RelGenDir="$PGENDIR/ant_clk_gen_stg1">
|
||||||
|
<File Path="$PSRCDIR/sources_1/ip/ant_clk_gen_stg1/ant_clk_gen_stg1.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<Config>
|
||||||
|
<Option Name="TopModule" Val="ant_clk_gen_stg1"/>
|
||||||
|
<Option Name="UseBlackboxStub" Val="1"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="ant_clk_gen_stg2" Type="BlockSrcs" RelSrcDir="$PSRCDIR/ant_clk_gen_stg2" RelGenDir="$PGENDIR/ant_clk_gen_stg2">
|
||||||
|
<File Path="$PSRCDIR/sources_1/ip/ant_clk_gen_stg2/ant_clk_gen_stg2.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<Config>
|
||||||
|
<Option Name="TopModule" Val="ant_clk_gen_stg2"/>
|
||||||
|
<Option Name="UseBlackboxStub" Val="1"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="ila_8x12x131072" Type="BlockSrcs" RelSrcDir="$PSRCDIR/ila_8x12x131072" RelGenDir="$PGENDIR/ila_8x12x131072">
|
||||||
|
<File Path="$PSRCDIR/sources_1/ip/ila_8x12x131072/ila_8x12x131072.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<Config>
|
||||||
|
<Option Name="TopModule" Val="ila_8x12x131072"/>
|
||||||
|
<Option Name="UseBlackboxStub" Val="1"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="vio_manual_ctrl" Type="BlockSrcs" RelSrcDir="$PSRCDIR/vio_manual_ctrl" RelGenDir="$PGENDIR/vio_manual_ctrl">
|
||||||
|
<File Path="$PSRCDIR/sources_1/ip/vio_manual_ctrl/vio_manual_ctrl.xci">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
|
<Config>
|
||||||
|
<Option Name="TopModule" Val="vio_manual_ctrl"/>
|
||||||
|
<Option Name="UseBlackboxStub" Val="1"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="system_bd_processing_system7_0_0" Type="BlockSrcs" RelSrcDir="$PSRCDIR/system_bd_processing_system7_0_0" RelGenDir="$PGENDIR/system_bd_processing_system7_0_0">
|
||||||
|
<Config>
|
||||||
|
<Option Name="TopModule" Val="system_bd_processing_system7_0_0"/>
|
||||||
|
<Option Name="UseBlackboxStub" Val="1"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
<FileSet Name="system_bd_ila_0_0" Type="BlockSrcs" RelSrcDir="$PSRCDIR/system_bd_ila_0_0" RelGenDir="$PGENDIR/system_bd_ila_0_0">
|
||||||
|
<Config>
|
||||||
|
<Option Name="TopModule" Val="system_bd_ila_0_0"/>
|
||||||
|
<Option Name="UseBlackboxStub" Val="1"/>
|
||||||
|
</Config>
|
||||||
|
</FileSet>
|
||||||
|
</FileSets>
|
||||||
|
<Simulators>
|
||||||
|
<Simulator Name="XSim">
|
||||||
|
<Option Name="Description" Val="Vivado Simulator"/>
|
||||||
|
<Option Name="CompiledLib" Val="0"/>
|
||||||
|
</Simulator>
|
||||||
|
<Simulator Name="ModelSim">
|
||||||
|
<Option Name="Description" Val="ModelSim Simulator"/>
|
||||||
|
</Simulator>
|
||||||
|
<Simulator Name="Questa">
|
||||||
|
<Option Name="Description" Val="Questa Advanced Simulator"/>
|
||||||
|
</Simulator>
|
||||||
|
<Simulator Name="Xcelium">
|
||||||
|
<Option Name="Description" Val="Xcelium Parallel Simulator"/>
|
||||||
|
</Simulator>
|
||||||
|
<Simulator Name="VCS">
|
||||||
|
<Option Name="Description" Val="Verilog Compiler Simulator (VCS)"/>
|
||||||
|
</Simulator>
|
||||||
|
<Simulator Name="Riviera">
|
||||||
|
<Option Name="Description" Val="Riviera-PRO Simulator"/>
|
||||||
|
</Simulator>
|
||||||
|
</Simulators>
|
||||||
|
<Runs Version="1" Minor="21">
|
||||||
|
<Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7z100ffg900-2" ConstrsSet="constrs_1" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="true" IncrementalCheckpoint="$PSRCDIR/utils_1/imports/synth_1/system_top.dcp" WriteIncrSynthDcp="false" State="current" Dir="$PRUNDIR/synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/synth_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Step Id="synth_design"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="ad9361_clk_gen_cmos_2t2r_synth_1" Type="Ft3:Synth" SrcSet="ad9361_clk_gen_cmos_2t2r" Part="xc7z100ffg900-2" ConstrsSet="ad9361_clk_gen_cmos_2t2r" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" Dir="$PRUNDIR/ad9361_clk_gen_cmos_2t2r_synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/ad9361_clk_gen_cmos_2t2r_synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/ad9361_clk_gen_cmos_2t2r_synth_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023">
|
||||||
|
<Desc>Vivado Synthesis Defaults</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="synth_design"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="ant_clk_gen_stg1_synth_1" Type="Ft3:Synth" SrcSet="ant_clk_gen_stg1" Part="xc7z100ffg900-2" ConstrsSet="ant_clk_gen_stg1" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" Dir="$PRUNDIR/ant_clk_gen_stg1_synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/ant_clk_gen_stg1_synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/ant_clk_gen_stg1_synth_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023">
|
||||||
|
<Desc>Vivado Synthesis Defaults</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="synth_design"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="ant_clk_gen_stg2_synth_1" Type="Ft3:Synth" SrcSet="ant_clk_gen_stg2" Part="xc7z100ffg900-2" ConstrsSet="ant_clk_gen_stg2" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" Dir="$PRUNDIR/ant_clk_gen_stg2_synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/ant_clk_gen_stg2_synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/ant_clk_gen_stg2_synth_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023">
|
||||||
|
<Desc>Vivado Synthesis Defaults</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="synth_design"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="ila_8x12x131072_synth_1" Type="Ft3:Synth" SrcSet="ila_8x12x131072" Part="xc7z100ffg900-2" ConstrsSet="ila_8x12x131072" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" Dir="$PRUNDIR/ila_8x12x131072_synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/ila_8x12x131072_synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/ila_8x12x131072_synth_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023">
|
||||||
|
<Desc>Vivado Synthesis Defaults</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="synth_design"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="vio_manual_ctrl_synth_1" Type="Ft3:Synth" SrcSet="vio_manual_ctrl" Part="xc7z100ffg900-2" ConstrsSet="vio_manual_ctrl" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" Dir="$PRUNDIR/vio_manual_ctrl_synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/vio_manual_ctrl_synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/vio_manual_ctrl_synth_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023">
|
||||||
|
<Desc>Vivado Synthesis Defaults</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="synth_design"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="system_bd_processing_system7_0_0_synth_1" Type="Ft3:Synth" SrcSet="system_bd_processing_system7_0_0" Part="xc7z100ffg900-2" ConstrsSet="system_bd_processing_system7_0_0" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" Dir="$PRUNDIR/system_bd_processing_system7_0_0_synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/system_bd_processing_system7_0_0_synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/system_bd_processing_system7_0_0_synth_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023">
|
||||||
|
<Desc>Vivado Synthesis Defaults</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="synth_design"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="system_bd_ila_0_0_synth_1" Type="Ft3:Synth" SrcSet="system_bd_ila_0_0" Part="xc7z100ffg900-2" ConstrsSet="system_bd_ila_0_0" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" Dir="$PRUNDIR/system_bd_ila_0_0_synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/system_bd_ila_0_0_synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/system_bd_ila_0_0_synth_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023">
|
||||||
|
<Desc>Vivado Synthesis Defaults</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="synth_design"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7z100ffg900-2" ConstrsSet="constrs_1" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" Dir="$PRUNDIR/impl_1" SynthRun="synth_1" IncludeInArchive="true" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/impl_1" LaunchOptions="-jobs 18 " AutoRQSDir="$PSRCDIR/utils_1/imports/impl_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Step Id="init_design"/>
|
||||||
|
<Step Id="opt_design"/>
|
||||||
|
<Step Id="power_opt_design"/>
|
||||||
|
<Step Id="place_design"/>
|
||||||
|
<Step Id="post_place_power_opt_design"/>
|
||||||
|
<Step Id="phys_opt_design"/>
|
||||||
|
<Step Id="route_design"/>
|
||||||
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
|
<Step Id="write_bitstream"/>
|
||||||
|
</Strategy>
|
||||||
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
|
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="ad9361_clk_gen_cmos_2t2r_impl_1" Type="Ft2:EntireDesign" Part="xc7z100ffg900-2" ConstrsSet="ad9361_clk_gen_cmos_2t2r" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" SynthRun="ad9361_clk_gen_cmos_2t2r_synth_1" IncludeInArchive="false" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/ad9361_clk_gen_cmos_2t2r_impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/ad9361_clk_gen_cmos_2t2r_impl_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023">
|
||||||
|
<Desc>Default settings for Implementation.</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="init_design"/>
|
||||||
|
<Step Id="opt_design"/>
|
||||||
|
<Step Id="power_opt_design"/>
|
||||||
|
<Step Id="place_design"/>
|
||||||
|
<Step Id="post_place_power_opt_design"/>
|
||||||
|
<Step Id="phys_opt_design"/>
|
||||||
|
<Step Id="route_design"/>
|
||||||
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
|
<Step Id="write_bitstream"/>
|
||||||
|
</Strategy>
|
||||||
|
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="ant_clk_gen_stg1_impl_1" Type="Ft2:EntireDesign" Part="xc7z100ffg900-2" ConstrsSet="ant_clk_gen_stg1" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" SynthRun="ant_clk_gen_stg1_synth_1" IncludeInArchive="false" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/ant_clk_gen_stg1_impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/ant_clk_gen_stg1_impl_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023">
|
||||||
|
<Desc>Default settings for Implementation.</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="init_design"/>
|
||||||
|
<Step Id="opt_design"/>
|
||||||
|
<Step Id="power_opt_design"/>
|
||||||
|
<Step Id="place_design"/>
|
||||||
|
<Step Id="post_place_power_opt_design"/>
|
||||||
|
<Step Id="phys_opt_design"/>
|
||||||
|
<Step Id="route_design"/>
|
||||||
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
|
<Step Id="write_bitstream"/>
|
||||||
|
</Strategy>
|
||||||
|
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="ant_clk_gen_stg2_impl_1" Type="Ft2:EntireDesign" Part="xc7z100ffg900-2" ConstrsSet="ant_clk_gen_stg2" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" SynthRun="ant_clk_gen_stg2_synth_1" IncludeInArchive="false" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/ant_clk_gen_stg2_impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/ant_clk_gen_stg2_impl_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023">
|
||||||
|
<Desc>Default settings for Implementation.</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="init_design"/>
|
||||||
|
<Step Id="opt_design"/>
|
||||||
|
<Step Id="power_opt_design"/>
|
||||||
|
<Step Id="place_design"/>
|
||||||
|
<Step Id="post_place_power_opt_design"/>
|
||||||
|
<Step Id="phys_opt_design"/>
|
||||||
|
<Step Id="route_design"/>
|
||||||
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
|
<Step Id="write_bitstream"/>
|
||||||
|
</Strategy>
|
||||||
|
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="ila_8x12x131072_impl_1" Type="Ft2:EntireDesign" Part="xc7z100ffg900-2" ConstrsSet="ila_8x12x131072" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" SynthRun="ila_8x12x131072_synth_1" IncludeInArchive="false" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/ila_8x12x131072_impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/ila_8x12x131072_impl_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023">
|
||||||
|
<Desc>Default settings for Implementation.</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="init_design"/>
|
||||||
|
<Step Id="opt_design"/>
|
||||||
|
<Step Id="power_opt_design"/>
|
||||||
|
<Step Id="place_design"/>
|
||||||
|
<Step Id="post_place_power_opt_design"/>
|
||||||
|
<Step Id="phys_opt_design"/>
|
||||||
|
<Step Id="route_design"/>
|
||||||
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
|
<Step Id="write_bitstream"/>
|
||||||
|
</Strategy>
|
||||||
|
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="vio_manual_ctrl_impl_1" Type="Ft2:EntireDesign" Part="xc7z100ffg900-2" ConstrsSet="vio_manual_ctrl" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" SynthRun="vio_manual_ctrl_synth_1" IncludeInArchive="false" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/vio_manual_ctrl_impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/vio_manual_ctrl_impl_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023">
|
||||||
|
<Desc>Default settings for Implementation.</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="init_design"/>
|
||||||
|
<Step Id="opt_design"/>
|
||||||
|
<Step Id="power_opt_design"/>
|
||||||
|
<Step Id="place_design"/>
|
||||||
|
<Step Id="post_place_power_opt_design"/>
|
||||||
|
<Step Id="phys_opt_design"/>
|
||||||
|
<Step Id="route_design"/>
|
||||||
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
|
<Step Id="write_bitstream"/>
|
||||||
|
</Strategy>
|
||||||
|
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="system_bd_processing_system7_0_0_impl_1" Type="Ft2:EntireDesign" Part="xc7z100ffg900-2" ConstrsSet="system_bd_processing_system7_0_0" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" SynthRun="system_bd_processing_system7_0_0_synth_1" IncludeInArchive="false" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/system_bd_processing_system7_0_0_impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/system_bd_processing_system7_0_0_impl_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023">
|
||||||
|
<Desc>Default settings for Implementation.</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="init_design"/>
|
||||||
|
<Step Id="opt_design"/>
|
||||||
|
<Step Id="power_opt_design"/>
|
||||||
|
<Step Id="place_design"/>
|
||||||
|
<Step Id="post_place_power_opt_design"/>
|
||||||
|
<Step Id="phys_opt_design"/>
|
||||||
|
<Step Id="route_design"/>
|
||||||
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
|
<Step Id="write_bitstream"/>
|
||||||
|
</Strategy>
|
||||||
|
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
<Run Id="system_bd_ila_0_0_impl_1" Type="Ft2:EntireDesign" Part="xc7z100ffg900-2" ConstrsSet="system_bd_ila_0_0" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" SynthRun="system_bd_ila_0_0_synth_1" IncludeInArchive="false" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/system_bd_ila_0_0_impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/system_bd_ila_0_0_impl_1">
|
||||||
|
<Strategy Version="1" Minor="2">
|
||||||
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023">
|
||||||
|
<Desc>Default settings for Implementation.</Desc>
|
||||||
|
</StratHandle>
|
||||||
|
<Step Id="init_design"/>
|
||||||
|
<Step Id="opt_design"/>
|
||||||
|
<Step Id="power_opt_design"/>
|
||||||
|
<Step Id="place_design"/>
|
||||||
|
<Step Id="post_place_power_opt_design"/>
|
||||||
|
<Step Id="phys_opt_design"/>
|
||||||
|
<Step Id="route_design"/>
|
||||||
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
|
<Step Id="write_bitstream"/>
|
||||||
|
</Strategy>
|
||||||
|
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||||
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
|
<RQSFiles/>
|
||||||
|
</Run>
|
||||||
|
</Runs>
|
||||||
|
<Board/>
|
||||||
|
<DashboardSummary Version="1" Minor="0">
|
||||||
|
<Dashboards>
|
||||||
|
<Dashboard Name="default_dashboard">
|
||||||
|
<Gadgets>
|
||||||
|
<Gadget Name="drc_1" Type="drc" Version="1" Row="2" Column="0">
|
||||||
|
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_drc_0 "/>
|
||||||
|
</Gadget>
|
||||||
|
<Gadget Name="methodology_1" Type="methodology" Version="1" Row="2" Column="1">
|
||||||
|
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_methodology_0 "/>
|
||||||
|
</Gadget>
|
||||||
|
<Gadget Name="power_1" Type="power" Version="1" Row="1" Column="0">
|
||||||
|
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_power_0 "/>
|
||||||
|
</Gadget>
|
||||||
|
<Gadget Name="timing_1" Type="timing" Version="1" Row="0" Column="1">
|
||||||
|
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_timing_summary_0 "/>
|
||||||
|
</Gadget>
|
||||||
|
<Gadget Name="utilization_1" Type="utilization" Version="1" Row="0" Column="0">
|
||||||
|
<GadgetParam Name="REPORTS" Type="string_list" Value="synth_1#synth_1_synth_report_utilization_0 "/>
|
||||||
|
<GadgetParam Name="RUN.STEP" Type="string" Value="synth_design"/>
|
||||||
|
<GadgetParam Name="RUN.TYPE" Type="string" Value="synthesis"/>
|
||||||
|
</Gadget>
|
||||||
|
<Gadget Name="utilization_2" Type="utilization" Version="1" Row="1" Column="1">
|
||||||
|
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_place_report_utilization_0 "/>
|
||||||
|
</Gadget>
|
||||||
|
</Gadgets>
|
||||||
|
</Dashboard>
|
||||||
|
<CurrentDashboard>default_dashboard</CurrentDashboard>
|
||||||
|
</Dashboards>
|
||||||
|
</DashboardSummary>
|
||||||
|
</Project>
|
||||||
Binary file not shown.
@@ -0,0 +1,336 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
|
||||||
|
<cconfiguration id="xilinx.gnu.armv7.exe.debug.1922579181">
|
||||||
|
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.armv7.exe.debug.1922579181" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||||
|
|
||||||
|
<externalSettings/>
|
||||||
|
|
||||||
|
<extensions>
|
||||||
|
|
||||||
|
<extension id="com.xilinx.sdk.managedbuilder.XELF.arm.a53.x32" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
</extensions>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
|
||||||
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="xilinx.gnu.armv7.exe.debug.1922579181" name="Debug" parent="xilinx.gnu.armv7.exe.debug" prebuildStep="a9-linaro-pre-build-step">
|
||||||
|
|
||||||
|
<folderInfo id="xilinx.gnu.armv7.exe.debug.1922579181." name="/" resourcePath="">
|
||||||
|
|
||||||
|
<toolChain id="xilinx.gnu.armv7.exe.debug.toolchain.6397833" name="Vitis ARM v7 GNU Toolchain" superClass="xilinx.gnu.armv7.exe.debug.toolchain">
|
||||||
|
|
||||||
|
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.arm.a53.x32" id="xilinx.armv7.target.gnu.base.debug.595896898" isAbstract="false" name="Debug Platform" superClass="xilinx.armv7.target.gnu.base.debug"/>
|
||||||
|
|
||||||
|
<builder buildPath="${workspace_loc:/duifei_cmos}/Debug" enableAutoBuild="true" id="xilinx.gnu.armv7.toolchain.builder.debug.547693526" managedBuildOn="true" name="GNU make.Debug" superClass="xilinx.gnu.armv7.toolchain.builder.debug"/>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.c.toolchain.assembler.debug.1953295836" name="ARM v7 gcc assembler" superClass="xilinx.gnu.armv7.c.toolchain.assembler.debug">
|
||||||
|
|
||||||
|
<inputType id="xilinx.gnu.assembler.input.214008413" superClass="xilinx.gnu.assembler.input"/>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.c.toolchain.compiler.debug.340142942" name="ARM v7 gcc compiler" superClass="xilinx.gnu.armv7.c.toolchain.compiler.debug">
|
||||||
|
|
||||||
|
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1984921397" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.option.debugging.level.1982669170" superClass="xilinx.gnu.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1487603795" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=duifei_cmos,fileType=bspInclude}"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.misc.other.1115529594" superClass="xilinx.gnu.compiler.misc.other" value="-c -fmessage-length=0 -MT"$@" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard" valueType="string"/>
|
||||||
|
|
||||||
|
<inputType id="xilinx.gnu.armv7.c.compiler.input.2110611050" name="C source files" superClass="xilinx.gnu.armv7.c.compiler.input"/>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.cxx.toolchain.compiler.debug.1650796208" name="ARM v7 g++ compiler" superClass="xilinx.gnu.armv7.cxx.toolchain.compiler.debug">
|
||||||
|
|
||||||
|
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.840346476" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.option.debugging.level.1108296474" superClass="xilinx.gnu.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.294937386" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=duifei_cmos,fileType=bspInclude}"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.toolchain.archiver.268205143" name="ARM v7 archiver" superClass="xilinx.gnu.armv7.toolchain.archiver"/>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.c.toolchain.linker.debug.234050966" name="ARM v7 gcc linker" superClass="xilinx.gnu.armv7.c.toolchain.linker.debug">
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1324430527" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=duifei_cmos,fileType=bspLib}"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.linker.inferred.swplatform.flags.366793251" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.c.linker.option.lscript.932687614" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.c.link.option.ldflags.1108521635" superClass="xilinx.gnu.c.link.option.ldflags" value=" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -specs=Xilinx.spec" valueType="string"/>
|
||||||
|
|
||||||
|
<inputType id="xilinx.gnu.linker.input.725635447" superClass="xilinx.gnu.linker.input">
|
||||||
|
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
|
||||||
|
</inputType>
|
||||||
|
|
||||||
|
<inputType id="xilinx.gnu.linker.input.lscript.1023466264" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.cxx.toolchain.linker.debug.1488657506" name="ARM v7 g++ linker" superClass="xilinx.gnu.armv7.cxx.toolchain.linker.debug">
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.111933901" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=duifei_cmos,fileType=bspLib}"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.linker.inferred.swplatform.flags.412326066" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.c.linker.option.lscript.1397000659" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.size.debug.932225883" name="ARM v7 Print Size" superClass="xilinx.gnu.armv7.size.debug"/>
|
||||||
|
|
||||||
|
</toolChain>
|
||||||
|
|
||||||
|
</folderInfo>
|
||||||
|
|
||||||
|
<sourceEntries>
|
||||||
|
|
||||||
|
<entry excluding="_ide" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
|
||||||
|
</sourceEntries>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
|
||||||
|
</cconfiguration>
|
||||||
|
|
||||||
|
<cconfiguration id="xilinx.gnu.armv7.exe.release.1195692792">
|
||||||
|
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.armv7.exe.release.1195692792" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||||
|
|
||||||
|
<externalSettings/>
|
||||||
|
|
||||||
|
<extensions>
|
||||||
|
|
||||||
|
<extension id="com.xilinx.sdk.managedbuilder.XELF.arm.a53.x32" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
</extensions>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
|
||||||
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="xilinx.gnu.armv7.exe.release.1195692792" name="Release" parent="xilinx.gnu.armv7.exe.release" prebuildStep="a9-linaro-pre-build-step">
|
||||||
|
|
||||||
|
<folderInfo id="xilinx.gnu.armv7.exe.release.1195692792." name="/" resourcePath="">
|
||||||
|
|
||||||
|
<toolChain id="xilinx.gnu.armv7.exe.release.toolchain.1206940423" name="Vitis ARM v7 GNU Toolchain" superClass="xilinx.gnu.armv7.exe.release.toolchain">
|
||||||
|
|
||||||
|
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.arm.a53.x32" id="xilinx.armv7.target.gnu.base.release.1750620231" isAbstract="false" name="Release Platform" superClass="xilinx.armv7.target.gnu.base.release"/>
|
||||||
|
|
||||||
|
<builder buildPath="${workspace_loc:/duifei_cmos}/Release" enableAutoBuild="true" id="xilinx.gnu.armv7.toolchain.builder.release.349472528" managedBuildOn="true" name="GNU make.Release" superClass="xilinx.gnu.armv7.toolchain.builder.release"/>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.c.toolchain.assembler.release.1219354178" name="ARM v7 gcc assembler" superClass="xilinx.gnu.armv7.c.toolchain.assembler.release">
|
||||||
|
|
||||||
|
<inputType id="xilinx.gnu.assembler.input.1420679357" superClass="xilinx.gnu.assembler.input"/>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.c.toolchain.compiler.release.1800613106" name="ARM v7 gcc compiler" superClass="xilinx.gnu.armv7.c.toolchain.compiler.release">
|
||||||
|
|
||||||
|
<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.340744156" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.option.debugging.level.1784605729" superClass="xilinx.gnu.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1301534353" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=duifei_cmos,fileType=bspInclude}"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.misc.other.2076232636" superClass="xilinx.gnu.compiler.misc.other" value="-c -fmessage-length=0 -MT"$@" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard" valueType="string"/>
|
||||||
|
|
||||||
|
<inputType id="xilinx.gnu.armv7.c.compiler.input.144407802" name="C source files" superClass="xilinx.gnu.armv7.c.compiler.input"/>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.cxx.toolchain.compiler.release.238332506" name="ARM v7 g++ compiler" superClass="xilinx.gnu.armv7.cxx.toolchain.compiler.release">
|
||||||
|
|
||||||
|
<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.1090745445" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.option.debugging.level.2131070934" superClass="xilinx.gnu.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1664917914" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=duifei_cmos,fileType=bspInclude}"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.toolchain.archiver.109932874" name="ARM v7 archiver" superClass="xilinx.gnu.armv7.toolchain.archiver"/>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.c.toolchain.linker.release.321587554" name="ARM v7 gcc linker" superClass="xilinx.gnu.armv7.c.toolchain.linker.release">
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1715686993" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=duifei_cmos,fileType=bspLib}"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.linker.inferred.swplatform.flags.2003479492" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.c.linker.option.lscript.1574668467" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.c.link.option.ldflags.1858673862" superClass="xilinx.gnu.c.link.option.ldflags" value=" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -specs=Xilinx.spec" valueType="string"/>
|
||||||
|
|
||||||
|
<inputType id="xilinx.gnu.linker.input.851691832" superClass="xilinx.gnu.linker.input">
|
||||||
|
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
|
||||||
|
</inputType>
|
||||||
|
|
||||||
|
<inputType id="xilinx.gnu.linker.input.lscript.1392921746" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.cxx.toolchain.linker.release.1619349892" name="ARM v7 g++ linker" superClass="xilinx.gnu.armv7.cxx.toolchain.linker.release">
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.285862495" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=duifei_cmos,fileType=bspLib}"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.linker.inferred.swplatform.flags.1819123554" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||||
|
|
||||||
|
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option id="xilinx.gnu.c.linker.option.lscript.2050968881" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||||
|
|
||||||
|
</tool>
|
||||||
|
|
||||||
|
<tool id="xilinx.gnu.armv7.size.release.1090450355" name="ARM v7 Print Size" superClass="xilinx.gnu.armv7.size.release"/>
|
||||||
|
|
||||||
|
</toolChain>
|
||||||
|
|
||||||
|
</folderInfo>
|
||||||
|
|
||||||
|
<sourceEntries>
|
||||||
|
|
||||||
|
<entry excluding="_ide" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
|
||||||
|
</sourceEntries>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
|
||||||
|
</cconfiguration>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
|
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
|
||||||
|
<project id="duifei_cmos.xilinx.gnu.armv7.exe.247172068" name="Vitis ARM v7 Executable" projectType="xilinx.gnu.armv7.exe"/>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
|
||||||
|
<scannerConfigBuildInfo instanceId="xilinx.gnu.armv7.exe.debug.1922579181;xilinx.gnu.armv7.exe.debug.1922579181.">
|
||||||
|
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMA53X32GCCManagedMakePerProjectProfileC"/>
|
||||||
|
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
|
||||||
|
<scannerConfigBuildInfo instanceId="xilinx.gnu.armv7.exe.release.1195692792;xilinx.gnu.armv7.exe.release.1195692792.">
|
||||||
|
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMA53X32GCCManagedMakePerProjectProfileC"/>
|
||||||
|
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
|
||||||
|
<scannerConfigBuildInfo instanceId="xilinx.gnu.armv7.exe.release.1195692792;xilinx.gnu.armv7.exe.release.1195692792.;xilinx.gnu.armv7.c.toolchain.compiler.release.1800613106;xilinx.gnu.armv7.c.compiler.input.144407802">
|
||||||
|
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMA53X32GCCManagedMakePerProjectProfileC"/>
|
||||||
|
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
|
||||||
|
<scannerConfigBuildInfo instanceId="xilinx.gnu.armv7.exe.debug.1922579181;xilinx.gnu.armv7.exe.debug.1922579181.;xilinx.gnu.armv7.c.toolchain.compiler.debug.340142942;xilinx.gnu.armv7.c.compiler.input.2110611050">
|
||||||
|
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMA53X32GCCManagedMakePerProjectProfileC"/>
|
||||||
|
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="refreshScope"/>
|
||||||
|
|
||||||
|
</cproject>
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
/Debug/
|
||||||
|
/Release/
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>duifei_cmos</name>
|
||||||
|
<comment>Created by Vitis v2023.2</comment>
|
||||||
|
<projects>
|
||||||
|
<project>duifei_platform</project>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.xilinx.sdx.sdk.core.SdkProjectNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
2358263786
|
||||||
+646
@@ -0,0 +1,646 @@
|
|||||||
|
proc ps7_pll_init_data_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000110 0x003FFFF0 0x000FA220
|
||||||
|
mask_write 0XF8000100 0x0007F000 0x00028000
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000120 0x1F003F30 0x1F000200
|
||||||
|
mask_write 0XF8000114 0x003FFFF0 0x0012C220
|
||||||
|
mask_write 0XF8000104 0x0007F000 0x00020000
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000002
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000124 0xFFF00003 0x0C200003
|
||||||
|
mask_write 0XF8000118 0x003FFFF0 0x001452C0
|
||||||
|
mask_write 0XF8000108 0x0007F000 0x0001E000
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000004
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_clock_init_data_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000128 0x03F03F01 0x00700F01
|
||||||
|
mask_write 0XF800014C 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000158 0x00003F33 0x00000601
|
||||||
|
mask_write 0XF8000168 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000170 0x03F03F30 0x00200500
|
||||||
|
mask_write 0XF80001C4 0x00000001 0x00000001
|
||||||
|
mask_write 0XF800012C 0x01FFCCCD 0x01CC400D
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_ddr_init_data_3_0 {} {
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000084
|
||||||
|
mask_write 0XF8006004 0x0007FFFF 0x00001082
|
||||||
|
mask_write 0XF8006008 0x03FFFFFF 0x03C0780F
|
||||||
|
mask_write 0XF800600C 0x03FFFFFF 0x02001001
|
||||||
|
mask_write 0XF8006010 0x03FFFFFF 0x00014001
|
||||||
|
mask_write 0XF8006014 0x001FFFFF 0x0004285B
|
||||||
|
mask_write 0XF8006018 0xF7FFFFFF 0x44E458D3
|
||||||
|
mask_write 0XF800601C 0xFFFFFFFF 0x7282BCE5
|
||||||
|
mask_write 0XF8006020 0x7FDFFFFC 0x270872D0
|
||||||
|
mask_write 0XF8006024 0x0FFFFFC3 0x00000000
|
||||||
|
mask_write 0XF8006028 0x00003FFF 0x00002007
|
||||||
|
mask_write 0XF800602C 0xFFFFFFFF 0x00000008
|
||||||
|
mask_write 0XF8006030 0xFFFFFFFF 0x00040B30
|
||||||
|
mask_write 0XF8006034 0x13FF3FFF 0x000116D4
|
||||||
|
mask_write 0XF8006038 0x00000003 0x00000000
|
||||||
|
mask_write 0XF800603C 0x000FFFFF 0x00000666
|
||||||
|
mask_write 0XF8006040 0xFFFFFFFF 0xFFFF0000
|
||||||
|
mask_write 0XF8006044 0x0FFFFFFF 0x0F555555
|
||||||
|
mask_write 0XF8006048 0x0003F03F 0x0003C008
|
||||||
|
mask_write 0XF8006050 0xFF0F8FFF 0x77010800
|
||||||
|
mask_write 0XF8006058 0x00010000 0x00000000
|
||||||
|
mask_write 0XF800605C 0x0000FFFF 0x00005003
|
||||||
|
mask_write 0XF8006060 0x000017FF 0x0000003E
|
||||||
|
mask_write 0XF8006064 0x00021FE0 0x00020000
|
||||||
|
mask_write 0XF8006068 0x03FFFFFF 0x00284141
|
||||||
|
mask_write 0XF800606C 0x0000FFFF 0x00001610
|
||||||
|
mask_write 0XF8006078 0x03FFFFFF 0x00466111
|
||||||
|
mask_write 0XF800607C 0x000FFFFF 0x00032222
|
||||||
|
mask_write 0XF80060A4 0xFFFFFFFF 0x10200802
|
||||||
|
mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73
|
||||||
|
mask_write 0XF80060AC 0x000001FF 0x000001FE
|
||||||
|
mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF
|
||||||
|
mask_write 0XF80060B4 0x00000200 0x00000200
|
||||||
|
mask_write 0XF80060B8 0x01FFFFFF 0x00200066
|
||||||
|
mask_write 0XF80060C4 0x00000003 0x00000000
|
||||||
|
mask_write 0XF80060C8 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF80060DC 0x00000001 0x00000000
|
||||||
|
mask_write 0XF80060F0 0x0000FFFF 0x00000000
|
||||||
|
mask_write 0XF80060F4 0x0000000F 0x00000008
|
||||||
|
mask_write 0XF8006114 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF8006118 0x7FFFFFCF 0x40000001
|
||||||
|
mask_write 0XF800611C 0x7FFFFFCF 0x40000001
|
||||||
|
mask_write 0XF8006120 0x7FFFFFCF 0x40000000
|
||||||
|
mask_write 0XF8006124 0x7FFFFFCF 0x40000000
|
||||||
|
mask_write 0XF800612C 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006130 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006134 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006138 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006140 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006144 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006148 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF800614C 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006154 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006158 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF800615C 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006160 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006168 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800616C 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006170 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006174 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800617C 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006180 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006184 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006188 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006190 0x6FFFFEFE 0x00040080
|
||||||
|
mask_write 0XF8006194 0x000FFFFF 0x0001FC82
|
||||||
|
mask_write 0XF8006204 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF8006208 0x000703FF 0x000003FF
|
||||||
|
mask_write 0XF800620C 0x000703FF 0x000003FF
|
||||||
|
mask_write 0XF8006210 0x000703FF 0x000003FF
|
||||||
|
mask_write 0XF8006214 0x000703FF 0x000003FF
|
||||||
|
mask_write 0XF8006218 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF800621C 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006220 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006224 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF80062A8 0x00000FF5 0x00000000
|
||||||
|
mask_write 0XF80062AC 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF80062B0 0x003FFFFF 0x00005125
|
||||||
|
mask_write 0XF80062B4 0x0003FFFF 0x000012A8
|
||||||
|
mask_poll 0XF8000B74 0x00002000
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000085
|
||||||
|
mask_poll 0XF8006054 0x00000007
|
||||||
|
}
|
||||||
|
proc ps7_mio_init_data_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B40 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B44 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B48 0x00000FFF 0x00000672
|
||||||
|
mask_write 0XF8000B4C 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B50 0x00000FFF 0x00000674
|
||||||
|
mask_write 0XF8000B54 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B58 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C
|
||||||
|
mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B6C 0x00007FFF 0x00000220
|
||||||
|
mask_write 0XF8000B70 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000020
|
||||||
|
mask_write 0XF8000B70 0x07FEFFFF 0x00000823
|
||||||
|
mask_write 0XF8000704 0x00003FFF 0x00001602
|
||||||
|
mask_write 0XF8000708 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF800070C 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000710 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000714 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000718 0x00003FFF 0x00000602
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_peripherals_init_data_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B48 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B4C 0x00000180 0x00000000
|
||||||
|
mask_write 0XF8000B50 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B54 0x00000180 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
mask_write 0XE000D000 0x00080000 0x00080000
|
||||||
|
mask_write 0XF8007000 0x20000000 0x00000000
|
||||||
|
}
|
||||||
|
proc ps7_post_config_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000900 0x0000000F 0x0000000F
|
||||||
|
mask_write 0XF8000240 0xFFFFFFFF 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_debug_3_0 {} {
|
||||||
|
mwr -force 0XF8898FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8899FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8809FB0 0xC5ACCE55
|
||||||
|
}
|
||||||
|
proc ps7_pll_init_data_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000110 0x003FFFF0 0x000FA220
|
||||||
|
mask_write 0XF8000100 0x0007F000 0x00028000
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000120 0x1F003F30 0x1F000200
|
||||||
|
mask_write 0XF8000114 0x003FFFF0 0x0012C220
|
||||||
|
mask_write 0XF8000104 0x0007F000 0x00020000
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000002
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000124 0xFFF00003 0x0C200003
|
||||||
|
mask_write 0XF8000118 0x003FFFF0 0x001452C0
|
||||||
|
mask_write 0XF8000108 0x0007F000 0x0001E000
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000004
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_clock_init_data_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000128 0x03F03F01 0x00700F01
|
||||||
|
mask_write 0XF800014C 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000158 0x00003F33 0x00000601
|
||||||
|
mask_write 0XF8000168 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000170 0x03F03F30 0x00200500
|
||||||
|
mask_write 0XF80001C4 0x00000001 0x00000001
|
||||||
|
mask_write 0XF800012C 0x01FFCCCD 0x01CC400D
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_ddr_init_data_2_0 {} {
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000084
|
||||||
|
mask_write 0XF8006004 0x1FFFFFFF 0x00081082
|
||||||
|
mask_write 0XF8006008 0x03FFFFFF 0x03C0780F
|
||||||
|
mask_write 0XF800600C 0x03FFFFFF 0x02001001
|
||||||
|
mask_write 0XF8006010 0x03FFFFFF 0x00014001
|
||||||
|
mask_write 0XF8006014 0x001FFFFF 0x0004285B
|
||||||
|
mask_write 0XF8006018 0xF7FFFFFF 0x44E458D3
|
||||||
|
mask_write 0XF800601C 0xFFFFFFFF 0x7282BCE5
|
||||||
|
mask_write 0XF8006020 0xFFFFFFFC 0x272872D0
|
||||||
|
mask_write 0XF8006024 0x0FFFFFFF 0x0000003C
|
||||||
|
mask_write 0XF8006028 0x00003FFF 0x00002007
|
||||||
|
mask_write 0XF800602C 0xFFFFFFFF 0x00000008
|
||||||
|
mask_write 0XF8006030 0xFFFFFFFF 0x00040B30
|
||||||
|
mask_write 0XF8006034 0x13FF3FFF 0x000116D4
|
||||||
|
mask_write 0XF8006038 0x00001FC3 0x00000000
|
||||||
|
mask_write 0XF800603C 0x000FFFFF 0x00000666
|
||||||
|
mask_write 0XF8006040 0xFFFFFFFF 0xFFFF0000
|
||||||
|
mask_write 0XF8006044 0x0FFFFFFF 0x0F555555
|
||||||
|
mask_write 0XF8006048 0x3FFFFFFF 0x0003C248
|
||||||
|
mask_write 0XF8006050 0xFF0F8FFF 0x77010800
|
||||||
|
mask_write 0XF8006058 0x0001FFFF 0x00000101
|
||||||
|
mask_write 0XF800605C 0x0000FFFF 0x00005003
|
||||||
|
mask_write 0XF8006060 0x000017FF 0x0000003E
|
||||||
|
mask_write 0XF8006064 0x00021FE0 0x00020000
|
||||||
|
mask_write 0XF8006068 0x03FFFFFF 0x00284141
|
||||||
|
mask_write 0XF800606C 0x0000FFFF 0x00001610
|
||||||
|
mask_write 0XF8006078 0x03FFFFFF 0x00466111
|
||||||
|
mask_write 0XF800607C 0x000FFFFF 0x00032222
|
||||||
|
mask_write 0XF80060A0 0x00FFFFFF 0x00008000
|
||||||
|
mask_write 0XF80060A4 0xFFFFFFFF 0x10200802
|
||||||
|
mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73
|
||||||
|
mask_write 0XF80060AC 0x000001FF 0x000001FE
|
||||||
|
mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF
|
||||||
|
mask_write 0XF80060B4 0x000007FF 0x00000200
|
||||||
|
mask_write 0XF80060B8 0x01FFFFFF 0x00200066
|
||||||
|
mask_write 0XF80060C4 0x00000003 0x00000000
|
||||||
|
mask_write 0XF80060C8 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF80060DC 0x00000001 0x00000000
|
||||||
|
mask_write 0XF80060F0 0x0000FFFF 0x00000000
|
||||||
|
mask_write 0XF80060F4 0x0000000F 0x00000008
|
||||||
|
mask_write 0XF8006114 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF8006118 0x7FFFFFFF 0x40000001
|
||||||
|
mask_write 0XF800611C 0x7FFFFFFF 0x40000001
|
||||||
|
mask_write 0XF8006120 0x7FFFFFFF 0x40000000
|
||||||
|
mask_write 0XF8006124 0x7FFFFFFF 0x40000000
|
||||||
|
mask_write 0XF800612C 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006130 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006134 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006138 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006140 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006144 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006148 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF800614C 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006154 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006158 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF800615C 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006160 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006168 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800616C 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006170 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006174 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800617C 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006180 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006184 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006188 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006190 0xFFFFFFFF 0x10040080
|
||||||
|
mask_write 0XF8006194 0x000FFFFF 0x0001FC82
|
||||||
|
mask_write 0XF8006204 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF8006208 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF800620C 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006210 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006214 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006218 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF800621C 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006220 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006224 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF80062A8 0x00000FF7 0x00000000
|
||||||
|
mask_write 0XF80062AC 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF80062B0 0x003FFFFF 0x00005125
|
||||||
|
mask_write 0XF80062B4 0x0003FFFF 0x000012A8
|
||||||
|
mask_poll 0XF8000B74 0x00002000
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000085
|
||||||
|
mask_poll 0XF8006054 0x00000007
|
||||||
|
}
|
||||||
|
proc ps7_mio_init_data_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B40 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B44 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B48 0x00000FFF 0x00000672
|
||||||
|
mask_write 0XF8000B4C 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B50 0x00000FFF 0x00000674
|
||||||
|
mask_write 0XF8000B54 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B58 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C
|
||||||
|
mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B6C 0x00007FFF 0x00000220
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000021
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000020
|
||||||
|
mask_write 0XF8000B70 0x07FFFFFF 0x00000823
|
||||||
|
mask_write 0XF8000704 0x00003FFF 0x00001602
|
||||||
|
mask_write 0XF8000708 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF800070C 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000710 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000714 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000718 0x00003FFF 0x00000602
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_peripherals_init_data_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B48 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B4C 0x00000180 0x00000000
|
||||||
|
mask_write 0XF8000B50 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B54 0x00000180 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
mask_write 0XE000D000 0x00080000 0x00080000
|
||||||
|
mask_write 0XF8007000 0x20000000 0x00000000
|
||||||
|
}
|
||||||
|
proc ps7_post_config_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000900 0x0000000F 0x0000000F
|
||||||
|
mask_write 0XF8000240 0xFFFFFFFF 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_debug_2_0 {} {
|
||||||
|
mwr -force 0XF8898FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8899FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8809FB0 0xC5ACCE55
|
||||||
|
}
|
||||||
|
proc ps7_pll_init_data_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000110 0x003FFFF0 0x000FA220
|
||||||
|
mask_write 0XF8000100 0x0007F000 0x00028000
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000120 0x1F003F30 0x1F000200
|
||||||
|
mask_write 0XF8000114 0x003FFFF0 0x0012C220
|
||||||
|
mask_write 0XF8000104 0x0007F000 0x00020000
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000002
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000124 0xFFF00003 0x0C200003
|
||||||
|
mask_write 0XF8000118 0x003FFFF0 0x001452C0
|
||||||
|
mask_write 0XF8000108 0x0007F000 0x0001E000
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000004
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_clock_init_data_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000128 0x03F03F01 0x00700F01
|
||||||
|
mask_write 0XF800014C 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000158 0x00003F33 0x00000601
|
||||||
|
mask_write 0XF8000168 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000170 0x03F03F30 0x00200500
|
||||||
|
mask_write 0XF80001C4 0x00000001 0x00000001
|
||||||
|
mask_write 0XF800012C 0x01FFCCCD 0x01CC400D
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_ddr_init_data_1_0 {} {
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000084
|
||||||
|
mask_write 0XF8006004 0x1FFFFFFF 0x00081082
|
||||||
|
mask_write 0XF8006008 0x03FFFFFF 0x03C0780F
|
||||||
|
mask_write 0XF800600C 0x03FFFFFF 0x02001001
|
||||||
|
mask_write 0XF8006010 0x03FFFFFF 0x00014001
|
||||||
|
mask_write 0XF8006014 0x001FFFFF 0x0004285B
|
||||||
|
mask_write 0XF8006018 0xF7FFFFFF 0x44E458D3
|
||||||
|
mask_write 0XF800601C 0xFFFFFFFF 0x7282BCE5
|
||||||
|
mask_write 0XF8006020 0xFFFFFFFC 0x272872D0
|
||||||
|
mask_write 0XF8006024 0x0FFFFFFF 0x0000003C
|
||||||
|
mask_write 0XF8006028 0x00003FFF 0x00002007
|
||||||
|
mask_write 0XF800602C 0xFFFFFFFF 0x00000008
|
||||||
|
mask_write 0XF8006030 0xFFFFFFFF 0x00040B30
|
||||||
|
mask_write 0XF8006034 0x13FF3FFF 0x000116D4
|
||||||
|
mask_write 0XF8006038 0x00001FC3 0x00000000
|
||||||
|
mask_write 0XF800603C 0x000FFFFF 0x00000666
|
||||||
|
mask_write 0XF8006040 0xFFFFFFFF 0xFFFF0000
|
||||||
|
mask_write 0XF8006044 0x0FFFFFFF 0x0F555555
|
||||||
|
mask_write 0XF8006048 0x3FFFFFFF 0x0003C248
|
||||||
|
mask_write 0XF8006050 0xFF0F8FFF 0x77010800
|
||||||
|
mask_write 0XF8006058 0x0001FFFF 0x00000101
|
||||||
|
mask_write 0XF800605C 0x0000FFFF 0x00005003
|
||||||
|
mask_write 0XF8006060 0x000017FF 0x0000003E
|
||||||
|
mask_write 0XF8006064 0x00021FE0 0x00020000
|
||||||
|
mask_write 0XF8006068 0x03FFFFFF 0x00284141
|
||||||
|
mask_write 0XF800606C 0x0000FFFF 0x00001610
|
||||||
|
mask_write 0XF80060A0 0x00FFFFFF 0x00008000
|
||||||
|
mask_write 0XF80060A4 0xFFFFFFFF 0x10200802
|
||||||
|
mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73
|
||||||
|
mask_write 0XF80060AC 0x000001FF 0x000001FE
|
||||||
|
mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF
|
||||||
|
mask_write 0XF80060B4 0x000007FF 0x00000200
|
||||||
|
mask_write 0XF80060B8 0x01FFFFFF 0x00200066
|
||||||
|
mask_write 0XF80060C4 0x00000003 0x00000000
|
||||||
|
mask_write 0XF80060C8 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF80060DC 0x00000001 0x00000000
|
||||||
|
mask_write 0XF80060F0 0x0000FFFF 0x00000000
|
||||||
|
mask_write 0XF80060F4 0x0000000F 0x00000008
|
||||||
|
mask_write 0XF8006114 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF8006118 0x7FFFFFFF 0x40000001
|
||||||
|
mask_write 0XF800611C 0x7FFFFFFF 0x40000001
|
||||||
|
mask_write 0XF8006120 0x7FFFFFFF 0x40000000
|
||||||
|
mask_write 0XF8006124 0x7FFFFFFF 0x40000000
|
||||||
|
mask_write 0XF800612C 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006130 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006134 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006138 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006140 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006144 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006148 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF800614C 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006154 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006158 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF800615C 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006160 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006168 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800616C 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006170 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006174 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800617C 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006180 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006184 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006188 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006190 0xFFFFFFFF 0x10040080
|
||||||
|
mask_write 0XF8006194 0x000FFFFF 0x0001FC82
|
||||||
|
mask_write 0XF8006204 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF8006208 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF800620C 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006210 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006214 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006218 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF800621C 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006220 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006224 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF80062A8 0x00000FF7 0x00000000
|
||||||
|
mask_write 0XF80062AC 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF80062B0 0x003FFFFF 0x00005125
|
||||||
|
mask_write 0XF80062B4 0x0003FFFF 0x000012A8
|
||||||
|
mask_poll 0XF8000B74 0x00002000
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000085
|
||||||
|
mask_poll 0XF8006054 0x00000007
|
||||||
|
}
|
||||||
|
proc ps7_mio_init_data_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B40 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B44 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B48 0x00000FFF 0x00000672
|
||||||
|
mask_write 0XF8000B4C 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B50 0x00000FFF 0x00000674
|
||||||
|
mask_write 0XF8000B54 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B58 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C
|
||||||
|
mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B6C 0x000073FF 0x00000220
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000021
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000020
|
||||||
|
mask_write 0XF8000B70 0x07FFFFFF 0x00000823
|
||||||
|
mask_write 0XF8000704 0x00003FFF 0x00001602
|
||||||
|
mask_write 0XF8000708 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF800070C 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000710 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000714 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000718 0x00003FFF 0x00000602
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_peripherals_init_data_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B48 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B4C 0x00000180 0x00000000
|
||||||
|
mask_write 0XF8000B50 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B54 0x00000180 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
mask_write 0XE000D000 0x00080000 0x00080000
|
||||||
|
mask_write 0XF8007000 0x20000000 0x00000000
|
||||||
|
}
|
||||||
|
proc ps7_post_config_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000900 0x0000000F 0x0000000F
|
||||||
|
mask_write 0XF8000240 0xFFFFFFFF 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_debug_1_0 {} {
|
||||||
|
mwr -force 0XF8898FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8899FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8809FB0 0xC5ACCE55
|
||||||
|
}
|
||||||
|
set PCW_SILICON_VER_1_0 "0x0"
|
||||||
|
set PCW_SILICON_VER_2_0 "0x1"
|
||||||
|
set PCW_SILICON_VER_3_0 "0x2"
|
||||||
|
set APU_FREQ 666666666
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
proc mask_poll { addr mask } {
|
||||||
|
set count 1
|
||||||
|
set curval "0x[string range [mrd $addr] end-8 end]"
|
||||||
|
set maskedval [expr {$curval & $mask}]
|
||||||
|
while { $maskedval == 0 } {
|
||||||
|
set curval "0x[string range [mrd $addr] end-8 end]"
|
||||||
|
set maskedval [expr {$curval & $mask}]
|
||||||
|
set count [ expr { $count + 1 } ]
|
||||||
|
if { $count == 100000000 } {
|
||||||
|
puts "Timeout Reached. Mask poll failed at ADDRESS: $addr MASK: $mask"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
proc mask_delay { addr val } {
|
||||||
|
set delay [ get_number_of_cycles_for_delay $val ]
|
||||||
|
perf_reset_and_start_timer
|
||||||
|
set curval "0x[string range [mrd $addr] end-8 end]"
|
||||||
|
set maskedval [expr {$curval < $delay}]
|
||||||
|
while { $maskedval == 1 } {
|
||||||
|
set curval "0x[string range [mrd $addr] end-8 end]"
|
||||||
|
set maskedval [expr {$curval < $delay}]
|
||||||
|
}
|
||||||
|
perf_reset_clock
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ps_version { } {
|
||||||
|
set si_ver "0x[string range [mrd 0xF8007080] end-8 end]"
|
||||||
|
set mask_sil_ver "0x[expr {$si_ver >> 28}]"
|
||||||
|
return $mask_sil_ver;
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ps7_post_config {} {
|
||||||
|
set saved_mode [configparams force-mem-accesses]
|
||||||
|
configparams force-mem-accesses 1
|
||||||
|
|
||||||
|
variable PCW_SILICON_VER_1_0
|
||||||
|
variable PCW_SILICON_VER_2_0
|
||||||
|
variable PCW_SILICON_VER_3_0
|
||||||
|
set sil_ver [ps_version]
|
||||||
|
|
||||||
|
if { $sil_ver == $PCW_SILICON_VER_1_0} {
|
||||||
|
ps7_post_config_1_0
|
||||||
|
} elseif { $sil_ver == $PCW_SILICON_VER_2_0 } {
|
||||||
|
ps7_post_config_2_0
|
||||||
|
} else {
|
||||||
|
ps7_post_config_3_0
|
||||||
|
}
|
||||||
|
configparams force-mem-accesses $saved_mode
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ps7_debug {} {
|
||||||
|
variable PCW_SILICON_VER_1_0
|
||||||
|
variable PCW_SILICON_VER_2_0
|
||||||
|
variable PCW_SILICON_VER_3_0
|
||||||
|
set sil_ver [ps_version]
|
||||||
|
|
||||||
|
if { $sil_ver == $PCW_SILICON_VER_1_0} {
|
||||||
|
ps7_debug_1_0
|
||||||
|
} elseif { $sil_ver == $PCW_SILICON_VER_2_0 } {
|
||||||
|
ps7_debug_2_0
|
||||||
|
} else {
|
||||||
|
ps7_debug_3_0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
proc ps7_init {} {
|
||||||
|
variable PCW_SILICON_VER_1_0
|
||||||
|
variable PCW_SILICON_VER_2_0
|
||||||
|
variable PCW_SILICON_VER_3_0
|
||||||
|
set sil_ver [ps_version]
|
||||||
|
if { $sil_ver == $PCW_SILICON_VER_1_0} {
|
||||||
|
ps7_mio_init_data_1_0
|
||||||
|
ps7_pll_init_data_1_0
|
||||||
|
ps7_clock_init_data_1_0
|
||||||
|
ps7_ddr_init_data_1_0
|
||||||
|
ps7_peripherals_init_data_1_0
|
||||||
|
#puts "PCW Silicon Version : 1.0"
|
||||||
|
} elseif { $sil_ver == $PCW_SILICON_VER_2_0 } {
|
||||||
|
ps7_mio_init_data_2_0
|
||||||
|
ps7_pll_init_data_2_0
|
||||||
|
ps7_clock_init_data_2_0
|
||||||
|
ps7_ddr_init_data_2_0
|
||||||
|
ps7_peripherals_init_data_2_0
|
||||||
|
#puts "PCW Silicon Version : 2.0"
|
||||||
|
} else {
|
||||||
|
ps7_mio_init_data_3_0
|
||||||
|
ps7_pll_init_data_3_0
|
||||||
|
ps7_clock_init_data_3_0
|
||||||
|
ps7_ddr_init_data_3_0
|
||||||
|
ps7_peripherals_init_data_3_0
|
||||||
|
#puts "PCW Silicon Version : 3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# For delay calculation using global timer
|
||||||
|
|
||||||
|
# start timer
|
||||||
|
proc perf_start_clock { } {
|
||||||
|
|
||||||
|
#writing SCU_GLOBAL_TIMER_CONTROL register
|
||||||
|
|
||||||
|
mask_write 0xF8F00208 0x00000109 0x00000009
|
||||||
|
}
|
||||||
|
|
||||||
|
# stop timer and reset timer count regs
|
||||||
|
proc perf_reset_clock { } {
|
||||||
|
perf_disable_clock
|
||||||
|
mask_write 0xF8F00200 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0xF8F00204 0xFFFFFFFF 0x00000000
|
||||||
|
}
|
||||||
|
|
||||||
|
# Compute mask for given delay in miliseconds
|
||||||
|
proc get_number_of_cycles_for_delay { delay } {
|
||||||
|
|
||||||
|
# GTC is always clocked at 1/2 of the CPU frequency (CPU_3x2x)
|
||||||
|
variable APU_FREQ
|
||||||
|
return [ expr ($delay * $APU_FREQ /(2 * 1000))]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# stop timer
|
||||||
|
proc perf_disable_clock {} {
|
||||||
|
mask_write 0xF8F00208 0xFFFFFFFF 0x00000000
|
||||||
|
}
|
||||||
|
|
||||||
|
proc perf_reset_and_start_timer {} {
|
||||||
|
perf_reset_clock
|
||||||
|
perf_start_clock
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="ASCII"?>
|
||||||
|
<sdkproject:SdkProject xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sdkproject="http://www.xilinx.com/sdkproject" name="duifei_cmos" location="/home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/vitis/duifei_cmos" platform="/home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/vitis/duifei_platform/export/duifei_platform/duifei_platform.xpfm" platformUID="xilinx:::0.0(custom)" systemProject="duifei_cmos_system" sysConfig="duifei_platform" runtime="C/C++" cpu="standalone_domain" cpuInstance="ps7_cortexa9_0" os="standalone" mssSignature="dc4c634824bf159397371bd4302d29fe">
|
||||||
|
<configuration name="Debug" id="xilinx.gnu.armv7.exe.debug.1922579181" dirty="true">
|
||||||
|
<configBuildOptions xsi:type="sdkproject:SdkOptions"/>
|
||||||
|
<lastBuildOptions xsi:type="sdkproject:SdkOptions"/>
|
||||||
|
</configuration>
|
||||||
|
<configuration name="Release" id="xilinx.gnu.armv7.exe.release.1195692792" dirty="true">
|
||||||
|
<configBuildOptions xsi:type="sdkproject:SdkOptions"/>
|
||||||
|
</configuration>
|
||||||
|
<template appTemplateName="empty_application"/>
|
||||||
|
</sdkproject:SdkProject>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Empty application. Add your own sources.
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
*startfile:
|
||||||
|
crti%O%s crtbegin%O%s
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* Description: Global configurations.
|
||||||
|
*
|
||||||
|
* Date: 2021-04-28 13:19
|
||||||
|
* Last Edit Time: 2022-05-23 20:32
|
||||||
|
*
|
||||||
|
* Revisions: Rev 0.0
|
||||||
|
* History:
|
||||||
|
* [2021-04-28]: Initial edition.
|
||||||
|
*
|
||||||
|
* Copyright(c) 2021 Beijing Institute of Technology.
|
||||||
|
* Lab of Communication and Networking
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef CONFIG_H_
|
||||||
|
#define CONFIG_H_
|
||||||
|
|
||||||
|
#define XILINX_PLATFORM
|
||||||
|
|
||||||
|
#include "xparameters.h"
|
||||||
|
#include "xparameters_ps.h"
|
||||||
|
|
||||||
|
|
||||||
|
/********* Zynq Platform Configs **********/
|
||||||
|
|
||||||
|
#define HAVE_VERBOSE_MESSAGES /* Recommended during development prints errors and warnings */
|
||||||
|
//#define HAVE_DEBUG_MESSAGES /* For Debug purposes only */
|
||||||
|
|
||||||
|
// interrupt controller
|
||||||
|
#define INTC_DEVICE_ID XPAR_SCUGIC_SINGLE_DEVICE_ID
|
||||||
|
|
||||||
|
// gpio
|
||||||
|
#define GPIO_DEVICE_ID XPAR_PS7_GPIO_0_DEVICE_ID
|
||||||
|
#define GPIO_INTR_ID XPS_GPIO_INT_ID
|
||||||
|
#define GPIO_OFFSET 54
|
||||||
|
#define GPIO_INPUT 0
|
||||||
|
#define GPIO_OUTPUT 1
|
||||||
|
#define GPIO_DISABLE 0
|
||||||
|
#define GPIO_ENABLE 1
|
||||||
|
|
||||||
|
// spi
|
||||||
|
#define SPI_DEVICE_ID XPAR_PS7_SPI_0_DEVICE_ID
|
||||||
|
#define SPI_INTR_ID XPS_SPI0_INT_ID
|
||||||
|
|
||||||
|
// hmc7044
|
||||||
|
#define HMC7044_RESET GPIO_OFFSET+0
|
||||||
|
#define HMC7044_SYNC GPIO_OFFSET+1
|
||||||
|
#define HMC7044_GPIO_0 GPIO_OFFSET+2
|
||||||
|
#define HMC7044_GPIO_1 GPIO_OFFSET+3
|
||||||
|
#define HMC7044_GPIO_2 GPIO_OFFSET+4
|
||||||
|
#define HMC7044_GPIO_3 GPIO_OFFSET+5
|
||||||
|
// ad9361-1
|
||||||
|
#define AD9361_1_TXNRX GPIO_OFFSET+6
|
||||||
|
#define AD9361_1_ENABLE GPIO_OFFSET+7
|
||||||
|
#define AD9361_1_EN_AGC GPIO_OFFSET+8
|
||||||
|
#define AD9361_1_RESET_B GPIO_OFFSET+9
|
||||||
|
#define AD9361_1_CTRL_OUT0 GPIO_OFFSET+10
|
||||||
|
#define AD9361_1_CTRL_OUT1 GPIO_OFFSET+11
|
||||||
|
#define AD9361_1_CTRL_OUT2 GPIO_OFFSET+12
|
||||||
|
#define AD9361_1_CTRL_OUT3 GPIO_OFFSET+13
|
||||||
|
#define AD9361_1_CTRL_OUT4 GPIO_OFFSET+14
|
||||||
|
#define AD9361_1_CTRL_OUT5 GPIO_OFFSET+15
|
||||||
|
#define AD9361_1_CTRL_OUT6 GPIO_OFFSET+16
|
||||||
|
#define AD9361_1_CTRL_OUT7 GPIO_OFFSET+17
|
||||||
|
#define AD9361_1_CTRL_IN0 GPIO_OFFSET+18
|
||||||
|
#define AD9361_1_CTRL_IN1 GPIO_OFFSET+19
|
||||||
|
#define AD9361_1_CTRL_IN2 GPIO_OFFSET+20
|
||||||
|
#define AD9361_1_CTRL_IN3 GPIO_OFFSET+21
|
||||||
|
// ad9361-2
|
||||||
|
#define AD9361_2_TXNRX GPIO_OFFSET+22
|
||||||
|
#define AD9361_2_ENABLE GPIO_OFFSET+23
|
||||||
|
#define AD9361_2_EN_AGC GPIO_OFFSET+24
|
||||||
|
#define AD9361_2_RESET_B GPIO_OFFSET+25
|
||||||
|
#define AD9361_2_CTRL_OUT0 GPIO_OFFSET+26
|
||||||
|
#define AD9361_2_CTRL_OUT1 GPIO_OFFSET+27
|
||||||
|
#define AD9361_2_CTRL_OUT2 GPIO_OFFSET+28
|
||||||
|
#define AD9361_2_CTRL_OUT3 GPIO_OFFSET+29
|
||||||
|
#define AD9361_2_CTRL_OUT4 GPIO_OFFSET+30
|
||||||
|
#define AD9361_2_CTRL_OUT5 GPIO_OFFSET+31
|
||||||
|
#define AD9361_2_CTRL_OUT6 GPIO_OFFSET+32
|
||||||
|
#define AD9361_2_CTRL_OUT7 GPIO_OFFSET+33
|
||||||
|
#define AD9361_2_CTRL_IN0 GPIO_OFFSET+34
|
||||||
|
#define AD9361_2_CTRL_IN1 GPIO_OFFSET+35
|
||||||
|
#define AD9361_2_CTRL_IN2 GPIO_OFFSET+36
|
||||||
|
#define AD9361_2_CTRL_IN3 GPIO_OFFSET+37
|
||||||
|
|
||||||
|
#define AD9361_SYNC GPIO_OFFSET+38
|
||||||
|
#define AD9361_RX_FIFO_RST GPIO_OFFSET+39
|
||||||
|
#define AD9361_1_CAL_START GPIO_OFFSET+40
|
||||||
|
#define AD9361_2_CAL_START GPIO_OFFSET+41
|
||||||
|
#define AD9361_RECAL GPIO_OFFSET+42
|
||||||
|
#define AD9361_TX_SWITCH GPIO_OFFSET+44
|
||||||
|
#define AD9361_1_CAL_DONE GPIO_OFFSET+44
|
||||||
|
#define AD9361_2_CAL_DONE GPIO_OFFSET+45
|
||||||
|
#define AD9361_CAL_RESULT GPIO_OFFSET+46
|
||||||
|
|
||||||
|
#define SPI_CS_HMC7044 0x00
|
||||||
|
#define SPI_CS_AD9361_1 0x01
|
||||||
|
#define SPI_CS_AD9361_2 0x02
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,293 @@
|
|||||||
|
/*******************************************************************/
|
||||||
|
/* */
|
||||||
|
/* This file is automatically generated by linker script generator.*/
|
||||||
|
/* */
|
||||||
|
/* Version: 2018.3 */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) 2010-2019 Xilinx, Inc. All rights reserved. */
|
||||||
|
/* */
|
||||||
|
/* Description : Cortex-A9 Linker Script */
|
||||||
|
/* */
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x2000;
|
||||||
|
_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x2000;
|
||||||
|
|
||||||
|
_ABORT_STACK_SIZE = DEFINED(_ABORT_STACK_SIZE) ? _ABORT_STACK_SIZE : 1024;
|
||||||
|
_SUPERVISOR_STACK_SIZE = DEFINED(_SUPERVISOR_STACK_SIZE) ? _SUPERVISOR_STACK_SIZE : 2048;
|
||||||
|
_IRQ_STACK_SIZE = DEFINED(_IRQ_STACK_SIZE) ? _IRQ_STACK_SIZE : 1024;
|
||||||
|
_FIQ_STACK_SIZE = DEFINED(_FIQ_STACK_SIZE) ? _FIQ_STACK_SIZE : 1024;
|
||||||
|
_UNDEF_STACK_SIZE = DEFINED(_UNDEF_STACK_SIZE) ? _UNDEF_STACK_SIZE : 1024;
|
||||||
|
|
||||||
|
/* Define Memories in the system */
|
||||||
|
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
ps7_ddr_0 : ORIGIN = 0x100000, LENGTH = 0x1FF00000
|
||||||
|
ps7_qspi_linear_0 : ORIGIN = 0xFC000000, LENGTH = 0x1000000
|
||||||
|
ps7_ram_0 : ORIGIN = 0x0, LENGTH = 0x30000
|
||||||
|
ps7_ram_1 : ORIGIN = 0xFFFF0000, LENGTH = 0xFE00
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Specify the default entry point to the program */
|
||||||
|
|
||||||
|
ENTRY(_vector_table)
|
||||||
|
|
||||||
|
/* Define the sections, and where they are mapped in memory */
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.text : {
|
||||||
|
. = ALIGN(2048);
|
||||||
|
KEEP (*(.vectors))
|
||||||
|
*(.boot)
|
||||||
|
*(.text)
|
||||||
|
*(.text.*)
|
||||||
|
*(.gnu.linkonce.t.*)
|
||||||
|
*(.plt)
|
||||||
|
*(.gnu_warning)
|
||||||
|
*(.gcc_execpt_table)
|
||||||
|
*(.glue_7)
|
||||||
|
*(.glue_7t)
|
||||||
|
*(.vfp11_veneer)
|
||||||
|
*(.ARM.extab)
|
||||||
|
*(.gnu.linkonce.armextab.*)
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.init : {
|
||||||
|
KEEP (*(.init))
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.fini : {
|
||||||
|
KEEP (*(.fini))
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.rodata : {
|
||||||
|
__rodata_start = .;
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata.*)
|
||||||
|
*(.gnu.linkonce.r.*)
|
||||||
|
__rodata_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.rodata1 : {
|
||||||
|
__rodata1_start = .;
|
||||||
|
*(.rodata1)
|
||||||
|
*(.rodata1.*)
|
||||||
|
__rodata1_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.sdata2 : {
|
||||||
|
__sdata2_start = .;
|
||||||
|
*(.sdata2)
|
||||||
|
*(.sdata2.*)
|
||||||
|
*(.gnu.linkonce.s2.*)
|
||||||
|
__sdata2_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.sbss2 : {
|
||||||
|
__sbss2_start = .;
|
||||||
|
*(.sbss2)
|
||||||
|
*(.sbss2.*)
|
||||||
|
*(.gnu.linkonce.sb2.*)
|
||||||
|
__sbss2_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.data : {
|
||||||
|
__data_start = .;
|
||||||
|
*(.data)
|
||||||
|
*(.data.*)
|
||||||
|
*(.gnu.linkonce.d.*)
|
||||||
|
*(.jcr)
|
||||||
|
*(.got)
|
||||||
|
*(.got.plt)
|
||||||
|
__data_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.data1 : {
|
||||||
|
__data1_start = .;
|
||||||
|
*(.data1)
|
||||||
|
*(.data1.*)
|
||||||
|
__data1_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.got : {
|
||||||
|
*(.got)
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.note.gnu.build-id : {
|
||||||
|
KEEP (*(.note.gnu.build-id))
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.ctors : {
|
||||||
|
__CTOR_LIST__ = .;
|
||||||
|
___CTORS_LIST___ = .;
|
||||||
|
KEEP (*crtbegin.o(.ctors))
|
||||||
|
KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))
|
||||||
|
KEEP (*(SORT(.ctors.*)))
|
||||||
|
KEEP (*(.ctors))
|
||||||
|
__CTOR_END__ = .;
|
||||||
|
___CTORS_END___ = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.dtors : {
|
||||||
|
__DTOR_LIST__ = .;
|
||||||
|
___DTORS_LIST___ = .;
|
||||||
|
KEEP (*crtbegin.o(.dtors))
|
||||||
|
KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))
|
||||||
|
KEEP (*(SORT(.dtors.*)))
|
||||||
|
KEEP (*(.dtors))
|
||||||
|
__DTOR_END__ = .;
|
||||||
|
___DTORS_END___ = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.fixup : {
|
||||||
|
__fixup_start = .;
|
||||||
|
*(.fixup)
|
||||||
|
__fixup_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.eh_frame : {
|
||||||
|
*(.eh_frame)
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.eh_framehdr : {
|
||||||
|
__eh_framehdr_start = .;
|
||||||
|
*(.eh_framehdr)
|
||||||
|
__eh_framehdr_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.gcc_except_table : {
|
||||||
|
*(.gcc_except_table)
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.mmu_tbl (ALIGN(16384)) : {
|
||||||
|
__mmu_tbl_start = .;
|
||||||
|
*(.mmu_tbl)
|
||||||
|
__mmu_tbl_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.ARM.exidx : {
|
||||||
|
__exidx_start = .;
|
||||||
|
*(.ARM.exidx*)
|
||||||
|
*(.gnu.linkonce.armexidix.*.*)
|
||||||
|
__exidx_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.preinit_array : {
|
||||||
|
__preinit_array_start = .;
|
||||||
|
KEEP (*(SORT(.preinit_array.*)))
|
||||||
|
KEEP (*(.preinit_array))
|
||||||
|
__preinit_array_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.init_array : {
|
||||||
|
__init_array_start = .;
|
||||||
|
KEEP (*(SORT(.init_array.*)))
|
||||||
|
KEEP (*(.init_array))
|
||||||
|
__init_array_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.fini_array : {
|
||||||
|
__fini_array_start = .;
|
||||||
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
|
KEEP (*(.fini_array))
|
||||||
|
__fini_array_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.ARM.attributes : {
|
||||||
|
__ARM.attributes_start = .;
|
||||||
|
*(.ARM.attributes)
|
||||||
|
__ARM.attributes_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.sdata : {
|
||||||
|
__sdata_start = .;
|
||||||
|
*(.sdata)
|
||||||
|
*(.sdata.*)
|
||||||
|
*(.gnu.linkonce.s.*)
|
||||||
|
__sdata_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.sbss (NOLOAD) : {
|
||||||
|
__sbss_start = .;
|
||||||
|
*(.sbss)
|
||||||
|
*(.sbss.*)
|
||||||
|
*(.gnu.linkonce.sb.*)
|
||||||
|
__sbss_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.tdata : {
|
||||||
|
__tdata_start = .;
|
||||||
|
*(.tdata)
|
||||||
|
*(.tdata.*)
|
||||||
|
*(.gnu.linkonce.td.*)
|
||||||
|
__tdata_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.tbss : {
|
||||||
|
__tbss_start = .;
|
||||||
|
*(.tbss)
|
||||||
|
*(.tbss.*)
|
||||||
|
*(.gnu.linkonce.tb.*)
|
||||||
|
__tbss_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.bss (NOLOAD) : {
|
||||||
|
__bss_start = .;
|
||||||
|
*(.bss)
|
||||||
|
*(.bss.*)
|
||||||
|
*(.gnu.linkonce.b.*)
|
||||||
|
*(COMMON)
|
||||||
|
__bss_end = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 );
|
||||||
|
|
||||||
|
_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );
|
||||||
|
|
||||||
|
/* Generate Stack and Heap definitions */
|
||||||
|
|
||||||
|
.heap (NOLOAD) : {
|
||||||
|
. = ALIGN(16);
|
||||||
|
_heap = .;
|
||||||
|
HeapBase = .;
|
||||||
|
_heap_start = .;
|
||||||
|
. += _HEAP_SIZE;
|
||||||
|
_heap_end = .;
|
||||||
|
HeapLimit = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
.stack (NOLOAD) : {
|
||||||
|
. = ALIGN(16);
|
||||||
|
_stack_end = .;
|
||||||
|
. += _STACK_SIZE;
|
||||||
|
. = ALIGN(16);
|
||||||
|
_stack = .;
|
||||||
|
__stack = _stack;
|
||||||
|
. = ALIGN(16);
|
||||||
|
_irq_stack_end = .;
|
||||||
|
. += _IRQ_STACK_SIZE;
|
||||||
|
. = ALIGN(16);
|
||||||
|
__irq_stack = .;
|
||||||
|
_supervisor_stack_end = .;
|
||||||
|
. += _SUPERVISOR_STACK_SIZE;
|
||||||
|
. = ALIGN(16);
|
||||||
|
__supervisor_stack = .;
|
||||||
|
_abort_stack_end = .;
|
||||||
|
. += _ABORT_STACK_SIZE;
|
||||||
|
. = ALIGN(16);
|
||||||
|
__abort_stack = .;
|
||||||
|
_fiq_stack_end = .;
|
||||||
|
. += _FIQ_STACK_SIZE;
|
||||||
|
. = ALIGN(16);
|
||||||
|
__fiq_stack = .;
|
||||||
|
_undef_stack_end = .;
|
||||||
|
. += _UNDEF_STACK_SIZE;
|
||||||
|
. = ALIGN(16);
|
||||||
|
__undef_stack = .;
|
||||||
|
} > ps7_ddr_0
|
||||||
|
|
||||||
|
_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,226 @@
|
|||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* Description: main.c
|
||||||
|
*
|
||||||
|
* Date: 2024-01-24 21:38
|
||||||
|
* Last Edit Time: [2024-01-24 21:38]
|
||||||
|
*
|
||||||
|
* Revisions: Rev 0.0
|
||||||
|
* History:
|
||||||
|
* [2024-01-24]: Initial edition.
|
||||||
|
*
|
||||||
|
* Copyright(c) 2024 Beijing Institute of Technology.
|
||||||
|
* Lab of Communication and Networking
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/******************************* Include Files ********************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
// Standard
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
// Xilinx
|
||||||
|
#include "xscugic.h" // The generic interrupt controller driver component
|
||||||
|
#include "xil_exception.h" // ARM Cortex A9 specific exception related APIs
|
||||||
|
#include "sleep.h"
|
||||||
|
#include "xgpiops.h"
|
||||||
|
#include "xspips.h"
|
||||||
|
|
||||||
|
// User
|
||||||
|
#include "app_config.h"
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/**************************** Function Prototypes *****************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
int SetupInterruptSystem(XScuGic* GicInstPtr, u32 IntcDevId);
|
||||||
|
int SetupGpioPs(XGpioPs* GpioPsInstPtr, u32 GpioPsDevId);
|
||||||
|
int SetupSpiPs(XSpiPs* SpiPsInstPtr, u32 SpiPsDevId);
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/**************************** Constant Definitions ****************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/************************ Driver Instance Definitions *************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
static XScuGic Intc; // General interrupt controller instance
|
||||||
|
static XGpioPs GpioPs;
|
||||||
|
static XSpiPs SpiPs;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief This function initializes the SCUGIC instance. It looks for the
|
||||||
|
* device configuration based on the unique device ID, initializes a
|
||||||
|
* SCUGIC and enables system interrupts.
|
||||||
|
*
|
||||||
|
* @param GicInstPtr is a reference to the XScuGic driver Instance.
|
||||||
|
* @param IntcDevId is the XPAR_<SCUGIC_instance>_DEVICE_ID value from
|
||||||
|
* "xparameters.h".
|
||||||
|
*
|
||||||
|
* @return SUCCESS if initialization succeed.
|
||||||
|
* XST_FAILURE if initialization failed.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
int SetupInterruptSystem(XScuGic* GicInstPtr, u32 IntcDevId){
|
||||||
|
|
||||||
|
int Status;
|
||||||
|
|
||||||
|
XScuGic_Config* IntcConfigPtr; /* Instance of the interrupt controller */
|
||||||
|
|
||||||
|
Xil_ExceptionInit();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize the interrupt controller driver so that it is ready to
|
||||||
|
* use.
|
||||||
|
*/
|
||||||
|
IntcConfigPtr = XScuGic_LookupConfig(IntcDevId);
|
||||||
|
if (NULL == IntcConfigPtr) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = XScuGic_CfgInitialize(GicInstPtr, IntcConfigPtr,
|
||||||
|
IntcConfigPtr->CpuBaseAddress);
|
||||||
|
if (Status != XST_SUCCESS) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Connect the interrupt controller interrupt handler to the hardware
|
||||||
|
* interrupt handling logic in the processor.
|
||||||
|
*/
|
||||||
|
Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,
|
||||||
|
(Xil_ExceptionHandler)XScuGic_InterruptHandler,
|
||||||
|
GicInstPtr);
|
||||||
|
|
||||||
|
/* Enable interrupts in the Processor. */
|
||||||
|
Xil_ExceptionEnableMask(XIL_EXCEPTION_IRQ);
|
||||||
|
|
||||||
|
return XST_SUCCESS;
|
||||||
|
} // SetupInterruptSystem
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief This function initializes the PS GPIO instance. It looks for the
|
||||||
|
* device configuration based on the unique device ID and initializes a
|
||||||
|
* GpioPs instance.
|
||||||
|
*
|
||||||
|
* @param GpioPsInstPtr is a reference to the XGpioPs driver Instance.
|
||||||
|
* @param GpioPsDevId is the XPAR_<GPIO_instance>_DEVICE_ID value from
|
||||||
|
* "xparameters.h".
|
||||||
|
*
|
||||||
|
* @return SUCCESS if initialize successful.
|
||||||
|
* XST_FAILURE if initialization failed.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
int SetupGpioPs(XGpioPs* GpioPsInstPtr, u32 GpioPsDevId){
|
||||||
|
|
||||||
|
int Status;
|
||||||
|
|
||||||
|
XGpioPs_Config *GpioConfigPtr;
|
||||||
|
|
||||||
|
/* Initialize the Gpio driver. */
|
||||||
|
GpioConfigPtr = XGpioPs_LookupConfig(GpioPsDevId);
|
||||||
|
if (GpioConfigPtr == NULL) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = XGpioPs_CfgInitialize(GpioPsInstPtr, GpioConfigPtr,
|
||||||
|
GpioConfigPtr->BaseAddr);
|
||||||
|
if (Status != XST_SUCCESS) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Run a self-test on the GPIO device. */
|
||||||
|
Status = XGpioPs_SelfTest(GpioPsInstPtr);
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
} // SetupGpioPs
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief This function initializes the PS SPI instance. It looks for the
|
||||||
|
* device configuration based on the unique device ID and initializes a
|
||||||
|
* SpiPs instance.
|
||||||
|
*
|
||||||
|
* @param SpiPsInstPtr is a reference to the XSpiPs driver Instance.
|
||||||
|
* @param SpiPsDevId is the XPAR_<SPI_instance>_DEVICE_ID value from
|
||||||
|
* "xparameters.h".
|
||||||
|
*
|
||||||
|
* @return SUCCESS if initialize successful.
|
||||||
|
* XST_FAILURE if initialization failed.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
int SetupSpiPs(XSpiPs* SpiPsInstPtr, u32 SpiPsDevId){
|
||||||
|
|
||||||
|
int Status;
|
||||||
|
|
||||||
|
XSpiPs_Config *SpiPsConfigPtr;
|
||||||
|
|
||||||
|
/* Initialize spi driver. */
|
||||||
|
SpiPsConfigPtr = XSpiPs_LookupConfig(SpiPsDevId);
|
||||||
|
if (SpiPsConfigPtr == NULL) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = XSpiPs_CfgInitialize(SpiPsInstPtr, SpiPsConfigPtr,
|
||||||
|
SpiPsConfigPtr->BaseAddress);
|
||||||
|
if (Status != XST_SUCCESS) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform a self-test to check hardware build
|
||||||
|
Status = XSpiPs_SelfTest(SpiPsInstPtr);
|
||||||
|
|
||||||
|
|
||||||
|
// Set the Spi device as a master, force chip select
|
||||||
|
XSpiPs_SetOptions(SpiInstancePtr, XSPIPS_MASTER_OPTION |
|
||||||
|
XSPIPS_FORCE_SSELECT_OPTION);
|
||||||
|
|
||||||
|
XSpiPs_SetClkPrescaler(SpiInstancePtr, XSPIPS_CLK_PRESCALE_64);
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
} // SetupSpiPs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************//**
|
||||||
|
* @brief main
|
||||||
|
*******************************************************************************/
|
||||||
|
int main(void) {
|
||||||
|
|
||||||
|
int32_t Status;
|
||||||
|
|
||||||
|
/**********************************************************/
|
||||||
|
/***************** Xilinx Initialization ******************/
|
||||||
|
/**********************************************************/
|
||||||
|
// gic
|
||||||
|
Status = SetupInterruptSystem(&Intc, INTC_DEVICE_ID);
|
||||||
|
if (Status != XST_SUCCESS) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// gpio
|
||||||
|
Status = SetupGpioPs(&GpioPs, GPIO_DEVICE_ID);
|
||||||
|
if (Status != XST_SUCCESS) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// spi
|
||||||
|
Status = SetupSpiPs(&SpiPs, SPI_DEVICE_ID);
|
||||||
|
if (Status != XST_SUCCESS) {
|
||||||
|
return XST_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return XST_SUCCESS;
|
||||||
|
}
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
|
||||||
|
<cconfiguration id="com.xilinx.sdx.system.managedbuilder.debugConfiguration.746031487">
|
||||||
|
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.xilinx.sdx.system.managedbuilder.debugConfiguration.746031487" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||||
|
|
||||||
|
<externalSettings/>
|
||||||
|
|
||||||
|
<extensions>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
</extensions>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.xilinx.sdx.system.managedbuilder.debugConfiguration.746031487" name="Debug" parent="com.xilinx.sdx.system.managedbuilder.debugConfiguration">
|
||||||
|
|
||||||
|
<folderInfo id="com.xilinx.sdx.system.managedbuilder.debugConfiguration.746031487." name="/" resourcePath="">
|
||||||
|
|
||||||
|
<toolChain id="com.xilinx.sdx.system.managedbuilder.debug.toolChain.1029529057" name="System Toolchain" superClass="com.xilinx.sdx.system.managedbuilder.debug.toolChain">
|
||||||
|
|
||||||
|
<targetPlatform id="com.xilinx.sdx.system.managedbuilder.debugConfiguration.746031487..1666728986" name=""/>
|
||||||
|
|
||||||
|
<builder buildPath="${workspace_loc:/duifei_cmos_system}/Debug" enableAutoBuild="true" id="com.xilinx.sdx.system.managedbuilder.systemBuilder.767028753" managedBuildOn="true" name="System Project Builder.Debug" superClass="com.xilinx.sdx.system.managedbuilder.systemBuilder"/>
|
||||||
|
|
||||||
|
<tool id="com.xilinx.sdx.system.managedbuilder.toolchain.cfjoinTool.2082969895" name="System Builder" superClass="com.xilinx.sdx.system.managedbuilder.toolchain.cfjoinTool"/>
|
||||||
|
|
||||||
|
</toolChain>
|
||||||
|
|
||||||
|
</folderInfo>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
|
||||||
|
</cconfiguration>
|
||||||
|
|
||||||
|
<cconfiguration id="com.xilinx.sdx.system.managedbuilder.releaseConfiguration.945258846">
|
||||||
|
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.xilinx.sdx.system.managedbuilder.releaseConfiguration.945258846" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||||
|
|
||||||
|
<externalSettings/>
|
||||||
|
|
||||||
|
<extensions>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
|
||||||
|
</extensions>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.xilinx.sdx.system.managedbuilder.releaseConfiguration.945258846" name="Release" parent="com.xilinx.sdx.system.managedbuilder.releaseConfiguration">
|
||||||
|
|
||||||
|
<folderInfo id="com.xilinx.sdx.system.managedbuilder.releaseConfiguration.945258846." name="/" resourcePath="">
|
||||||
|
|
||||||
|
<toolChain id="com.xilinx.sdx.system.managedbuilder.release.toolChain.704219540" name="System Toolchain" superClass="com.xilinx.sdx.system.managedbuilder.release.toolChain">
|
||||||
|
|
||||||
|
<targetPlatform id="com.xilinx.sdx.system.managedbuilder.releaseConfiguration.945258846..881202403" name=""/>
|
||||||
|
|
||||||
|
<builder buildPath="${workspace_loc:/duifei_cmos_system}/Release" enableAutoBuild="true" id="com.xilinx.sdx.system.managedbuilder.systemBuilder.2099545225" managedBuildOn="true" name="System Project Builder.Release" superClass="com.xilinx.sdx.system.managedbuilder.systemBuilder"/>
|
||||||
|
|
||||||
|
<tool id="com.xilinx.sdx.system.managedbuilder.toolchain.cfjoinTool.1054026661" name="System Builder" superClass="com.xilinx.sdx.system.managedbuilder.toolchain.cfjoinTool"/>
|
||||||
|
|
||||||
|
</toolChain>
|
||||||
|
|
||||||
|
</folderInfo>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
|
||||||
|
</cconfiguration>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
|
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
|
||||||
|
<project id="duifei_cmos_system.com.xilinx.sdx.system.managedbuilder.projectType.673474257" name="Vitis Embedded System Project" projectType="com.xilinx.sdx.system.managedbuilder.projectType"/>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="refreshScope"/>
|
||||||
|
|
||||||
|
</cproject>
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
/Debug/
|
||||||
|
/Release/
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>duifei_cmos_system</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
<project>duifei_cmos</project>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.xilinx.sdx.system.core.embedded</nature>
|
||||||
|
<nature>com.xilinx.sdx.system.systemprojectnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="ASCII"?>
|
||||||
|
<systemproject:SystemProject xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sdsproject="http://www.xilinx.com/sdsproject" xmlns:systemproject="http://www.xilinx.com/systemproject" name="duifei_cmos_system" platform="/home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/vitis/duifei_platform/export/duifei_platform/duifei_platform.xpfm" platformUID="xilinx:::0.0(custom)" sysConfig="duifei_platform" runtime="C/C++" rootFSLocation="" linuxImage="" sysroot="">
|
||||||
|
<configuration name="Debug" id="com.xilinx.sdx.system.managedbuilder.debugConfiguration.746031487">
|
||||||
|
<configBuildOptions xsi:type="systemproject:SystemOptions">
|
||||||
|
<applications name="duifei_cmos" domainName="standalone_domain" domainPrettyName="standalone_domain" appBuildConfig="Debug"/>
|
||||||
|
<options xsi:type="sdsproject:Option" gensdcard="true" dmclkid="0"/>
|
||||||
|
</configBuildOptions>
|
||||||
|
<lastBuildOptions xsi:type="systemproject:SystemOptions">
|
||||||
|
<applications name="duifei_cmos" domainName="standalone_domain" domainPrettyName="standalone_domain" appBuildConfig="Debug"/>
|
||||||
|
<options xsi:type="sdsproject:Option" gensdcard="true" dmclkid="0"/>
|
||||||
|
</lastBuildOptions>
|
||||||
|
</configuration>
|
||||||
|
<configuration name="Release" id="com.xilinx.sdx.system.managedbuilder.releaseConfiguration.945258846">
|
||||||
|
<configBuildOptions xsi:type="systemproject:SystemOptions">
|
||||||
|
<applications name="duifei_cmos" domainName="standalone_domain" domainPrettyName="standalone_domain" appBuildConfig="Release"/>
|
||||||
|
<options xsi:type="sdsproject:Option" gensdcard="true" dmclkid="0"/>
|
||||||
|
</configBuildOptions>
|
||||||
|
</configuration>
|
||||||
|
</systemproject:SystemProject>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
|
||||||
|
<cconfiguration id="org.eclipse.cdt.core.default.config.1776907321">
|
||||||
|
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.core.defaultConfigDataProvider" id="org.eclipse.cdt.core.default.config.1776907321" moduleId="org.eclipse.cdt.core.settings" name="Configuration">
|
||||||
|
|
||||||
|
<externalSettings/>
|
||||||
|
|
||||||
|
<extensions/>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
|
||||||
|
</cconfiguration>
|
||||||
|
|
||||||
|
</storageModule>
|
||||||
|
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
|
|
||||||
|
</cproject>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/export/
|
||||||
|
*.o
|
||||||
|
*.d
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>duifei_platform</name>
|
||||||
|
<comment>Created by Vitis v2023.2</comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.xilinx.sdx.scw.PlatformProjectBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.xilinx.sdx.scw.platformProject</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,117 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file ps7_init.h
|
||||||
|
*
|
||||||
|
* This file can be included in FSBL code
|
||||||
|
* to get prototype of ps7_init() function
|
||||||
|
* and error codes
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//typedef unsigned int u32;
|
||||||
|
|
||||||
|
|
||||||
|
/** do we need to make this name more unique ? **/
|
||||||
|
//extern u32 ps7_init_data[];
|
||||||
|
extern unsigned long * ps7_ddr_init_data;
|
||||||
|
extern unsigned long * ps7_mio_init_data;
|
||||||
|
extern unsigned long * ps7_pll_init_data;
|
||||||
|
extern unsigned long * ps7_clock_init_data;
|
||||||
|
extern unsigned long * ps7_peripherals_init_data;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define OPCODE_EXIT 0U
|
||||||
|
#define OPCODE_CLEAR 1U
|
||||||
|
#define OPCODE_WRITE 2U
|
||||||
|
#define OPCODE_MASKWRITE 3U
|
||||||
|
#define OPCODE_MASKPOLL 4U
|
||||||
|
#define OPCODE_MASKDELAY 5U
|
||||||
|
#define NEW_PS7_ERR_CODE 1
|
||||||
|
|
||||||
|
/* Encode number of arguments in last nibble */
|
||||||
|
#define EMIT_EXIT() ( (OPCODE_EXIT << 4 ) | 0 )
|
||||||
|
#define EMIT_CLEAR(addr) ( (OPCODE_CLEAR << 4 ) | 1 ) , addr
|
||||||
|
#define EMIT_WRITE(addr,val) ( (OPCODE_WRITE << 4 ) | 2 ) , addr, val
|
||||||
|
#define EMIT_MASKWRITE(addr,mask,val) ( (OPCODE_MASKWRITE << 4 ) | 3 ) , addr, mask, val
|
||||||
|
#define EMIT_MASKPOLL(addr,mask) ( (OPCODE_MASKPOLL << 4 ) | 2 ) , addr, mask
|
||||||
|
#define EMIT_MASKDELAY(addr,mask) ( (OPCODE_MASKDELAY << 4 ) | 2 ) , addr, mask
|
||||||
|
|
||||||
|
/* Returns codes of PS7_Init */
|
||||||
|
#define PS7_INIT_SUCCESS (0) // 0 is success in good old C
|
||||||
|
#define PS7_INIT_CORRUPT (1) // 1 the data is corrupted, and slcr reg are in corrupted state now
|
||||||
|
#define PS7_INIT_TIMEOUT (2) // 2 when a poll operation timed out
|
||||||
|
#define PS7_POLL_FAILED_DDR_INIT (3) // 3 when a poll operation timed out for ddr init
|
||||||
|
#define PS7_POLL_FAILED_DMA (4) // 4 when a poll operation timed out for dma done bit
|
||||||
|
#define PS7_POLL_FAILED_PLL (5) // 5 when a poll operation timed out for pll sequence init
|
||||||
|
|
||||||
|
|
||||||
|
/* Silicon Versions */
|
||||||
|
#define PCW_SILICON_VERSION_1 0
|
||||||
|
#define PCW_SILICON_VERSION_2 1
|
||||||
|
#define PCW_SILICON_VERSION_3 2
|
||||||
|
|
||||||
|
/* This flag to be used by FSBL to check whether ps7_post_config() proc exixts */
|
||||||
|
#define PS7_POST_CONFIG
|
||||||
|
|
||||||
|
/* Freq of all peripherals */
|
||||||
|
|
||||||
|
#define APU_FREQ 666666687
|
||||||
|
#define DDR_FREQ 533333374
|
||||||
|
#define DCI_FREQ 10158730
|
||||||
|
#define QSPI_FREQ 200000000
|
||||||
|
#define SMC_FREQ 10000000
|
||||||
|
#define ENET0_FREQ 10000000
|
||||||
|
#define ENET1_FREQ 10000000
|
||||||
|
#define USB0_FREQ 60000000
|
||||||
|
#define USB1_FREQ 60000000
|
||||||
|
#define SDIO_FREQ 10000000
|
||||||
|
#define UART_FREQ 10000000
|
||||||
|
#define SPI_FREQ 166666672
|
||||||
|
#define I2C_FREQ 111111115
|
||||||
|
#define WDT_FREQ 111111115
|
||||||
|
#define TTC_FREQ 50000000
|
||||||
|
#define CAN_FREQ 10000000
|
||||||
|
#define PCAP_FREQ 200000000
|
||||||
|
#define TPIU_FREQ 200000000
|
||||||
|
#define FPGA0_FREQ 100000000
|
||||||
|
#define FPGA1_FREQ 10000000
|
||||||
|
#define FPGA2_FREQ 10000000
|
||||||
|
#define FPGA3_FREQ 10000000
|
||||||
|
|
||||||
|
|
||||||
|
/* For delay calculation using global registers*/
|
||||||
|
#define SCU_GLOBAL_TIMER_COUNT_L32 0xF8F00200
|
||||||
|
#define SCU_GLOBAL_TIMER_COUNT_U32 0xF8F00204
|
||||||
|
#define SCU_GLOBAL_TIMER_CONTROL 0xF8F00208
|
||||||
|
#define SCU_GLOBAL_TIMER_AUTO_INC 0xF8F00218
|
||||||
|
|
||||||
|
int ps7_config( unsigned long*);
|
||||||
|
int ps7_init();
|
||||||
|
int ps7_post_config();
|
||||||
|
int ps7_debug();
|
||||||
|
char* getPS7MessageInfo(unsigned key);
|
||||||
|
|
||||||
|
void perf_start_clock(void);
|
||||||
|
void perf_disable_clock(void);
|
||||||
|
void perf_reset_clock(void);
|
||||||
|
void perf_reset_and_start_timer();
|
||||||
|
int get_number_of_cycles_for_delay(unsigned int delay);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,646 @@
|
|||||||
|
proc ps7_pll_init_data_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000110 0x003FFFF0 0x000FA220
|
||||||
|
mask_write 0XF8000100 0x0007F000 0x00028000
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000120 0x1F003F30 0x1F000200
|
||||||
|
mask_write 0XF8000114 0x003FFFF0 0x0012C220
|
||||||
|
mask_write 0XF8000104 0x0007F000 0x00020000
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000002
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000124 0xFFF00003 0x0C200003
|
||||||
|
mask_write 0XF8000118 0x003FFFF0 0x001452C0
|
||||||
|
mask_write 0XF8000108 0x0007F000 0x0001E000
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000004
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_clock_init_data_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000128 0x03F03F01 0x00700F01
|
||||||
|
mask_write 0XF800014C 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000158 0x00003F33 0x00000601
|
||||||
|
mask_write 0XF8000168 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000170 0x03F03F30 0x00200500
|
||||||
|
mask_write 0XF80001C4 0x00000001 0x00000001
|
||||||
|
mask_write 0XF800012C 0x01FFCCCD 0x01CC400D
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_ddr_init_data_3_0 {} {
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000084
|
||||||
|
mask_write 0XF8006004 0x0007FFFF 0x00001082
|
||||||
|
mask_write 0XF8006008 0x03FFFFFF 0x03C0780F
|
||||||
|
mask_write 0XF800600C 0x03FFFFFF 0x02001001
|
||||||
|
mask_write 0XF8006010 0x03FFFFFF 0x00014001
|
||||||
|
mask_write 0XF8006014 0x001FFFFF 0x0004285B
|
||||||
|
mask_write 0XF8006018 0xF7FFFFFF 0x44E458D3
|
||||||
|
mask_write 0XF800601C 0xFFFFFFFF 0x7282BCE5
|
||||||
|
mask_write 0XF8006020 0x7FDFFFFC 0x270872D0
|
||||||
|
mask_write 0XF8006024 0x0FFFFFC3 0x00000000
|
||||||
|
mask_write 0XF8006028 0x00003FFF 0x00002007
|
||||||
|
mask_write 0XF800602C 0xFFFFFFFF 0x00000008
|
||||||
|
mask_write 0XF8006030 0xFFFFFFFF 0x00040B30
|
||||||
|
mask_write 0XF8006034 0x13FF3FFF 0x000116D4
|
||||||
|
mask_write 0XF8006038 0x00000003 0x00000000
|
||||||
|
mask_write 0XF800603C 0x000FFFFF 0x00000666
|
||||||
|
mask_write 0XF8006040 0xFFFFFFFF 0xFFFF0000
|
||||||
|
mask_write 0XF8006044 0x0FFFFFFF 0x0F555555
|
||||||
|
mask_write 0XF8006048 0x0003F03F 0x0003C008
|
||||||
|
mask_write 0XF8006050 0xFF0F8FFF 0x77010800
|
||||||
|
mask_write 0XF8006058 0x00010000 0x00000000
|
||||||
|
mask_write 0XF800605C 0x0000FFFF 0x00005003
|
||||||
|
mask_write 0XF8006060 0x000017FF 0x0000003E
|
||||||
|
mask_write 0XF8006064 0x00021FE0 0x00020000
|
||||||
|
mask_write 0XF8006068 0x03FFFFFF 0x00284141
|
||||||
|
mask_write 0XF800606C 0x0000FFFF 0x00001610
|
||||||
|
mask_write 0XF8006078 0x03FFFFFF 0x00466111
|
||||||
|
mask_write 0XF800607C 0x000FFFFF 0x00032222
|
||||||
|
mask_write 0XF80060A4 0xFFFFFFFF 0x10200802
|
||||||
|
mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73
|
||||||
|
mask_write 0XF80060AC 0x000001FF 0x000001FE
|
||||||
|
mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF
|
||||||
|
mask_write 0XF80060B4 0x00000200 0x00000200
|
||||||
|
mask_write 0XF80060B8 0x01FFFFFF 0x00200066
|
||||||
|
mask_write 0XF80060C4 0x00000003 0x00000000
|
||||||
|
mask_write 0XF80060C8 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF80060DC 0x00000001 0x00000000
|
||||||
|
mask_write 0XF80060F0 0x0000FFFF 0x00000000
|
||||||
|
mask_write 0XF80060F4 0x0000000F 0x00000008
|
||||||
|
mask_write 0XF8006114 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF8006118 0x7FFFFFCF 0x40000001
|
||||||
|
mask_write 0XF800611C 0x7FFFFFCF 0x40000001
|
||||||
|
mask_write 0XF8006120 0x7FFFFFCF 0x40000000
|
||||||
|
mask_write 0XF8006124 0x7FFFFFCF 0x40000000
|
||||||
|
mask_write 0XF800612C 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006130 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006134 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006138 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006140 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006144 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006148 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF800614C 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006154 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006158 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF800615C 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006160 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006168 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800616C 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006170 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006174 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800617C 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006180 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006184 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006188 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006190 0x6FFFFEFE 0x00040080
|
||||||
|
mask_write 0XF8006194 0x000FFFFF 0x0001FC82
|
||||||
|
mask_write 0XF8006204 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF8006208 0x000703FF 0x000003FF
|
||||||
|
mask_write 0XF800620C 0x000703FF 0x000003FF
|
||||||
|
mask_write 0XF8006210 0x000703FF 0x000003FF
|
||||||
|
mask_write 0XF8006214 0x000703FF 0x000003FF
|
||||||
|
mask_write 0XF8006218 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF800621C 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006220 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006224 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF80062A8 0x00000FF5 0x00000000
|
||||||
|
mask_write 0XF80062AC 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF80062B0 0x003FFFFF 0x00005125
|
||||||
|
mask_write 0XF80062B4 0x0003FFFF 0x000012A8
|
||||||
|
mask_poll 0XF8000B74 0x00002000
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000085
|
||||||
|
mask_poll 0XF8006054 0x00000007
|
||||||
|
}
|
||||||
|
proc ps7_mio_init_data_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B40 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B44 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B48 0x00000FFF 0x00000672
|
||||||
|
mask_write 0XF8000B4C 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B50 0x00000FFF 0x00000674
|
||||||
|
mask_write 0XF8000B54 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B58 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C
|
||||||
|
mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B6C 0x00007FFF 0x00000220
|
||||||
|
mask_write 0XF8000B70 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000020
|
||||||
|
mask_write 0XF8000B70 0x07FEFFFF 0x00000823
|
||||||
|
mask_write 0XF8000704 0x00003FFF 0x00001602
|
||||||
|
mask_write 0XF8000708 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF800070C 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000710 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000714 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000718 0x00003FFF 0x00000602
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_peripherals_init_data_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B48 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B4C 0x00000180 0x00000000
|
||||||
|
mask_write 0XF8000B50 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B54 0x00000180 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
mask_write 0XE000D000 0x00080000 0x00080000
|
||||||
|
mask_write 0XF8007000 0x20000000 0x00000000
|
||||||
|
}
|
||||||
|
proc ps7_post_config_3_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000900 0x0000000F 0x0000000F
|
||||||
|
mask_write 0XF8000240 0xFFFFFFFF 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_debug_3_0 {} {
|
||||||
|
mwr -force 0XF8898FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8899FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8809FB0 0xC5ACCE55
|
||||||
|
}
|
||||||
|
proc ps7_pll_init_data_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000110 0x003FFFF0 0x000FA220
|
||||||
|
mask_write 0XF8000100 0x0007F000 0x00028000
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000120 0x1F003F30 0x1F000200
|
||||||
|
mask_write 0XF8000114 0x003FFFF0 0x0012C220
|
||||||
|
mask_write 0XF8000104 0x0007F000 0x00020000
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000002
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000124 0xFFF00003 0x0C200003
|
||||||
|
mask_write 0XF8000118 0x003FFFF0 0x001452C0
|
||||||
|
mask_write 0XF8000108 0x0007F000 0x0001E000
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000004
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_clock_init_data_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000128 0x03F03F01 0x00700F01
|
||||||
|
mask_write 0XF800014C 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000158 0x00003F33 0x00000601
|
||||||
|
mask_write 0XF8000168 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000170 0x03F03F30 0x00200500
|
||||||
|
mask_write 0XF80001C4 0x00000001 0x00000001
|
||||||
|
mask_write 0XF800012C 0x01FFCCCD 0x01CC400D
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_ddr_init_data_2_0 {} {
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000084
|
||||||
|
mask_write 0XF8006004 0x1FFFFFFF 0x00081082
|
||||||
|
mask_write 0XF8006008 0x03FFFFFF 0x03C0780F
|
||||||
|
mask_write 0XF800600C 0x03FFFFFF 0x02001001
|
||||||
|
mask_write 0XF8006010 0x03FFFFFF 0x00014001
|
||||||
|
mask_write 0XF8006014 0x001FFFFF 0x0004285B
|
||||||
|
mask_write 0XF8006018 0xF7FFFFFF 0x44E458D3
|
||||||
|
mask_write 0XF800601C 0xFFFFFFFF 0x7282BCE5
|
||||||
|
mask_write 0XF8006020 0xFFFFFFFC 0x272872D0
|
||||||
|
mask_write 0XF8006024 0x0FFFFFFF 0x0000003C
|
||||||
|
mask_write 0XF8006028 0x00003FFF 0x00002007
|
||||||
|
mask_write 0XF800602C 0xFFFFFFFF 0x00000008
|
||||||
|
mask_write 0XF8006030 0xFFFFFFFF 0x00040B30
|
||||||
|
mask_write 0XF8006034 0x13FF3FFF 0x000116D4
|
||||||
|
mask_write 0XF8006038 0x00001FC3 0x00000000
|
||||||
|
mask_write 0XF800603C 0x000FFFFF 0x00000666
|
||||||
|
mask_write 0XF8006040 0xFFFFFFFF 0xFFFF0000
|
||||||
|
mask_write 0XF8006044 0x0FFFFFFF 0x0F555555
|
||||||
|
mask_write 0XF8006048 0x3FFFFFFF 0x0003C248
|
||||||
|
mask_write 0XF8006050 0xFF0F8FFF 0x77010800
|
||||||
|
mask_write 0XF8006058 0x0001FFFF 0x00000101
|
||||||
|
mask_write 0XF800605C 0x0000FFFF 0x00005003
|
||||||
|
mask_write 0XF8006060 0x000017FF 0x0000003E
|
||||||
|
mask_write 0XF8006064 0x00021FE0 0x00020000
|
||||||
|
mask_write 0XF8006068 0x03FFFFFF 0x00284141
|
||||||
|
mask_write 0XF800606C 0x0000FFFF 0x00001610
|
||||||
|
mask_write 0XF8006078 0x03FFFFFF 0x00466111
|
||||||
|
mask_write 0XF800607C 0x000FFFFF 0x00032222
|
||||||
|
mask_write 0XF80060A0 0x00FFFFFF 0x00008000
|
||||||
|
mask_write 0XF80060A4 0xFFFFFFFF 0x10200802
|
||||||
|
mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73
|
||||||
|
mask_write 0XF80060AC 0x000001FF 0x000001FE
|
||||||
|
mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF
|
||||||
|
mask_write 0XF80060B4 0x000007FF 0x00000200
|
||||||
|
mask_write 0XF80060B8 0x01FFFFFF 0x00200066
|
||||||
|
mask_write 0XF80060C4 0x00000003 0x00000000
|
||||||
|
mask_write 0XF80060C8 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF80060DC 0x00000001 0x00000000
|
||||||
|
mask_write 0XF80060F0 0x0000FFFF 0x00000000
|
||||||
|
mask_write 0XF80060F4 0x0000000F 0x00000008
|
||||||
|
mask_write 0XF8006114 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF8006118 0x7FFFFFFF 0x40000001
|
||||||
|
mask_write 0XF800611C 0x7FFFFFFF 0x40000001
|
||||||
|
mask_write 0XF8006120 0x7FFFFFFF 0x40000000
|
||||||
|
mask_write 0XF8006124 0x7FFFFFFF 0x40000000
|
||||||
|
mask_write 0XF800612C 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006130 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006134 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006138 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006140 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006144 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006148 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF800614C 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006154 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006158 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF800615C 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006160 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006168 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800616C 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006170 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006174 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800617C 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006180 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006184 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006188 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006190 0xFFFFFFFF 0x10040080
|
||||||
|
mask_write 0XF8006194 0x000FFFFF 0x0001FC82
|
||||||
|
mask_write 0XF8006204 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF8006208 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF800620C 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006210 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006214 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006218 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF800621C 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006220 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006224 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF80062A8 0x00000FF7 0x00000000
|
||||||
|
mask_write 0XF80062AC 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF80062B0 0x003FFFFF 0x00005125
|
||||||
|
mask_write 0XF80062B4 0x0003FFFF 0x000012A8
|
||||||
|
mask_poll 0XF8000B74 0x00002000
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000085
|
||||||
|
mask_poll 0XF8006054 0x00000007
|
||||||
|
}
|
||||||
|
proc ps7_mio_init_data_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B40 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B44 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B48 0x00000FFF 0x00000672
|
||||||
|
mask_write 0XF8000B4C 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B50 0x00000FFF 0x00000674
|
||||||
|
mask_write 0XF8000B54 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B58 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C
|
||||||
|
mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B6C 0x00007FFF 0x00000220
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000021
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000020
|
||||||
|
mask_write 0XF8000B70 0x07FFFFFF 0x00000823
|
||||||
|
mask_write 0XF8000704 0x00003FFF 0x00001602
|
||||||
|
mask_write 0XF8000708 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF800070C 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000710 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000714 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000718 0x00003FFF 0x00000602
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_peripherals_init_data_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B48 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B4C 0x00000180 0x00000000
|
||||||
|
mask_write 0XF8000B50 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B54 0x00000180 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
mask_write 0XE000D000 0x00080000 0x00080000
|
||||||
|
mask_write 0XF8007000 0x20000000 0x00000000
|
||||||
|
}
|
||||||
|
proc ps7_post_config_2_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000900 0x0000000F 0x0000000F
|
||||||
|
mask_write 0XF8000240 0xFFFFFFFF 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_debug_2_0 {} {
|
||||||
|
mwr -force 0XF8898FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8899FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8809FB0 0xC5ACCE55
|
||||||
|
}
|
||||||
|
proc ps7_pll_init_data_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000110 0x003FFFF0 0x000FA220
|
||||||
|
mask_write 0XF8000100 0x0007F000 0x00028000
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000001
|
||||||
|
mask_write 0XF8000100 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000120 0x1F003F30 0x1F000200
|
||||||
|
mask_write 0XF8000114 0x003FFFF0 0x0012C220
|
||||||
|
mask_write 0XF8000104 0x0007F000 0x00020000
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000104 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000002
|
||||||
|
mask_write 0XF8000104 0x00000010 0x00000000
|
||||||
|
mask_write 0XF8000124 0xFFF00003 0x0C200003
|
||||||
|
mask_write 0XF8000118 0x003FFFF0 0x001452C0
|
||||||
|
mask_write 0XF8000108 0x0007F000 0x0001E000
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000010
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000001
|
||||||
|
mask_write 0XF8000108 0x00000001 0x00000000
|
||||||
|
mask_poll 0XF800010C 0x00000004
|
||||||
|
mask_write 0XF8000108 0x00000010 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_clock_init_data_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000128 0x03F03F01 0x00700F01
|
||||||
|
mask_write 0XF800014C 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000158 0x00003F33 0x00000601
|
||||||
|
mask_write 0XF8000168 0x00003F31 0x00000501
|
||||||
|
mask_write 0XF8000170 0x03F03F30 0x00200500
|
||||||
|
mask_write 0XF80001C4 0x00000001 0x00000001
|
||||||
|
mask_write 0XF800012C 0x01FFCCCD 0x01CC400D
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_ddr_init_data_1_0 {} {
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000084
|
||||||
|
mask_write 0XF8006004 0x1FFFFFFF 0x00081082
|
||||||
|
mask_write 0XF8006008 0x03FFFFFF 0x03C0780F
|
||||||
|
mask_write 0XF800600C 0x03FFFFFF 0x02001001
|
||||||
|
mask_write 0XF8006010 0x03FFFFFF 0x00014001
|
||||||
|
mask_write 0XF8006014 0x001FFFFF 0x0004285B
|
||||||
|
mask_write 0XF8006018 0xF7FFFFFF 0x44E458D3
|
||||||
|
mask_write 0XF800601C 0xFFFFFFFF 0x7282BCE5
|
||||||
|
mask_write 0XF8006020 0xFFFFFFFC 0x272872D0
|
||||||
|
mask_write 0XF8006024 0x0FFFFFFF 0x0000003C
|
||||||
|
mask_write 0XF8006028 0x00003FFF 0x00002007
|
||||||
|
mask_write 0XF800602C 0xFFFFFFFF 0x00000008
|
||||||
|
mask_write 0XF8006030 0xFFFFFFFF 0x00040B30
|
||||||
|
mask_write 0XF8006034 0x13FF3FFF 0x000116D4
|
||||||
|
mask_write 0XF8006038 0x00001FC3 0x00000000
|
||||||
|
mask_write 0XF800603C 0x000FFFFF 0x00000666
|
||||||
|
mask_write 0XF8006040 0xFFFFFFFF 0xFFFF0000
|
||||||
|
mask_write 0XF8006044 0x0FFFFFFF 0x0F555555
|
||||||
|
mask_write 0XF8006048 0x3FFFFFFF 0x0003C248
|
||||||
|
mask_write 0XF8006050 0xFF0F8FFF 0x77010800
|
||||||
|
mask_write 0XF8006058 0x0001FFFF 0x00000101
|
||||||
|
mask_write 0XF800605C 0x0000FFFF 0x00005003
|
||||||
|
mask_write 0XF8006060 0x000017FF 0x0000003E
|
||||||
|
mask_write 0XF8006064 0x00021FE0 0x00020000
|
||||||
|
mask_write 0XF8006068 0x03FFFFFF 0x00284141
|
||||||
|
mask_write 0XF800606C 0x0000FFFF 0x00001610
|
||||||
|
mask_write 0XF80060A0 0x00FFFFFF 0x00008000
|
||||||
|
mask_write 0XF80060A4 0xFFFFFFFF 0x10200802
|
||||||
|
mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73
|
||||||
|
mask_write 0XF80060AC 0x000001FF 0x000001FE
|
||||||
|
mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF
|
||||||
|
mask_write 0XF80060B4 0x000007FF 0x00000200
|
||||||
|
mask_write 0XF80060B8 0x01FFFFFF 0x00200066
|
||||||
|
mask_write 0XF80060C4 0x00000003 0x00000000
|
||||||
|
mask_write 0XF80060C8 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF80060DC 0x00000001 0x00000000
|
||||||
|
mask_write 0XF80060F0 0x0000FFFF 0x00000000
|
||||||
|
mask_write 0XF80060F4 0x0000000F 0x00000008
|
||||||
|
mask_write 0XF8006114 0x000000FF 0x00000000
|
||||||
|
mask_write 0XF8006118 0x7FFFFFFF 0x40000001
|
||||||
|
mask_write 0XF800611C 0x7FFFFFFF 0x40000001
|
||||||
|
mask_write 0XF8006120 0x7FFFFFFF 0x40000000
|
||||||
|
mask_write 0XF8006124 0x7FFFFFFF 0x40000000
|
||||||
|
mask_write 0XF800612C 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006130 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006134 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006138 0x000FFFFF 0x00029000
|
||||||
|
mask_write 0XF8006140 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006144 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006148 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF800614C 0x000FFFFF 0x00000035
|
||||||
|
mask_write 0XF8006154 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006158 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF800615C 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006160 0x000FFFFF 0x00000080
|
||||||
|
mask_write 0XF8006168 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800616C 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006170 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF8006174 0x001FFFFF 0x000000F9
|
||||||
|
mask_write 0XF800617C 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006180 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006184 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006188 0x000FFFFF 0x000000C0
|
||||||
|
mask_write 0XF8006190 0xFFFFFFFF 0x10040080
|
||||||
|
mask_write 0XF8006194 0x000FFFFF 0x0001FC82
|
||||||
|
mask_write 0XF8006204 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF8006208 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF800620C 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006210 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006214 0x000F03FF 0x000803FF
|
||||||
|
mask_write 0XF8006218 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF800621C 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006220 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF8006224 0x000F03FF 0x000003FF
|
||||||
|
mask_write 0XF80062A8 0x00000FF7 0x00000000
|
||||||
|
mask_write 0XF80062AC 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0XF80062B0 0x003FFFFF 0x00005125
|
||||||
|
mask_write 0XF80062B4 0x0003FFFF 0x000012A8
|
||||||
|
mask_poll 0XF8000B74 0x00002000
|
||||||
|
mask_write 0XF8006000 0x0001FFFF 0x00000085
|
||||||
|
mask_poll 0XF8006054 0x00000007
|
||||||
|
}
|
||||||
|
proc ps7_mio_init_data_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B40 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B44 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B48 0x00000FFF 0x00000672
|
||||||
|
mask_write 0XF8000B4C 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B50 0x00000FFF 0x00000674
|
||||||
|
mask_write 0XF8000B54 0x00000FFF 0x00000800
|
||||||
|
mask_write 0XF8000B58 0x00000FFF 0x00000600
|
||||||
|
mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C
|
||||||
|
mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C
|
||||||
|
mask_write 0XF8000B6C 0x000073FF 0x00000220
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000021
|
||||||
|
mask_write 0XF8000B70 0x00000021 0x00000020
|
||||||
|
mask_write 0XF8000B70 0x07FFFFFF 0x00000823
|
||||||
|
mask_write 0XF8000704 0x00003FFF 0x00001602
|
||||||
|
mask_write 0XF8000708 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF800070C 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000710 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000714 0x00003FFF 0x00000602
|
||||||
|
mask_write 0XF8000718 0x00003FFF 0x00000602
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_peripherals_init_data_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000B48 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B4C 0x00000180 0x00000000
|
||||||
|
mask_write 0XF8000B50 0x00000180 0x00000180
|
||||||
|
mask_write 0XF8000B54 0x00000180 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
mask_write 0XE000D000 0x00080000 0x00080000
|
||||||
|
mask_write 0XF8007000 0x20000000 0x00000000
|
||||||
|
}
|
||||||
|
proc ps7_post_config_1_0 {} {
|
||||||
|
mwr -force 0XF8000008 0x0000DF0D
|
||||||
|
mask_write 0XF8000900 0x0000000F 0x0000000F
|
||||||
|
mask_write 0XF8000240 0xFFFFFFFF 0x00000000
|
||||||
|
mwr -force 0XF8000004 0x0000767B
|
||||||
|
}
|
||||||
|
proc ps7_debug_1_0 {} {
|
||||||
|
mwr -force 0XF8898FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8899FB0 0xC5ACCE55
|
||||||
|
mwr -force 0XF8809FB0 0xC5ACCE55
|
||||||
|
}
|
||||||
|
set PCW_SILICON_VER_1_0 "0x0"
|
||||||
|
set PCW_SILICON_VER_2_0 "0x1"
|
||||||
|
set PCW_SILICON_VER_3_0 "0x2"
|
||||||
|
set APU_FREQ 666666666
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
proc mask_poll { addr mask } {
|
||||||
|
set count 1
|
||||||
|
set curval "0x[string range [mrd $addr] end-8 end]"
|
||||||
|
set maskedval [expr {$curval & $mask}]
|
||||||
|
while { $maskedval == 0 } {
|
||||||
|
set curval "0x[string range [mrd $addr] end-8 end]"
|
||||||
|
set maskedval [expr {$curval & $mask}]
|
||||||
|
set count [ expr { $count + 1 } ]
|
||||||
|
if { $count == 100000000 } {
|
||||||
|
puts "Timeout Reached. Mask poll failed at ADDRESS: $addr MASK: $mask"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
proc mask_delay { addr val } {
|
||||||
|
set delay [ get_number_of_cycles_for_delay $val ]
|
||||||
|
perf_reset_and_start_timer
|
||||||
|
set curval "0x[string range [mrd $addr] end-8 end]"
|
||||||
|
set maskedval [expr {$curval < $delay}]
|
||||||
|
while { $maskedval == 1 } {
|
||||||
|
set curval "0x[string range [mrd $addr] end-8 end]"
|
||||||
|
set maskedval [expr {$curval < $delay}]
|
||||||
|
}
|
||||||
|
perf_reset_clock
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ps_version { } {
|
||||||
|
set si_ver "0x[string range [mrd 0xF8007080] end-8 end]"
|
||||||
|
set mask_sil_ver "0x[expr {$si_ver >> 28}]"
|
||||||
|
return $mask_sil_ver;
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ps7_post_config {} {
|
||||||
|
set saved_mode [configparams force-mem-accesses]
|
||||||
|
configparams force-mem-accesses 1
|
||||||
|
|
||||||
|
variable PCW_SILICON_VER_1_0
|
||||||
|
variable PCW_SILICON_VER_2_0
|
||||||
|
variable PCW_SILICON_VER_3_0
|
||||||
|
set sil_ver [ps_version]
|
||||||
|
|
||||||
|
if { $sil_ver == $PCW_SILICON_VER_1_0} {
|
||||||
|
ps7_post_config_1_0
|
||||||
|
} elseif { $sil_ver == $PCW_SILICON_VER_2_0 } {
|
||||||
|
ps7_post_config_2_0
|
||||||
|
} else {
|
||||||
|
ps7_post_config_3_0
|
||||||
|
}
|
||||||
|
configparams force-mem-accesses $saved_mode
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ps7_debug {} {
|
||||||
|
variable PCW_SILICON_VER_1_0
|
||||||
|
variable PCW_SILICON_VER_2_0
|
||||||
|
variable PCW_SILICON_VER_3_0
|
||||||
|
set sil_ver [ps_version]
|
||||||
|
|
||||||
|
if { $sil_ver == $PCW_SILICON_VER_1_0} {
|
||||||
|
ps7_debug_1_0
|
||||||
|
} elseif { $sil_ver == $PCW_SILICON_VER_2_0 } {
|
||||||
|
ps7_debug_2_0
|
||||||
|
} else {
|
||||||
|
ps7_debug_3_0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
proc ps7_init {} {
|
||||||
|
variable PCW_SILICON_VER_1_0
|
||||||
|
variable PCW_SILICON_VER_2_0
|
||||||
|
variable PCW_SILICON_VER_3_0
|
||||||
|
set sil_ver [ps_version]
|
||||||
|
if { $sil_ver == $PCW_SILICON_VER_1_0} {
|
||||||
|
ps7_mio_init_data_1_0
|
||||||
|
ps7_pll_init_data_1_0
|
||||||
|
ps7_clock_init_data_1_0
|
||||||
|
ps7_ddr_init_data_1_0
|
||||||
|
ps7_peripherals_init_data_1_0
|
||||||
|
#puts "PCW Silicon Version : 1.0"
|
||||||
|
} elseif { $sil_ver == $PCW_SILICON_VER_2_0 } {
|
||||||
|
ps7_mio_init_data_2_0
|
||||||
|
ps7_pll_init_data_2_0
|
||||||
|
ps7_clock_init_data_2_0
|
||||||
|
ps7_ddr_init_data_2_0
|
||||||
|
ps7_peripherals_init_data_2_0
|
||||||
|
#puts "PCW Silicon Version : 2.0"
|
||||||
|
} else {
|
||||||
|
ps7_mio_init_data_3_0
|
||||||
|
ps7_pll_init_data_3_0
|
||||||
|
ps7_clock_init_data_3_0
|
||||||
|
ps7_ddr_init_data_3_0
|
||||||
|
ps7_peripherals_init_data_3_0
|
||||||
|
#puts "PCW Silicon Version : 3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# For delay calculation using global timer
|
||||||
|
|
||||||
|
# start timer
|
||||||
|
proc perf_start_clock { } {
|
||||||
|
|
||||||
|
#writing SCU_GLOBAL_TIMER_CONTROL register
|
||||||
|
|
||||||
|
mask_write 0xF8F00208 0x00000109 0x00000009
|
||||||
|
}
|
||||||
|
|
||||||
|
# stop timer and reset timer count regs
|
||||||
|
proc perf_reset_clock { } {
|
||||||
|
perf_disable_clock
|
||||||
|
mask_write 0xF8F00200 0xFFFFFFFF 0x00000000
|
||||||
|
mask_write 0xF8F00204 0xFFFFFFFF 0x00000000
|
||||||
|
}
|
||||||
|
|
||||||
|
# Compute mask for given delay in miliseconds
|
||||||
|
proc get_number_of_cycles_for_delay { delay } {
|
||||||
|
|
||||||
|
# GTC is always clocked at 1/2 of the CPU frequency (CPU_3x2x)
|
||||||
|
variable APU_FREQ
|
||||||
|
return [ expr ($delay * $APU_FREQ /(2 * 1000))]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# stop timer
|
||||||
|
proc perf_disable_clock {} {
|
||||||
|
mask_write 0xF8F00208 0xFFFFFFFF 0x00000000
|
||||||
|
}
|
||||||
|
|
||||||
|
proc perf_reset_and_start_timer {} {
|
||||||
|
perf_reset_clock
|
||||||
|
perf_start_clock
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,131 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2020 <Xilinx Inc.>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program; if not, see <http://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file ps7_init_gpl.h
|
||||||
|
*
|
||||||
|
* This file can be included in FSBL code
|
||||||
|
* to get prototype of ps7_init() function
|
||||||
|
* and error codes
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//typedef unsigned int u32;
|
||||||
|
|
||||||
|
|
||||||
|
/** do we need to make this name more unique ? **/
|
||||||
|
//extern u32 ps7_init_data[];
|
||||||
|
extern unsigned long * ps7_ddr_init_data;
|
||||||
|
extern unsigned long * ps7_mio_init_data;
|
||||||
|
extern unsigned long * ps7_pll_init_data;
|
||||||
|
extern unsigned long * ps7_clock_init_data;
|
||||||
|
extern unsigned long * ps7_peripherals_init_data;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define OPCODE_EXIT 0U
|
||||||
|
#define OPCODE_CLEAR 1U
|
||||||
|
#define OPCODE_WRITE 2U
|
||||||
|
#define OPCODE_MASKWRITE 3U
|
||||||
|
#define OPCODE_MASKPOLL 4U
|
||||||
|
#define OPCODE_MASKDELAY 5U
|
||||||
|
#define NEW_PS7_ERR_CODE 1
|
||||||
|
|
||||||
|
/* Encode number of arguments in last nibble */
|
||||||
|
#define EMIT_EXIT() ( (OPCODE_EXIT << 4 ) | 0 )
|
||||||
|
#define EMIT_CLEAR(addr) ( (OPCODE_CLEAR << 4 ) | 1 ) , addr
|
||||||
|
#define EMIT_WRITE(addr,val) ( (OPCODE_WRITE << 4 ) | 2 ) , addr, val
|
||||||
|
#define EMIT_MASKWRITE(addr,mask,val) ( (OPCODE_MASKWRITE << 4 ) | 3 ) , addr, mask, val
|
||||||
|
#define EMIT_MASKPOLL(addr,mask) ( (OPCODE_MASKPOLL << 4 ) | 2 ) , addr, mask
|
||||||
|
#define EMIT_MASKDELAY(addr,mask) ( (OPCODE_MASKDELAY << 4 ) | 2 ) , addr, mask
|
||||||
|
|
||||||
|
/* Returns codes of PS7_Init */
|
||||||
|
#define PS7_INIT_SUCCESS (0) // 0 is success in good old C
|
||||||
|
#define PS7_INIT_CORRUPT (1) // 1 the data is corrupted, and slcr reg are in corrupted state now
|
||||||
|
#define PS7_INIT_TIMEOUT (2) // 2 when a poll operation timed out
|
||||||
|
#define PS7_POLL_FAILED_DDR_INIT (3) // 3 when a poll operation timed out for ddr init
|
||||||
|
#define PS7_POLL_FAILED_DMA (4) // 4 when a poll operation timed out for dma done bit
|
||||||
|
#define PS7_POLL_FAILED_PLL (5) // 5 when a poll operation timed out for pll sequence init
|
||||||
|
|
||||||
|
|
||||||
|
/* Silicon Versions */
|
||||||
|
#define PCW_SILICON_VERSION_1 0
|
||||||
|
#define PCW_SILICON_VERSION_2 1
|
||||||
|
#define PCW_SILICON_VERSION_3 2
|
||||||
|
|
||||||
|
/* This flag to be used by FSBL to check whether ps7_post_config() proc exixts */
|
||||||
|
#define PS7_POST_CONFIG
|
||||||
|
|
||||||
|
/* Freq of all peripherals */
|
||||||
|
|
||||||
|
#define APU_FREQ 666666687
|
||||||
|
#define DDR_FREQ 533333374
|
||||||
|
#define DCI_FREQ 10158730
|
||||||
|
#define QSPI_FREQ 200000000
|
||||||
|
#define SMC_FREQ 10000000
|
||||||
|
#define ENET0_FREQ 10000000
|
||||||
|
#define ENET1_FREQ 10000000
|
||||||
|
#define USB0_FREQ 60000000
|
||||||
|
#define USB1_FREQ 60000000
|
||||||
|
#define SDIO_FREQ 10000000
|
||||||
|
#define UART_FREQ 10000000
|
||||||
|
#define SPI_FREQ 166666672
|
||||||
|
#define I2C_FREQ 111111115
|
||||||
|
#define WDT_FREQ 111111115
|
||||||
|
#define TTC_FREQ 50000000
|
||||||
|
#define CAN_FREQ 10000000
|
||||||
|
#define PCAP_FREQ 200000000
|
||||||
|
#define TPIU_FREQ 200000000
|
||||||
|
#define FPGA0_FREQ 100000000
|
||||||
|
#define FPGA1_FREQ 10000000
|
||||||
|
#define FPGA2_FREQ 10000000
|
||||||
|
#define FPGA3_FREQ 10000000
|
||||||
|
|
||||||
|
|
||||||
|
/* For delay calculation using global registers*/
|
||||||
|
#define SCU_GLOBAL_TIMER_COUNT_L32 0xF8F00200
|
||||||
|
#define SCU_GLOBAL_TIMER_COUNT_U32 0xF8F00204
|
||||||
|
#define SCU_GLOBAL_TIMER_CONTROL 0xF8F00208
|
||||||
|
#define SCU_GLOBAL_TIMER_AUTO_INC 0xF8F00218
|
||||||
|
|
||||||
|
int ps7_config( unsigned long*);
|
||||||
|
int ps7_init();
|
||||||
|
int ps7_post_config();
|
||||||
|
int ps7_debug();
|
||||||
|
char* getPS7MessageInfo(unsigned key);
|
||||||
|
|
||||||
|
void perf_start_clock(void);
|
||||||
|
void perf_disable_clock(void);
|
||||||
|
void perf_reset_clock(void);
|
||||||
|
void perf_reset_and_start_timer();
|
||||||
|
int get_number_of_cycles_for_delay(unsigned int delay);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
{"platformName":"duifei_platform","sprVersion":"2.0","mode":"gui","dsaType":"Fixed","platformDesc":"duifei_platform","platHandOff":"/home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/system_top.xsa","platIntHandOff":"<platformDir>/hw/system_top.xsa","deviceType":"zynq","platIsPrebuiltAutogen":"false","platIsNoBootBsp":"false","hasFsblMakeHasChanges":"false","hasPmufwMakeHasChanges":"false","fsblExtraCompilerFlags":"-MMD -MP -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard ","platPreBuiltFlag":false,"platformSamplesDir":"","platActiveSys":"duifei_platform","systems":[{"systemName":"duifei_platform","systemDesc":"duifei_platform","sysIsBootAutoGen":"true","systemDispName":"duifei_platform","sysActiveDom":"standalone_domain","sysDefaultDom":"standalone_domain","domains":[{"domainName":"zynq_fsbl","domainDispName":"zynq_fsbl","domainDesc":"FSBL Application BSP - Auto Generated.","processors":"ps7_cortexa9_0","os":"standalone","sdxOs":"standalone","debugEnable":"","domRuntimes":["cpp"],"swRepo":"","mssOsVer":"9.0","mssFile":"","md5Digest":"a5dd9b2b99a4e80a35dcc5f15d411c7a","compatibleApp":"zynq_fsbl","domType":"bootDomain","arch":"32-bit","appSettings":{"appCompilerFlags":"","appLinkerFlags":""},"addedLibs":["xilffs:5.1","xilrsa:1.7"],"libOptions":{"libsContainingOptions":[]},"prebuiltLibs":{"prebuiltIncPath":[],"prebuiltLibPath":[]},"isolation":{}},{"domainName":"standalone_domain","domainDispName":"standalone on ps7_cortexa9_0","domainDesc":"standalone_domain","processors":"ps7_cortexa9_0","os":"standalone","sdxOs":"standalone","qemuArgs":"<platformDir>/resources/duifei_platform/standalone_domain/qemu_args.txt","qemuData":"<platformDir>/resources/duifei_platform/standalone_domain/qemu","debugEnable":"False","domRuntimes":["cpp"],"swRepo":"","mssOsVer":"9.0","mssFile":"","md5Digest":"ee1795cc5622622c05a83e5a3cf480b4","compatibleApp":"","domType":"mssDomain","appSettings":{"appCompilerFlags":"","appLinkerFlags":""},"addedLibs":[],"libOptions":{"libsContainingOptions":[]},"prebuiltLibs":{"prebuiltIncPath":[],"prebuiltLibPath":[]},"isolation":{}}]}]}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#
|
||||||
|
# Usage: To re-create this platform project launch xsct with below options.
|
||||||
|
# xsct /home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/vitis/duifei_platform/platform.tcl
|
||||||
|
#
|
||||||
|
# OR launch xsct and run below command.
|
||||||
|
# source /home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/vitis/duifei_platform/platform.tcl
|
||||||
|
#
|
||||||
|
# To create the platform in a different location, modify the -out option of "platform create" command.
|
||||||
|
# -out option specifies the output directory of the platform project.
|
||||||
|
|
||||||
|
platform create -name {duifei_platform}\
|
||||||
|
-hw {/home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/system_top.xsa}\
|
||||||
|
-proc {ps7_cortexa9_0} -os {standalone} -out {/home/josh/Workspace/vivado/vivado_pvt/projects/duifei/duifei_cmos_1t2r/vitis}
|
||||||
|
|
||||||
|
platform write
|
||||||
|
platform generate -domains
|
||||||
|
platform active {duifei_platform}
|
||||||
|
platform generate
|
||||||
|
platform active {duifei_platform}
|
||||||
|
platform generate
|
||||||
|
bsp reload
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
# Makefile generated by Xilinx.
|
||||||
|
|
||||||
|
DRIVER_LIB_VERSION = 1.0
|
||||||
|
PROCESSOR = ps7_cortexa9_0
|
||||||
|
LIBRARIES = ${PROCESSOR}/lib/libxil.a
|
||||||
|
BSP_MAKEFILES := $(wildcard $(PROCESSOR)/libsrc/*/src/Makefile)
|
||||||
|
SUBDIRS := $(patsubst %/Makefile, %, $(BSP_MAKEFILES))
|
||||||
|
BSP_SEQUENTIAL_MAKEFILES :=
|
||||||
|
BSP_PARALLEL_MAKEFILES := $(filter-out $(BSP_SEQUENTIAL_MAKEFILES),$(BSP_MAKEFILES))
|
||||||
|
SEQ_SUBDIRS := $(patsubst %/Makefile, %, $(BSP_SEQUENTIAL_MAKEFILES))
|
||||||
|
PAR_SUBDIRS := $(patsubst %/Makefile, %, $(BSP_PARALLEL_MAKEFILES))
|
||||||
|
|
||||||
|
ifneq (,$(findstring win,$(RDI_PLATFORM)))
|
||||||
|
SHELL = CMD
|
||||||
|
endif
|
||||||
|
|
||||||
|
all:
|
||||||
|
$(MAKE) --no-print-directory seq_libs
|
||||||
|
$(MAKE) -j 18 --no-print-directory par_libs
|
||||||
|
$(MAKE) --no-print-directory archive
|
||||||
|
@echo 'Finished building libraries'
|
||||||
|
|
||||||
|
include: $(addsuffix /make.include,$(SUBDIRS))
|
||||||
|
|
||||||
|
seq_libs: $(addsuffix /make.libs,$(SEQ_SUBDIRS))
|
||||||
|
@echo 'Finished building libraries sequentially.'
|
||||||
|
|
||||||
|
par_libs: $(addsuffix /make.libs,$(PAR_SUBDIRS))
|
||||||
|
@echo 'Finished building libraries parallelly.'
|
||||||
|
|
||||||
|
archive:
|
||||||
|
arm-none-eabi-ar -r $(LIBRARIES) $(sort $(wildcard $(PROCESSOR)/lib/*.o))
|
||||||
|
|
||||||
|
clean: $(addsuffix /make.clean,$(SUBDIRS))
|
||||||
|
rm -f ${PROCESSOR}/lib/libxil.a
|
||||||
|
|
||||||
|
$(PROCESSOR)/lib/libxil.a: $(PROCESSOR)/lib/libxil_init.a
|
||||||
|
cp -f $< $@
|
||||||
|
|
||||||
|
%/make.include: $(if $(wildcard $(PROCESSOR)/lib/libxil_init.a),$(PROCESSOR)/lib/libxil.a,)
|
||||||
|
@echo "Running Make include in $(subst /make.include,,$@)"
|
||||||
|
$(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=arm-none-eabi-gcc" "ASSEMBLER=arm-none-eabi-as" "ARCHIVER=arm-none-eabi-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -nostartfiles -g -Wall -Wextra -fno-tree-loop-distribute-patterns"
|
||||||
|
|
||||||
|
%/make.libs: include
|
||||||
|
@echo "Running Make libs in $(subst /make.libs,,$@)"
|
||||||
|
$(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=arm-none-eabi-gcc" "ASSEMBLER=arm-none-eabi-as" "ARCHIVER=arm-none-eabi-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -nostartfiles -g -Wall -Wextra -fno-tree-loop-distribute-patterns"
|
||||||
|
|
||||||
|
%/make.clean:
|
||||||
|
$(MAKE) -C $(subst /make.clean,,$@) -s clean
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
# generated by Xilinx.
|
||||||
|
|
||||||
|
DEPENDENCY_FLAGS= -MMD -MP
|
||||||
+281
@@ -0,0 +1,281 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2004 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PROFILE_TIMER_HW_H
|
||||||
|
#define PROFILE_TIMER_HW_H
|
||||||
|
|
||||||
|
#include "profile.h"
|
||||||
|
|
||||||
|
#ifdef PROC_PPC
|
||||||
|
#if defined __GNUC__
|
||||||
|
# define SYNCHRONIZE_IO __asm__ volatile ("eieio")
|
||||||
|
#elif defined __DCC__
|
||||||
|
# define SYNCHRONIZE_IO __asm volatile(" eieio")
|
||||||
|
#else
|
||||||
|
# define SYNCHRONIZE_IO
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PROC_PPC
|
||||||
|
#define ProfIo_In32(InputPtr) { (*(volatile u32 *)(InputPtr)); SYNCHRONIZE_IO; }
|
||||||
|
#define ProfIo_Out32(OutputPtr, Value) { (*(volatile u32 *)(OutputPtr) = Value); SYNCHRONIZE_IO; }
|
||||||
|
#else
|
||||||
|
#define ProfIo_In32(InputPtr) (*(volatile u32 *)(InputPtr));
|
||||||
|
#define ProfIo_Out32(OutputPtr, Value) { (*(volatile u32 *)(OutputPtr) = (Value)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ProfTmrCtr_mWriteReg(BaseAddress, TmrCtrNumber, RegOffset, ValueToWrite)\
|
||||||
|
ProfIo_Out32(((u32)(BaseAddress) + (u32)XTmrCtr_Offsets[(TmrCtrNumber)] + \
|
||||||
|
(u32)(RegOffset)), (u32)(ValueToWrite))
|
||||||
|
|
||||||
|
#define ProfTimerCtr_mReadReg(BaseAddress, TmrCtrNumber, RegOffset) \
|
||||||
|
ProfIo_In32((u32)(BaseAddress) + (u32)XTmrCtr_Offsets[(TmrCtrNumber)] + (u32)(RegOffset))
|
||||||
|
|
||||||
|
#define ProfTmrCtr_mSetControlStatusReg(BaseAddress, TmrCtrNumber, RegisterValue)\
|
||||||
|
ProfTmrCtr_mWriteReg((BaseAddress), (TmrCtrNumber), XTC_TCSR_OFFSET, \
|
||||||
|
(RegisterValue))
|
||||||
|
|
||||||
|
#define ProfTmrCtr_mGetControlStatusReg(BaseAddress, TmrCtrNumber) \
|
||||||
|
ProfTimerCtr_mReadReg((u32)(BaseAddress), (TmrCtrNumber), XTC_TCSR_OFFSET)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PROC_PPC
|
||||||
|
#include "xexception_l.h"
|
||||||
|
#include "xtime_l.h"
|
||||||
|
#include "xpseudo_asm.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TIMER_CONNECT_INTC
|
||||||
|
#include "xintc_l.h"
|
||||||
|
#include "xintc.h"
|
||||||
|
#endif /* TIMER_CONNECT_INTC */
|
||||||
|
|
||||||
|
#if (!defined PPC_PIT_INTERRUPT && !defined PROC_CORTEXA9)
|
||||||
|
#include "xtmrctr_l.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PROC_CORTEXA9
|
||||||
|
#include "xscutimer_hw.h"
|
||||||
|
#include "xscugic.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern u32 timer_clk_ticks ;
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------
|
||||||
|
* PowerPC Target - Timer related functions
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#ifdef PROC_PPC
|
||||||
|
|
||||||
|
#ifdef PPC_PIT_INTERRUPT
|
||||||
|
u32 timer_lo_clk_ticks ; /* Clk ticks when Timer is disabled in CG */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PROC_PPC440
|
||||||
|
#define XREG_TCR_PIT_INTERRUPT_ENABLE XREG_TCR_DEC_INTERRUPT_ENABLE
|
||||||
|
#define XREG_TSR_PIT_INTERRUPT_STATUS XREG_TSR_DEC_INTERRUPT_STATUS
|
||||||
|
#define XREG_SPR_PIT XREG_SPR_DEC
|
||||||
|
#define XEXC_ID_PIT_INT XEXC_ID_DEC_INT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Disable the Timer - During Profiling
|
||||||
|
*
|
||||||
|
* For PIT Timer -
|
||||||
|
* 1. XTime_PITDisableInterrupt() ;
|
||||||
|
* 2. Store the remaining timer clk tick
|
||||||
|
* 3. Stop the PIT Timer
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifdef PPC_PIT_INTERRUPT
|
||||||
|
#define disable_timer() \
|
||||||
|
{ \
|
||||||
|
u32 val; \
|
||||||
|
val=mfspr(XREG_SPR_TCR); \
|
||||||
|
mtspr(XREG_SPR_TCR, val & (~XREG_TCR_PIT_INTERRUPT_ENABLE)); \
|
||||||
|
timer_lo_clk_ticks = mfspr(XREG_SPR_PIT); \
|
||||||
|
mtspr(XREG_SPR_PIT, 0); \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define disable_timer() \
|
||||||
|
{ \
|
||||||
|
u32 addr = (PROFILE_TIMER_BASEADDR) + XTmrCtr_Offsets[(0)] + XTC_TCSR_OFFSET; \
|
||||||
|
u32 tmp_v = ProfIo_In32(addr); \
|
||||||
|
tmp_v = tmp_v & (~XTC_CSR_ENABLE_TMR_MASK); \
|
||||||
|
ProfIo_Out32((PROFILE_TIMER_BASEADDR) + XTmrCtr_Offsets[(0)] + XTC_TCSR_OFFSET, tmp_v); \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Enable the Timer
|
||||||
|
*
|
||||||
|
* For PIT Timer -
|
||||||
|
* 1. Load the remaining timer clk ticks
|
||||||
|
* 2. XTime_PITEnableInterrupt() ;
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#ifdef PPC_PIT_INTERRUPT
|
||||||
|
#define enable_timer() \
|
||||||
|
{ \
|
||||||
|
u32 val; \
|
||||||
|
val=mfspr(XREG_SPR_TCR); \
|
||||||
|
mtspr(XREG_SPR_PIT, timer_lo_clk_ticks); \
|
||||||
|
mtspr(XREG_SPR_TCR, val | XREG_TCR_PIT_INTERRUPT_ENABLE); \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define enable_timer() \
|
||||||
|
{ \
|
||||||
|
u32 addr = (PROFILE_TIMER_BASEADDR) + XTmrCtr_Offsets[(0)] + XTC_TCSR_OFFSET; \
|
||||||
|
u32 tmp_v = ProfIo_In32(addr); \
|
||||||
|
tmp_v = tmp_v | XTC_CSR_ENABLE_TMR_MASK; \
|
||||||
|
ProfIo_Out32((PROFILE_TIMER_BASEADDR) + XTmrCtr_Offsets[(0)] + XTC_TCSR_OFFSET, tmp_v); \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Send Ack to Timer Interrupt
|
||||||
|
*
|
||||||
|
* For PIT Timer -
|
||||||
|
* 1. Load the timer clk ticks
|
||||||
|
* 2. Enable AutoReload and Interrupt
|
||||||
|
* 3. Clear PIT Timer Status bits
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#ifdef PPC_PIT_INTERRUPT
|
||||||
|
#define timer_ack() \
|
||||||
|
{ \
|
||||||
|
u32 val; \
|
||||||
|
mtspr(XREG_SPR_PIT, timer_clk_ticks); \
|
||||||
|
mtspr(XREG_SPR_TSR, XREG_TSR_PIT_INTERRUPT_STATUS); \
|
||||||
|
val=mfspr(XREG_SPR_TCR); \
|
||||||
|
mtspr(XREG_SPR_TCR, val| XREG_TCR_PIT_INTERRUPT_ENABLE| XREG_TCR_AUTORELOAD_ENABLE); \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define timer_ack() \
|
||||||
|
{ \
|
||||||
|
u32 csr; \
|
||||||
|
csr = ProfTmrCtr_mGetControlStatusReg(PROFILE_TIMER_BASEADDR, 0); \
|
||||||
|
ProfTmrCtr_mSetControlStatusReg(PROFILE_TIMER_BASEADDR, 0, csr); \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------- */
|
||||||
|
#endif /* PROC_PPC */
|
||||||
|
/* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* MicroBlaze Target - Timer related functions
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#ifdef PROC_MICROBLAZE
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Disable the Timer during Call-Graph Data collection
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#define disable_timer() \
|
||||||
|
{ \
|
||||||
|
u32 Addr = ((u32)PROFILE_TIMER_BASEADDR); \
|
||||||
|
Addr += (u32)XTmrCtr_Offsets[(u16)(0)]; \
|
||||||
|
Addr += (u32)XTC_TCSR_OFFSET; \
|
||||||
|
u32 tmp_v = ProfIo_In32(Addr); \
|
||||||
|
tmp_v = tmp_v & (u32)(~XTC_CSR_ENABLE_TMR_MASK); \
|
||||||
|
u32 OutAddr = (u32)PROFILE_TIMER_BASEADDR; \
|
||||||
|
OutAddr += (u32)XTmrCtr_Offsets[(u16)(0)]; \
|
||||||
|
OutAddr += (u32)XTC_TCSR_OFFSET; \
|
||||||
|
ProfIo_Out32(OutAddr, (u32)tmp_v); \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Enable the Timer after Call-Graph Data collection
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#define enable_timer() \
|
||||||
|
{ \
|
||||||
|
u32 Addr = ((u32)PROFILE_TIMER_BASEADDR); \
|
||||||
|
Addr += (u32)XTmrCtr_Offsets[(u16)(0)]; \
|
||||||
|
Addr += (u32)XTC_TCSR_OFFSET; \
|
||||||
|
u32 tmp_v = (u32)ProfIo_In32(Addr); \
|
||||||
|
tmp_v = tmp_v | (u32)XTC_CSR_ENABLE_TMR_MASK; \
|
||||||
|
ProfIo_Out32((u32)(PROFILE_TIMER_BASEADDR) + (u32)XTmrCtr_Offsets[(u16)(0)] + (u32)XTC_TCSR_OFFSET, (u32)tmp_v); \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Send Ack to Timer Interrupt
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#define timer_ack() \
|
||||||
|
{ \
|
||||||
|
u32 csr; \
|
||||||
|
csr = ProfTmrCtr_mGetControlStatusReg((u32)PROFILE_TIMER_BASEADDR, (u16)0); \
|
||||||
|
ProfTmrCtr_mSetControlStatusReg((u32)PROFILE_TIMER_BASEADDR, (u16)0, (u32)csr); \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------- */
|
||||||
|
#endif /* PROC_MICROBLAZE */
|
||||||
|
/*-------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Cortex A9 Target - Timer related functions
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#ifdef PROC_CORTEXA9
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Disable the Timer during Call-Graph Data collection
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#define disable_timer() \
|
||||||
|
{ \
|
||||||
|
u32 Reg; \
|
||||||
|
Reg = Xil_In32(PROFILE_TIMER_BASEADDR + XSCUTIMER_CONTROL_OFFSET); \
|
||||||
|
Reg &= (~XSCUTIMER_CONTROL_ENABLE_MASK);\
|
||||||
|
Xil_Out32(PROFILE_TIMER_BASEADDR + XSCUTIMER_CONTROL_OFFSET, Reg);\
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Enable the Timer after Call-Graph Data collection
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#define enable_timer() \
|
||||||
|
{ \
|
||||||
|
u32 Reg; \
|
||||||
|
Reg = Xil_In32(PROFILE_TIMER_BASEADDR + XSCUTIMER_CONTROL_OFFSET); \
|
||||||
|
Reg |= XSCUTIMER_CONTROL_ENABLE_MASK; \
|
||||||
|
Xil_Out32(PROFILE_TIMER_BASEADDR + XSCUTIMER_CONTROL_OFFSET, Reg);\
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Send Ack to Timer Interrupt
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------- */
|
||||||
|
#define timer_ack() \
|
||||||
|
{ \
|
||||||
|
Xil_Out32((u32)PROFILE_TIMER_BASEADDR + (u32)XSCUTIMER_ISR_OFFSET, \
|
||||||
|
(u32)XSCUTIMER_ISR_EVENT_FLAG_MASK);\
|
||||||
|
}
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------- */
|
||||||
|
#endif /* PROC_CORTEXA9 */
|
||||||
|
/*-------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
*
|
||||||
|
* CAUTION: This file is automatically generated by HSI.
|
||||||
|
* Version: 2023.2.1
|
||||||
|
* DO NOT EDIT.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2024 Xilinx, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
*
|
||||||
|
* Description: Configurations for Standalone BSP
|
||||||
|
*
|
||||||
|
*******************************************************************/
|
||||||
|
|
||||||
|
#ifndef BSPCONFIG_H /* prevent circular inclusions */
|
||||||
|
#define BSPCONFIG_H /* by using protection macros */
|
||||||
|
|
||||||
|
#define MICROBLAZE_PVR_NONE
|
||||||
|
|
||||||
|
/* Definition for hard-float ABI */
|
||||||
|
#define FPU_HARD_FLOAT_ABI_ENABLED 1
|
||||||
|
|
||||||
|
#endif /*end of __BSPCONFIG_H_*/
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2002 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _MBLAZE_NT_TYPES_H
|
||||||
|
#define _MBLAZE_NT_TYPES_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef char byte;
|
||||||
|
typedef short half;
|
||||||
|
typedef int word;
|
||||||
|
typedef unsigned char ubyte;
|
||||||
|
typedef unsigned short uhalf;
|
||||||
|
typedef unsigned int uword;
|
||||||
|
typedef ubyte boolean;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
+269
@@ -0,0 +1,269 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file pm_api_version.h
|
||||||
|
*
|
||||||
|
* @addtogroup xpm_versal_apis XilPM APIs
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PM_API_VERSION_H_
|
||||||
|
#define PM_API_VERSION_H_
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @section EEMI_API_DETAIL XilPM EEMI API Version Detail
|
||||||
|
*
|
||||||
|
* This section provides details of EEMI API version and it's history for PM APIs of XilPM library.
|
||||||
|
*
|
||||||
|
* | NAME | ID | Platform | Version| Description |
|
||||||
|
* |----------------------------|-------|---------------|:------:|---------------------------------------------------------------------------|
|
||||||
|
* | PM_GET_API_VERSION | 0x1 | Both | 1 | The API is used to request the version number of the API |
|
||||||
|
* | PM_SET_CONFIGURATION | 0x2 | ZynqMP | 1 | The API is used to configure the power management framework |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: Deprecated in Versal but supported in ZynqMP |
|
||||||
|
* | PM_GET_NODE_STATUS | 0x3 | Both | 1 | The API is used to obtain information about current status of a device |
|
||||||
|
* | PM_GET_OP_CHARACTERISTIC | 0x4 | Both | 2 | V1 - The API is used to get operating characteristics of a device |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of bitmask functionality, user can check the supported\n "type" first before performing the actual functionality |
|
||||||
|
* | PM_REGISTER_NOTIFIER | 0x5 | Both | 2 | V1 - The API is used to register a subsystem to be notified about the\n device event |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of event management functionality |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: V2 is supported in Versal but ZynqMP supports only V1 |
|
||||||
|
* | PM_REQUEST_SUSPEND | 0x6 | Both | 1 | The API is used to send suspend request to another subsystem |
|
||||||
|
* | PM_SELF_SUSPEND | 0x7 | Both | 2 | V1 - The API is used to suspend a child subsystem |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of cpu idle functionality during force powerdown |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: V2 is supported in Versal but ZynqMP supports only V1 |
|
||||||
|
* | PM_FORCE_POWERDOWN | 0x8 | Both | 2 | V1 - The API is used to Powerdown other processor or node |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of cpu idle functionality during force powerdown |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: V2 is supported in Versal but ZynqMP supports only V1 |
|
||||||
|
* | PM_ABORT_SUSPEND | 0x9 | Both | 1 | The API is used by a subsystem to abort suspend of a child subsystem |
|
||||||
|
* | PM_REQUEST_WAKEUP | 0xA | Both | 1 | The API is used to start-up and wake-up a child subsystem |
|
||||||
|
* | PM_SET_WAKEUP_SOURCE | 0xB | Both | 1 | The API is used to set wakeup source |
|
||||||
|
* | PM_SYSTEM_SHUTDOWN | 0xC | Both | 1 | The API is used to shutdown or restart the system |
|
||||||
|
* | PM_REQUEST_NODE | 0xD | Both | 2 | V1 - The API is used to request the usage of a device |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of security policy handling during request device |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: V2 is supported in Versal but ZynqMP supports only V1 |
|
||||||
|
* | PM_RELEASE_NODE | 0xE | Both | 2 | V1 - The API is used to release the usage of a device |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of security policy handling during request device |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: V2 is supported in Versal but ZynqMP supports only V1 |
|
||||||
|
* | PM_SET_REQUIREMENT | 0xF | Both | 1 | The API is used to announce a change in requirement for a specific slave\n node which is currently in use |
|
||||||
|
* | PM_SET_MAX_LATENCY | 0x10 | Both | 1 | The API is used to set maximum allowed latency for the device |
|
||||||
|
* | PM_RESET_ASSERT | 0x11 | Both | 1 | The API is used to reset or de-reset a device |
|
||||||
|
* | PM_RESET_GET_STATUS | 0x12 | Both | 1 | The API is used to read the device reset state |
|
||||||
|
* | PM_MMIO_WRITE | 0x13 | ZynqMP | 1 | The API is used to write a value into a register |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: Deprecated in Versal but supported in ZynqMP |
|
||||||
|
* | PM_MMIO_READ | 0x14 | ZynqMP | 1 | The API is used to read a value from a register |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: Deprecated in Versal but supported in ZynqMP |
|
||||||
|
* | PM_INIT_FINALIZE | 0x15 | Both | 1 | The API is used to initialize subsystem and release unused devices |
|
||||||
|
* | PM_GET_CHIPID | 0x18 | Both | 1 | The API is used to request the version and ID code of a chip |
|
||||||
|
* | PM_PINCTRL_REQUEST | 0x1C | Both | 1 | The API is used to request the pin |
|
||||||
|
* | PM_PINCTRL_RELEASE | 0x1D | Both | 1 | The API is used to release the pin |
|
||||||
|
* | PM_PINCTRL_GET_FUNCTION | 0x1E | Both | 1 | The API is used to read the pin function |
|
||||||
|
* | PM_PINCTRL_SET_FUNCTION | 0x1F | Both | 1 | The API is used to set the pin function |
|
||||||
|
* | PM_PINCTRL_CONFIG_PARAM_GET| 0x20 | Both | 1 | The API is used to read the pin parameter value |
|
||||||
|
* | PM_PINCTRL_CONFIG_PARAM_SET| 0x21 | Both | 2 | V1 - The API is used to set the pin parameter value |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of MIO tri-state controlling functionality |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: V2 is supported in ZynqMP but Versal supports only V1 |
|
||||||
|
* | PM_IOCTL | 0x22 | Both | 3 | V1 - The API is used to perform driver-like IOCTL functions on shared\n system devices |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of bitmask functionality, user can check the supported\n ID first before performing the actual functionality |
|
||||||
|
* | ^ | ^ | ^ | ^ | V3 - Add support of zeroization of AIE data and program memory separately |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: V3 is supported in Versal but ZynqMP supports only V2 |
|
||||||
|
* | PM_QUERY_DATA | 0x23 | Both | 2 | V1 - The API is used to query information about the platform resources |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of bitmask functionality, user can check the supported\n ID first before performing the actual functionality |
|
||||||
|
* | PM_CLOCK_ENABLE | 0x24 | Both | 1 | The API is used to enable the clock |
|
||||||
|
* | PM_CLOCK_DISABLE | 0x25 | Both | 1 | The API is used to disable the clock |
|
||||||
|
* | PM_CLOCK_GETSTATE | 0x26 | Both | 1 | The API is used to read the clock state |
|
||||||
|
* | PM_CLOCK_SETDIVIDER | 0x27 | Both | 1 | The API is used to set the divider value of the clock |
|
||||||
|
* | PM_CLOCK_GETDIVIDER | 0x28 | Both | 1 | The API is used to read the clock divider |
|
||||||
|
* | PM_CLOCK_SETPARENT | 0x2B | Both | 1 | The API is used to set the parent of the clock |
|
||||||
|
* | PM_CLOCK_GETPARENT | 0x2C | Both | 1 | The API is used to read the clock parent |
|
||||||
|
* | PM_PLL_SET_PARAM | 0x30 | Both | 1 | The API is used to set the parameter of PLL clock |
|
||||||
|
* | PM_PLL_GET_PARAM | 0x31 | Both | 1 | The API is used to read the parameter of PLL clock |
|
||||||
|
* | PM_PLL_SET_MODE | 0x32 | Both | 1 | The API is used to set the mode of PLL clock |
|
||||||
|
* | PM_PLL_GET_MODE | 0x33 | Both | 1 | The API is used to read the mode of PLL clock |
|
||||||
|
* | PM_REGISTER_ACCESS | 0x34 | ZynqMP | 1 | The API is used for register read/write access data |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: Deprecated in Versal but supported in ZynqMP |
|
||||||
|
* | PM_EFUSE_ACCESS | 0x35 | ZynqMP | 1 | The API is used to provide access to efuse memory |
|
||||||
|
* | ^ | ^ | ^ | ^ | Note: Deprecated in Versal but supported in ZynqMP |
|
||||||
|
* | PM_FEATURE_CHECK | 0x3F | Both | 2 | V1 - The API is used to return supported version of the given API |
|
||||||
|
* | ^ | ^ | ^ | ^ | V2 - Added support of bitmask payload functionality |
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @section IOCTL_ID_DETAIL XilPM IOCTL IDs Detail
|
||||||
|
*
|
||||||
|
* This section provides the details of the IOCTL IDs which are supported across the different platforms and their brief descriptions.
|
||||||
|
*
|
||||||
|
* | Name | ID | Platform | Description |
|
||||||
|
* |------------------------------------|-------|---------------|---------------------------------------|
|
||||||
|
* | IOCTL_GET_RPU_OPER_MODE | 0 | Both | Get RPU mode |
|
||||||
|
* | IOCTL_SET_RPU_OPER_MODE | 1 | Both | Set RPU mode |
|
||||||
|
* | IOCTL_RPU_BOOT_ADDR_CONFIG | 2 | Both | RPU boot address config |
|
||||||
|
* | IOCTL_TCM_COMB_CONFIG | 3 | Both | TCM config |
|
||||||
|
* | IOCTL_SET_TAPDELAY_BYPASS | 4 | Both | TAP delay bypass |
|
||||||
|
* | IOCTL_SET_SGMII_MODE | 5 | ZynqMP | SGMII mode |
|
||||||
|
* | IOCTL_SD_DLL_RESET | 6 | Both | SD DLL reset |
|
||||||
|
* | IOCTL_SET_SD_TAPDELAY | 7 | Both | SD TAP delay |
|
||||||
|
* | IOCTL_SET_PLL_FRAC_MODE | 8 | Both | Set PLL frac mode |
|
||||||
|
* | IOCTL_GET_PLL_FRAC_MODE | 9 | Both | Get PLL frac mode |
|
||||||
|
* | IOCTL_SET_PLL_FRAC_DATA | 10 | Both | Set PLL frac data |
|
||||||
|
* | IOCTL_GET_PLL_FRAC_DATA | 11 | Both | Get PLL frac data |
|
||||||
|
* | IOCTL_WRITE_GGS | 12 | Both | Write GGS |
|
||||||
|
* | IOCTL_READ_GGS | 13 | Both | Read GGS |
|
||||||
|
* | IOCTL_WRITE_PGGS | 14 | Both | Write PGGS |
|
||||||
|
* | IOCTL_READ_PGGS | 15 | Both | Read PGGS |
|
||||||
|
* | IOCTL_ULPI_RESET | 16 | ZynqMP | ULPI reset |
|
||||||
|
* | IOCTL_SET_BOOT_HEALTH_STATUS | 17 | Both | Set boot status |
|
||||||
|
* | IOCTL_AFI | 18 | ZynqMP | AFI |
|
||||||
|
* | IOCTL_PROBE_COUNTER_READ | 19 | Versal | Probe counter read |
|
||||||
|
* | IOCTL_PROBE_COUNTER_WRITE | 20 | Versal | Probe counter write |
|
||||||
|
* | IOCTL_OSPI_MUX_SELECT | 21 | Versal | OSPI mux select |
|
||||||
|
* | IOCTL_USB_SET_STATE | 22 | Versal | USB set state |
|
||||||
|
* | IOCTL_GET_LAST_RESET_REASON | 23 | Versal | Get last reset reason |
|
||||||
|
* | IOCTL_AIE_ISR_CLEAR | 24 | Versal | AIE ISR clear |
|
||||||
|
* | IOCTL_REGISTER_SGI | 25 | None | Register SGI to ATF |
|
||||||
|
* | IOCTL_SET_FEATURE_CONFIG | 26 | ZynqMP | Set runtime feature config |
|
||||||
|
* | IOCTL_GET_FEATURE_CONFIG | 27 | ZynqMP | Get runtime feature config |
|
||||||
|
* | IOCTL_READ_REG | 28 | Versal | Read a 32-bit register |
|
||||||
|
* | IOCTL_MASK_WRITE_REG | 29 | Versal | RMW a 32-bit register |
|
||||||
|
* | IOCTL_SET_SD_CONFIG | 30 | ZynqMP | Set SD config register value |
|
||||||
|
* | IOCTL_SET_GEM_CONFIG | 31 | ZynqMP | Set GEM config register value |
|
||||||
|
* | IOCTL_SET_USB_CONFIG | 32 | ZynqMP | Set USB config register value |
|
||||||
|
* | IOCTL_AIE_OPS | 33 | Versal | AIE1/AIEML Run Time Operations |
|
||||||
|
* | IOCTL_GET_QOS | 34 | Versal | Get Device QoS value |
|
||||||
|
* | IOCTL_GET_APU_OPER_MODE | 35 | Versal | Get APU operation mode |
|
||||||
|
* | IOCTL_SET_APU_OPER_MODE | 36 | Versal | Set APU operation mode |
|
||||||
|
* | IOCTL_PREPARE_DDR_SHUTDOWN | 37 | Versal | Prepare DDR for shut down |
|
||||||
|
* | IOCTL_GET_SSIT_TEMP | 38 | Versal | Get secondary SLR min/max temperature |
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @section QUERY_ID_DETAIL XilPM QUERY IDs Detail
|
||||||
|
*
|
||||||
|
* This section provides the details of the QUERY IDs which are supported across the different platforms and their brief descriptions.
|
||||||
|
*
|
||||||
|
* | Name | ID | Platform | Description |
|
||||||
|
* |--------------------------------------------|-------|---------------|---------------------------------------|
|
||||||
|
* | XPM_QID_INVALID | 0 | Both | Invalid Query ID |
|
||||||
|
* | XPM_QID_CLOCK_GET_NAME | 1 | Both | Get clock name |
|
||||||
|
* | XPM_QID_CLOCK_GET_TOPOLOGY | 2 | Both | Get clock topology |
|
||||||
|
* | XPM_QID_CLOCK_GET_FIXEDFACTOR_PARAMS | 3 | Both | Get clock fixedfactor parameter |
|
||||||
|
* | XPM_QID_CLOCK_GET_MUXSOURCES | 4 | Both | Get clock mux sources |
|
||||||
|
* | XPM_QID_CLOCK_GET_ATTRIBUTES | 5 | Both | Get clock attributes |
|
||||||
|
* | XPM_QID_PINCTRL_GET_NUM_PINS | 6 | Both | Get total pins |
|
||||||
|
* | XPM_QID_PINCTRL_GET_NUM_FUNCTIONS | 7 | Both | Get total pin functions |
|
||||||
|
* | XPM_QID_PINCTRL_GET_NUM_FUNCTION_GROUPS | 8 | Both | Get total pin function groups |
|
||||||
|
* | XPM_QID_PINCTRL_GET_FUNCTION_NAME | 9 | Both | Get pin function name |
|
||||||
|
* | XPM_QID_PINCTRL_GET_FUNCTION_GROUPS | 10 | Both | Get pin function groups |
|
||||||
|
* | XPM_QID_PINCTRL_GET_PIN_GROUPS | 11 | Both | Get pin groups |
|
||||||
|
* | XPM_QID_CLOCK_GET_NUM_CLOCKS | 12 | Both | Get number of clocks |
|
||||||
|
* | XPM_QID_CLOCK_GET_MAX_DIVISOR | 13 | Both | Get max clock divisor |
|
||||||
|
* | XPM_QID_PLD_GET_PARENT | 14 | Versal | Get PLD parent |
|
||||||
|
* | XPM_QID_PINCTRL_GET_ATTRIBUTES | 15 | Versal | Get pin attributes |
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @section GET_OP_CHAR_DETAIL XilPM GET_OP_CHAR IDs Detail
|
||||||
|
*
|
||||||
|
* This section provides the details of the GET_OP_CHAR IDs which are supported across the different platforms and their brief descriptions.
|
||||||
|
*
|
||||||
|
* | Name | ID | Platform | Description |
|
||||||
|
* |------------------------------------|-------|---------------|-----------------------------------------------|
|
||||||
|
* | PM_OPCHAR_TYPE_POWER | 1 | ZynqMP | Operating characteristic ID power |
|
||||||
|
* | PM_OPCHAR_TYPE_TEMP | 2 | Versal | Operating characteristic ID temperature |
|
||||||
|
* | PM_OPCHAR_TYPE_LATENCY | 3 | Both | Operating characteristic ID latency |
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PM API IDs
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
PM_API_MIN, /**< 0x0 */
|
||||||
|
PM_GET_API_VERSION, /**< 0x1 */
|
||||||
|
PM_SET_CONFIGURATION, /**< 0x2 */
|
||||||
|
PM_GET_NODE_STATUS, /**< 0x3 */
|
||||||
|
PM_GET_OP_CHARACTERISTIC, /**< 0x4 */
|
||||||
|
PM_REGISTER_NOTIFIER, /**< 0x5 */
|
||||||
|
PM_REQUEST_SUSPEND, /**< 0x6 */
|
||||||
|
PM_SELF_SUSPEND, /**< 0x7 */
|
||||||
|
PM_FORCE_POWERDOWN, /**< 0x8 */
|
||||||
|
PM_ABORT_SUSPEND, /**< 0x9 */
|
||||||
|
PM_REQUEST_WAKEUP, /**< 0xA */
|
||||||
|
PM_SET_WAKEUP_SOURCE, /**< 0xB */
|
||||||
|
PM_SYSTEM_SHUTDOWN, /**< 0xC */
|
||||||
|
PM_REQUEST_NODE, /**< 0xD */
|
||||||
|
PM_RELEASE_NODE, /**< 0xE */
|
||||||
|
PM_SET_REQUIREMENT, /**< 0xF */
|
||||||
|
PM_SET_MAX_LATENCY, /**< 0x10 */
|
||||||
|
PM_RESET_ASSERT, /**< 0x11 */
|
||||||
|
PM_RESET_GET_STATUS, /**< 0x12 */
|
||||||
|
PM_MMIO_WRITE, /**< 0x13 */
|
||||||
|
PM_MMIO_READ, /**< 0x14 */
|
||||||
|
PM_INIT_FINALIZE, /**< 0x15 */
|
||||||
|
PM_FPGA_LOAD, /**< 0x16 */
|
||||||
|
PM_FPGA_GET_STATUS, /**< 0x17 */
|
||||||
|
PM_GET_CHIPID, /**< 0x18 */
|
||||||
|
PM_SECURE_RSA_AES, /**< 0x19 */
|
||||||
|
PM_SECURE_SHA, /**< 0x1A */
|
||||||
|
PM_SECURE_RSA, /**< 0x1B */
|
||||||
|
PM_PINCTRL_REQUEST, /**< 0x1C */
|
||||||
|
PM_PINCTRL_RELEASE, /**< 0x1D */
|
||||||
|
PM_PINCTRL_GET_FUNCTION, /**< 0x1E */
|
||||||
|
PM_PINCTRL_SET_FUNCTION, /**< 0x1F */
|
||||||
|
PM_PINCTRL_CONFIG_PARAM_GET, /**< 0x20 */
|
||||||
|
PM_PINCTRL_CONFIG_PARAM_SET, /**< 0x21 */
|
||||||
|
PM_IOCTL, /**< 0x22 */
|
||||||
|
PM_QUERY_DATA, /**< 0x23 */
|
||||||
|
PM_CLOCK_ENABLE, /**< 0x24 */
|
||||||
|
PM_CLOCK_DISABLE, /**< 0x25 */
|
||||||
|
PM_CLOCK_GETSTATE, /**< 0x26 */
|
||||||
|
PM_CLOCK_SETDIVIDER, /**< 0x27 */
|
||||||
|
PM_CLOCK_GETDIVIDER, /**< 0x28 */
|
||||||
|
PM_CLOCK_SETRATE, /**< 0x29 */
|
||||||
|
PM_CLOCK_GETRATE, /**< 0x2A */
|
||||||
|
PM_CLOCK_SETPARENT, /**< 0x2B */
|
||||||
|
PM_CLOCK_GETPARENT, /**< 0x2C */
|
||||||
|
PM_SECURE_IMAGE, /**< 0x2D */
|
||||||
|
PM_FPGA_READ, /**< 0x2E */
|
||||||
|
PM_SECURE_AES, /**< 0x2F */
|
||||||
|
PM_PLL_SET_PARAMETER, /**< 0x30 */
|
||||||
|
PM_PLL_GET_PARAMETER, /**< 0x31 */
|
||||||
|
PM_PLL_SET_MODE, /**< 0x32 */
|
||||||
|
PM_PLL_GET_MODE, /**< 0x33 */
|
||||||
|
PM_REGISTER_ACCESS, /**< 0x34 */
|
||||||
|
PM_EFUSE_ACCESS, /**< 0x35 */
|
||||||
|
PM_ADD_SUBSYSTEM, /**< 0x36 */
|
||||||
|
PM_DESTROY_SUBSYSTEM, /**< 0x37 */
|
||||||
|
PM_DESCRIBE_NODES, /**< 0x38 */
|
||||||
|
PM_ADD_NODE, /**< 0x39 */
|
||||||
|
PM_ADD_NODE_PARENT, /**< 0x3A */
|
||||||
|
PM_ADD_NODE_NAME, /**< 0x3B */
|
||||||
|
PM_ADD_REQUIREMENT, /**< 0x3C */
|
||||||
|
PM_SET_CURRENT_SUBSYSTEM, /**< 0x3D */
|
||||||
|
PM_INIT_NODE, /**< 0x3E */
|
||||||
|
PM_FEATURE_CHECK, /**< 0x3F */
|
||||||
|
PM_ISO_CONTROL, /**< 0x40 */
|
||||||
|
PM_ACTIVATE_SUBSYSTEM, /**< 0x41 */
|
||||||
|
PM_SET_NODE_ACCESS, /**< 0x42 */
|
||||||
|
PM_BISR, /**< 0x43 */
|
||||||
|
PM_APPLY_TRIM, /**< 0x44 */
|
||||||
|
PM_NOC_CLOCK_ENABLE, /**< 0x45 */
|
||||||
|
PM_IF_NOC_CLOCK_ENABLE, /**< 0x46 */
|
||||||
|
PM_FORCE_HOUSECLEAN, /**< 0x47 */
|
||||||
|
PM_FPGA_GET_VERSION, /**< 0x48 */
|
||||||
|
PM_FPGA_GET_FEATURE_LIST, /**< 0x49 */
|
||||||
|
PM_API_MAX /**< 0x4A */
|
||||||
|
} XPm_ApiId;
|
||||||
|
|
||||||
|
#endif /* PM_API_VERSION_H_ */
|
||||||
+105
@@ -0,0 +1,105 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2002 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PROFILE_H
|
||||||
|
#define PROFILE_H 1
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "profile_config.h"
|
||||||
|
|
||||||
|
#ifdef PROC_MICROBLAZE
|
||||||
|
#include "mblaze_nt_types.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void _system_init( void ) ;
|
||||||
|
void _system_clean( void ) ;
|
||||||
|
void mcount(u32 frompc, u32 selfpc);
|
||||||
|
void profile_intr_handler( void ) ;
|
||||||
|
void _profile_init( void );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Profiling on hardware - Hash table maintained on hardware and data sent
|
||||||
|
* to xmd for gmon.out generation.
|
||||||
|
****************************************************************************/
|
||||||
|
/*
|
||||||
|
* histogram counters are unsigned shorts (according to the kernel).
|
||||||
|
*/
|
||||||
|
#define HISTCOUNTER u16
|
||||||
|
|
||||||
|
struct tostruct {
|
||||||
|
u32 selfpc;
|
||||||
|
s32 count;
|
||||||
|
s16 link;
|
||||||
|
u16 pad;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct fromstruct {
|
||||||
|
u32 frompc ;
|
||||||
|
s16 link ;
|
||||||
|
u16 pad ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* general rounding functions.
|
||||||
|
*/
|
||||||
|
#define ROUNDDOWN(x,y) (((x)/(y))*(y))
|
||||||
|
#define ROUNDUP(x,y) ((((x)+(y)-1)/(y))*(y))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The profiling data structures are housed in this structure.
|
||||||
|
*/
|
||||||
|
struct gmonparam {
|
||||||
|
s32 state;
|
||||||
|
|
||||||
|
/* Histogram Information */
|
||||||
|
u16 *kcount; /* No. of bins in histogram */
|
||||||
|
u32 kcountsize; /* Histogram samples */
|
||||||
|
|
||||||
|
/* Call-graph Information */
|
||||||
|
struct fromstruct *froms;
|
||||||
|
u32 fromssize;
|
||||||
|
struct tostruct *tos;
|
||||||
|
u32 tossize;
|
||||||
|
|
||||||
|
/* Initialization I/Ps */
|
||||||
|
u32 lowpc;
|
||||||
|
u32 highpc;
|
||||||
|
u32 textsize;
|
||||||
|
/* u32 cg_froms, */
|
||||||
|
/* u32 cg_tos, */
|
||||||
|
};
|
||||||
|
extern struct gmonparam *_gmonparam;
|
||||||
|
extern s32 n_gmon_sections;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Possible states of profiling.
|
||||||
|
*/
|
||||||
|
#define GMON_PROF_ON 0
|
||||||
|
#define GMON_PROF_BUSY 1
|
||||||
|
#define GMON_PROF_ERROR 2
|
||||||
|
#define GMON_PROF_OFF 3
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sysctl definitions for extracting profiling information from the kernel.
|
||||||
|
*/
|
||||||
|
#define GPROF_STATE 0 /* int: profiling enabling variable */
|
||||||
|
#define GPROF_COUNT 1 /* struct: profile tick count buffer */
|
||||||
|
#define GPROF_FROMS 2 /* struct: from location hash bucket */
|
||||||
|
#define GPROF_TOS 3 /* struct: destination/count structure */
|
||||||
|
#define GPROF_GMONPARAM 4 /* struct: profiling parameters (see above) */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* PROFILE_H */
|
||||||
+109
@@ -0,0 +1,109 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2014 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file sleep.h
|
||||||
|
*
|
||||||
|
* This header file contains ARM Cortex A53,A9,R5,Microblaze specific sleep
|
||||||
|
* related APIs.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY :
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------------
|
||||||
|
* 6.6 srm 11/02/17 Added processor specific sleep routines
|
||||||
|
* function prototypes.
|
||||||
|
* 7.7 sk 01/10/22 Typecast sleep declaration argument from unsigned int to
|
||||||
|
* u32 to fix misra_c_2012_directive_4_6 violation.
|
||||||
|
* 7.7 sk 01/10/22 Modify the return type of sleep_R5 and usleep_R5 from
|
||||||
|
* unsigned to void to fix misra_c_2012_rule_17_7 violation.
|
||||||
|
* 8.0 sk 03/02/22 Update usleep_R5 and usleep parameter types to fix misra_
|
||||||
|
* c_2012_directive_4_6 violation.
|
||||||
|
* 8.0 sk 03/17/22 Modify the return type of usleep_MB from int to void and
|
||||||
|
* sleep_MB from unsigned to void to fix misra_c_2012_rule_
|
||||||
|
* 17_7 violation.
|
||||||
|
* 8.0 sk 03/17/22 Modify sleep_MB parameter type from unsigned int to
|
||||||
|
* u32 and usleep_MB parameter type from unsigned long to
|
||||||
|
* ULONG to fix misra_c_2012_rule_4_6 violation.
|
||||||
|
* 9.0 ml 03/03/23 Add description to fix doxygen warnings.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef SLEEP_H
|
||||||
|
#define SLEEP_H
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_io.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro polls an address periodically until a condition is met or till the
|
||||||
|
* timeout occurs.
|
||||||
|
* The minimum timeout for calling this macro is 100us. If the timeout is less
|
||||||
|
* than 100us, it still waits for 100us. Also the unit for the timeout is 100us.
|
||||||
|
* If the timeout is not a multiple of 100us, it waits for a timeout of
|
||||||
|
* the next usec value which is a multiple of 100us.
|
||||||
|
*
|
||||||
|
* @param IO_func - accessor function to read the register contents.
|
||||||
|
* Depends on the register width.
|
||||||
|
* @param ADDR - Address to be polled
|
||||||
|
* @param VALUE - variable to read the value
|
||||||
|
* @param COND - Condition to checked (usually involves VALUE)
|
||||||
|
* @param TIMEOUT_US - timeout in micro seconds
|
||||||
|
*
|
||||||
|
* @return 0 - when the condition is met
|
||||||
|
* -1 - when the condition is not met till the timeout period
|
||||||
|
*
|
||||||
|
* @note none
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define Xil_poll_timeout(IO_func, ADDR, VALUE, COND, TIMEOUT_US) \
|
||||||
|
( { \
|
||||||
|
u64 timeout = TIMEOUT_US/100; \
|
||||||
|
if(TIMEOUT_US%100!=0) \
|
||||||
|
timeout++; \
|
||||||
|
for(;;) { \
|
||||||
|
VALUE = IO_func(ADDR); \
|
||||||
|
if(COND) \
|
||||||
|
break; \
|
||||||
|
else { \
|
||||||
|
usleep(100); \
|
||||||
|
timeout--; \
|
||||||
|
if(timeout==0) \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
(timeout>0) ? 0 : -1; \
|
||||||
|
} )
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
void usleep(ULONG useconds);
|
||||||
|
void sleep(u32 seconds);
|
||||||
|
void usleep_R5(ULONG useconds);
|
||||||
|
void sleep_R5(u32 seconds);
|
||||||
|
void usleep_MB(ULONG useconds);
|
||||||
|
void sleep_MB(u32 seconds);
|
||||||
|
int usleep_A53(unsigned long useconds);
|
||||||
|
unsigned sleep_A53(unsigned int seconds);
|
||||||
|
int usleep_A9(unsigned long useconds);
|
||||||
|
unsigned sleep_A9(unsigned int seconds);
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
+97
@@ -0,0 +1,97 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2010 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file smc.h
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- ---------------------------------------------------
|
||||||
|
* 1.00a sdm 11/03/09 Initial release.
|
||||||
|
* 4.2 pkp 08/04/14 Removed function definition of XSmc_NorInit and XSmc_NorInit
|
||||||
|
* as smc.c is removed
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @note None.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SMC_H /* prevent circular inclusions */
|
||||||
|
#define SMC_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xparameters.h"
|
||||||
|
#include "xil_io.h"
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/* Memory controller configuration register offset */
|
||||||
|
#define XSMCPSS_MC_STATUS 0x000U /* Controller status reg, RO */
|
||||||
|
#define XSMCPSS_MC_INTERFACE_CONFIG 0x004U /* Interface config reg, RO */
|
||||||
|
#define XSMCPSS_MC_SET_CONFIG 0x008U /* Set configuration reg, WO */
|
||||||
|
#define XSMCPSS_MC_CLR_CONFIG 0x00CU /* Clear config reg, WO */
|
||||||
|
#define XSMCPSS_MC_DIRECT_CMD 0x010U /* Direct command reg, WO */
|
||||||
|
#define XSMCPSS_MC_SET_CYCLES 0x014U /* Set cycles register, WO */
|
||||||
|
#define XSMCPSS_MC_SET_OPMODE 0x018U /* Set opmode register, WO */
|
||||||
|
#define XSMCPSS_MC_REFRESH_PERIOD_0 0x020U /* Refresh period_0 reg, RW */
|
||||||
|
#define XSMCPSS_MC_REFRESH_PERIOD_1 0x024U /* Refresh period_1 reg, RW */
|
||||||
|
|
||||||
|
/* Chip select configuration register offset */
|
||||||
|
#define XSMCPSS_CS_IF0_CHIP_0_OFFSET 0x100U /* Interface 0 chip 0 config */
|
||||||
|
#define XSMCPSS_CS_IF0_CHIP_1_OFFSET 0x120U /* Interface 0 chip 1 config */
|
||||||
|
#define XSMCPSS_CS_IF0_CHIP_2_OFFSET 0x140U /* Interface 0 chip 2 config */
|
||||||
|
#define XSMCPSS_CS_IF0_CHIP_3_OFFSET 0x160U /* Interface 0 chip 3 config */
|
||||||
|
#define XSMCPSS_CS_IF1_CHIP_0_OFFSET 0x180U /* Interface 1 chip 0 config */
|
||||||
|
#define XSMCPSS_CS_IF1_CHIP_1_OFFSET 0x1A0U /* Interface 1 chip 1 config */
|
||||||
|
#define XSMCPSS_CS_IF1_CHIP_2_OFFSET 0x1C0U /* Interface 1 chip 2 config */
|
||||||
|
#define XSMCPSS_CS_IF1_CHIP_3_OFFSET 0x1E0U /* Interface 1 chip 3 config */
|
||||||
|
|
||||||
|
/* User configuration register offset */
|
||||||
|
#define XSMCPSS_UC_STATUS_OFFSET 0x200U /* User status reg, RO */
|
||||||
|
#define XSMCPSS_UC_CONFIG_OFFSET 0x204U /* User config reg, WO */
|
||||||
|
|
||||||
|
/* Integration test register offset */
|
||||||
|
#define XSMCPSS_IT_OFFSET 0xE00U
|
||||||
|
|
||||||
|
/* ID configuration register offset */
|
||||||
|
#define XSMCPSS_ID_PERIP_0_OFFSET 0xFE0U
|
||||||
|
#define XSMCPSS_ID_PERIP_1_OFFSET 0xFE4U
|
||||||
|
#define XSMCPSS_ID_PERIP_2_OFFSET 0xFE8U
|
||||||
|
#define XSMCPSS_ID_PERIP_3_OFFSET 0xFECU
|
||||||
|
#define XSMCPSS_ID_PCELL_0_OFFSET 0xFF0U
|
||||||
|
#define XSMCPSS_ID_PCELL_1_OFFSET 0xFF4U
|
||||||
|
#define XSMCPSS_ID_PCELL_2_OFFSET 0xFF8U
|
||||||
|
#define XSMCPSS_ID_PCELL_3_OFFSET 0xFFCU
|
||||||
|
|
||||||
|
/************************** Variable Definitions *****************************/
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* SMC_H */
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
+64
@@ -0,0 +1,64 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2009 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file vectors.h
|
||||||
|
*
|
||||||
|
* This file contains the C level vector prototypes for the ARM Cortex A9 core.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- ---------------------------------------------------
|
||||||
|
* 1.00a ecm 10/20/10 Initial version, moved over from bsp area
|
||||||
|
* 6.0 mus 07/27/16 Consolidated vectors for a9,a53 and r5 processors
|
||||||
|
* 8.0 sk 03/02/22 Update _VECTORS_H_ with VECTORS_H_ to fix misra_c_
|
||||||
|
* 2012_rule_21_1 violation.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
* None.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef VECTORS_H_
|
||||||
|
#define VECTORS_H_
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
void FIQInterrupt(void);
|
||||||
|
void IRQInterrupt(void);
|
||||||
|
#if !defined (__aarch64__)
|
||||||
|
void SWInterrupt(void);
|
||||||
|
void DataAbortInterrupt(void);
|
||||||
|
void PrefetchAbortInterrupt(void);
|
||||||
|
void UndefinedException(void);
|
||||||
|
#else
|
||||||
|
void SynchronousInterrupt(void);
|
||||||
|
void SErrorInterrupt(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* protection macro */
|
||||||
+582
@@ -0,0 +1,582 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2011 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xadcps.h
|
||||||
|
* @addtogroup Overview
|
||||||
|
* @{
|
||||||
|
* @details
|
||||||
|
*
|
||||||
|
* The XAdcPs driver supports the Xilinx XADC/ADC device.
|
||||||
|
*
|
||||||
|
* The XADC/ADC device has the following features:
|
||||||
|
* - 10-bit, 200-KSPS (kilo samples per second)
|
||||||
|
* Analog-to-Digital Converter (ADC)
|
||||||
|
* - Monitoring of on-chip supply voltages and temperature
|
||||||
|
* - 1 dedicated differential analog-input pair and
|
||||||
|
* 16 auxiliary differential analog-input pairs
|
||||||
|
* - Automatic alarms based on user defined limits for the on-chip
|
||||||
|
* supply voltages and temperature
|
||||||
|
* - Automatic Channel Sequencer, programmable averaging, programmable
|
||||||
|
* acquisition time for the external inputs, unipolar or differential
|
||||||
|
* input selection for the external inputs
|
||||||
|
* - Inbuilt Calibration
|
||||||
|
* - Optional interrupt request generation
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* The user should refer to the hardware device specification for detailed
|
||||||
|
* information about the device.
|
||||||
|
*
|
||||||
|
* This header file contains the prototypes of driver functions that can
|
||||||
|
* be used to access the XADC/ADC device.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <b> XADC Channel Sequencer Modes </b>
|
||||||
|
*
|
||||||
|
* The XADC Channel Sequencer supports the following operating modes:
|
||||||
|
*
|
||||||
|
* - <b> Default </b>: This is the default mode after power up.
|
||||||
|
* In this mode of operation the XADC operates in
|
||||||
|
* a sequence mode, monitoring the on chip sensors:
|
||||||
|
* Temperature, VCCINT, and VCCAUX.
|
||||||
|
* - <b> One pass through sequence </b>: In this mode the XADC
|
||||||
|
* converts the channels enabled in the Sequencer Channel Enable
|
||||||
|
* registers for a single pass and then stops.
|
||||||
|
* - <b> Continuous cycling of sequence </b>: In this mode the XADC
|
||||||
|
* converts the channels enabled in the Sequencer Channel Enable
|
||||||
|
* registers continuously.
|
||||||
|
* - <b> Single channel mode</b>: In this mode the XADC Channel
|
||||||
|
* Sequencer is disabled and the XADC operates in a
|
||||||
|
* Single Channel Mode.
|
||||||
|
* The XADC can operate either in a Continuous or Event
|
||||||
|
* driven sampling mode in the single channel mode.
|
||||||
|
* - <b> Simultaneous Sampling Mode</b>: In this mode the XADC Channel
|
||||||
|
* Sequencer will automatically sequence through eight fixed pairs
|
||||||
|
* of auxiliary analog input channels for simulataneous conversion.
|
||||||
|
* - <b> Independent ADC mode</b>: In this mode the first ADC (A) is used to
|
||||||
|
* is used to implement a fixed monitoring mode similar to the
|
||||||
|
* default mode but the alarm fucntions ar eenabled.
|
||||||
|
* The second ADC (B) is available to be used with external analog
|
||||||
|
* input channels only.
|
||||||
|
*
|
||||||
|
* Read the XADC spec for more information about the sequencer modes.
|
||||||
|
*
|
||||||
|
* <b> Initialization and Configuration </b>
|
||||||
|
*
|
||||||
|
* The device driver enables higher layer software (e.g., an application) to
|
||||||
|
* communicate to the XADC/ADC device.
|
||||||
|
*
|
||||||
|
* XAdcPs_CfgInitialize() API is used to initialize the XADC/ADC
|
||||||
|
* device. The user needs to first call the XAdcPs_LookupConfig() API which
|
||||||
|
* returns the Configuration structure pointer which is passed as a parameter to
|
||||||
|
* the XAdcPs_CfgInitialize() API.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <b>Interrupts</b>
|
||||||
|
*
|
||||||
|
* The XADC/ADC device supports interrupt driven mode and the default
|
||||||
|
* operation mode is polling mode.
|
||||||
|
*
|
||||||
|
* The interrupt mode is available only if hardware is configured to support
|
||||||
|
* interrupts.
|
||||||
|
*
|
||||||
|
* This driver does not provide a Interrupt Service Routine (ISR) for the device.
|
||||||
|
* It is the responsibility of the application to provide one if needed. Refer to
|
||||||
|
* the interrupt example provided with this driver for details on using the
|
||||||
|
* device in interrupt mode.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <b> Virtual Memory </b>
|
||||||
|
*
|
||||||
|
* This driver supports Virtual Memory. The RTOS is responsible for calculating
|
||||||
|
* the correct device base address in Virtual Memory space.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <b> Threads </b>
|
||||||
|
*
|
||||||
|
* This driver is not thread safe. Any needs for threads or thread mutual
|
||||||
|
* exclusion must be satisfied by the layer above this driver.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <b> Asserts </b>
|
||||||
|
*
|
||||||
|
* Asserts are used within all Xilinx drivers to enforce constraints on argument
|
||||||
|
* values. Asserts can be turned off on a system-wide basis by defining, at
|
||||||
|
* compile time, the NDEBUG identifier. By default, asserts are turned on and it
|
||||||
|
* is recommended that users leave asserts on during development.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <b> Building the driver </b>
|
||||||
|
*
|
||||||
|
* The XAdcPs driver is composed of several source files. This allows the user
|
||||||
|
* to build and link only those parts of the driver that are necessary.
|
||||||
|
*
|
||||||
|
* <b> Limitations of the driver </b>
|
||||||
|
*
|
||||||
|
* XADC/ADC device can be accessed through the JTAG port and the PLB
|
||||||
|
* interface. The driver implementation does not support the simultaneous access
|
||||||
|
* of the device by both these interfaces. The user has to care of this situation
|
||||||
|
* in the user application code.
|
||||||
|
*
|
||||||
|
* <br><br>
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ----- -------- -----------------------------------------------------
|
||||||
|
* 1.00a ssb 12/22/11 First release based on the XPS/AXI xadc driver
|
||||||
|
* 1.01a bss 02/18/13 Modified XAdcPs_SetSeqChEnables,XAdcPs_SetSeqAvgEnables
|
||||||
|
* XAdcPs_SetSeqInputMode and XAdcPs_SetSeqAcqTime APIs
|
||||||
|
* in xadcps.c to fix CR #693371
|
||||||
|
* 1.03a bss 11/01/13 Modified xadcps_hw.h to use correct Register offsets
|
||||||
|
* CR#749687
|
||||||
|
* 2.1 bss 08/05/14 Added declarations for XAdcPs_SetSequencerEvent,
|
||||||
|
* XAdcPs_GetSamplingMode, XAdcPs_SetMuxMode,
|
||||||
|
* XAdcPs_SetPowerdownMode and XAdcPs_GetPowerdownMode
|
||||||
|
* functions.
|
||||||
|
* Modified Assert for XAdcPs_SetSingleChParams in
|
||||||
|
* xadcps.c to fix CR #807563.
|
||||||
|
* 2.2 bss 04/27/14 Modified to use correct Device Config base address in
|
||||||
|
* xadcps.c (CR#854437).
|
||||||
|
* ms 01/23/17 Added xil_printf statement in main function for all
|
||||||
|
* examples to ensure that "Successfully ran" and "Failed"
|
||||||
|
* strings are available in all examples. This is a fix
|
||||||
|
* for CR-965028.
|
||||||
|
* ms 03/17/17 Added readme.txt file in examples folder for doxygen
|
||||||
|
* generation.
|
||||||
|
* ms 04/05/17 Modified Comment lines in functions of xadcps
|
||||||
|
* examples to recognize it as documentation block
|
||||||
|
* for doxygen generation.
|
||||||
|
* 2.3 mn 07/09/18 Fix Doxygen warning
|
||||||
|
* 2.6 aad 11/02/20 Fix MISRAC Mandatory and Advisory errors.
|
||||||
|
* aad 12/17/20 Added missing function declarations and removed
|
||||||
|
* functions with no definitions.
|
||||||
|
* 2.7 cog 07/24/23 Added support for SDT flow
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#ifndef XADCPS_H /* Prevent circular inclusions */
|
||||||
|
#define XADCPS_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files ********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
#include "xstatus.h"
|
||||||
|
#include "xadcps_hw.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions ****************************/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Indexes for the different channels.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_CH_TEMP 0x0U /**< On Chip Temperature */
|
||||||
|
#define XADCPS_CH_VCCINT 0x1U /**< VCCINT */
|
||||||
|
#define XADCPS_CH_VCCAUX 0x2U /**< VCCAUX */
|
||||||
|
#define XADCPS_CH_VPVN 0x3U /**< VP/VN Dedicated analog inputs */
|
||||||
|
#define XADCPS_CH_VREFP 0x4U /**< VREFP */
|
||||||
|
#define XADCPS_CH_VREFN 0x5U /**< VREFN */
|
||||||
|
#define XADCPS_CH_VBRAM 0x6U /**< On-chip VBRAM Data Reg, 7 series */
|
||||||
|
#define XADCPS_CH_SUPPLY_CALIB 0x07U /**< Supply Calib Data Reg */
|
||||||
|
#define XADCPS_CH_ADC_CALIB 0x08U /**< ADC Offset Channel Reg */
|
||||||
|
#define XADCPS_CH_GAINERR_CALIB 0x09U /**< Gain Error Channel Reg */
|
||||||
|
#define XADCPS_CH_VCCPINT 0x0DU /**< On-chip PS VCCPINT Channel , Zynq */
|
||||||
|
#define XADCPS_CH_VCCPAUX 0x0EU /**< On-chip PS VCCPAUX Channel , Zynq */
|
||||||
|
#define XADCPS_CH_VCCPDRO 0x0FU /**< On-chip PS VCCPDRO Channel , Zynq */
|
||||||
|
#define XADCPS_CH_AUX_MIN 16U /**< Channel number for 1st Aux Channel */
|
||||||
|
#define XADCPS_CH_AUX_MAX 31U /**< Channel number for Last Aux channel */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Indexes for reading the Calibration Coefficient Data.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_CALIB_SUPPLY_COEFF 0U /**< Supply Offset Calib Coefficient */
|
||||||
|
#define XADCPS_CALIB_ADC_COEFF 1U /**< ADC Offset Calib Coefficient */
|
||||||
|
#define XADCPS_CALIB_GAIN_ERROR_COEFF 2U /**< Gain Error Calib Coefficient*/
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Indexes for reading the Minimum/Maximum Measurement Data.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_MAX_TEMP 0U /**< Maximum Temperature Data */
|
||||||
|
#define XADCPS_MAX_VCCINT 1U /**< Maximum VCCINT Data */
|
||||||
|
#define XADCPS_MAX_VCCAUX 2U /**< Maximum VCCAUX Data */
|
||||||
|
#define XADCPS_MAX_VBRAM 3U /**< Maximum VBRAM Data */
|
||||||
|
#define XADCPS_MIN_TEMP 4U /**< Minimum Temperature Data */
|
||||||
|
#define XADCPS_MIN_VCCINT 5U /**< Minimum VCCINT Data */
|
||||||
|
#define XADCPS_MIN_VCCAUX 6U /**< Minimum VCCAUX Data */
|
||||||
|
#define XADCPS_MIN_VBRAM 7U /**< Minimum VBRAM Data */
|
||||||
|
#define XADCPS_MAX_VCCPINT 8U /**< Maximum VCCPINT Register , Zynq */
|
||||||
|
#define XADCPS_MAX_VCCPAUX 9U /**< Maximum VCCPAUX Register , Zynq */
|
||||||
|
#define XADCPS_MAX_VCCPDRO 0xAU /**< Maximum VCCPDRO Register , Zynq */
|
||||||
|
#define XADCPS_MIN_VCCPINT 0xCU /**< Minimum VCCPINT Register , Zynq */
|
||||||
|
#define XADCPS_MIN_VCCPAUX 0xDU /**< Minimum VCCPAUX Register , Zynq */
|
||||||
|
#define XADCPS_MIN_VCCPDRO 0xEU /**< Minimum VCCPDRO Register , Zynq */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Alarm Threshold(Limit) Register (ATR) indexes.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_ATR_TEMP_UPPER 0U /**< High user Temperature */
|
||||||
|
#define XADCPS_ATR_VCCINT_UPPER 1U /**< VCCINT high voltage limit register */
|
||||||
|
#define XADCPS_ATR_VCCAUX_UPPER 2U /**< VCCAUX high voltage limit register */
|
||||||
|
#define XADCPS_ATR_OT_UPPER 3U /**< VCCAUX high voltage limit register */
|
||||||
|
#define XADCPS_ATR_TEMP_LOWER 4U /**< Upper Over Temperature limit Reg */
|
||||||
|
#define XADCPS_ATR_VCCINT_LOWER 5U /**< VCCINT high voltage limit register */
|
||||||
|
#define XADCPS_ATR_VCCAUX_LOWER 6U /**< VCCAUX low voltage limit register */
|
||||||
|
#define XADCPS_ATR_OT_LOWER 7U /**< Lower Over Temperature limit */
|
||||||
|
#define XADCPS_ATR_VBRAM_UPPER_ 8U /**< VRBAM Upper Alarm Reg, 7 Series */
|
||||||
|
#define XADCPS_ATR_VCCPINT_UPPER 9U /**< VCCPINT Upper Alarm Reg, Zynq */
|
||||||
|
#define XADCPS_ATR_VCCPAUX_UPPER 0xAU /**< VCCPAUX Upper Alarm Reg, Zynq */
|
||||||
|
#define XADCPS_ATR_VCCPDRO_UPPER 0xBU /**< VCCPDRO Upper Alarm Reg, Zynq */
|
||||||
|
#define XADCPS_ATR_VBRAM_LOWER 0xCU /**< VRBAM Lower Alarm Reg, 7 Series */
|
||||||
|
#define XADCPS_ATR_VCCPINT_LOWER 0xDU /**< VCCPINT Lower Alarm Reg , Zynq */
|
||||||
|
#define XADCPS_ATR_VCCPAUX_LOWER 0xEU /**< VCCPAUX Lower Alarm Reg , Zynq */
|
||||||
|
#define XADCPS_ATR_VCCPDRO_LOWER 0xFU /**< VCCPDRO Lower Alarm Reg , Zynq */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Averaging to be done for the channels.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_AVG_0_SAMPLES 0U /**< No Averaging */
|
||||||
|
#define XADCPS_AVG_16_SAMPLES 1U /**< Average 16 samples */
|
||||||
|
#define XADCPS_AVG_64_SAMPLES 2U /**< Average 64 samples */
|
||||||
|
#define XADCPS_AVG_256_SAMPLES 3U /**< Average 256 samples */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Channel Sequencer Modes of operation
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_SEQ_MODE_SAFE 0U /**< Default Safe Mode */
|
||||||
|
#define XADCPS_SEQ_MODE_ONEPASS 1U /**< Onepass through Sequencer */
|
||||||
|
#define XADCPS_SEQ_MODE_CONTINPASS 2U /**< Continuous Cycling Sequencer */
|
||||||
|
#define XADCPS_SEQ_MODE_SINGCHAN 3U /**< Single channel -No Sequencing */
|
||||||
|
#define XADCPS_SEQ_MODE_SIMUL_SAMPLING 4U /**< Simultaneous sampling */
|
||||||
|
#define XADCPS_SEQ_MODE_INDEPENDENT 8U /**< Independent mode */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Power Down Modes
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_PD_MODE_NONE 0U /**< No Power Down */
|
||||||
|
#define XADCPS_PD_MODE_ADCB 1U /**< Power Down ADC B */
|
||||||
|
#define XADCPS_PD_MODE_XADC 2U /**< Power Down ADC A and ADC B */
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/**************************** Type Definitions ******************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This typedef contains configuration information for the XADC/ADC
|
||||||
|
* device.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
#ifndef SDT
|
||||||
|
u16 DeviceId; /**< Unique ID of device */
|
||||||
|
#else
|
||||||
|
char *Name;
|
||||||
|
#endif
|
||||||
|
u32 BaseAddress; /**< Device base address */
|
||||||
|
} XAdcPs_Config;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The driver's instance data. The user is required to allocate a variable
|
||||||
|
* of this type for every XADC/ADC device in the system. A pointer to
|
||||||
|
* a variable of this type is then passed to the driver API functions.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
XAdcPs_Config Config; /**< XAdcPs_Config of current device */
|
||||||
|
u32 IsReady; /**< Device is initialized and ready */
|
||||||
|
|
||||||
|
} XAdcPs;
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions ********************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro checks if the XADC device is in Event Sampling mode.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the XAdcPs instance.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* - TRUE if the device is in Event Sampling Mode.
|
||||||
|
* - FALSE if the device is in Continuous Sampling Mode.
|
||||||
|
*
|
||||||
|
* @note C-Style signature:
|
||||||
|
* int XAdcPs_IsEventSamplingMode(XAdcPs *InstancePtr);
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XAdcPs_IsEventSamplingModeSet(InstancePtr) \
|
||||||
|
(((XAdcPs_ReadInternalReg(InstancePtr, \
|
||||||
|
XADCPS_CFR0_OFFSET) & XADCPS_CFR0_EC_MASK) ? \
|
||||||
|
TRUE : FALSE))
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro checks if the XADC device is in External Mux mode.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the XAdcPs instance.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* - TRUE if the device is in External Mux Mode.
|
||||||
|
* - FALSE if the device is NOT in External Mux Mode.
|
||||||
|
*
|
||||||
|
* @note C-Style signature:
|
||||||
|
* int XAdcPs_IsExternalMuxMode(XAdcPs *InstancePtr);
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XAdcPs_IsExternalMuxModeSet(InstancePtr) \
|
||||||
|
(((XAdcPs_ReadInternalReg(InstancePtr, \
|
||||||
|
XADCPS_CFR0_OFFSET) & XADCPS_CFR0_MUX_MASK) ? \
|
||||||
|
TRUE : FALSE))
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro converts XADC Raw Data to Temperature(centigrades).
|
||||||
|
*
|
||||||
|
* @param AdcData is the Raw ADC Data from XADC.
|
||||||
|
*
|
||||||
|
* @return The Temperature in centigrades.
|
||||||
|
*
|
||||||
|
* @note C-Style signature:
|
||||||
|
* float XAdcPs_RawToTemperature(u32 AdcData);
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XAdcPs_RawToTemperature(AdcData) \
|
||||||
|
((((float)(AdcData)/65536.0f)/0.00198421639f ) - 273.15f)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro converts XADC/ADC Raw Data to Voltage(volts).
|
||||||
|
*
|
||||||
|
* @param AdcData is the XADC/ADC Raw Data.
|
||||||
|
*
|
||||||
|
* @return The Voltage in volts.
|
||||||
|
*
|
||||||
|
* @note C-Style signature:
|
||||||
|
* float XAdcPs_RawToVoltage(u32 AdcData);
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XAdcPs_RawToVoltage(AdcData) \
|
||||||
|
((((float)(AdcData))* (3.0f))/65536.0f)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro converts Temperature in centigrades to XADC/ADC Raw Data.
|
||||||
|
*
|
||||||
|
* @param Temperature is the Temperature in centigrades to be
|
||||||
|
* converted to XADC/ADC Raw Data.
|
||||||
|
*
|
||||||
|
* @return The XADC/ADC Raw Data.
|
||||||
|
*
|
||||||
|
* @note C-Style signature:
|
||||||
|
* int XAdcPs_TemperatureToRaw(float Temperature);
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XAdcPs_TemperatureToRaw(Temperature) \
|
||||||
|
((int)(((Temperature) + 273.15f)*65536.0f*0.00198421639f))
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro converts Voltage in Volts to XADC/ADC Raw Data.
|
||||||
|
*
|
||||||
|
* @param Voltage is the Voltage in volts to be converted to
|
||||||
|
* XADC/ADC Raw Data.
|
||||||
|
*
|
||||||
|
* @return The XADC/ADC Raw Data.
|
||||||
|
*
|
||||||
|
* @note C-Style signature:
|
||||||
|
* int XAdcPs_VoltageToRaw(float Voltage);
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XAdcPs_VoltageToRaw(Voltage) \
|
||||||
|
((int)((Voltage)*65536.0f/3.0f))
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro is used for writing to the XADC Registers using the
|
||||||
|
* command FIFO.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the XAdcPs instance.
|
||||||
|
* @param Data is the value to be written to XADC register.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note C-Style signature:
|
||||||
|
* void XAdcPs_WriteFifo(XAdcPs *InstancePtr, u32 Data);
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XAdcPs_WriteFifo(InstancePtr, Data) \
|
||||||
|
XAdcPs_WriteReg((InstancePtr)->Config.BaseAddress, \
|
||||||
|
XADCPS_CMDFIFO_OFFSET, Data);
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro is used for reading from the XADC Registers using the
|
||||||
|
* data FIFO.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the XAdcPs instance.
|
||||||
|
*
|
||||||
|
* @return Data read from the FIFO
|
||||||
|
*
|
||||||
|
* @note C-Style signature:
|
||||||
|
* u32 XAdcPs_ReadFifo(XAdcPs *InstancePtr);
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XAdcPs_ReadFifo(InstancePtr) \
|
||||||
|
XAdcPs_ReadReg((InstancePtr)->Config.BaseAddress, \
|
||||||
|
XADCPS_RDFIFO_OFFSET);
|
||||||
|
|
||||||
|
|
||||||
|
/************************** Function Prototypes *****************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functions in xadcps_sinit.c
|
||||||
|
*/
|
||||||
|
#ifndef SDT
|
||||||
|
XAdcPs_Config *XAdcPs_LookupConfig(u16 DeviceId);
|
||||||
|
#else
|
||||||
|
XAdcPs_Config *XAdcPs_LookupConfig(u32 BaseAddress);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functions in xadcps.c
|
||||||
|
*/
|
||||||
|
int XAdcPs_CfgInitialize(XAdcPs *InstancePtr,
|
||||||
|
XAdcPs_Config *ConfigPtr,
|
||||||
|
u32 EffectiveAddr);
|
||||||
|
|
||||||
|
void XAdcPs_SetConfigRegister(XAdcPs *InstancePtr, u32 Data);
|
||||||
|
u32 XAdcPs_GetConfigRegister(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
u32 XAdcPs_GetMiscStatus(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
void XAdcPs_SetMiscCtrlRegister(XAdcPs *InstancePtr, u32 Data);
|
||||||
|
u32 XAdcPs_GetMiscCtrlRegister(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
void XAdcPs_Reset(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
u16 XAdcPs_GetAdcData(XAdcPs *InstancePtr, u8 Channel);
|
||||||
|
|
||||||
|
u16 XAdcPs_GetCalibCoefficient(XAdcPs *InstancePtr, u8 CoeffType);
|
||||||
|
|
||||||
|
u16 XAdcPs_GetMinMaxMeasurement(XAdcPs *InstancePtr, u8 MeasurementType);
|
||||||
|
|
||||||
|
void XAdcPs_SetAvg(XAdcPs *InstancePtr, u8 Average);
|
||||||
|
u8 XAdcPs_GetAvg(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
int XAdcPs_SetSingleChParams(XAdcPs *InstancePtr,
|
||||||
|
u8 Channel,
|
||||||
|
int IncreaseAcqCycles,
|
||||||
|
int IsEventMode,
|
||||||
|
int IsDifferentialMode);
|
||||||
|
|
||||||
|
|
||||||
|
void XAdcPs_SetAlarmEnables(XAdcPs *InstancePtr, u16 AlmEnableMask);
|
||||||
|
u16 XAdcPs_GetAlarmEnables(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
void XAdcPs_SetCalibEnables(XAdcPs *InstancePtr, u16 Calibration);
|
||||||
|
u16 XAdcPs_GetCalibEnables(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
void XAdcPs_SetSequencerMode(XAdcPs *InstancePtr, u8 SequencerMode);
|
||||||
|
u8 XAdcPs_GetSequencerMode(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
void XAdcPs_SetAdcClkDivisor(XAdcPs *InstancePtr, u8 Divisor);
|
||||||
|
u8 XAdcPs_GetAdcClkDivisor(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
int XAdcPs_SetSeqChEnables(XAdcPs *InstancePtr, u32 ChEnableMask);
|
||||||
|
u32 XAdcPs_GetSeqChEnables(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
int XAdcPs_SetSeqAvgEnables(XAdcPs *InstancePtr, u32 AvgEnableChMask);
|
||||||
|
u32 XAdcPs_GetSeqAvgEnables(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
int XAdcPs_SetSeqInputMode(XAdcPs *InstancePtr, u32 InputModeChMask);
|
||||||
|
u32 XAdcPs_GetSeqInputMode(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
int XAdcPs_SetSeqAcqTime(XAdcPs *InstancePtr, u32 AcqCyclesChMask);
|
||||||
|
u32 XAdcPs_GetSeqAcqTime(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
void XAdcPs_SetAlarmThreshold(XAdcPs *InstancePtr, u8 AlarmThrReg, u16 Value);
|
||||||
|
u16 XAdcPs_GetAlarmThreshold(XAdcPs *InstancePtr, u8 AlarmThrReg);
|
||||||
|
|
||||||
|
void XAdcPs_EnableUserOverTemp(XAdcPs *InstancePtr);
|
||||||
|
void XAdcPs_DisableUserOverTemp(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
void XAdcPs_SetSequencerEvent(XAdcPs *InstancePtr, int IsEventMode);
|
||||||
|
|
||||||
|
int XAdcPs_GetSamplingMode(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
void XAdcPs_SetMuxMode(XAdcPs *InstancePtr, int MuxMode, u8 Channel);
|
||||||
|
|
||||||
|
void XAdcPs_SetPowerdownMode(XAdcPs *InstancePtr, u32 Mode);
|
||||||
|
|
||||||
|
u32 XAdcPs_GetPowerdownMode(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functions in xadcps_selftest.c
|
||||||
|
*/
|
||||||
|
int XAdcPs_SelfTest(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functions in xadcps_intr.c
|
||||||
|
*/
|
||||||
|
void XAdcPs_IntrEnable(XAdcPs *InstancePtr, u32 Mask);
|
||||||
|
void XAdcPs_IntrDisable(XAdcPs *InstancePtr, u32 Mask);
|
||||||
|
u32 XAdcPs_IntrGetEnabled(XAdcPs *InstancePtr);
|
||||||
|
|
||||||
|
u32 XAdcPs_IntrGetStatus(XAdcPs *InstancePtr);
|
||||||
|
void XAdcPs_IntrClear(XAdcPs *InstancePtr, u32 Mask);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* End of protection macro. */
|
||||||
|
/** @} */
|
||||||
+478
@@ -0,0 +1,478 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2011 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xadcps_hw.h
|
||||||
|
* @addtogroup Overview
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* This header file contains identifiers and basic driver functions (or
|
||||||
|
* macros) that can be used to access the XADC device through the Device
|
||||||
|
* Config Interface of the Zynq.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Refer to the device specification for more information about this driver.
|
||||||
|
*
|
||||||
|
* @note None.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ----- -------- -----------------------------------------------------
|
||||||
|
* 1.00a bss 12/22/11 First release based on the XPS/AXI xadc driver
|
||||||
|
* 1.03a bss 11/01/13 Modified macros to use correct Register offsets
|
||||||
|
* CR#749687
|
||||||
|
* 2.6 aad 11/02/20 Fix MISRAC Mandatory and Advisory errors.
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#ifndef XADCPS_HW_H /* Prevent circular inclusions */
|
||||||
|
#define XADCPS_HW_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files ********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
#include "xil_io.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions ****************************/
|
||||||
|
|
||||||
|
|
||||||
|
/**@name Register offsets of XADC in the Device Config
|
||||||
|
*
|
||||||
|
* The following constants provide access to each of the registers of the
|
||||||
|
* XADC device.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XADCPS_CFG_OFFSET 0x00U /**< Configuration Register */
|
||||||
|
#define XADCPS_INT_STS_OFFSET 0x04U /**< Interrupt Status Register */
|
||||||
|
#define XADCPS_INT_MASK_OFFSET 0x08U /**< Interrupt Mask Register */
|
||||||
|
#define XADCPS_MSTS_OFFSET 0x0CU /**< Misc status register */
|
||||||
|
#define XADCPS_CMDFIFO_OFFSET 0x10U /**< Command FIFO Register */
|
||||||
|
#define XADCPS_RDFIFO_OFFSET 0x14U /**< Read FIFO Register */
|
||||||
|
#define XADCPS_MCTL_OFFSET 0x18U /**< Misc control register */
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @name XADC Config Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_CFG_ENABLE_MASK 0x80000000U /**< Enable access from PS mask */
|
||||||
|
#define XADCPS_CFG_CFIFOTH_MASK 0x00F00000U /**< Command FIFO Threshold mask */
|
||||||
|
#define XADCPS_CFG_DFIFOTH_MASK 0x000F0000U /**< Data FIFO Threshold mask */
|
||||||
|
#define XADCPS_CFG_WEDGE_MASK 0x00002000U /**< Write Edge Mask */
|
||||||
|
#define XADCPS_CFG_REDGE_MASK 0x00001000U /**< Read Edge Mask */
|
||||||
|
#define XADCPS_CFG_TCKRATE_MASK 0x00000300U /**< Clock freq control */
|
||||||
|
#define XADCPS_CFG_IGAP_MASK 0x0000001FU /**< Idle Gap between
|
||||||
|
* successive commands */
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/** @name XADC Interrupt Status/Mask Register Bit definitions
|
||||||
|
*
|
||||||
|
* The definitions are same for the Interrupt Status Register and
|
||||||
|
* Interrupt Mask Register. They are defined only once.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_INTX_ALL_MASK 0x000003FFU /**< Alarm Signals Mask */
|
||||||
|
#define XADCPS_INTX_CFIFO_LTH_MASK 0x00000200U /**< CMD FIFO less than threshold */
|
||||||
|
#define XADCPS_INTX_DFIFO_GTH_MASK 0x00000100U /**< Data FIFO greater than threshold */
|
||||||
|
#define XADCPS_INTX_OT_MASK 0x00000080U /**< Over temperature Alarm Status */
|
||||||
|
#define XADCPS_INTX_ALM_ALL_MASK 0x0000007FU /**< Alarm Signals Mask */
|
||||||
|
#define XADCPS_INTX_ALM6_MASK 0x00000040U /**< Alarm 6 Mask */
|
||||||
|
#define XADCPS_INTX_ALM5_MASK 0x00000020U /**< Alarm 5 Mask */
|
||||||
|
#define XADCPS_INTX_ALM4_MASK 0x00000010U /**< Alarm 4 Mask */
|
||||||
|
#define XADCPS_INTX_ALM3_MASK 0x00000008U /**< Alarm 3 Mask */
|
||||||
|
#define XADCPS_INTX_ALM2_MASK 0x00000004U /**< Alarm 2 Mask */
|
||||||
|
#define XADCPS_INTX_ALM1_MASK 0x00000002U /**< Alarm 1 Mask */
|
||||||
|
#define XADCPS_INTX_ALM0_MASK 0x00000001U /**< Alarm 0 Mask */
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/** @name XADC Miscellaneous Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_MSTS_CFIFO_LVL_MASK 0x000F0000U /**< Command FIFO Level mask */
|
||||||
|
#define XADCPS_MSTS_DFIFO_LVL_MASK 0x0000F000U /**< Data FIFO Level Mask */
|
||||||
|
#define XADCPS_MSTS_CFIFOF_MASK 0x00000800U /**< Command FIFO Full Mask */
|
||||||
|
#define XADCPS_MSTS_CFIFOE_MASK 0x00000400U /**< Command FIFO Empty Mask */
|
||||||
|
#define XADCPS_MSTS_DFIFOF_MASK 0x00000200U /**< Data FIFO Full Mask */
|
||||||
|
#define XADCPS_MSTS_DFIFOE_MASK 0x00000100U /**< Data FIFO Empty Mask */
|
||||||
|
#define XADCPS_MSTS_OT_MASK 0x00000080U /**< Over Temperature Mask */
|
||||||
|
#define XADCPS_MSTS_ALM_MASK 0x0000007FU /**< Alarms Mask */
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/** @name XADC Miscellaneous Control Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_MCTL_RESET_MASK 0x00000010U /**< Reset XADC */
|
||||||
|
#define XADCPS_MCTL_FLUSH_MASK 0x00000001U /**< Flush the FIFOs */
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/**@name Internal Register offsets of the XADC
|
||||||
|
*
|
||||||
|
* The following constants provide access to each of the internal registers of
|
||||||
|
* the XADC device.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XADC Internal Channel Registers
|
||||||
|
*/
|
||||||
|
#define XADCPS_TEMP_OFFSET 0x00U /**< On-chip Temperature Reg */
|
||||||
|
#define XADCPS_VCCINT_OFFSET 0x01U /**< On-chip VCCINT Data Reg */
|
||||||
|
#define XADCPS_VCCAUX_OFFSET 0x02U /**< On-chip VCCAUX Data Reg */
|
||||||
|
#define XADCPS_VPVN_OFFSET 0x03U /**< ADC out of VP/VN */
|
||||||
|
#define XADCPS_VREFP_OFFSET 0x04U /**< On-chip VREFP Data Reg */
|
||||||
|
#define XADCPS_VREFN_OFFSET 0x05U /**< On-chip VREFN Data Reg */
|
||||||
|
#define XADCPS_VBRAM_OFFSET 0x06U /**< On-chip VBRAM , 7 Series */
|
||||||
|
#define XADCPS_ADC_A_SUPPLY_CALIB_OFFSET 0x08U /**< ADC A Supply Offset Reg */
|
||||||
|
#define XADCPS_ADC_A_OFFSET_CALIB_OFFSET 0x09U /**< ADC A Offset Data Reg */
|
||||||
|
#define XADCPS_ADC_A_GAINERR_CALIB_OFFSET 0x0AU /**< ADC A Gain Error Reg */
|
||||||
|
#define XADCPS_VCCPINT_OFFSET 0x0DU /**< On-chip VCCPINT Reg, Zynq */
|
||||||
|
#define XADCPS_VCCPAUX_OFFSET 0x0EU /**< On-chip VCCPAUX Reg, Zynq */
|
||||||
|
#define XADCPS_VCCPDRO_OFFSET 0x0FU /**< On-chip VCCPDRO Reg, Zynq */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XADC External Channel Registers
|
||||||
|
*/
|
||||||
|
#define XADCPS_AUX00_OFFSET 0x10U /**< ADC out of VAUXP0/VAUXN0 */
|
||||||
|
#define XADCPS_AUX01_OFFSET 0x11U /**< ADC out of VAUXP1/VAUXN1 */
|
||||||
|
#define XADCPS_AUX02_OFFSET 0x12U /**< ADC out of VAUXP2/VAUXN2 */
|
||||||
|
#define XADCPS_AUX03_OFFSET 0x13U /**< ADC out of VAUXP3/VAUXN3 */
|
||||||
|
#define XADCPS_AUX04_OFFSET 0x14U /**< ADC out of VAUXP4/VAUXN4 */
|
||||||
|
#define XADCPS_AUX05_OFFSET 0x15U /**< ADC out of VAUXP5/VAUXN5 */
|
||||||
|
#define XADCPS_AUX06_OFFSET 0x16U /**< ADC out of VAUXP6/VAUXN6 */
|
||||||
|
#define XADCPS_AUX07_OFFSET 0x17U /**< ADC out of VAUXP7/VAUXN7 */
|
||||||
|
#define XADCPS_AUX08_OFFSET 0x18U /**< ADC out of VAUXP8/VAUXN8 */
|
||||||
|
#define XADCPS_AUX09_OFFSET 0x19U /**< ADC out of VAUXP9/VAUXN9 */
|
||||||
|
#define XADCPS_AUX10_OFFSET 0x1AU /**< ADC out of VAUXP10/VAUXN10 */
|
||||||
|
#define XADCPS_AUX11_OFFSET 0x1BU /**< ADC out of VAUXP11/VAUXN11 */
|
||||||
|
#define XADCPS_AUX12_OFFSET 0x1CU /**< ADC out of VAUXP12/VAUXN12 */
|
||||||
|
#define XADCPS_AUX13_OFFSET 0x1DU /**< ADC out of VAUXP13/VAUXN13 */
|
||||||
|
#define XADCPS_AUX14_OFFSET 0x1EU /**< ADC out of VAUXP14/VAUXN14 */
|
||||||
|
#define XADCPS_AUX15_OFFSET 0x1FU /**< ADC out of VAUXP15/VAUXN15 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XADC Registers for Maximum/Minimum data captured for the
|
||||||
|
* on chip Temperature/VCCINT/VCCAUX data.
|
||||||
|
*/
|
||||||
|
#define XADCPS_MAX_TEMP_OFFSET 0x20U /**< Max Temperature Reg */
|
||||||
|
#define XADCPS_MAX_VCCINT_OFFSET 0x21U /**< Max VCCINT Register */
|
||||||
|
#define XADCPS_MAX_VCCAUX_OFFSET 0x22U /**< Max VCCAUX Register */
|
||||||
|
#define XADCPS_MAX_VCCBRAM_OFFSET 0x23U /**< Max BRAM Register, 7 series */
|
||||||
|
#define XADCPS_MIN_TEMP_OFFSET 0x24U /**< Min Temperature Reg */
|
||||||
|
#define XADCPS_MIN_VCCINT_OFFSET 0x25U /**< Min VCCINT Register */
|
||||||
|
#define XADCPS_MIN_VCCAUX_OFFSET 0x26U /**< Min VCCAUX Register */
|
||||||
|
#define XADCPS_MIN_VCCBRAM_OFFSET 0x27U /**< Min BRAM Register, 7 series */
|
||||||
|
#define XADCPS_MAX_VCCPINT_OFFSET 0x28U /**< Max VCCPINT Register, Zynq */
|
||||||
|
#define XADCPS_MAX_VCCPAUX_OFFSET 0x29U /**< Max VCCPAUX Register, Zynq */
|
||||||
|
#define XADCPS_MAX_VCCPDRO_OFFSET 0x2AU /**< Max VCCPDRO Register, Zynq */
|
||||||
|
#define XADCPS_MIN_VCCPINT_OFFSET 0x2CU /**< Min VCCPINT Register, Zynq */
|
||||||
|
#define XADCPS_MIN_VCCPAUX_OFFSET 0x2DU /**< Min VCCPAUX Register, Zynq */
|
||||||
|
#define XADCPS_MIN_VCCPDRO_OFFSET 0x2EU /**< Min VCCPDRO Register,Zynq */
|
||||||
|
/* Undefined 0x2F to 0x3E */
|
||||||
|
#define XADCPS_FLAG_OFFSET 0x3FU /**< Flag Register */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XADC Configuration Registers
|
||||||
|
*/
|
||||||
|
#define XADCPS_CFR0_OFFSET 0x40U /**< Configuration Register 0 */
|
||||||
|
#define XADCPS_CFR1_OFFSET 0x41U /**< Configuration Register 1 */
|
||||||
|
#define XADCPS_CFR2_OFFSET 0x42U /**< Configuration Register 2 */
|
||||||
|
|
||||||
|
/* Test Registers 0x43 to 0x47 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XADC Sequence Registers
|
||||||
|
*/
|
||||||
|
#define XADCPS_SEQ00_OFFSET 0x48U /**< Seq Reg 00 Adc Channel Selection */
|
||||||
|
#define XADCPS_SEQ01_OFFSET 0x49U /**< Seq Reg 01 Adc Channel Selection */
|
||||||
|
#define XADCPS_SEQ02_OFFSET 0x4AU /**< Seq Reg 02 Adc Average Enable */
|
||||||
|
#define XADCPS_SEQ03_OFFSET 0x4BU /**< Seq Reg 03 Adc Average Enable */
|
||||||
|
#define XADCPS_SEQ04_OFFSET 0x4CU /**< Seq Reg 04 Adc Input Mode Select */
|
||||||
|
#define XADCPS_SEQ05_OFFSET 0x4DU /**< Seq Reg 05 Adc Input Mode Select */
|
||||||
|
#define XADCPS_SEQ06_OFFSET 0x4EU /**< Seq Reg 06 Adc Acquisition Select */
|
||||||
|
#define XADCPS_SEQ07_OFFSET 0x4FU /**< Seq Reg 07 Adc Acquisition Select */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XADC Alarm Threshold/Limit Registers (ATR)
|
||||||
|
*/
|
||||||
|
#define XADCPS_ATR_TEMP_UPPER_OFFSET 0x50U /**< Temp Upper Alarm Register */
|
||||||
|
#define XADCPS_ATR_VCCINT_UPPER_OFFSET 0x51U /**< VCCINT Upper Alarm Reg */
|
||||||
|
#define XADCPS_ATR_VCCAUX_UPPER_OFFSET 0x52U /**< VCCAUX Upper Alarm Reg */
|
||||||
|
#define XADCPS_ATR_OT_UPPER_OFFSET 0x53U /**< Over Temp Upper Alarm Reg */
|
||||||
|
#define XADCPS_ATR_TEMP_LOWER_OFFSET 0x54U /**< Temp Lower Alarm Register */
|
||||||
|
#define XADCPS_ATR_VCCINT_LOWER_OFFSET 0x55U /**< VCCINT Lower Alarm Reg */
|
||||||
|
#define XADCPS_ATR_VCCAUX_LOWER_OFFSET 0x56U /**< VCCAUX Lower Alarm Reg */
|
||||||
|
#define XADCPS_ATR_OT_LOWER_OFFSET 0x57U /**< Over Temp Lower Alarm Reg */
|
||||||
|
#define XADCPS_ATR_VBRAM_UPPER_OFFSET 0x58U /**< VBRAM Upper Alarm, 7 series */
|
||||||
|
#define XADCPS_ATR_VCCPINT_UPPER_OFFSET 0x59U /**< VCCPINT Upper Alarm, Zynq */
|
||||||
|
#define XADCPS_ATR_VCCPAUX_UPPER_OFFSET 0x5AU /**< VCCPAUX Upper Alarm, Zynq */
|
||||||
|
#define XADCPS_ATR_VCCPDRO_UPPER_OFFSET 0x5BU /**< VCCPDRO Upper Alarm, Zynq */
|
||||||
|
#define XADCPS_ATR_VBRAM_LOWER_OFFSET 0x5CU /**< VRBAM Lower Alarm, 7 Series */
|
||||||
|
#define XADCPS_ATR_VCCPINT_LOWER_OFFSET 0x5DU /**< VCCPINT Lower Alarm, Zynq */
|
||||||
|
#define XADCPS_ATR_VCCPAUX_LOWER_OFFSET 0x5EU /**< VCCPAUX Lower Alarm, Zynq */
|
||||||
|
#define XADCPS_ATR_VCCPDRO_LOWER_OFFSET 0x5FU /**< VCCPDRO Lower Alarm, Zynq */
|
||||||
|
|
||||||
|
/* Undefined 0x60 to 0x7F */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Configuration Register 0 (CFR0) mask(s)
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_CFR0_CAL_AVG_MASK 0x00008000U /**< Averaging enable Mask */
|
||||||
|
#define XADCPS_CFR0_AVG_VALID_MASK 0x00003000U /**< Averaging bit Mask */
|
||||||
|
#define XADCPS_CFR0_AVG1_MASK 0x00000000U /**< No Averaging */
|
||||||
|
#define XADCPS_CFR0_AVG16_MASK 0x00001000U /**< Average 16 samples */
|
||||||
|
#define XADCPS_CFR0_AVG64_MASK 0x00002000U /**< Average 64 samples */
|
||||||
|
#define XADCPS_CFR0_AVG256_MASK 0x00003000U /**< Average 256 samples */
|
||||||
|
#define XADCPS_CFR0_AVG_SHIFT 12U /**< Averaging bits shift */
|
||||||
|
#define XADCPS_CFR0_MUX_MASK 0x00000800U /**< External Mask Enable */
|
||||||
|
#define XADCPS_CFR0_DU_MASK 0x00000400U /**< Bipolar/Unipolar mode */
|
||||||
|
#define XADCPS_CFR0_EC_MASK 0x00000200U /**< Event driven/
|
||||||
|
* Continuous mode selection
|
||||||
|
*/
|
||||||
|
#define XADCPS_CFR0_ACQ_MASK 0x00000100U /**< Add acquisition by 6 ADCCLK */
|
||||||
|
#define XADCPS_CFR0_CHANNEL_MASK 0x0000001FU /**< Channel number bit Mask */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Configuration Register 1 (CFR1) mask(s)
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_CFR1_SEQ_VALID_MASK 0x0000F000U /**< Sequence bit Mask */
|
||||||
|
#define XADCPS_CFR1_SEQ_SAFEMODE_MASK 0x00000000U /**< Default Safe Mode */
|
||||||
|
#define XADCPS_CFR1_SEQ_ONEPASS_MASK 0x00001000U /**< Onepass through Seq */
|
||||||
|
#define XADCPS_CFR1_SEQ_CONTINPASS_MASK 0x00002000U /**< Continuous Cycling Seq */
|
||||||
|
#define XADCPS_CFR1_SEQ_SINGCHAN_MASK 0x00003000U /**< Single channel - No Seq */
|
||||||
|
#define XADCPS_CFR1_SEQ_SIMUL_SAMPLING_MASK 0x00004000U /**< Simulataneous Sampling Mask */
|
||||||
|
#define XADCPS_CFR1_SEQ_INDEPENDENT_MASK 0x00008000U /**< Independent Mode */
|
||||||
|
#define XADCPS_CFR1_SEQ_SHIFT 12U /**< Sequence bit shift */
|
||||||
|
#define XADCPS_CFR1_ALM_VCCPDRO_MASK 0x00000800U /**< Alm 6 - VCCPDRO, Zynq */
|
||||||
|
#define XADCPS_CFR1_ALM_VCCPAUX_MASK 0x00000400U /**< Alm 5 - VCCPAUX, Zynq */
|
||||||
|
#define XADCPS_CFR1_ALM_VCCPINT_MASK 0x00000200U /**< Alm 4 - VCCPINT, Zynq */
|
||||||
|
#define XADCPS_CFR1_ALM_VBRAM_MASK 0x00000100U /**< Alm 3 - VBRAM, 7 series */
|
||||||
|
#define XADCPS_CFR1_CAL_VALID_MASK 0x000000F0U /**< Valid Calibration Mask */
|
||||||
|
#define XADCPS_CFR1_CAL_PS_GAIN_OFFSET_MASK 0x00000080U /**< Calibration 3 -Power
|
||||||
|
Supply Gain/Offset
|
||||||
|
Enable */
|
||||||
|
#define XADCPS_CFR1_CAL_PS_OFFSET_MASK 0x00000040U /**< Calibration 2 -Power
|
||||||
|
Supply Offset Enable */
|
||||||
|
#define XADCPS_CFR1_CAL_ADC_GAIN_OFFSET_MASK 0x00000020U /**< Calibration 1 -ADC Gain
|
||||||
|
Offset Enable */
|
||||||
|
#define XADCPS_CFR1_CAL_ADC_OFFSET_MASK 0x00000010U /**< Calibration 0 -ADC Offset
|
||||||
|
Enable */
|
||||||
|
#define XADCPS_CFR1_CAL_DISABLE_MASK 0x00000000U /**< No Calibration */
|
||||||
|
#define XADCPS_CFR1_ALM_ALL_MASK 0x00000F0FU /**< Mask for all alarms */
|
||||||
|
#define XADCPS_CFR1_ALM_VCCAUX_MASK 0x00000008U /**< Alarm 2 - VCCAUX Enable */
|
||||||
|
#define XADCPS_CFR1_ALM_VCCINT_MASK 0x00000004U /**< Alarm 1 - VCCINT Enable */
|
||||||
|
#define XADCPS_CFR1_ALM_TEMP_MASK 0x00000002U /**< Alarm 0 - Temperature */
|
||||||
|
#define XADCPS_CFR1_OT_MASK 0x00000001U /**< Over Temperature Enable */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Configuration Register 2 (CFR2) mask(s)
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_CFR2_CD_VALID_MASK 0xFF00U /**<Clock Divisor bit Mask */
|
||||||
|
#define XADCPS_CFR2_CD_SHIFT 8U /**<Num of shift on division */
|
||||||
|
#define XADCPS_CFR2_CD_MIN 8U /**<Minimum value of divisor */
|
||||||
|
#define XADCPS_CFR2_CD_MAX 255U /**<Maximum value of divisor */
|
||||||
|
|
||||||
|
#define XADCPS_CFR2_CD_MIN 8U /**<Minimum value of divisor */
|
||||||
|
#define XADCPS_CFR2_PD_MASK 0x0030U /**<Power Down Mask */
|
||||||
|
#define XADCPS_CFR2_PD_XADC_MASK 0x0030U /**<Power Down XADC Mask */
|
||||||
|
#define XADCPS_CFR2_PD_ADC1_MASK 0x0020U /**<Power Down ADC1 Mask */
|
||||||
|
#define XADCPS_CFR2_PD_SHIFT 4U /**<Power Down Shift */
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Sequence Register (SEQ) Bit Definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_SEQ_CH_CALIB 0x00000001U /**< ADC Calibration Channel */
|
||||||
|
#define XADCPS_SEQ_CH_VCCPINT 0x00000020U /**< VCCPINT, Zynq Only */
|
||||||
|
#define XADCPS_SEQ_CH_VCCPAUX 0x00000040U /**< VCCPAUX, Zynq Only */
|
||||||
|
#define XADCPS_SEQ_CH_VCCPDRO 0x00000080U /**< VCCPDRO, Zynq Only */
|
||||||
|
#define XADCPS_SEQ_CH_TEMP 0x00000100U /**< On Chip Temperature Channel */
|
||||||
|
#define XADCPS_SEQ_CH_VCCINT 0x00000200U /**< VCCINT Channel */
|
||||||
|
#define XADCPS_SEQ_CH_VCCAUX 0x00000400U /**< VCCAUX Channel */
|
||||||
|
#define XADCPS_SEQ_CH_VPVN 0x00000800U /**< VP/VN analog inputs Channel */
|
||||||
|
#define XADCPS_SEQ_CH_VREFP 0x00001000U /**< VREFP Channel */
|
||||||
|
#define XADCPS_SEQ_CH_VREFN 0x00002000U /**< VREFN Channel */
|
||||||
|
#define XADCPS_SEQ_CH_VBRAM 0x00004000U /**< VBRAM Channel, 7 series */
|
||||||
|
#define XADCPS_SEQ_CH_AUX00 0x00010000U /**< 1st Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX01 0x00020000U /**< 2nd Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX02 0x00040000U /**< 3rd Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX03 0x00080000U /**< 4th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX04 0x00100000U /**< 5th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX05 0x00200000U /**< 6th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX06 0x00400000U /**< 7th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX07 0x00800000U /**< 8th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX08 0x01000000U /**< 9th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX09 0x02000000U /**< 10th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX10 0x04000000U /**< 11th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX11 0x08000000U /**< 12th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX12 0x10000000U /**< 13th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX13 0x20000000U /**< 14th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX14 0x40000000U /**< 15th Aux Channel */
|
||||||
|
#define XADCPS_SEQ_CH_AUX15 0x80000000U /**< 16th Aux Channel */
|
||||||
|
|
||||||
|
#define XADCPS_SEQ00_CH_VALID_MASK 0x7FE1U /**< Mask for the valid channels */
|
||||||
|
#define XADCPS_SEQ01_CH_VALID_MASK 0xFFFFU /**< Mask for the valid channels */
|
||||||
|
|
||||||
|
#define XADCPS_SEQ02_CH_VALID_MASK 0x7FE0U /**< Mask for the valid channels */
|
||||||
|
#define XADCPS_SEQ03_CH_VALID_MASK 0xFFFFU /**< Mask for the valid channels */
|
||||||
|
|
||||||
|
#define XADCPS_SEQ04_CH_VALID_MASK 0x0800U /**< Mask for the valid channels */
|
||||||
|
#define XADCPS_SEQ05_CH_VALID_MASK 0xFFFFU /**< Mask for the valid channels */
|
||||||
|
|
||||||
|
#define XADCPS_SEQ06_CH_VALID_MASK 0x0800U /**< Mask for the valid channels */
|
||||||
|
#define XADCPS_SEQ07_CH_VALID_MASK 0xFFFFU /**< Mask for the valid channels */
|
||||||
|
|
||||||
|
|
||||||
|
#define XADCPS_SEQ_CH_AUX_SHIFT 16U /**< Shift for the Aux Channel */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name OT Upper Alarm Threshold Register Bit Definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XADCPS_ATR_OT_UPPER_ENB_MASK 0x000FU /**< Mask for OT enable */
|
||||||
|
#define XADCPS_ATR_OT_UPPER_VAL_MASK 0xFFF0U /**< Mask for OT value */
|
||||||
|
#define XADCPS_ATR_OT_UPPER_VAL_SHIFT 4U /**< Shift for OT value */
|
||||||
|
#define XADCPS_ATR_OT_UPPER_ENB_VAL 0x0003U /**< Value for OT enable */
|
||||||
|
#define XADCPS_ATR_OT_UPPER_VAL_MAX 0x0FFFU /**< Max OT value */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name JTAG DRP Bit Definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_JTAG_DATA_MASK 0x0000FFFFU /**< Mask for the Data */
|
||||||
|
#define XADCPS_JTAG_ADDR_MASK 0x03FF0000U /**< Mask for the Addr */
|
||||||
|
#define XADCPS_JTAG_ADDR_SHIFT 16U /**< Shift for the Addr */
|
||||||
|
#define XADCPS_JTAG_CMD_MASK 0x3C000000U /**< Mask for the Cmd */
|
||||||
|
#define XADCPS_JTAG_CMD_WRITE_MASK 0x08000000U /**< Mask for CMD Write */
|
||||||
|
#define XADCPS_JTAG_CMD_READ_MASK 0x04000000U /**< Mask for CMD Read */
|
||||||
|
#define XADCPS_JTAG_CMD_SHIFT 26U /**< Shift for the Cmd */
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/** @name Unlock Register Definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XADCPS_UNLK_OFFSET 0x034U /**< Unlock Register */
|
||||||
|
#define XADCPS_UNLK_VALUE 0x757BDF0DU /**< Unlock Value */
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Read a register of the XADC device. This macro provides register
|
||||||
|
* access to all registers using the register offsets defined above.
|
||||||
|
*
|
||||||
|
* @param BaseAddress contains the base address of the device.
|
||||||
|
* @param RegOffset is the offset of the register to read.
|
||||||
|
*
|
||||||
|
* @return The contents of the register.
|
||||||
|
*
|
||||||
|
* @note C-style Signature:
|
||||||
|
* u32 XAdcPs_ReadReg(u32 BaseAddress, u32 RegOffset);
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#define XAdcPs_ReadReg(BaseAddress, RegOffset) \
|
||||||
|
(Xil_In32((BaseAddress) + (RegOffset)))
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Write a register of the XADC device. This macro provides
|
||||||
|
* register access to all registers using the register offsets defined above.
|
||||||
|
*
|
||||||
|
* @param BaseAddress contains the base address of the device.
|
||||||
|
* @param RegOffset is the offset of the register to write.
|
||||||
|
* @param Data is the value to write to the register.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note C-style Signature:
|
||||||
|
* void XAdcPs_WriteReg(u32 BaseAddress,
|
||||||
|
* u32 RegOffset,u32 Data)
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#define XAdcPs_WriteReg(BaseAddress, RegOffset, Data) \
|
||||||
|
(Xil_Out32((BaseAddress) + (RegOffset), (Data)))
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Formats the data to be written to the the XADC registers.
|
||||||
|
*
|
||||||
|
* @param RegOffset is the offset of the Register
|
||||||
|
* @param Data is the data to be written to the Register if it is
|
||||||
|
* a write.
|
||||||
|
* @param ReadWrite specifies whether it is a Read or a Write.
|
||||||
|
* Use 0 for Read, 1 for Write.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note C-style Signature:
|
||||||
|
* void XAdcPs_FormatWriteData(u32 RegOffset,
|
||||||
|
* u16 Data, int ReadWrite)
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#define XAdcPs_FormatWriteData(RegOffset, Data, ReadWrite) \
|
||||||
|
((ReadWrite ? XADCPS_JTAG_CMD_WRITE_MASK : XADCPS_JTAG_CMD_READ_MASK ) | \
|
||||||
|
((RegOffset << XADCPS_JTAG_ADDR_SHIFT) & XADCPS_JTAG_ADDR_MASK) | \
|
||||||
|
(Data & XADCPS_JTAG_DATA_MASK))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* End of protection macro. */
|
||||||
|
/** @} */
|
||||||
+113
@@ -0,0 +1,113 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2010 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xbasic_types.h
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @note Dummy File for backwards compatibility
|
||||||
|
*
|
||||||
|
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------------
|
||||||
|
* 1.00a adk 1/31/14 Added in bsp common folder for backward compatibility
|
||||||
|
* 7.0 aru 01/21/19 Modified the typedef of u32,u16,u8
|
||||||
|
* 7.0 aru 02/06/19 Included stdint.h and stddef.h
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XBASIC_TYPES_H /* prevent circular inclusions */
|
||||||
|
#define XBASIC_TYPES_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
/** @name Legacy types
|
||||||
|
* Deprecated legacy types.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
typedef uint8_t Xuint8; /**< unsigned 8-bit */
|
||||||
|
typedef char Xint8; /**< signed 8-bit */
|
||||||
|
typedef uint16_t Xuint16; /**< unsigned 16-bit */
|
||||||
|
typedef short Xint16; /**< signed 16-bit */
|
||||||
|
typedef uint32_t Xuint32; /**< unsigned 32-bit */
|
||||||
|
typedef long Xint32; /**< signed 32-bit */
|
||||||
|
typedef float Xfloat32; /**< 32-bit floating point */
|
||||||
|
typedef double Xfloat64; /**< 64-bit double precision FP */
|
||||||
|
typedef unsigned long Xboolean; /**< boolean (XTRUE or XFALSE) */
|
||||||
|
|
||||||
|
#if !defined __XUINT64__
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
Xuint32 Upper;
|
||||||
|
Xuint32 Lower;
|
||||||
|
} Xuint64;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** @name New types
|
||||||
|
* New simple types.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#ifndef __KERNEL__
|
||||||
|
#ifndef XIL_TYPES_H
|
||||||
|
typedef Xuint32 u32;
|
||||||
|
typedef Xuint16 u16;
|
||||||
|
typedef Xuint8 u8;
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#include <linux/types.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
# define TRUE 1U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FALSE
|
||||||
|
# define FALSE 0U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL 0U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Xilinx NULL, TRUE and FALSE legacy support. Deprecated.
|
||||||
|
* Please use NULL, TRUE and FALSE
|
||||||
|
*/
|
||||||
|
#define XNULL NULL
|
||||||
|
#define XTRUE TRUE
|
||||||
|
#define XFALSE FALSE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is deprecated and users
|
||||||
|
* should use xil_types.h and xil_assert.h\n\r
|
||||||
|
*/
|
||||||
|
#warning The xbasics_type.h file is deprecated and users should use xil_types.h and xil_assert.
|
||||||
|
#warning Please refer the Standalone BSP UG647 for further details
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2015 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xcoresightpsdcc.h
|
||||||
|
* @addtogroup coresightps_dcc Overview
|
||||||
|
* @{
|
||||||
|
* @details
|
||||||
|
*
|
||||||
|
* CoreSight driver component.
|
||||||
|
*
|
||||||
|
* The coresight is a part of debug communication channel (DCC) group. Jtag UART
|
||||||
|
* for ARM uses DCC. Each ARM core has its own DCC, so one need to select an
|
||||||
|
* ARM target in XSDB console before running the jtag terminal command. Using the
|
||||||
|
* coresight driver component, the output stream can be directed to a log file.
|
||||||
|
*
|
||||||
|
* @note None.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ----- -------- -----------------------------------------------
|
||||||
|
* 1.00 kvn 02/14/15 First release
|
||||||
|
* 1.1 kvn 06/12/15 Add support for Zynq Ultrascale+ MP.
|
||||||
|
* kvn 08/18/15 Modified Makefile according to compiler changes.
|
||||||
|
* 1.3 asa 07/01/16 Made changes to ensure that the file does not compile
|
||||||
|
* for MB BSPs. Instead it throws up a warning. This
|
||||||
|
* fixes the CR#953056.
|
||||||
|
* 1.5 sne 01/19/19 Fixed MISRA-C Violations CR#1025101.
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
#ifndef XCORESIGHTPSDCC_H /* prevent circular inclusions */
|
||||||
|
#define XCORESIGHTPSDCC_H /* by using protection macros */
|
||||||
|
#ifndef __MICROBLAZE__
|
||||||
|
#include <xil_types.h>
|
||||||
|
|
||||||
|
void XCoresightPs_DccSendByte(u32 BaseAddress, u8 Data);
|
||||||
|
|
||||||
|
u8 XCoresightPs_DccRecvByte(u32 BaseAddress);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
/** @} */
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2021-2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef XIL_XCORTEXA9_H_ /* prevent circular inclusions */
|
||||||
|
#define XIL_XCORTEXA9_H_ /* by using protection macros */
|
||||||
|
|
||||||
|
/***************************** Include Files ********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
|
||||||
|
/**************************** Type Definitions ******************************/
|
||||||
|
typedef struct {
|
||||||
|
u32 CpuFreq;
|
||||||
|
} XCortexa9_Config;
|
||||||
|
|
||||||
|
#endif /* XIL_XCORTEXA9_H_ */
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2021-2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef XIL_XCORTEXA9_CONFIG_H_ /* prevent circular inclusions */
|
||||||
|
#define XIL_XCORTEXA9_CONFIG_H_ /* by using protection macros */
|
||||||
|
|
||||||
|
/***************************** Include Files ********************************/
|
||||||
|
|
||||||
|
#include "xcortexa9.h"
|
||||||
|
|
||||||
|
/************************** Variable Definitions ****************************/
|
||||||
|
extern XCortexa9_Config XCortexa9_ConfigTable;
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions ********************/
|
||||||
|
#define XGet_CpuFreq() XCortexa9_ConfigTable.CpuFreq
|
||||||
|
#endif /* XIL_XCORTEXA9_CONFIG_H_ */
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2011 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xcpu_cortexa9.h
|
||||||
|
* @addtogroup cpu_cortexa9 Overview
|
||||||
|
* @{
|
||||||
|
* @details
|
||||||
|
*
|
||||||
|
* dummy file
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- ---------------------------------------------------------
|
||||||
|
* 2.5 ms 04/18/17 Modified tcl file to add suffix U for XPAR_CPU_ID
|
||||||
|
* parameter of cpu_cortexa9 in xparameters.h
|
||||||
|
# 2.7 mus 07/03/18 Updated tcl to not to add default flags forcefully into
|
||||||
|
# extra compiler flags. Now, user can remove default flags
|
||||||
|
# from extra compiler flags. It fixes CR#998768.
|
||||||
|
******************************************************************************/
|
||||||
|
/** @} */
|
||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (C) 2015 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xddrps.h
|
||||||
|
* @addtogroup ddrps Overview
|
||||||
|
* @{
|
||||||
|
* @details
|
||||||
|
*
|
||||||
|
* The Xilinx DdrPs driver. This driver supports the Xilinx ddrps
|
||||||
|
* IP core.
|
||||||
|
*
|
||||||
|
* @note None.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -----------------------------------------------
|
||||||
|
* 1.0 nsk 08/06/15 First Release
|
||||||
|
* 1.0 nsk 08/20/15 Updated define_addr_params in ddrps.tcl
|
||||||
|
* to support PBD Designs (CR #876857)
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef XDDRPS_H_
|
||||||
|
/* Prevent circular inclusions by using protection macros. */
|
||||||
|
#define XDDRPS_H_
|
||||||
|
|
||||||
|
/******************************* Include Files ********************************/
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* XDDRPS_H_ */
|
||||||
|
/** @} */
|
||||||
+78
@@ -0,0 +1,78 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2002 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef XDEBUG
|
||||||
|
#define XDEBUG
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "xil_printf.h"
|
||||||
|
|
||||||
|
#if defined(DEBUG) && !defined(NDEBUG)
|
||||||
|
|
||||||
|
#ifndef XDEBUG_WARNING
|
||||||
|
#define XDEBUG_WARNING
|
||||||
|
#warning DEBUG is enabled
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int printf(const char *format, ...);
|
||||||
|
|
||||||
|
#define XDBG_DEBUG_ERROR 0x00000001U /* error condition messages */
|
||||||
|
#define XDBG_DEBUG_GENERAL 0x00000002U /* general debug messages */
|
||||||
|
#define XDBG_DEBUG_ALL 0xFFFFFFFFU /* all debugging data */
|
||||||
|
|
||||||
|
#define XDBG_DEBUG_FIFO_REG 0x00000100U /* display register reads/writes */
|
||||||
|
#define XDBG_DEBUG_FIFO_RX 0x00000101U /* receive debug messages */
|
||||||
|
#define XDBG_DEBUG_FIFO_TX 0x00000102U /* transmit debug messages */
|
||||||
|
#define XDBG_DEBUG_FIFO_ALL 0x0000010FU /* all fifo debug messages */
|
||||||
|
|
||||||
|
#define XDBG_DEBUG_TEMAC_REG 0x00000400U /* display register reads/writes */
|
||||||
|
#define XDBG_DEBUG_TEMAC_RX 0x00000401U /* receive debug messages */
|
||||||
|
#define XDBG_DEBUG_TEMAC_TX 0x00000402U /* transmit debug messages */
|
||||||
|
#define XDBG_DEBUG_TEMAC_ALL 0x0000040FU /* all temac debug messages */
|
||||||
|
|
||||||
|
#define XDBG_DEBUG_TEMAC_ADPT_RX 0x00000800U /* receive debug messages */
|
||||||
|
#define XDBG_DEBUG_TEMAC_ADPT_TX 0x00000801U /* transmit debug messages */
|
||||||
|
#define XDBG_DEBUG_TEMAC_ADPT_IOCTL 0x00000802U /* ioctl debug messages */
|
||||||
|
#define XDBG_DEBUG_TEMAC_ADPT_MISC 0x00000803U /* debug msg for other routines */
|
||||||
|
#define XDBG_DEBUG_TEMAC_ADPT_ALL 0x0000080FU /* all temac adapter debug messages */
|
||||||
|
|
||||||
|
|
||||||
|
#define xdbg_current_types (XDBG_DEBUG_GENERAL | XDBG_DEBUG_ERROR | XDBG_DEBUG_TEMAC_REG | XDBG_DEBUG_FIFO_RX | XDBG_DEBUG_FIFO_TX | XDBG_DEBUG_FIFO_REG)
|
||||||
|
|
||||||
|
#define xdbg_stmnt(x) x
|
||||||
|
|
||||||
|
/* In VxWorks, if _WRS_GNU_VAR_MACROS is defined, special syntax is needed for
|
||||||
|
* macros that accept variable number of arguments
|
||||||
|
*/
|
||||||
|
#if defined(XENV_VXWORKS) && defined(_WRS_GNU_VAR_MACROS)
|
||||||
|
#define xdbg_printf(type, args...) (((type) & xdbg_current_types) ? printf (## args) : 0)
|
||||||
|
#else /* ANSI Syntax */
|
||||||
|
#define xdbg_printf(type, ...) (((type) & xdbg_current_types) ? printf (__VA_ARGS__) : 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define xdbg_exception_printf(type, ...) (((type) & xdbg_current_types) ? xil_printf (__VA_ARGS__) : 0)
|
||||||
|
|
||||||
|
#else /* defined(DEBUG) && !defined(NDEBUG) */
|
||||||
|
|
||||||
|
#define xdbg_stmnt(x) /**< Debug statement */
|
||||||
|
|
||||||
|
/* See VxWorks comments above */
|
||||||
|
#if defined(XENV_VXWORKS) && defined(_WRS_GNU_VAR_MACROS)
|
||||||
|
#define xdbg_printf(type, args...)
|
||||||
|
#else /* ANSI Syntax */
|
||||||
|
#define xdbg_printf(...) /**< Debug printf */
|
||||||
|
#endif
|
||||||
|
#endif /* defined(DEBUG) && !defined(NDEBUG) */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* XDEBUG */
|
||||||
+393
@@ -0,0 +1,393 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2010 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xdevcfg.h
|
||||||
|
* @addtogroup devcfg Overview
|
||||||
|
* @{
|
||||||
|
* @details
|
||||||
|
*
|
||||||
|
* The is the main header file for the Device Configuration Interface of the Zynq
|
||||||
|
* device. The device configuration interface has three main functionality.
|
||||||
|
* 1. AXI-PCAP
|
||||||
|
* 2. Security Policy
|
||||||
|
* 3. XADC
|
||||||
|
* This current version of the driver supports only the AXI-PCAP and Security
|
||||||
|
* Policy blocks. There is a separate driver for XADC.
|
||||||
|
*
|
||||||
|
* AXI-PCAP is used for download/upload an encrypted or decrypted bitstream.
|
||||||
|
* DMA embedded in the AXI PCAP provides the master interface to
|
||||||
|
* the Device configuration block for any DMA transfers. The data transfer can
|
||||||
|
* take place between the Tx/RxFIFOs of AXI-PCAP and memory (on chip
|
||||||
|
* RAM/DDR/peripheral memory).
|
||||||
|
*
|
||||||
|
* The current driver only supports the downloading the FPGA bitstream and
|
||||||
|
* readback of the decrypted image (sort of loopback).
|
||||||
|
* The driver does not know what information needs to be written to the FPGA to
|
||||||
|
* readback FPGA configuration register or memory data. The application above the
|
||||||
|
* driver should take care of creating the data that needs to be downloaded to
|
||||||
|
* the FPGA so that the bitstream can be readback.
|
||||||
|
* This driver also does not support the reading of the internal registers of the
|
||||||
|
* PCAP. The driver has no knowledge of the PCAP internals.
|
||||||
|
*
|
||||||
|
* <b> Initialization and Configuration </b>
|
||||||
|
*
|
||||||
|
* The device driver enables higher layer software (e.g., an application) to
|
||||||
|
* communicate with the Device Configuration device.
|
||||||
|
*
|
||||||
|
* XDcfg_CfgInitialize() API is used to initialize the Device Configuration
|
||||||
|
* Interface. The user needs to first call the XDcfg_LookupConfig() API which
|
||||||
|
* returns the Configuration structure pointer which is passed as a parameter to
|
||||||
|
* the XDcfg_CfgInitialize() API.
|
||||||
|
*
|
||||||
|
* <b>Interrupts</b>
|
||||||
|
* The Driver implements an interrupt handler to support the interrupts provided
|
||||||
|
* by this interface.
|
||||||
|
*
|
||||||
|
* <b> Threads </b>
|
||||||
|
*
|
||||||
|
* This driver is not thread safe. Any needs for threads or thread mutual
|
||||||
|
* exclusion must be satisfied by the layer above this driver.
|
||||||
|
*
|
||||||
|
* <b> Asserts </b>
|
||||||
|
*
|
||||||
|
* Asserts are used within all Xilinx drivers to enforce constraints on argument
|
||||||
|
* values. Asserts can be turned off on a system-wide basis by defining, at
|
||||||
|
* compile time, the NDEBUG identifier. By default, asserts are turned on and it
|
||||||
|
* is recommended that users leave asserts on during development.
|
||||||
|
*
|
||||||
|
* <b> Building the driver </b>
|
||||||
|
*
|
||||||
|
* The XDcfg driver is composed of several source files. This allows the user
|
||||||
|
* to build and link only those parts of the driver that are necessary.
|
||||||
|
*
|
||||||
|
* <br><br>
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- --- -------- ---------------------------------------------
|
||||||
|
* 1.00a hvm 02/07/11 First release
|
||||||
|
* 2.00a nm 05/31/12 Updated the driver for CR 660835 so that input length for
|
||||||
|
* source/destination to the XDcfg_InitiateDma, XDcfg_Transfer
|
||||||
|
* APIs is words (32 bit) and not bytes.
|
||||||
|
* Updated the notes for XDcfg_InitiateDma/XDcfg_Transfer APIs
|
||||||
|
* to add information that 2 LSBs of the Source/Destination
|
||||||
|
* address when equal to 2�b01 indicate the last DMA command
|
||||||
|
* of an overall transfer.
|
||||||
|
* Destination Address passed to this API for secure transfers
|
||||||
|
* instead of using 0xFFFFFFFF for CR 662197. This issue was
|
||||||
|
* resulting in the failure of secure transfers of
|
||||||
|
* non-bitstream images.
|
||||||
|
* 2.01a nm 07/07/12 Updated the XDcfg_IntrClear function to directly
|
||||||
|
* set the mask instead of oring it with the
|
||||||
|
* value read from the interrupt status register
|
||||||
|
* Added defines for the PS Version bits,
|
||||||
|
* removed the FIFO Flush bits from the
|
||||||
|
* Miscellaneous Control Reg.
|
||||||
|
* Added XDcfg_GetPsVersion, XDcfg_SelectIcapInterface
|
||||||
|
* and XDcfg_SelectPcapInterface APIs for CR 643295
|
||||||
|
* The user has to call the XDcfg_SelectIcapInterface API
|
||||||
|
* for the PL reconfiguration using AXI HwIcap.
|
||||||
|
* Updated the XDcfg_Transfer API to clear the
|
||||||
|
* QUARTER_PCAP_RATE_EN bit in the control register for
|
||||||
|
* non secure writes for CR 675543.
|
||||||
|
* 2.02a nm 01/31/13 Fixed CR# 679335.
|
||||||
|
* Added Setting and Clearing the internal PCAP loopback.
|
||||||
|
* Removed code for enabling/disabling AES engine as BootROM
|
||||||
|
* locks down this setting.
|
||||||
|
* Fixed CR# 681976.
|
||||||
|
* Skip Checking the PCFG_INIT in case of non-secure DMA
|
||||||
|
* loopback.
|
||||||
|
* Fixed CR# 699558.
|
||||||
|
* XDcfg_Transfer fails to transfer data in loopback mode.
|
||||||
|
* Fixed CR# 701348.
|
||||||
|
* Peripheral test fails with Running
|
||||||
|
* DcfgSelfTestExample() in SECURE bootmode.
|
||||||
|
* 2.03a nm 04/19/13 Fixed CR# 703728.
|
||||||
|
* Updated the register definitions as per the latest TRM
|
||||||
|
* version UG585 (v1.4) November 16, 2012.
|
||||||
|
* 3.0 adk 10/12/13 Updated as per the New Tcl API's
|
||||||
|
* 3.0 kpc 21/02/14 Added function prototype for XDcfg_ClearControlRegister
|
||||||
|
* 3.2 sb 08/25/14 Fixed XDcfg_PcapReadback() function
|
||||||
|
* updated driver code with != instead of ==,
|
||||||
|
* while checking for Interrupt Status with DMA and
|
||||||
|
* PCAP Done Mask
|
||||||
|
* ((XDcfg_ReadReg(InstancePtr->Config.BaseAddr,
|
||||||
|
* XDCFG_INT_STS_OFFSET) &
|
||||||
|
* XDCFG_IXR_D_P_DONE_MASK) !=
|
||||||
|
* XDCFG_IXR_D_P_DONE_MASK);
|
||||||
|
* A new example has been added to read back the
|
||||||
|
* configuration registers from the PL region.
|
||||||
|
* xdevcfg_reg_readback_example.c
|
||||||
|
* 3.3 sk 04/06/15 Modified XDcfg_ReadMultiBootConfig Macro CR# 851335.
|
||||||
|
* ms 03/17/17 Added readme.txt file in examples folder for doxygen
|
||||||
|
* generation.
|
||||||
|
* ms 04/10/17 Modified filename tag in interrupt and polled examples
|
||||||
|
* to include them in doxygen examples.
|
||||||
|
* 3.5 ms 04/18/17 Modified tcl file to add suffix U for all macros
|
||||||
|
* definitions of devcfg in xparameters.h
|
||||||
|
* ms 08/07/17 Fixed compilation warnings in xdevcfg_sinit.c
|
||||||
|
* 3.8 Nava 06/21/23 Added support for system device-tree flow.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef XDCFG_H /* prevent circular inclusions */
|
||||||
|
#define XDCFG_H /* by using protection macros */
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xdevcfg_hw.h"
|
||||||
|
#include "xstatus.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/* Types of PCAP transfers */
|
||||||
|
|
||||||
|
#define XDCFG_NON_SECURE_PCAP_WRITE 1
|
||||||
|
#define XDCFG_SECURE_PCAP_WRITE 2
|
||||||
|
#define XDCFG_PCAP_READBACK 3
|
||||||
|
#define XDCFG_CONCURRENT_SECURE_READ_WRITE 4
|
||||||
|
#define XDCFG_CONCURRENT_NONSEC_READ_WRITE 5
|
||||||
|
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
/**
|
||||||
|
* The handler data type allows the user to define a callback function to
|
||||||
|
* respond to interrupt events in the system. This function is executed
|
||||||
|
* in interrupt context, so amount of processing should be minimized.
|
||||||
|
*
|
||||||
|
* @param CallBackRef is the callback reference passed in by the upper
|
||||||
|
* layer when setting the callback functions, and passed back to
|
||||||
|
* the upper layer when the callback is invoked. Its type is
|
||||||
|
* unimportant to the driver component, so it is a void pointer.
|
||||||
|
* @param Status is the Interrupt status of the XDcfg device.
|
||||||
|
*/
|
||||||
|
typedef void (*XDcfg_IntrHandler) (void *CallBackRef, u32 Status);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This typedef contains configuration information for the device.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
#ifndef SDT
|
||||||
|
u16 DeviceId; /**< Unique ID of device */
|
||||||
|
#else
|
||||||
|
char *Name;
|
||||||
|
#endif
|
||||||
|
u32 BaseAddr; /**< Base address of the device */
|
||||||
|
#ifdef SDT
|
||||||
|
u32 IntrId; /** Bits[11:0] Interrupt-id Bits[15:12]
|
||||||
|
* trigger type and level flags */
|
||||||
|
UINTPTR IntrParent; /** Bit[0] Interrupt parent type Bit[64/32:1]
|
||||||
|
* Parent base address */
|
||||||
|
#endif
|
||||||
|
} XDcfg_Config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The XDcfg driver instance data.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
XDcfg_Config Config; /**< Hardware Configuration */
|
||||||
|
u32 IsReady; /**< Device is initialized and ready */
|
||||||
|
u32 IsStarted; /**< Device Configuration Interface
|
||||||
|
* is running
|
||||||
|
*/
|
||||||
|
XDcfg_IntrHandler StatusHandler; /* Event handler function */
|
||||||
|
void *CallBackRef; /* Callback reference for event handler */
|
||||||
|
} XDcfg;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Unlock the Device Config Interface block.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the instance of XDcfg driver.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note C-style signature:
|
||||||
|
* void XDcfg_Unlock(XDcfg* InstancePtr)
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XDcfg_Unlock(InstancePtr) \
|
||||||
|
XDcfg_WriteReg((InstancePtr)->Config.BaseAddr, \
|
||||||
|
XDCFG_UNLOCK_OFFSET, XDCFG_UNLOCK_DATA)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Get the version number of the PS from the Miscellaneous Control Register.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the instance of XDcfg driver.
|
||||||
|
*
|
||||||
|
* @return Version of the PS.
|
||||||
|
*
|
||||||
|
* @note C-style signature:
|
||||||
|
* void XDcfg_GetPsVersion(XDcfg* InstancePtr)
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XDcfg_GetPsVersion(InstancePtr) \
|
||||||
|
((XDcfg_ReadReg((InstancePtr)->Config.BaseAddr, \
|
||||||
|
XDCFG_MCTRL_OFFSET)) & \
|
||||||
|
XDCFG_MCTRL_PCAP_PS_VERSION_MASK) >> \
|
||||||
|
XDCFG_MCTRL_PCAP_PS_VERSION_SHIFT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Read the multiboot config register value.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the instance of XDcfg driver.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note C-style signature:
|
||||||
|
* u32 XDcfg_ReadMultiBootConfig(XDcfg* InstancePtr)
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XDcfg_ReadMultiBootConfig(InstancePtr) \
|
||||||
|
XDcfg_ReadReg((InstancePtr)->Config.BaseAddr, \
|
||||||
|
XDCFG_MULTIBOOT_ADDR_OFFSET)
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Selects ICAP interface for reconfiguration after the initial configuration
|
||||||
|
* of the PL.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the instance of XDcfg driver.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note C-style signature:
|
||||||
|
* void XDcfg_SelectIcapInterface(XDcfg* InstancePtr)
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XDcfg_SelectIcapInterface(InstancePtr) \
|
||||||
|
XDcfg_WriteReg((InstancePtr)->Config.BaseAddr, XDCFG_CTRL_OFFSET, \
|
||||||
|
((XDcfg_ReadReg((InstancePtr)->Config.BaseAddr, XDCFG_CTRL_OFFSET)) \
|
||||||
|
& ( ~XDCFG_CTRL_PCAP_PR_MASK)))
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Selects PCAP interface for reconfiguration after the initial configuration
|
||||||
|
* of the PL.
|
||||||
|
*
|
||||||
|
* @param InstancePtr is a pointer to the instance of XDcfg driver.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note C-style signature:
|
||||||
|
* void XDcfg_SelectPcapInterface(XDcfg* InstancePtr)
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XDcfg_SelectPcapInterface(InstancePtr) \
|
||||||
|
XDcfg_WriteReg((InstancePtr)->Config.BaseAddr, XDCFG_CTRL_OFFSET, \
|
||||||
|
((XDcfg_ReadReg((InstancePtr)->Config.BaseAddr, XDCFG_CTRL_OFFSET)) \
|
||||||
|
| XDCFG_CTRL_PCAP_PR_MASK))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Lookup configuration in xdevcfg_sinit.c.
|
||||||
|
*/
|
||||||
|
#ifndef SDT
|
||||||
|
XDcfg_Config *XDcfg_LookupConfig(u16 DeviceId);
|
||||||
|
#else
|
||||||
|
XDcfg_Config *XDcfg_LookupConfig(UINTPTR BaseAddress);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Selftest function in xdevcfg_selftest.c
|
||||||
|
*/
|
||||||
|
int XDcfg_SelfTest(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Interface functions in xdevcfg.c
|
||||||
|
*/
|
||||||
|
int XDcfg_CfgInitialize(XDcfg *InstancePtr,
|
||||||
|
XDcfg_Config *ConfigPtr, u32 EffectiveAddress);
|
||||||
|
|
||||||
|
void XDcfg_EnablePCAP(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_DisablePCAP(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_SetControlRegister(XDcfg *InstancePtr, u32 Mask);
|
||||||
|
|
||||||
|
void XDcfg_ClearControlRegister(XDcfg *InstancePtr, u32 Mask);
|
||||||
|
|
||||||
|
u32 XDcfg_GetControlRegister(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_SetLockRegister(XDcfg *InstancePtr, u32 Data);
|
||||||
|
|
||||||
|
u32 XDcfg_GetLockRegister(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_SetConfigRegister(XDcfg *InstancePtr, u32 Data);
|
||||||
|
|
||||||
|
u32 XDcfg_GetConfigRegister(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_SetStatusRegister(XDcfg *InstancePtr, u32 Data);
|
||||||
|
|
||||||
|
u32 XDcfg_GetStatusRegister(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_SetRomShadowRegister(XDcfg *InstancePtr, u32 Data);
|
||||||
|
|
||||||
|
u32 XDcfg_GetSoftwareIdRegister(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_SetMiscControlRegister(XDcfg *InstancePtr, u32 Mask);
|
||||||
|
|
||||||
|
u32 XDcfg_GetMiscControlRegister(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
u32 XDcfg_IsDmaBusy(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_InitiateDma(XDcfg *InstancePtr, u32 SourcePtr, u32 DestPtr,
|
||||||
|
u32 SrcWordLength, u32 DestWordLength);
|
||||||
|
|
||||||
|
u32 XDcfg_Transfer(XDcfg *InstancePtr,
|
||||||
|
void *SourcePtr, u32 SrcWordLength,
|
||||||
|
void *DestPtr, u32 DestWordLength,
|
||||||
|
u32 TransferType);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Interrupt related function prototypes implemented in xdevcfg_intr.c
|
||||||
|
*/
|
||||||
|
void XDcfg_IntrEnable(XDcfg *InstancePtr, u32 Mask);
|
||||||
|
|
||||||
|
void XDcfg_IntrDisable(XDcfg *InstancePtr, u32 Mask);
|
||||||
|
|
||||||
|
u32 XDcfg_IntrGetEnabled(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
u32 XDcfg_IntrGetStatus(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_IntrClear(XDcfg *InstancePtr, u32 Mask);
|
||||||
|
|
||||||
|
void XDcfg_InterruptHandler(XDcfg *InstancePtr);
|
||||||
|
|
||||||
|
void XDcfg_SetHandler(XDcfg *InstancePtr, void *CallBackFunc,
|
||||||
|
void *CallBackRef);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
/** @} */
|
||||||
+371
@@ -0,0 +1,371 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2010 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xdevcfg_hw.h
|
||||||
|
* @addtogroup devcfg Overview
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* This file contains the hardware interface to the Device Config Interface.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- --- -------- ---------------------------------------------
|
||||||
|
* 1.00a hvm 02/07/11 First release
|
||||||
|
* 2.01a nm 08/01/12 Added defines for the PS Version bits,
|
||||||
|
* removed the FIFO Flush bits from the
|
||||||
|
* Miscellaneous Control Reg
|
||||||
|
* 2.03a nm 04/19/13 Fixed CR# 703728.
|
||||||
|
* Updated the register definitions as per the latest TRM
|
||||||
|
* version UG585 (v1.4) November 16, 2012.
|
||||||
|
* 2.04a kpc 10/07/13 Added function prototype.
|
||||||
|
* 3.00a kpc 25/02/14 Corrected the XDCFG_BASE_ADDRESS macro value.
|
||||||
|
* 3.8 Nava 06/21/23 Added support for system device-tree flow.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef XDCFG_HW_H /* prevent circular inclusions */
|
||||||
|
#define XDCFG_HW_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_io.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/** @name Register Map
|
||||||
|
* Offsets of registers from the start of the device
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XDCFG_CTRL_OFFSET 0x00 /**< Control Register */
|
||||||
|
#define XDCFG_LOCK_OFFSET 0x04 /**< Lock Register */
|
||||||
|
#define XDCFG_CFG_OFFSET 0x08 /**< Configuration Register */
|
||||||
|
#define XDCFG_INT_STS_OFFSET 0x0C /**< Interrupt Status Register */
|
||||||
|
#define XDCFG_INT_MASK_OFFSET 0x10 /**< Interrupt Mask Register */
|
||||||
|
#define XDCFG_STATUS_OFFSET 0x14 /**< Status Register */
|
||||||
|
#define XDCFG_DMA_SRC_ADDR_OFFSET 0x18 /**< DMA Source Address Register */
|
||||||
|
#define XDCFG_DMA_DEST_ADDR_OFFSET 0x1C /**< DMA Destination Address Reg */
|
||||||
|
#define XDCFG_DMA_SRC_LEN_OFFSET 0x20 /**< DMA Source Transfer Length */
|
||||||
|
#define XDCFG_DMA_DEST_LEN_OFFSET 0x24 /**< DMA Destination Transfer */
|
||||||
|
#define XDCFG_ROM_SHADOW_OFFSET 0x28 /**< DMA ROM Shadow Register */
|
||||||
|
#define XDCFG_MULTIBOOT_ADDR_OFFSET 0x2C /**< Multi BootAddress Pointer */
|
||||||
|
#define XDCFG_SW_ID_OFFSET 0x30 /**< Software ID Register */
|
||||||
|
#define XDCFG_UNLOCK_OFFSET 0x34 /**< Unlock Register */
|
||||||
|
#define XDCFG_MCTRL_OFFSET 0x80 /**< Miscellaneous Control Reg */
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
/** @name Control Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XDCFG_CTRL_FORCE_RST_MASK 0x80000000 /**< Force into
|
||||||
|
* Secure Reset
|
||||||
|
*/
|
||||||
|
#define XDCFG_CTRL_PCFG_PROG_B_MASK 0x40000000 /**< Program signal to
|
||||||
|
* Reset FPGA
|
||||||
|
*/
|
||||||
|
#define XDCFG_CTRL_PCFG_POR_CNT_4K_MASK 0x20000000 /**< Control PL POR timer */
|
||||||
|
#define XDCFG_CTRL_PCAP_PR_MASK 0x08000000 /**< Enable PCAP for PR */
|
||||||
|
#define XDCFG_CTRL_PCAP_MODE_MASK 0x04000000 /**< Enable PCAP */
|
||||||
|
#define XDCFG_CTRL_PCAP_RATE_EN_MASK 0x02000000 /**< Enable PCAP send data
|
||||||
|
* to FPGA every 4 PCAP
|
||||||
|
* cycles
|
||||||
|
*/
|
||||||
|
#define XDCFG_CTRL_MULTIBOOT_EN_MASK 0x01000000 /**< Multiboot Enable */
|
||||||
|
#define XDCFG_CTRL_JTAG_CHAIN_DIS_MASK 0x00800000 /**< JTAG Chain Disable */
|
||||||
|
#define XDCFG_CTRL_USER_MODE_MASK 0x00008000 /**< User Mode Mask */
|
||||||
|
#define XDCFG_CTRL_PCFG_AES_FUSE_MASK 0x00001000 /**< AES key source */
|
||||||
|
#define XDCFG_CTRL_PCFG_AES_EN_MASK 0x00000E00 /**< AES Enable Mask */
|
||||||
|
#define XDCFG_CTRL_SEU_EN_MASK 0x00000100 /**< SEU Enable Mask */
|
||||||
|
#define XDCFG_CTRL_SEC_EN_MASK 0x00000080 /**< Secure/Non Secure
|
||||||
|
* Status mask
|
||||||
|
*/
|
||||||
|
#define XDCFG_CTRL_SPNIDEN_MASK 0x00000040 /**< Secure Non Invasive
|
||||||
|
* Debug Enable
|
||||||
|
*/
|
||||||
|
#define XDCFG_CTRL_SPIDEN_MASK 0x00000020 /**< Secure Invasive
|
||||||
|
* Debug Enable
|
||||||
|
*/
|
||||||
|
#define XDCFG_CTRL_NIDEN_MASK 0x00000010 /**< Non-Invasive Debug
|
||||||
|
* Enable
|
||||||
|
*/
|
||||||
|
#define XDCFG_CTRL_DBGEN_MASK 0x00000008 /**< Invasive Debug
|
||||||
|
* Enable
|
||||||
|
*/
|
||||||
|
#define XDCFG_CTRL_DAP_EN_MASK 0x00000007 /**< DAP Enable Mask */
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
/** @name Lock register bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XDCFG_LOCK_AES_EFUSE_MASK 0x00000010 /**< Lock AES Efuse bit */
|
||||||
|
#define XDCFG_LOCK_AES_EN_MASK 0x00000008 /**< Lock AES_EN update */
|
||||||
|
#define XDCFG_LOCK_SEU_MASK 0x00000004 /**< Lock SEU_En update */
|
||||||
|
#define XDCFG_LOCK_SEC_MASK 0x00000002 /**< Lock SEC_EN and
|
||||||
|
* USER_MODE
|
||||||
|
*/
|
||||||
|
#define XDCFG_LOCK_DBG_MASK 0x00000001 /**< This bit locks
|
||||||
|
* security config
|
||||||
|
* including: DAP_En,
|
||||||
|
* DBGEN,,
|
||||||
|
* NIDEN, SPNIEN
|
||||||
|
*/
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @name Config Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XDCFG_CFG_RFIFO_TH_MASK 0x00000C00 /**< Read FIFO
|
||||||
|
* Threshold Mask
|
||||||
|
*/
|
||||||
|
#define XDCFG_CFG_WFIFO_TH_MASK 0x00000300 /**< Write FIFO Threshold
|
||||||
|
* Mask
|
||||||
|
*/
|
||||||
|
#define XDCFG_CFG_RCLK_EDGE_MASK 0x00000080 /**< Read data active
|
||||||
|
* clock edge
|
||||||
|
*/
|
||||||
|
#define XDCFG_CFG_WCLK_EDGE_MASK 0x00000040 /**< Write data active
|
||||||
|
* clock edge
|
||||||
|
*/
|
||||||
|
#define XDCFG_CFG_DISABLE_SRC_INC_MASK 0x00000020 /**< Disable Source address
|
||||||
|
* increment mask
|
||||||
|
*/
|
||||||
|
#define XDCFG_CFG_DISABLE_DST_INC_MASK 0x00000010 /**< Disable Destination
|
||||||
|
* address increment
|
||||||
|
* mask
|
||||||
|
*/
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/** @name Interrupt Status/Mask Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_PSS_GTS_USR_B_MASK 0x80000000 /**< Tri-state IO during
|
||||||
|
* HIZ
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_PSS_FST_CFG_B_MASK 0x40000000 /**< First configuration
|
||||||
|
* done
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_PSS_GPWRDWN_B_MASK 0x20000000 /**< Global power down */
|
||||||
|
#define XDCFG_IXR_PSS_GTS_CFG_B_MASK 0x10000000 /**< Tri-state IO during
|
||||||
|
* configuration
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_PSS_CFG_RESET_B_MASK 0x08000000 /**< PL configuration
|
||||||
|
* reset
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_AXI_WTO_MASK 0x00800000 /**< AXI Write Address
|
||||||
|
* or Data or response
|
||||||
|
* timeout
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_AXI_WERR_MASK 0x00400000 /**< AXI Write response
|
||||||
|
* error
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_AXI_RTO_MASK 0x00200000 /**< AXI Read Address or
|
||||||
|
* response timeout
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_AXI_RERR_MASK 0x00100000 /**< AXI Read response
|
||||||
|
* error
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_RX_FIFO_OV_MASK 0x00040000 /**< Rx FIFO Overflow */
|
||||||
|
#define XDCFG_IXR_WR_FIFO_LVL_MASK 0x00020000 /**< Tx FIFO less than
|
||||||
|
* threshold */
|
||||||
|
#define XDCFG_IXR_RD_FIFO_LVL_MASK 0x00010000 /**< Rx FIFO greater than
|
||||||
|
* threshold */
|
||||||
|
#define XDCFG_IXR_DMA_CMD_ERR_MASK 0x00008000 /**< Illegal DMA command */
|
||||||
|
#define XDCFG_IXR_DMA_Q_OV_MASK 0x00004000 /**< DMA command queue
|
||||||
|
* overflow
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_DMA_DONE_MASK 0x00002000 /**< DMA Command Done */
|
||||||
|
#define XDCFG_IXR_D_P_DONE_MASK 0x00001000 /**< DMA and PCAP
|
||||||
|
* transfers Done
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_P2D_LEN_ERR_MASK 0x00000800 /**< PCAP to DMA transfer
|
||||||
|
* length error
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_PCFG_HMAC_ERR_MASK 0x00000040 /**< HMAC error mask */
|
||||||
|
#define XDCFG_IXR_PCFG_SEU_ERR_MASK 0x00000020 /**< SEU Error mask */
|
||||||
|
#define XDCFG_IXR_PCFG_POR_B_MASK 0x00000010 /**< FPGA POR mask */
|
||||||
|
#define XDCFG_IXR_PCFG_CFG_RST_MASK 0x00000008 /**< FPGA Reset mask */
|
||||||
|
#define XDCFG_IXR_PCFG_DONE_MASK 0x00000004 /**< Done Signal Mask */
|
||||||
|
#define XDCFG_IXR_PCFG_INIT_PE_MASK 0x00000002 /**< Detect Positive edge
|
||||||
|
* of Init Signal
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_PCFG_INIT_NE_MASK 0x00000001 /**< Detect Negative edge
|
||||||
|
* of Init Signal
|
||||||
|
*/
|
||||||
|
#define XDCFG_IXR_ERROR_FLAGS_MASK (XDCFG_IXR_AXI_WTO_MASK | \
|
||||||
|
XDCFG_IXR_AXI_WERR_MASK | \
|
||||||
|
XDCFG_IXR_AXI_RTO_MASK | \
|
||||||
|
XDCFG_IXR_AXI_RERR_MASK | \
|
||||||
|
XDCFG_IXR_RX_FIFO_OV_MASK | \
|
||||||
|
XDCFG_IXR_DMA_CMD_ERR_MASK |\
|
||||||
|
XDCFG_IXR_DMA_Q_OV_MASK | \
|
||||||
|
XDCFG_IXR_P2D_LEN_ERR_MASK |\
|
||||||
|
XDCFG_IXR_PCFG_HMAC_ERR_MASK)
|
||||||
|
|
||||||
|
|
||||||
|
#define XDCFG_IXR_ALL_MASK 0x00F7F8EF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/** @name Status Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_DMA_CMD_Q_F_MASK 0x80000000 /**< DMA command
|
||||||
|
* Queue full
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_DMA_CMD_Q_E_MASK 0x40000000 /**< DMA command
|
||||||
|
* Queue empty
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_DMA_DONE_CNT_MASK 0x30000000 /**< Number of
|
||||||
|
* completed DMA
|
||||||
|
* transfers
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_RX_FIFO_LVL_MASK 0x01F000000 /**< Rx FIFO level */
|
||||||
|
#define XDCFG_STATUS_TX_FIFO_LVL_MASK 0x0007F000 /**< Tx FIFO level */
|
||||||
|
|
||||||
|
#define XDCFG_STATUS_PSS_GTS_USR_B 0x00000800 /**< Tri-state IO
|
||||||
|
* during HIZ
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_PSS_FST_CFG_B 0x00000400 /**< First PL config
|
||||||
|
* done
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_PSS_GPWRDWN_B 0x00000200 /**< Global power down */
|
||||||
|
#define XDCFG_STATUS_PSS_GTS_CFG_B 0x00000100 /**< Tri-state IO during
|
||||||
|
* config
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_SECURE_RST_MASK 0x00000080 /**< Secure Reset
|
||||||
|
* POR Status
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_ILLEGAL_APB_ACCESS_MASK 0x00000040 /**< Illegal APB
|
||||||
|
* access
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_PSS_CFG_RESET_B 0x00000020 /**< PL config
|
||||||
|
* reset status
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_PCFG_INIT_MASK 0x00000010 /**< FPGA Init
|
||||||
|
* Status
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_EFUSE_BBRAM_KEY_DISABLE_MASK 0x00000008
|
||||||
|
/**< BBRAM key
|
||||||
|
* disable
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_EFUSE_SEC_EN_MASK 0x00000004 /**< Efuse Security
|
||||||
|
* Enable Status
|
||||||
|
*/
|
||||||
|
#define XDCFG_STATUS_EFUSE_JTAG_DIS_MASK 0x00000002 /**< EFuse JTAG
|
||||||
|
* Disable
|
||||||
|
* status
|
||||||
|
*/
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/** @name DMA Source/Destination Transfer Length Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XDCFG_DMA_LEN_MASK 0x7FFFFFF /**< Length Mask */
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @name Miscellaneous Control Register Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XDCFG_MCTRL_PCAP_PS_VERSION_MASK 0xF0000000 /**< PS Version Mask */
|
||||||
|
#define XDCFG_MCTRL_PCAP_PS_VERSION_SHIFT 28 /**< PS Version Shift */
|
||||||
|
#define XDCFG_MCTRL_PCAP_LPBK_MASK 0x00000010 /**< PCAP loopback mask */
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
/** @name FIFO Threshold Bit definitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XDCFG_CFG_FIFO_QUARTER 0x0 /**< Quarter empty */
|
||||||
|
#define XDCFG_CFG_FIFO_HALF 0x1 /**< Half empty */
|
||||||
|
#define XDCFG_CFG_FIFO_3QUARTER 0x2 /**< 3/4 empty */
|
||||||
|
#define XDCFG_CFG_FIFO_EMPTY 0x4 /**< Empty */
|
||||||
|
/* @}*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Miscellaneous constant values */
|
||||||
|
#define XDCFG_DMA_INVALID_ADDRESS 0xFFFFFFFF /**< Invalid DMA address */
|
||||||
|
#define XDCFG_UNLOCK_DATA 0x757BDF0D /**< First APB access data*/
|
||||||
|
#define XDCFG_BASE_ADDRESS 0xF8007000 /**< Device Config base
|
||||||
|
* address
|
||||||
|
*/
|
||||||
|
#define XDCFG_CONFIG_RESET_VALUE 0x508 /**< Config reg reset value */
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Read the given register.
|
||||||
|
*
|
||||||
|
* @param BaseAddr is the base address of the device
|
||||||
|
* @param RegOffset is the register offset to be read
|
||||||
|
*
|
||||||
|
* @return The 32-bit value of the register
|
||||||
|
*
|
||||||
|
* @note C-style signature:
|
||||||
|
* u32 XDcfg_ReadReg(u32 BaseAddr, u32 RegOffset)
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XDcfg_ReadReg(BaseAddr, RegOffset) \
|
||||||
|
Xil_In32((BaseAddr) + (RegOffset))
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Write to the given register.
|
||||||
|
*
|
||||||
|
* @param BaseAddr is the base address of the device
|
||||||
|
* @param RegOffset is the register offset to be written
|
||||||
|
* @param Data is the 32-bit value to write to the register
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note C-style signature:
|
||||||
|
* void XDcfg_WriteReg(u32 BaseAddr, u32 RegOffset, u32 Data)
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XDcfg_WriteReg(BaseAddr, RegOffset, Data) \
|
||||||
|
Xil_Out32((BaseAddr) + (RegOffset), (Data))
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
/*
|
||||||
|
* Perform reset operation to the devcfg interface
|
||||||
|
*/
|
||||||
|
void XDcfg_ResetHw(u32 BaseAddr);
|
||||||
|
/************************** Variable Definitions *****************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
/** @} */
|
||||||
+347
@@ -0,0 +1,347 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2009 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xdmaps.h
|
||||||
|
* @addtogroup dmaps Overview
|
||||||
|
* @{
|
||||||
|
* @details
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ------ -------- ----------------------------------------------
|
||||||
|
* 1.00 hbm 08/19/10 First Release
|
||||||
|
* 1.01a nm 12/20/12 Added definition XDMAPS_CHANNELS_PER_DEV which specifies
|
||||||
|
* the maximum number of channels.
|
||||||
|
* Replaced the usage of XPAR_XDMAPS_CHANNELS_PER_DEV
|
||||||
|
* with XDMAPS_CHANNELS_PER_DEV defined in xdmaps_hw.h.
|
||||||
|
* Added the tcl file to automatically generate the
|
||||||
|
* xparameters.h
|
||||||
|
* 1.02a sg 05/16/12 Made changes for doxygen and moved some function
|
||||||
|
* header from the xdmaps.h file to xdmaps.c file
|
||||||
|
* Other cleanup for coding guidelines and CR 657109
|
||||||
|
* and CR 657898
|
||||||
|
* The xdmaps_example_no_intr.c example is removed
|
||||||
|
* as it is using interrupts and is similar to
|
||||||
|
* the interrupt example - CR 652477
|
||||||
|
* 1.03a sg 07/16/2012 changed inline to __inline for CR665681
|
||||||
|
* 1.04a nm 10/22/2012 Fixed CR# 681671.
|
||||||
|
* 1.05a nm 04/15/2013 Fixed CR# 704396. Removed warnings when compiled
|
||||||
|
* with -Wall and -Wextra option in bsp.
|
||||||
|
* 05/01/2013 Fixed CR# 700189. Changed XDmaPs_BuildDmaProg()
|
||||||
|
* function description.
|
||||||
|
* Fixed CR# 704396. Removed unused variables
|
||||||
|
* UseM2MByte & MemBurstLen from XDmaPs_BuildDmaProg()
|
||||||
|
* function.
|
||||||
|
* 1.07a asa 11/02/13. Made changes to fix compilation issues for iarcc.
|
||||||
|
* Removed the PDBG prints. By default they were always
|
||||||
|
* defined out and never used. The PDBG is non-standard for
|
||||||
|
* Xilinx drivers and no other driver does something similar.
|
||||||
|
* Since there is no easy way to fix compilation issues with
|
||||||
|
* the IARCC compiler around PDBG, it is better to remove it.
|
||||||
|
* Users can always use xil_printfs if they want to debug.
|
||||||
|
* 2.0 adk 10/12/13 Updated as per the New Tcl API's
|
||||||
|
* 2.01 kpc 08/23/14 Fixed the IAR compiler reported errors
|
||||||
|
* 2.2 mus 08/12/16 Declared all inline functions in xdmaps.c as extern, to avoid
|
||||||
|
* linker error for IAR compiler
|
||||||
|
* 2.3 ms 01/23/17 Modified xil_printf statement in main function for all
|
||||||
|
* examples to ensure that "Successfully ran" and "Failed"
|
||||||
|
* strings are available in all examples. This is a fix
|
||||||
|
* for CR-965028.
|
||||||
|
* ms 03/17/17 Added readme.txt file in examples folder for doxygen
|
||||||
|
* generation.
|
||||||
|
* 2.4 adk 13/08/18 Fixed armcc compiler warnings in the driver CR-1008310.
|
||||||
|
* 2.8 sk 05/18/21 Modify all inline functions declarations from extern inline
|
||||||
|
* to static inline to avoid the linkage conflict for IAR compiler.
|
||||||
|
* 2.9 aj 11/07/23 Added support for system device tree
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef XDMAPS_H /* prevent circular inclusions */
|
||||||
|
#define XDMAPS_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files ********************************/
|
||||||
|
|
||||||
|
#include "xparameters.h"
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
#include "xstatus.h"
|
||||||
|
|
||||||
|
#include "xdmaps_hw.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions ****************************/
|
||||||
|
|
||||||
|
/**************************** Type Definitions ******************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This typedef contains configuration information for the device.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
#ifndef SDT
|
||||||
|
u16 DeviceId; /**< Unique ID of device */
|
||||||
|
#else
|
||||||
|
char *Name;
|
||||||
|
#endif
|
||||||
|
u32 BaseAddress; /**< Base address of device (IPIF) */
|
||||||
|
|
||||||
|
#ifdef SDT
|
||||||
|
u32 IntrId[9]; /** Bits[11:0] Interrupt-id Bits[15:12]
|
||||||
|
* trigger type and level flags */
|
||||||
|
UINTPTR IntrParent; /** Bit[0] Interrupt parent type Bit[64/32:1]
|
||||||
|
* Parent base address */
|
||||||
|
#endif
|
||||||
|
} XDmaPs_Config;
|
||||||
|
|
||||||
|
|
||||||
|
/** DMA channle control structure. It's for AXI bus transaction.
|
||||||
|
* This struct will be translated into a 32-bit channel control register value.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
unsigned int EndianSwapSize; /**< Endian swap size. */
|
||||||
|
unsigned int DstCacheCtrl; /**< Destination cache control */
|
||||||
|
unsigned int DstProtCtrl; /**< Destination protection control */
|
||||||
|
unsigned int DstBurstLen; /**< Destination burst length */
|
||||||
|
unsigned int DstBurstSize; /**< Destination burst size */
|
||||||
|
unsigned int DstInc; /**< Destination incrementing or fixed
|
||||||
|
* address */
|
||||||
|
unsigned int SrcCacheCtrl; /**< Source cache control */
|
||||||
|
unsigned int SrcProtCtrl; /**< Source protection control */
|
||||||
|
unsigned int SrcBurstLen; /**< Source burst length */
|
||||||
|
unsigned int SrcBurstSize; /**< Source burst size */
|
||||||
|
unsigned int SrcInc; /**< Source incrementing or fixed
|
||||||
|
* address */
|
||||||
|
} XDmaPs_ChanCtrl;
|
||||||
|
|
||||||
|
/** DMA block descriptor stucture.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
u32 SrcAddr; /**< Source starting address */
|
||||||
|
u32 DstAddr; /**< Destination starting address */
|
||||||
|
unsigned int Length; /**< Number of bytes for the block */
|
||||||
|
} XDmaPs_BD;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A DMA command consisits of a channel control struct, a block descriptor,
|
||||||
|
* a user defined program, a pointer pointing to generated DMA program, and
|
||||||
|
* execution result.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
XDmaPs_ChanCtrl ChanCtrl; /**< Channel Control Struct */
|
||||||
|
XDmaPs_BD BD; /**< Together with SgLength field,
|
||||||
|
* it's a scatter-gather list.
|
||||||
|
*/
|
||||||
|
void *UserDmaProg; /**< If user wants the driver to
|
||||||
|
* execute their own DMA program,
|
||||||
|
* this field points to the DMA
|
||||||
|
* program.
|
||||||
|
*/
|
||||||
|
int UserDmaProgLength; /**< The length of user defined
|
||||||
|
* DMA program.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *GeneratedDmaProg; /**< The DMA program genreated
|
||||||
|
* by the driver. This field will be
|
||||||
|
* set if a user invokes the DMA
|
||||||
|
* program generation function. Or
|
||||||
|
* the DMA command is finished and
|
||||||
|
* a user informs the driver not to
|
||||||
|
* release the program buffer.
|
||||||
|
* This field has two purposes, one
|
||||||
|
* is to ask the driver to generate
|
||||||
|
* a DMA program while the DMAC is
|
||||||
|
* performaning DMA transactions. The
|
||||||
|
* other purpose is to debug the
|
||||||
|
* driver.
|
||||||
|
*/
|
||||||
|
int GeneratedDmaProgLength; /**< The length of the DMA program
|
||||||
|
* generated by the driver
|
||||||
|
*/
|
||||||
|
int DmaStatus; /**< 0 on success, otherwise error code
|
||||||
|
*/
|
||||||
|
u32 ChanFaultType; /**< Channel fault type in case of fault
|
||||||
|
*/
|
||||||
|
u32 ChanFaultPCAddr; /**< Channel fault PC address
|
||||||
|
*/
|
||||||
|
} XDmaPs_Cmd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It's the done handler a user can set for a channel
|
||||||
|
*/
|
||||||
|
typedef void (*XDmaPsDoneHandler) (unsigned int Channel,
|
||||||
|
XDmaPs_Cmd *DmaCmd,
|
||||||
|
void *CallbackRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It's the fault handler a user can set for a channel
|
||||||
|
*/
|
||||||
|
typedef void (*XDmaPsFaultHandler) (unsigned int Channel,
|
||||||
|
XDmaPs_Cmd *DmaCmd,
|
||||||
|
void *CallbackRef);
|
||||||
|
|
||||||
|
#define XDMAPS_MAX_CHAN_BUFS 2
|
||||||
|
#define XDMAPS_CHAN_BUF_LEN 128
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The XDmaPs_ProgBuf is the struct for a DMA program buffer.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
char Buf[XDMAPS_CHAN_BUF_LEN]; /**< The actual buffer the holds the
|
||||||
|
* content */
|
||||||
|
unsigned Len; /**< The actual length of the DMA
|
||||||
|
* program in bytes. */
|
||||||
|
int Allocated; /**< A tag indicating whether the
|
||||||
|
* buffer is allocated or not */
|
||||||
|
} XDmaPs_ProgBuf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The XDmaPs_ChannelData is a struct to book keep individual channel of
|
||||||
|
* the DMAC.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
unsigned DevId; /**< Device id indicating which DMAC */
|
||||||
|
unsigned ChanId; /**< Channel number of the DMAC */
|
||||||
|
XDmaPs_ProgBuf ProgBufPool[XDMAPS_MAX_CHAN_BUFS]; /**< A pool of
|
||||||
|
program buffers*/
|
||||||
|
XDmaPsDoneHandler DoneHandler; /**< Done interrupt handler */
|
||||||
|
void *DoneRef; /**< Done interrupt callback data */
|
||||||
|
XDmaPs_Cmd *DmaCmdToHw; /**< DMA command being executed */
|
||||||
|
XDmaPs_Cmd *DmaCmdFromHw; /**< DMA command that is finished.
|
||||||
|
* This field is for debugging purpose
|
||||||
|
*/
|
||||||
|
int HoldDmaProg; /**< A tag indicating whether to hold the
|
||||||
|
* DMA program after the DMA is done.
|
||||||
|
*/
|
||||||
|
|
||||||
|
} XDmaPs_ChannelData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The XDmaPs driver instance data structure. A pointer to an instance data
|
||||||
|
* structure is passed around by functions to refer to a specific driver
|
||||||
|
* instance.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
XDmaPs_Config Config; /**< Configuration data structure */
|
||||||
|
int IsReady; /**< Device is Ready */
|
||||||
|
int CacheLength; /**< icache length */
|
||||||
|
XDmaPsFaultHandler FaultHandler; /**< fault interrupt handler */
|
||||||
|
void *FaultRef; /**< fault call back data */
|
||||||
|
XDmaPs_ChannelData Chans[XDMAPS_CHANNELS_PER_DEV];
|
||||||
|
/**<
|
||||||
|
* channel data
|
||||||
|
*/
|
||||||
|
} XDmaPs;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Functions implemented in xdmaps.c
|
||||||
|
*/
|
||||||
|
int XDmaPs_CfgInitialize(XDmaPs *InstPtr,
|
||||||
|
XDmaPs_Config *Config,
|
||||||
|
u32 EffectiveAddr);
|
||||||
|
|
||||||
|
int XDmaPs_Start(XDmaPs *InstPtr, unsigned int Channel,
|
||||||
|
XDmaPs_Cmd *Cmd,
|
||||||
|
int HoldDmaProg);
|
||||||
|
|
||||||
|
int XDmaPs_IsActive(XDmaPs *InstPtr, unsigned int Channel);
|
||||||
|
int XDmaPs_GenDmaProg(XDmaPs *InstPtr, unsigned int Channel,
|
||||||
|
XDmaPs_Cmd *Cmd);
|
||||||
|
int XDmaPs_FreeDmaProg(XDmaPs *InstPtr, unsigned int Channel,
|
||||||
|
XDmaPs_Cmd *Cmd);
|
||||||
|
void XDmaPs_Print_DmaProg(XDmaPs_Cmd *Cmd);
|
||||||
|
|
||||||
|
|
||||||
|
int XDmaPs_ResetManager(XDmaPs *InstPtr);
|
||||||
|
int XDmaPs_ResetChannel(XDmaPs *InstPtr, unsigned int Channel);
|
||||||
|
|
||||||
|
|
||||||
|
int XDmaPs_SetDoneHandler(XDmaPs *InstPtr,
|
||||||
|
unsigned Channel,
|
||||||
|
XDmaPsDoneHandler DoneHandler,
|
||||||
|
void *CallbackRef);
|
||||||
|
|
||||||
|
int XDmaPs_SetFaultHandler(XDmaPs *InstPtr,
|
||||||
|
XDmaPsFaultHandler FaultHandler,
|
||||||
|
void *CallbackRef);
|
||||||
|
|
||||||
|
void XDmaPs_Print_DmaProg(XDmaPs_Cmd *Cmd);
|
||||||
|
int XDmaPs_Instr_DMARMB(char *DmaProg);
|
||||||
|
int XDmaPs_Instr_DMAWMB(char *DmaProg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To avoid linkage error,modify all inline functions from extern
|
||||||
|
* inline to static inline for IAR compiler
|
||||||
|
*/
|
||||||
|
#ifdef __ICCARM__
|
||||||
|
static INLINE int XDmaPs_Instr_DMAEND(char *DmaProg);
|
||||||
|
static INLINE void XDmaPs_Memcpy4(char *Dst, char *Src);
|
||||||
|
static INLINE int XDmaPs_Instr_DMAGO(char *DmaProg, unsigned int Cn,
|
||||||
|
u32 Imm, unsigned int Ns);
|
||||||
|
static INLINE int XDmaPs_Instr_DMALD(char *DmaProg);
|
||||||
|
static INLINE int XDmaPs_Instr_DMALP(char *DmaProg, unsigned Lc,
|
||||||
|
unsigned LoopIterations);
|
||||||
|
static INLINE int XDmaPs_Instr_DMALPEND(char *DmaProg, char *BodyStart, unsigned Lc);
|
||||||
|
static INLINE int XDmaPs_Instr_DMAMOV(char *DmaProg, unsigned Rd, u32 Imm);
|
||||||
|
static INLINE int XDmaPs_Instr_DMANOP(char *DmaProg);
|
||||||
|
static INLINE int XDmaPs_Instr_DMASEV(char *DmaProg, unsigned int EventNumber);
|
||||||
|
static INLINE int XDmaPs_Instr_DMAST(char *DmaProg);
|
||||||
|
static INLINE unsigned XDmaPs_ToEndianSwapSizeBits(unsigned int EndianSwapSize);
|
||||||
|
static INLINE unsigned XDmaPs_ToBurstSizeBits(unsigned BurstSize);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Driver done interrupt service routines for the channels.
|
||||||
|
* We need this done ISR mainly because the driver needs to release the
|
||||||
|
* DMA program buffer. This is the one that connects the GIC
|
||||||
|
*/
|
||||||
|
void XDmaPs_DoneISR_0(XDmaPs *InstPtr);
|
||||||
|
void XDmaPs_DoneISR_1(XDmaPs *InstPtr);
|
||||||
|
void XDmaPs_DoneISR_2(XDmaPs *InstPtr);
|
||||||
|
void XDmaPs_DoneISR_3(XDmaPs *InstPtr);
|
||||||
|
void XDmaPs_DoneISR_4(XDmaPs *InstPtr);
|
||||||
|
void XDmaPs_DoneISR_5(XDmaPs *InstPtr);
|
||||||
|
void XDmaPs_DoneISR_6(XDmaPs *InstPtr);
|
||||||
|
void XDmaPs_DoneISR_7(XDmaPs *InstPtr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Driver fault interrupt service routine
|
||||||
|
*/
|
||||||
|
void XDmaPs_FaultISR(XDmaPs *InstPtr);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Static loopup function implemented in xdmaps_sinit.c
|
||||||
|
*/
|
||||||
|
#ifndef SDT
|
||||||
|
XDmaPs_Config *XDmaPs_LookupConfig(u16 DeviceId);
|
||||||
|
#else
|
||||||
|
XDmaPs_Config *XDmaPs_LookupConfig(UINTPTR BaseAddress);
|
||||||
|
u32 XDmaPs_GetDrvIndex(XDmaPs *InstancePtr, UINTPTR BaseAddress);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* self-test functions in xdmaps_selftest.c
|
||||||
|
*/
|
||||||
|
int XDmaPs_SelfTest(XDmaPs *InstPtr);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
/** @} */
|
||||||
+268
@@ -0,0 +1,268 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2009 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xdmaps_hw.h
|
||||||
|
* @addtogroup dmaps Overview
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* This header file contains the hardware interface of an XDmaPs device.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- ----------------------------------------------
|
||||||
|
* 1.00a hbm 08/18/10 First Release
|
||||||
|
* 1.01a nm 12/20/12 Added definition XDMAPS_CHANNELS_PER_DEV which specifies
|
||||||
|
* the maximum number of channels.
|
||||||
|
* Replaced the usage of XPAR_XDMAPS_CHANNELS_PER_DEV
|
||||||
|
* with XDMAPS_CHANNELS_PER_DEV defined in xdmaps_hw.h
|
||||||
|
* 1.02a sg 05/16/12 Made changes for doxygen
|
||||||
|
* 1.06a kpc 07/10/13 Added function prototype
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef XDMAPS_HW_H /* prevent circular inclusions */
|
||||||
|
#define XDMAPS_HW_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
#include "xil_io.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/** @name Register Map
|
||||||
|
*
|
||||||
|
* Register offsets for the DMAC.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XDMAPS_DS_OFFSET 0x000 /* DMA Status Register */
|
||||||
|
#define XDMAPS_DPC_OFFSET 0x004 /* DMA Program Counter Rregister */
|
||||||
|
#define XDMAPS_INTEN_OFFSET 0X020 /* DMA Interrupt Enable Register */
|
||||||
|
#define XDMAPS_ES_OFFSET 0x024 /* DMA Event Status Register */
|
||||||
|
#define XDMAPS_INTSTATUS_OFFSET 0x028 /* DMA Interrupt Status Register
|
||||||
|
*/
|
||||||
|
#define XDMAPS_INTCLR_OFFSET 0x02c /* DMA Interrupt Clear Register */
|
||||||
|
#define XDMAPS_FSM_OFFSET 0x030 /* DMA Fault Status DMA Manager
|
||||||
|
* Register
|
||||||
|
*/
|
||||||
|
#define XDMAPS_FSC_OFFSET 0x034 /* DMA Fault Status DMA Chanel Register
|
||||||
|
*/
|
||||||
|
#define XDMAPS_FTM_OFFSET 0x038 /* DMA Fault Type DMA Manager Register */
|
||||||
|
|
||||||
|
#define XDMAPS_FTC0_OFFSET 0x040 /* DMA Fault Type for DMA Channel 0 */
|
||||||
|
/*
|
||||||
|
* The offset for the rest of the FTC registers is calculated as
|
||||||
|
* FTC0 + dev_chan_num * 4
|
||||||
|
*/
|
||||||
|
#define XDmaPs_FTCn_OFFSET(ch) (XDMAPS_FTC0_OFFSET + (ch) * 4)
|
||||||
|
|
||||||
|
#define XDMAPS_CS0_OFFSET 0x100 /* Channel Status for DMA Channel 0 */
|
||||||
|
/*
|
||||||
|
* The offset for the rest of the CS registers is calculated as
|
||||||
|
* CS0 + * dev_chan_num * 0x08
|
||||||
|
*/
|
||||||
|
#define XDmaPs_CSn_OFFSET(ch) (XDMAPS_CS0_OFFSET + (ch) * 8)
|
||||||
|
|
||||||
|
#define XDMAPS_CPC0_OFFSET 0x104 /* Channel Program Counter for DMA
|
||||||
|
* Channel 0
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* The offset for the rest of the CPC registers is calculated as
|
||||||
|
* CPC0 + dev_chan_num * 0x08
|
||||||
|
*/
|
||||||
|
#define XDmaPs_CPCn_OFFSET(ch) (XDMAPS_CPC0_OFFSET + (ch) * 8)
|
||||||
|
|
||||||
|
#define XDMAPS_SA_0_OFFSET 0x400 /* Source Address Register for DMA
|
||||||
|
* Channel 0
|
||||||
|
*/
|
||||||
|
/* The offset for the rest of the SA registers is calculated as
|
||||||
|
* SA_0 + dev_chan_num * 0x20
|
||||||
|
*/
|
||||||
|
#define XDmaPs_SA_n_OFFSET(ch) (XDMAPS_SA_0_OFFSET + (ch) * 0x20)
|
||||||
|
|
||||||
|
#define XDMAPS_DA_0_OFFSET 0x404 /* Destination Address Register for
|
||||||
|
* DMA Channel 0
|
||||||
|
*/
|
||||||
|
/* The offset for the rest of the DA registers is calculated as
|
||||||
|
* DA_0 + dev_chan_num * 0x20
|
||||||
|
*/
|
||||||
|
#define XDmaPs_DA_n_OFFSET(ch) (XDMAPS_DA_0_OFFSET + (ch) * 0x20)
|
||||||
|
|
||||||
|
#define XDMAPS_CC_0_OFFSET 0x408 /* Channel Control Register for
|
||||||
|
* DMA Channel 0
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* The offset for the rest of the CC registers is calculated as
|
||||||
|
* CC_0 + dev_chan_num * 0x20
|
||||||
|
*/
|
||||||
|
#define XDmaPs_CC_n_OFFSET(ch) (XDMAPS_CC_0_OFFSET + (ch) * 0x20)
|
||||||
|
|
||||||
|
#define XDMAPS_LC0_0_OFFSET 0x40C /* Loop Counter 0 for DMA Channel 0 */
|
||||||
|
/*
|
||||||
|
* The offset for the rest of the LC0 registers is calculated as
|
||||||
|
* LC_0 + dev_chan_num * 0x20
|
||||||
|
*/
|
||||||
|
#define XDmaPs_LC0_n_OFFSET(ch) (XDMAPS_LC0_0_OFFSET + (ch) * 0x20)
|
||||||
|
#define XDMAPS_LC1_0_OFFSET 0x410 /* Loop Counter 1 for DMA Channel 0 */
|
||||||
|
/*
|
||||||
|
* The offset for the rest of the LC1 registers is calculated as
|
||||||
|
* LC_0 + dev_chan_num * 0x20
|
||||||
|
*/
|
||||||
|
#define XDmaPs_LC1_n_OFFSET(ch) (XDMAPS_LC1_0_OFFSET + (ch) * 0x20)
|
||||||
|
|
||||||
|
#define XDMAPS_DBGSTATUS_OFFSET 0xD00 /* Debug Status Register */
|
||||||
|
#define XDMAPS_DBGCMD_OFFSET 0xD04 /* Debug Command Register */
|
||||||
|
#define XDMAPS_DBGINST0_OFFSET 0xD08 /* Debug Instruction 0 Register */
|
||||||
|
#define XDMAPS_DBGINST1_OFFSET 0xD0C /* Debug Instruction 1 Register */
|
||||||
|
|
||||||
|
#define XDMAPS_CR0_OFFSET 0xE00 /* Configuration Register 0 */
|
||||||
|
#define XDMAPS_CR1_OFFSET 0xE04 /* Configuration Register 1 */
|
||||||
|
#define XDMAPS_CR2_OFFSET 0xE08 /* Configuration Register 2 */
|
||||||
|
#define XDMAPS_CR3_OFFSET 0xE0C /* Configuration Register 3 */
|
||||||
|
#define XDMAPS_CR4_OFFSET 0xE10 /* Configuration Register 4 */
|
||||||
|
#define XDMAPS_CRDN_OFFSET 0xE14 /* Configuration Register Dn */
|
||||||
|
|
||||||
|
#define XDMAPS_PERIPH_ID_0_OFFSET 0xFE0 /* Peripheral Identification
|
||||||
|
* Register 0
|
||||||
|
*/
|
||||||
|
#define XDMAPS_PERIPH_ID_1_OFFSET 0xFE4 /* Peripheral Identification
|
||||||
|
* Register 1
|
||||||
|
*/
|
||||||
|
#define XDMAPS_PERIPH_ID_2_OFFSET 0xFE8 /* Peripheral Identification
|
||||||
|
* Register 2
|
||||||
|
*/
|
||||||
|
#define XDMAPS_PERIPH_ID_3_OFFSET 0xFEC /* Peripheral Identification
|
||||||
|
* Register 3
|
||||||
|
*/
|
||||||
|
#define XDMAPS_PCELL_ID_0_OFFSET 0xFF0 /* PrimeCell Identification
|
||||||
|
* Register 0
|
||||||
|
*/
|
||||||
|
#define XDMAPS_PCELL_ID_1_OFFSET 0xFF4 /* PrimeCell Identification
|
||||||
|
* Register 1
|
||||||
|
*/
|
||||||
|
#define XDMAPS_PCELL_ID_2_OFFSET 0xFF8 /* PrimeCell Identification
|
||||||
|
* Register 2
|
||||||
|
*/
|
||||||
|
#define XDMAPS_PCELL_ID_3_OFFSET 0xFFC /* PrimeCell Identification
|
||||||
|
* Register 3
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some useful register masks
|
||||||
|
*/
|
||||||
|
#define XDMAPS_DS_DMA_STATUS 0x0F /* DMA status mask */
|
||||||
|
#define XDMAPS_DS_DMA_STATUS_STOPPED 0x00 /* debug status busy mask */
|
||||||
|
|
||||||
|
#define XDMAPS_DBGSTATUS_BUSY 0x01 /* debug status busy mask */
|
||||||
|
|
||||||
|
#define XDMAPS_CS_ACTIVE_MASK 0x07 /* channel status active mask,
|
||||||
|
* llast 3 bits of CS register
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XDMAPS_CR1_I_CACHE_LEN_MASK 0x07 /* i_cache_len mask */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XDMAPS_DBGINST0 - constructs the word for the Debug Instruction-0 Register.
|
||||||
|
* @b1: Instruction byte 1
|
||||||
|
* @b0: Instruction byte 0
|
||||||
|
* @ch: Channel number
|
||||||
|
* @dbg_th: Debug thread encoding: 0 = DMA manager thread, 1 = DMA channel
|
||||||
|
*/
|
||||||
|
#define XDmaPs_DBGINST0(b1, b0, ch, dbg_th) \
|
||||||
|
(((b1) << 24) | ((b0) << 16) | (((ch) & 0x7) << 8) | ((dbg_th & 0x1)))
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
/** @name Control Register
|
||||||
|
*
|
||||||
|
* The Control register (CR) controls the major functions of the device.
|
||||||
|
*
|
||||||
|
* Control Register Bit Definition
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @}*/
|
||||||
|
|
||||||
|
|
||||||
|
#define XDMAPS_CHANNELS_PER_DEV 8
|
||||||
|
|
||||||
|
|
||||||
|
/** @name Mode Register
|
||||||
|
*
|
||||||
|
* The mode register (MR) defines the mode of transfer as well as the data
|
||||||
|
* format. If this register is modified during transmission or reception,
|
||||||
|
* data validity cannot be guaranteed.
|
||||||
|
*
|
||||||
|
* Mode Register Bit Definition
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
|
||||||
|
/** @name Interrupt Registers
|
||||||
|
*
|
||||||
|
* Interrupt control logic uses the interrupt enable register (IER) and the
|
||||||
|
* interrupt disable register (IDR) to set the value of the bits in the
|
||||||
|
* interrupt mask register (IMR). The IMR determines whether to pass an
|
||||||
|
* interrupt to the interrupt status register (ISR).
|
||||||
|
* Writing a 1 to IER Enbables an interrupt, writing a 1 to IDR disables an
|
||||||
|
* interrupt. IMR and ISR are read only, and IER and IDR are write only.
|
||||||
|
* Reading either IER or IDR returns 0x00.
|
||||||
|
*
|
||||||
|
* All four registers have the same bit definitions.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
#define XDMAPS_INTCLR_ALL_MASK 0xFF
|
||||||
|
|
||||||
|
#define XDmaPs_ReadReg(BaseAddress, RegOffset) \
|
||||||
|
Xil_In32((BaseAddress) + (RegOffset))
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
/**
|
||||||
|
* Write a DMAC register.
|
||||||
|
*
|
||||||
|
* @param BaseAddress contains the base address of the device.
|
||||||
|
* @param RegOffset contains the offset from the base address of the device.
|
||||||
|
* @param RegisterValue is the value to be written to the register.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
* C-Style signature:
|
||||||
|
* void XDmaPs_WriteReg(u32 BaseAddress, int RegOffset,
|
||||||
|
* u32 RegisterValue)
|
||||||
|
******************************************************************************/
|
||||||
|
#define XDmaPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
|
||||||
|
Xil_Out32((BaseAddress) + (RegOffset), (RegisterValue))
|
||||||
|
/************************** Variable Definitions *****************************/
|
||||||
|
|
||||||
|
/************************** Function Prototypes *****************************/
|
||||||
|
/*
|
||||||
|
* Perform reset operation to the dmaps interface
|
||||||
|
*/
|
||||||
|
void XDmaPs_ResetHw(u32 BaseAddr);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
/** @} */
|
||||||
+169
@@ -0,0 +1,169 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2002 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xenv.h
|
||||||
|
*
|
||||||
|
* Defines common services that are typically found in a host operating.
|
||||||
|
* environment. This include file simply includes an OS specific file based
|
||||||
|
* on the compile-time constant BUILD_ENV_*, where * is the name of the target
|
||||||
|
* environment.
|
||||||
|
*
|
||||||
|
* All services are defined as macros.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -----------------------------------------------
|
||||||
|
* 1.00b ch 10/24/02 Added XENV_LINUX
|
||||||
|
* 1.00a rmm 04/17/02 First release
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XENV_H /* prevent circular inclusions */
|
||||||
|
#define XENV_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Select which target environment we are operating under
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* VxWorks target environment */
|
||||||
|
#if defined XENV_VXWORKS
|
||||||
|
#include "xenv_vxworks.h"
|
||||||
|
|
||||||
|
/* Linux target environment */
|
||||||
|
#elif defined XENV_LINUX
|
||||||
|
#include "xenv_linux.h"
|
||||||
|
|
||||||
|
/* Unit test environment */
|
||||||
|
#elif defined XENV_UNITTEST
|
||||||
|
#include "ut_xenv.h"
|
||||||
|
|
||||||
|
/* Integration test environment */
|
||||||
|
#elif defined XENV_INTTEST
|
||||||
|
#include "int_xenv.h"
|
||||||
|
|
||||||
|
/* Standalone environment selected */
|
||||||
|
#else
|
||||||
|
#include "xenv_standalone.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following comments specify the types and macro wrappers that are
|
||||||
|
* expected to be defined by the target specific header files
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* XENV_TIME_STAMP
|
||||||
|
*
|
||||||
|
* A structure that contains a time stamp used by other time stamp macros
|
||||||
|
* defined below. This structure is processor dependent.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* XENV_MEM_COPY(void *DestPtr, void *SrcPtr, unsigned Bytes)
|
||||||
|
*
|
||||||
|
* Copies a non-overlapping block of memory.
|
||||||
|
*
|
||||||
|
* @param DestPtr is the destination address to copy data to.
|
||||||
|
* @param SrcPtr is the source address to copy data from.
|
||||||
|
* @param Bytes is the number of bytes to copy.
|
||||||
|
*
|
||||||
|
* @return None
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* XENV_MEM_FILL(void *DestPtr, char Data, unsigned Bytes)
|
||||||
|
*
|
||||||
|
* Fills an area of memory with constant data.
|
||||||
|
*
|
||||||
|
* @param DestPtr is the destination address to set.
|
||||||
|
* @param Data contains the value to set.
|
||||||
|
* @param Bytes is the number of bytes to set.
|
||||||
|
*
|
||||||
|
* @return None
|
||||||
|
*/
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* XENV_TIME_STAMP_GET(XTIME_STAMP *StampPtr)
|
||||||
|
*
|
||||||
|
* Samples the processor's or external timer's time base counter.
|
||||||
|
*
|
||||||
|
* @param StampPtr is the storage for the retrieved time stamp.
|
||||||
|
*
|
||||||
|
* @return None
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* XENV_TIME_STAMP_DELTA_US(XTIME_STAMP *Stamp1Ptr, XTIME_STAMP* Stamp2Ptr)
|
||||||
|
*
|
||||||
|
* Computes the delta between the two time stamps.
|
||||||
|
*
|
||||||
|
* @param Stamp1Ptr - First sampled time stamp.
|
||||||
|
* @param Stamp1Ptr - Sedond sampled time stamp.
|
||||||
|
*
|
||||||
|
* @return An unsigned int value with units of microseconds.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* XENV_TIME_STAMP_DELTA_MS(XTIME_STAMP *Stamp1Ptr, XTIME_STAMP* Stamp2Ptr)
|
||||||
|
*
|
||||||
|
* Computes the delta between the two time stamps.
|
||||||
|
*
|
||||||
|
* @param Stamp1Ptr - First sampled time stamp.
|
||||||
|
* @param Stamp1Ptr - Sedond sampled time stamp.
|
||||||
|
*
|
||||||
|
* @return An unsigned int value with units of milliseconds.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*****************************************************************************//**
|
||||||
|
*
|
||||||
|
* XENV_USLEEP(unsigned delay)
|
||||||
|
*
|
||||||
|
* Delay the specified number of microseconds.
|
||||||
|
*
|
||||||
|
* @param delay is the number of microseconds to delay.
|
||||||
|
*
|
||||||
|
* @return None
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
+350
@@ -0,0 +1,350 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2002 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xenv_standalone.h
|
||||||
|
*
|
||||||
|
* Defines common services specified by xenv.h.
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
* This file is not intended to be included directly by driver code.
|
||||||
|
* Instead, the generic xenv.h file is intended to be included by driver
|
||||||
|
* code.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -----------------------------------------------
|
||||||
|
* 1.00a wgr 02/28/07 Added cache handling macros.
|
||||||
|
* 1.00a wgr 02/27/07 Simplified code. Deprecated old-style macro names.
|
||||||
|
* 1.00a rmm 01/24/06 Implemented XENV_USLEEP. Assume implementation is being
|
||||||
|
* used under Xilinx standalone BSP.
|
||||||
|
* 1.00a xd 11/03/04 Improved support for doxygen.
|
||||||
|
* 1.00a rmm 03/21/02 First release
|
||||||
|
* 1.00a wgr 03/22/07 Converted to new coding style.
|
||||||
|
* 1.00a rpm 06/29/07 Added udelay macro for standalone
|
||||||
|
* 1.00a xd 07/19/07 Included xparameters.h as XPAR_ constants are referred
|
||||||
|
* to in MICROBLAZE section
|
||||||
|
* 1.00a ecm 09/19/08 updated for v7.20 of Microblaze, new functionality
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XENV_STANDALONE_H
|
||||||
|
#define XENV_STANDALONE_H
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* Get the processor dependent includes
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#if defined __MICROBLAZE__
|
||||||
|
# include "mb_interface.h"
|
||||||
|
# include "xparameters.h" /* XPAR constants used below in MB section */
|
||||||
|
|
||||||
|
#elif defined __PPC__
|
||||||
|
# include "sleep.h"
|
||||||
|
# include "xcache_l.h" /* also include xcache_l.h for caching macros */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* MEMCPY / MEMSET related macros.
|
||||||
|
*
|
||||||
|
* The following are straight forward implementations of memset and memcpy.
|
||||||
|
*
|
||||||
|
* NOTE: memcpy may not work if source and target memory area are overlapping.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Copies a non-overlapping block of memory.
|
||||||
|
*
|
||||||
|
* @param DestPtr
|
||||||
|
* Destination address to copy data to.
|
||||||
|
*
|
||||||
|
* @param SrcPtr
|
||||||
|
* Source address to copy data from.
|
||||||
|
*
|
||||||
|
* @param Bytes
|
||||||
|
* Number of bytes to copy.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
* The use of XENV_MEM_COPY is deprecated. Use memcpy() instead.
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
* This implementation MAY BREAK work if source and target memory
|
||||||
|
* area are overlapping.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#define XENV_MEM_COPY(DestPtr, SrcPtr, Bytes) \
|
||||||
|
memcpy((void *) DestPtr, (const void *) SrcPtr, (size_t) Bytes)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Fills an area of memory with constant data.
|
||||||
|
*
|
||||||
|
* @param DestPtr
|
||||||
|
* Destination address to copy data to.
|
||||||
|
*
|
||||||
|
* @param Data
|
||||||
|
* Value to set.
|
||||||
|
*
|
||||||
|
* @param Bytes
|
||||||
|
* Number of bytes to copy.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
* The use of XENV_MEM_FILL is deprecated. Use memset() instead.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#define XENV_MEM_FILL(DestPtr, Data, Bytes) \
|
||||||
|
memset((void *) DestPtr, (s32) Data, (size_t) Bytes)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* TIME related macros
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A structure that contains a time stamp used by other time stamp macros
|
||||||
|
* defined below. This structure is processor dependent.
|
||||||
|
*/
|
||||||
|
typedef s32 XENV_TIME_STAMP;
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Time is derived from the 64 bit PPC timebase register
|
||||||
|
*
|
||||||
|
* @param StampPtr is the storage for the retrieved time stamp.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
* Signature: void XENV_TIME_STAMP_GET(XTIME_STAMP *StampPtr)
|
||||||
|
* <br><br>
|
||||||
|
* This macro must be implemented by the user.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XENV_TIME_STAMP_GET(StampPtr)
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro is not yet implemented and always returns 0.
|
||||||
|
*
|
||||||
|
* @param Stamp1Ptr is the first sampled time stamp.
|
||||||
|
* @param Stamp2Ptr is the second sampled time stamp.
|
||||||
|
*
|
||||||
|
* @return 0
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
* This macro must be implemented by the user.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XENV_TIME_STAMP_DELTA_US(Stamp1Ptr, Stamp2Ptr) (0)
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro is not yet implemented and always returns 0.
|
||||||
|
*
|
||||||
|
* @param Stamp1Ptr is the first sampled time stamp.
|
||||||
|
* @param Stamp2Ptr is the second sampled time stamp.
|
||||||
|
*
|
||||||
|
* @return 0
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
* This macro must be implemented by the user.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XENV_TIME_STAMP_DELTA_MS(Stamp1Ptr, Stamp2Ptr) (0)
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* XENV_USLEEP(unsigned delay)
|
||||||
|
*
|
||||||
|
* Delay the specified number of microseconds. Not implemented without OS
|
||||||
|
* support.
|
||||||
|
*
|
||||||
|
* @param delay
|
||||||
|
* Number of microseconds to delay.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef __PPC__
|
||||||
|
#define XENV_USLEEP(delay) usleep(delay)
|
||||||
|
#define udelay(delay) usleep(delay)
|
||||||
|
#else
|
||||||
|
#define XENV_USLEEP(delay)
|
||||||
|
#define udelay(delay)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* CACHE handling macros / mappings
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* Processor independent macros
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#define XCACHE_ENABLE_CACHE() \
|
||||||
|
{ XCACHE_ENABLE_DCACHE(); XCACHE_ENABLE_ICACHE(); }
|
||||||
|
|
||||||
|
#define XCACHE_DISABLE_CACHE() \
|
||||||
|
{ XCACHE_DISABLE_DCACHE(); XCACHE_DISABLE_ICACHE(); }
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* MicroBlaze case
|
||||||
|
*
|
||||||
|
* NOTE: Currently the following macros will only work on systems that contain
|
||||||
|
* only ONE MicroBlaze processor. Also, the macros will only be enabled if the
|
||||||
|
* system is built using a xparameters.h file.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#if defined __MICROBLAZE__
|
||||||
|
|
||||||
|
/* Check if MicroBlaze data cache was built into the core.
|
||||||
|
*/
|
||||||
|
#if (XPAR_MICROBLAZE_USE_DCACHE == 1)
|
||||||
|
# define XCACHE_ENABLE_DCACHE() microblaze_enable_dcache()
|
||||||
|
# define XCACHE_DISABLE_DCACHE() microblaze_disable_dcache()
|
||||||
|
# define XCACHE_INVALIDATE_DCACHE() microblaze_invalidate_dcache()
|
||||||
|
|
||||||
|
# define XCACHE_INVALIDATE_DCACHE_RANGE(Addr, Len) \
|
||||||
|
microblaze_invalidate_dcache_range((s32)(Addr), (s32)(Len))
|
||||||
|
|
||||||
|
#if (XPAR_MICROBLAZE_DCACHE_USE_WRITEBACK == 1)
|
||||||
|
# define XCACHE_FLUSH_DCACHE() microblaze_flush_dcache()
|
||||||
|
# define XCACHE_FLUSH_DCACHE_RANGE(Addr, Len) \
|
||||||
|
microblaze_flush_dcache_range((s32)(Addr), (s32)(Len))
|
||||||
|
#else
|
||||||
|
# define XCACHE_FLUSH_DCACHE() microblaze_invalidate_dcache()
|
||||||
|
# define XCACHE_FLUSH_DCACHE_RANGE(Addr, Len) \
|
||||||
|
microblaze_invalidate_dcache_range((s32)(Addr), (s32)(Len))
|
||||||
|
#endif /*XPAR_MICROBLAZE_DCACHE_USE_WRITEBACK*/
|
||||||
|
|
||||||
|
#else
|
||||||
|
# define XCACHE_ENABLE_DCACHE()
|
||||||
|
# define XCACHE_DISABLE_DCACHE()
|
||||||
|
# define XCACHE_INVALIDATE_DCACHE_RANGE(Addr, Len)
|
||||||
|
# define XCACHE_FLUSH_DCACHE_RANGE(Addr, Len)
|
||||||
|
#endif /*XPAR_MICROBLAZE_USE_DCACHE*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Check if MicroBlaze instruction cache was built into the core.
|
||||||
|
*/
|
||||||
|
#if (XPAR_MICROBLAZE_USE_ICACHE == 1)
|
||||||
|
# define XCACHE_ENABLE_ICACHE() microblaze_enable_icache()
|
||||||
|
# define XCACHE_DISABLE_ICACHE() microblaze_disable_icache()
|
||||||
|
|
||||||
|
# define XCACHE_INVALIDATE_ICACHE() microblaze_invalidate_icache()
|
||||||
|
|
||||||
|
# define XCACHE_INVALIDATE_ICACHE_RANGE(Addr, Len) \
|
||||||
|
microblaze_invalidate_icache_range((s32)(Addr), (s32)(Len))
|
||||||
|
|
||||||
|
#else
|
||||||
|
# define XCACHE_ENABLE_ICACHE()
|
||||||
|
# define XCACHE_DISABLE_ICACHE()
|
||||||
|
#endif /*XPAR_MICROBLAZE_USE_ICACHE*/
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* PowerPC case
|
||||||
|
*
|
||||||
|
* Note that the XCACHE_ENABLE_xxx functions are hardcoded to enable a
|
||||||
|
* specific memory region (0x80000001). Each bit (0-30) in the regions
|
||||||
|
* bitmask stands for 128MB of memory. Bit 31 stands for the upper 2GB
|
||||||
|
* range.
|
||||||
|
*
|
||||||
|
* regions --> cached address range
|
||||||
|
* ------------|--------------------------------------------------
|
||||||
|
* 0x80000000 | [0, 0x7FFFFFF]
|
||||||
|
* 0x00000001 | [0xF8000000, 0xFFFFFFFF]
|
||||||
|
* 0x80000001 | [0, 0x7FFFFFF],[0xF8000000, 0xFFFFFFFF]
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#elif defined __PPC__
|
||||||
|
|
||||||
|
#define XCACHE_ENABLE_DCACHE() XCache_EnableDCache(0x80000001)
|
||||||
|
#define XCACHE_DISABLE_DCACHE() XCache_DisableDCache()
|
||||||
|
#define XCACHE_ENABLE_ICACHE() XCache_EnableICache(0x80000001)
|
||||||
|
#define XCACHE_DISABLE_ICACHE() XCache_DisableICache()
|
||||||
|
|
||||||
|
#define XCACHE_INVALIDATE_DCACHE_RANGE(Addr, Len) \
|
||||||
|
XCache_InvalidateDCacheRange((u32)(Addr), (u32)(Len))
|
||||||
|
|
||||||
|
#define XCACHE_FLUSH_DCACHE_RANGE(Addr, Len) \
|
||||||
|
XCache_FlushDCacheRange((u32)(Addr), (u32)(Len))
|
||||||
|
|
||||||
|
#define XCACHE_INVALIDATE_ICACHE() XCache_InvalidateICache()
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* Unknown processor / architecture
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#else
|
||||||
|
/* #error "Unknown processor / architecture. Must be MicroBlaze or PowerPC." */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* #ifndef XENV_STANDALONE_H */
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
+314
@@ -0,0 +1,314 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2010 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xgpiops.h
|
||||||
|
* @addtogroup gpiops Overview
|
||||||
|
* @{
|
||||||
|
* @details
|
||||||
|
*
|
||||||
|
* The Xilinx PS GPIO driver. This driver supports the Xilinx PS GPIO
|
||||||
|
* Controller.
|
||||||
|
*
|
||||||
|
* The GPIO Controller supports the following features:
|
||||||
|
* - 6 banks
|
||||||
|
* - Masked writes (There are no masked reads)
|
||||||
|
* - Bypass mode
|
||||||
|
* - Configurable Interrupts (Level/Edge)
|
||||||
|
*
|
||||||
|
* This driver is intended to be RTOS and processor independent. Any needs for
|
||||||
|
* dynamic memory management, threads or thread mutual exclusion, virtual
|
||||||
|
* memory, or cache control must be satisfied by the layer above this driver.
|
||||||
|
*
|
||||||
|
* Here is GPIO Bank and Pin mapping information for different platforms.
|
||||||
|
* Zynq:
|
||||||
|
* PS GPIO contain 4 banks and 118 pins
|
||||||
|
* Bank 0 MIO pins 0 - 31
|
||||||
|
* Bank 1 MIO pins 32 - 53
|
||||||
|
* Bank 2 MIO pins 54 - 85
|
||||||
|
* Bank 3 EMIO signals 86 - 117
|
||||||
|
*
|
||||||
|
* Zynq Ultrascale+ MP:
|
||||||
|
* PS GPIO contain 6 banks and 174 pins
|
||||||
|
* Bank 0 MIO pins 0 - 25
|
||||||
|
* Bank 1 MIO pins 26 - 51
|
||||||
|
* Bank 2 MIO pins 52 - 77
|
||||||
|
* Bank 3 EMIO signals 78 - 109
|
||||||
|
* Bank 4 EMIO signals 110 - 141
|
||||||
|
* Bank 5 EMIO signals 142 - 173
|
||||||
|
|
||||||
|
* Versal: Two GPIOPS instances PMC GPIO and PS GPIO
|
||||||
|
* PMC GPIO contain 4 banks and 116 pins
|
||||||
|
* Bank 0 MIO pins 0 - 25
|
||||||
|
* Bank 1 MIO pins 26 - 51
|
||||||
|
* Bank 3 EMIO signals 52 - 83
|
||||||
|
* Bank 4 EMIO signals 84 - 115
|
||||||
|
* PS GPIO contains 2 banks and 58 pins
|
||||||
|
* Bank 0 MIO pins 0 - 25
|
||||||
|
* Bank 3 EMIO signals 26-57
|
||||||
|
*
|
||||||
|
* This driver supports all the features listed above, if applicable.
|
||||||
|
*
|
||||||
|
* <b>Driver Description</b>
|
||||||
|
*
|
||||||
|
* The device driver enables higher layer software (e.g., an application) to
|
||||||
|
* communicate to the GPIO.
|
||||||
|
*
|
||||||
|
* <b>Interrupts</b>
|
||||||
|
*
|
||||||
|
* The driver provides interrupt management functions and an interrupt handler.
|
||||||
|
* Users of this driver need to provide callback functions. An interrupt handler
|
||||||
|
* example is available with the driver.
|
||||||
|
*
|
||||||
|
* <b>Threads</b>
|
||||||
|
*
|
||||||
|
* This driver is not thread safe. Any needs for threads or thread mutual
|
||||||
|
* exclusion must be satisfied by the layer above this driver.
|
||||||
|
*
|
||||||
|
* <b>Asserts</b>
|
||||||
|
*
|
||||||
|
* Asserts are used within all Xilinx drivers to enforce constraints on argument
|
||||||
|
* values. Asserts can be turned off on a system-wide basis by defining, at
|
||||||
|
* compile time, the NDEBUG identifier. By default, asserts are turned on and it
|
||||||
|
* is recommended that users leave asserts on during development.
|
||||||
|
*
|
||||||
|
* <b>Building the driver</b>
|
||||||
|
*
|
||||||
|
* The XGpioPs driver is composed of several source files. This allows the user
|
||||||
|
* to build and link only those parts of the driver that are necessary.
|
||||||
|
* <br><br>
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -----------------------------------------------
|
||||||
|
* 1.00a sv 01/15/10 First Release
|
||||||
|
* 1.01a sv 04/15/12 Removed the APIs XGpioPs_SetMode, XGpioPs_SetModePin
|
||||||
|
* XGpioPs_GetMode, XGpioPs_GetModePin as they are not
|
||||||
|
* relevant to Zynq device.The interrupts are disabled
|
||||||
|
* for output pins on all banks during initialization.
|
||||||
|
* 1.02a hk 08/22/13 Added low level reset API
|
||||||
|
* 2.1 hk 04/29/14 Use Input data register DATA_RO for read. CR# 771667.
|
||||||
|
* 2.2 sk 10/13/14 Used Pin number in Bank instead of pin number
|
||||||
|
* passed to APIs. CR# 822636
|
||||||
|
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
|
||||||
|
* 3.1 kvn 04/13/15 Add support for Zynq Ultrascale+ MP. CR# 856980.
|
||||||
|
* ms 03/17/17 Added readme.txt file in examples folder for doxygen
|
||||||
|
* generation.
|
||||||
|
* ms 04/05/17 Added tabspace for return statements in functions of
|
||||||
|
* gpiops examples for proper documentation while
|
||||||
|
* generating doxygen.
|
||||||
|
* 3.3 ms 04/17/17 Added notes about gpio input and output pin description
|
||||||
|
* for zcu102 and zc702 boards in polled and interrupt
|
||||||
|
* example, configured Interrupt pin to input pin for
|
||||||
|
* proper functioning of interrupt example.
|
||||||
|
* 3.4 aru 08/17/18 Resolved MISRA-C mandatory violations. CR# 1007751
|
||||||
|
* 3.5 sne 03/01/19 Fixes violations according to MISRAC-2012
|
||||||
|
* in safety mode and modified the code such as
|
||||||
|
* Use of mixed mode arithmetic,Declared the pointer param
|
||||||
|
* as Pointer to const,Casting operation to a pointer,
|
||||||
|
* Literal value requires a U suffix.
|
||||||
|
* 3.5 sne 03/14/19 Added Versal support.
|
||||||
|
* 3.6 mus 04/05/19 Replaced XPLAT_versal macro with XPLAT_VERSAL, to be in
|
||||||
|
* sync with standalone BSP
|
||||||
|
* 3.6 sne 06/12/19 Fixed IAR compiler warning.
|
||||||
|
* 3.6 sne 08/14/19 Added interrupt handler support on versal.
|
||||||
|
* 3.7 sne 12/04/19 Reverted versal examples support.
|
||||||
|
* 3.8 sne 08/28/20 Modify Makefile to support parallel make execution.
|
||||||
|
* 3.8 sne 09/17/20 Added description for Versal PS and PMC GPIO pins.
|
||||||
|
* 3.9 sne 03/15/21 Fixed MISRA-C violations.
|
||||||
|
* 3.11 sg 02/23/23 Update bank and pin mapping information.
|
||||||
|
* 3.12 gm 07/11/23 Added SDT support.
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef XGPIOPS_H /* prevent circular inclusions */
|
||||||
|
#define XGPIOPS_H /**< by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xstatus.h"
|
||||||
|
#include "xgpiops_hw.h"
|
||||||
|
#include "xplatform_info.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/** @name Interrupt types
|
||||||
|
* @{
|
||||||
|
* The following constants define the interrupt types that can be set for each
|
||||||
|
* GPIO pin.
|
||||||
|
*/
|
||||||
|
#define XGPIOPS_IRQ_TYPE_EDGE_RISING 0x00U /**< Interrupt on Rising edge */
|
||||||
|
#define XGPIOPS_IRQ_TYPE_EDGE_FALLING 0x01U /**< Interrupt Falling edge */
|
||||||
|
#define XGPIOPS_IRQ_TYPE_EDGE_BOTH 0x02U /**< Interrupt on both edges */
|
||||||
|
#define XGPIOPS_IRQ_TYPE_LEVEL_HIGH 0x03U /**< Interrupt on high level */
|
||||||
|
#define XGPIOPS_IRQ_TYPE_LEVEL_LOW 0x04U /**< Interrupt on low level */
|
||||||
|
/** @}*/
|
||||||
|
|
||||||
|
#define XGPIOPS_BANK_MAX_PINS (u32)32 /**< Max pins in a GPIO bank */
|
||||||
|
#define XGPIOPS_BANK0 0x00U /**< GPIO Bank 0 */
|
||||||
|
#define XGPIOPS_BANK1 0x01U /**< GPIO Bank 1 */
|
||||||
|
#define XGPIOPS_BANK2 0x02U /**< GPIO Bank 2 */
|
||||||
|
#define XGPIOPS_BANK3 0x03U /**< GPIO Bank 3 */
|
||||||
|
#define XGPIOPS_BANK4 0x04U /**< GPIO Bank 4 */
|
||||||
|
#define XGPIOPS_BANK5 0x05U /**< GPIO Bank 5 */
|
||||||
|
|
||||||
|
#define XGPIOPS_MAX_BANKS_ZYNQMP 0x06U /**< Max banks in a
|
||||||
|
* Zynq Ultrascale+ MP GPIO device
|
||||||
|
*/
|
||||||
|
#define XGPIOPS_MAX_BANKS 0x04U /**< Max banks in a Zynq GPIO device */
|
||||||
|
|
||||||
|
#define XGPIOPS_DEVICE_MAX_PIN_NUM_ZYNQMP (u32)174 /**< Max pins in the
|
||||||
|
* Zynq Ultrascale+ MP GPIO device
|
||||||
|
* 0 - 25, Bank 0
|
||||||
|
* 26 - 51, Bank 1
|
||||||
|
* 52 - 77, Bank 2
|
||||||
|
* 78 - 109, Bank 3
|
||||||
|
* 110 - 141, Bank 4
|
||||||
|
* 142 - 173, Bank 5
|
||||||
|
*/
|
||||||
|
#define XGPIOPS_DEVICE_MAX_PIN_NUM (u32)118 /**< Max pins in the Zynq GPIO device
|
||||||
|
* 0 - 31, Bank 0
|
||||||
|
* 32 - 53, Bank 1
|
||||||
|
* 54 - 85, Bank 2
|
||||||
|
* 86 - 117, Bank 3
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* This handler data type allows the user to define a callback function to
|
||||||
|
* handle the interrupts for the GPIO device. The application using this
|
||||||
|
* driver is expected to define a handler of this type, to support interrupt
|
||||||
|
* driven mode. The handler executes in an interrupt context such that minimal
|
||||||
|
* processing should be performed.
|
||||||
|
*
|
||||||
|
* @param CallBackRef is a callback reference passed in by the upper layer
|
||||||
|
* when setting the callback functions for a GPIO bank. It is
|
||||||
|
* passed back to the upper layer when the callback is invoked. Its
|
||||||
|
* type is not important to the driver component, so it is a void
|
||||||
|
* pointer.
|
||||||
|
* @param Bank is the bank for which the interrupt status has changed.
|
||||||
|
* @param Status is the Interrupt status of the GPIO bank.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
typedef void (*XGpioPs_Handler) (void *CallBackRef, u32 Bank, u32 Status);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This typedef contains configuration information for a device.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
#ifndef SDT
|
||||||
|
u16 DeviceId; /**< Unique ID of device */
|
||||||
|
#else
|
||||||
|
char *Name;
|
||||||
|
#endif
|
||||||
|
UINTPTR BaseAddr; /**< Register base address */
|
||||||
|
#ifdef SDT
|
||||||
|
u16 IntrId; /** Bits[11:0] Interrupt-id Bits[15:12]
|
||||||
|
* trigger type and level flags */
|
||||||
|
UINTPTR IntrParent; /** Bit[0] Interrupt parent type Bit[64/32:1]
|
||||||
|
* Parent base address */
|
||||||
|
#endif
|
||||||
|
} XGpioPs_Config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The XGpioPs driver instance data. The user is required to allocate a
|
||||||
|
* variable of this type for the GPIO device in the system. A pointer
|
||||||
|
* to a variable of this type is then passed to the driver API functions.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
XGpioPs_Config GpioConfig; /**< Device configuration */
|
||||||
|
u32 IsReady; /**< Device is initialized and ready */
|
||||||
|
XGpioPs_Handler Handler; /**< Status handlers for all banks */
|
||||||
|
void *CallBackRef; /**< Callback ref for bank handlers */
|
||||||
|
u32 Platform; /**< Platform data */
|
||||||
|
u32 MaxPinNum; /**< Max pins in the GPIO device */
|
||||||
|
u8 MaxBanks; /**< Max banks in a GPIO device */
|
||||||
|
u32 PmcGpio; /**< Flag for accessing PS GPIO for versal*/
|
||||||
|
} XGpioPs;
|
||||||
|
|
||||||
|
/************************** Variable Definitions *****************************/
|
||||||
|
extern XGpioPs_Config XGpioPs_ConfigTable[];
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
/* Functions in xgpiops.c */
|
||||||
|
s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, const XGpioPs_Config *ConfigPtr,
|
||||||
|
u32 EffectiveAddr);
|
||||||
|
|
||||||
|
/* Bank APIs in xgpiops.c */
|
||||||
|
u32 XGpioPs_Read(const XGpioPs *InstancePtr, u8 Bank);
|
||||||
|
void XGpioPs_Write(const XGpioPs *InstancePtr, u8 Bank, u32 Data);
|
||||||
|
void XGpioPs_SetDirection(const XGpioPs *InstancePtr, u8 Bank, u32 Direction);
|
||||||
|
u32 XGpioPs_GetDirection(const XGpioPs *InstancePtr, u8 Bank);
|
||||||
|
void XGpioPs_SetOutputEnable(const XGpioPs *InstancePtr, u8 Bank, u32 OpEnable);
|
||||||
|
u32 XGpioPs_GetOutputEnable(const XGpioPs *InstancePtr, u8 Bank);
|
||||||
|
#ifdef versal
|
||||||
|
void XGpioPs_GetBankPin(const XGpioPs *InstancePtr,u8 PinNumber,u8 *BankNumber, u8 *PinNumberInBank);
|
||||||
|
#else
|
||||||
|
void XGpioPs_GetBankPin(u8 PinNumber,u8 *BankNumber, u8 *PinNumberInBank);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Pin APIs in xgpiops.c */
|
||||||
|
u32 XGpioPs_ReadPin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
void XGpioPs_WritePin(const XGpioPs *InstancePtr, u32 Pin, u32 Data);
|
||||||
|
void XGpioPs_SetDirectionPin(const XGpioPs *InstancePtr, u32 Pin, u32 Direction);
|
||||||
|
u32 XGpioPs_GetDirectionPin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
void XGpioPs_SetOutputEnablePin(const XGpioPs *InstancePtr, u32 Pin, u32 OpEnable);
|
||||||
|
u32 XGpioPs_GetOutputEnablePin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
|
||||||
|
/* Diagnostic functions in xgpiops_selftest.c */
|
||||||
|
s32 XGpioPs_SelfTest(const XGpioPs *InstancePtr);
|
||||||
|
|
||||||
|
/* Functions in xgpiops_intr.c */
|
||||||
|
/* Bank APIs in xgpiops_intr.c */
|
||||||
|
void XGpioPs_IntrEnable(const XGpioPs *InstancePtr, u8 Bank, u32 Mask);
|
||||||
|
void XGpioPs_IntrDisable(const XGpioPs *InstancePtr, u8 Bank, u32 Mask);
|
||||||
|
u32 XGpioPs_IntrGetEnabled(const XGpioPs *InstancePtr, u8 Bank);
|
||||||
|
u32 XGpioPs_IntrGetStatus(const XGpioPs *InstancePtr, u8 Bank);
|
||||||
|
void XGpioPs_IntrClear(const XGpioPs *InstancePtr, u8 Bank, u32 Mask);
|
||||||
|
void XGpioPs_SetIntrType(const XGpioPs *InstancePtr, u8 Bank, u32 IntrType,
|
||||||
|
u32 IntrPolarity, u32 IntrOnAny);
|
||||||
|
void XGpioPs_GetIntrType(const XGpioPs *InstancePtr, u8 Bank, u32 *IntrType,
|
||||||
|
u32 *IntrPolarity, u32 *IntrOnAny);
|
||||||
|
void XGpioPs_SetCallbackHandler(XGpioPs *InstancePtr, void *CallBackRef,
|
||||||
|
XGpioPs_Handler FuncPointer);
|
||||||
|
void XGpioPs_IntrHandler(const XGpioPs *InstancePtr);
|
||||||
|
|
||||||
|
/* Pin APIs in xgpiops_intr.c */
|
||||||
|
void XGpioPs_SetIntrTypePin(const XGpioPs *InstancePtr, u32 Pin, u8 IrqType);
|
||||||
|
u8 XGpioPs_GetIntrTypePin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
|
||||||
|
void XGpioPs_IntrEnablePin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
void XGpioPs_IntrDisablePin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
u32 XGpioPs_IntrGetEnabledPin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
u32 XGpioPs_IntrGetStatusPin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
void XGpioPs_IntrClearPin(const XGpioPs *InstancePtr, u32 Pin);
|
||||||
|
|
||||||
|
/* Functions in xgpiops_sinit.c */
|
||||||
|
#ifndef SDT
|
||||||
|
XGpioPs_Config *XGpioPs_LookupConfig(u16 DeviceId);
|
||||||
|
#else
|
||||||
|
XGpioPs_Config *XGpioPs_LookupConfig(u32 BaseAddress);
|
||||||
|
#endif
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
/** @} */
|
||||||
+147
@@ -0,0 +1,147 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2010 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xgpiops_hw.h
|
||||||
|
* @addtogroup gpiops Overview
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* This header file contains the identifiers and basic driver functions (or
|
||||||
|
* macros) that can be used to access the device. Other driver functions
|
||||||
|
* are defined in xgpiops.h.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------
|
||||||
|
* 1.00a sv 01/15/10 First Release
|
||||||
|
* 1.02a hk 08/22/13 Added low level reset API function prototype and
|
||||||
|
* related constant definitions
|
||||||
|
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
|
||||||
|
* 3.1 kvn 04/13/15 Corrected reset values of banks.
|
||||||
|
* 3.5 sne 03/14/19 Added versal support.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef XGPIOPS_HW_H /* prevent circular inclusions */
|
||||||
|
#define XGPIOPS_HW_H /**< by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
#include "xil_io.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/** @name Register offsets for the GPIO. Each register is 32 bits.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XGPIOPS_DATA_LSW_OFFSET 0x00000000U /**< Mask and Data Register LSW, WO */
|
||||||
|
#define XGPIOPS_DATA_MSW_OFFSET 0x00000004U /**< Mask and Data Register MSW, WO */
|
||||||
|
#define XGPIOPS_DATA_OFFSET 0x00000040U /**< Data Register, RW */
|
||||||
|
#define XGPIOPS_DATA_RO_OFFSET 0x00000060U /**< Data Register - Input, RO */
|
||||||
|
#define XGPIOPS_DIRM_OFFSET 0x00000204U /**< Direction Mode Register, RW */
|
||||||
|
#define XGPIOPS_OUTEN_OFFSET 0x00000208U /**< Output Enable Register, RW */
|
||||||
|
#define XGPIOPS_INTMASK_OFFSET 0x0000020CU /**< Interrupt Mask Register, RO */
|
||||||
|
#define XGPIOPS_INTEN_OFFSET 0x00000210U /**< Interrupt Enable Register, WO */
|
||||||
|
#define XGPIOPS_INTDIS_OFFSET 0x00000214U /**< Interrupt Disable Register, WO*/
|
||||||
|
#define XGPIOPS_INTSTS_OFFSET 0x00000218U /**< Interrupt Status Register, RO */
|
||||||
|
#define XGPIOPS_INTTYPE_OFFSET 0x0000021CU /**< Interrupt Type Register, RW */
|
||||||
|
#define XGPIOPS_INTPOL_OFFSET 0x00000220U /**< Interrupt Polarity Register, RW */
|
||||||
|
#define XGPIOPS_INTANY_OFFSET 0x00000224U /**< Interrupt On Any Register, RW */
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/** @name Register offsets for each Bank.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XGPIOPS_DATA_MASK_OFFSET 0x00000008U /**< Data/Mask Registers offset */
|
||||||
|
#define XGPIOPS_DATA_BANK_OFFSET 0x00000004U /**< Data Registers offset */
|
||||||
|
#define XGPIOPS_REG_MASK_OFFSET 0x00000040U /**< Registers offset */
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/* For backwards compatibility */
|
||||||
|
#define XGPIOPS_BYPM_MASK_OFFSET (u32)0x40 /**< Mask for backward support */
|
||||||
|
|
||||||
|
/** @name Interrupt type reset values for each bank
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#ifdef XPAR_PSU_GPIO_0_BASEADDR
|
||||||
|
#define XGPIOPS_INTTYPE_BANK0_RESET 0x03FFFFFFU /**< Resets specific to Zynq Ultrascale+ MP */
|
||||||
|
#define XGPIOPS_INTTYPE_BANK1_RESET 0x03FFFFFFU /**< Resets specific to Zynq Ultrascale+ MP */
|
||||||
|
#define XGPIOPS_INTTYPE_BANK2_RESET 0x03FFFFFFU /**< Resets specific to Zynq Ultrascale+ MP */
|
||||||
|
#else
|
||||||
|
#define XGPIOPS_INTTYPE_BANK0_RESET 0xFFFFFFFFU /**< Resets specific to Zynq */
|
||||||
|
#define XGPIOPS_INTTYPE_BANK1_RESET 0x003FFFFFU /**< Resets specific to Zynq */
|
||||||
|
#define XGPIOPS_INTTYPE_BANK2_RESET 0xFFFFFFFFU /**< Resets specific to Zynq */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define XGPIOPS_INTTYPE_BANK3_RESET 0xFFFFFFFFU /**< Reset common to both platforms */
|
||||||
|
#define XGPIOPS_INTTYPE_BANK4_RESET 0xFFFFFFFFU /**< Resets specific to Zynq Ultrascale+ MP */
|
||||||
|
#define XGPIOPS_INTTYPE_BANK5_RESET 0xFFFFFFFFU /**< Resets specific to Zynq Ultrascale+ MP */
|
||||||
|
/** @} */
|
||||||
|
#define XGPIOPS_PS_GPIO_BASEADDR 0xFF0B0000U /**< Flag for Base Address for PS_GPIO in Versal */
|
||||||
|
#define XGPIOPS_ZERO 0U /**< Flag for 0 Value */
|
||||||
|
#define XGPIOPS_ONE 1U /**< Flag for 1 Value */
|
||||||
|
#define XGPIOPS_TWO 2U /**< Flag for 2 Value */
|
||||||
|
#define XGPIOPS_THREE 3U /**< Flag for 3 Value */
|
||||||
|
#define XGPIOPS_FOUR 4U /**< Flag for 4 Value */
|
||||||
|
#define XGPIOPS_SIX 6U /**< Flag for 6 Value */
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro reads the given register.
|
||||||
|
*
|
||||||
|
* @param BaseAddr is the base address of the device.
|
||||||
|
* @param RegOffset is the register offset to be read.
|
||||||
|
*
|
||||||
|
* @return The 32-bit value of the register
|
||||||
|
*
|
||||||
|
* @note None.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XGpioPs_ReadReg(BaseAddr, RegOffset) \
|
||||||
|
Xil_In32((BaseAddr) + (u32)(RegOffset))
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This macro writes to the given register.
|
||||||
|
*
|
||||||
|
* @param BaseAddr is the base address of the device.
|
||||||
|
* @param RegOffset is the offset of the register to be written.
|
||||||
|
* @param Data is the 32-bit value to write to the register.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note None.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#define XGpioPs_WriteReg(BaseAddr, RegOffset, Data) \
|
||||||
|
Xil_Out32((BaseAddr) + (u32)(RegOffset), (u32)(Data))
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
void XGpioPs_ResetHw(UINTPTR BaseAddress);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* XGPIOPS_HW_H */
|
||||||
|
/** @} */
|
||||||
+176
@@ -0,0 +1,176 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2009 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_assert.h
|
||||||
|
*
|
||||||
|
* @addtogroup common_assert_apis Assert APIs and Macros
|
||||||
|
*
|
||||||
|
* The xil_assert.h file contains assert related functions and macros.
|
||||||
|
* Assert APIs/Macros specifies that a application program satisfies certain
|
||||||
|
* conditions at particular points in its execution. These function can be
|
||||||
|
* used by application programs to ensure that, application code is satisfying
|
||||||
|
* certain conditions.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------------
|
||||||
|
* 1.00a hbm 07/14/09 First release
|
||||||
|
* 6.0 kvn 05/31/16 Make Xil_AsserWait a global variable
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XIL_ASSERT_H /* prevent circular inclusions */
|
||||||
|
#define XIL_ASSERT_H /* by using protection macros */
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
#define XIL_ASSERT_NONE 0U
|
||||||
|
#define XIL_ASSERT_OCCURRED 1U
|
||||||
|
#define XNULL NULL
|
||||||
|
|
||||||
|
extern u32 Xil_AssertStatus;
|
||||||
|
extern s32 Xil_AssertWait;
|
||||||
|
extern void Xil_Assert(const char8 *File, s32 Line);
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
|
void XNullHandler(void *NullParameter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This data type defines a callback to be invoked when an
|
||||||
|
* assert occurs. The callback is invoked only when asserts are enabled
|
||||||
|
*/
|
||||||
|
typedef void (*Xil_AssertCallback) (const char8 *File, s32 Line);
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief This assert macro is to be used for void functions. This in
|
||||||
|
* conjunction with the Xil_AssertWait boolean can be used to
|
||||||
|
* accommodate tests so that asserts which fail allow execution to
|
||||||
|
* continue.
|
||||||
|
*
|
||||||
|
* @param Expression: expression to be evaluated. If it evaluates to
|
||||||
|
* false, the assert occurs.
|
||||||
|
*
|
||||||
|
* @return Returns void unless the Xil_AssertWait variable is true, in which
|
||||||
|
* case no return is made and an infinite loop is entered.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_AssertVoid(Expression) \
|
||||||
|
{ \
|
||||||
|
if (Expression) { \
|
||||||
|
Xil_AssertStatus = XIL_ASSERT_NONE; \
|
||||||
|
} else { \
|
||||||
|
Xil_Assert(__FILE__, __LINE__); \
|
||||||
|
Xil_AssertStatus = XIL_ASSERT_OCCURRED; \
|
||||||
|
return; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief This assert macro is to be used for functions that do return a
|
||||||
|
* value. This in conjunction with the Xil_AssertWait boolean can be
|
||||||
|
* used to accommodate tests so that asserts which fail allow execution
|
||||||
|
* to continue.
|
||||||
|
*
|
||||||
|
* @param Expression: expression to be evaluated. If it evaluates to false,
|
||||||
|
* the assert occurs.
|
||||||
|
*
|
||||||
|
* @return Returns 0 unless the Xil_AssertWait variable is true, in which
|
||||||
|
* case no return is made and an infinite loop is entered.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_AssertNonvoid(Expression) \
|
||||||
|
{ \
|
||||||
|
if (Expression) { \
|
||||||
|
Xil_AssertStatus = XIL_ASSERT_NONE; \
|
||||||
|
} else { \
|
||||||
|
Xil_Assert(__FILE__, __LINE__); \
|
||||||
|
Xil_AssertStatus = XIL_ASSERT_OCCURRED; \
|
||||||
|
return 0; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Always assert. This assert macro is to be used for void functions.
|
||||||
|
* Use for instances where an assert should always occur.
|
||||||
|
*
|
||||||
|
* @return Returns void unless the Xil_AssertWait variable is true, in which
|
||||||
|
* case no return is made and an infinite loop is entered.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_AssertVoidAlways() \
|
||||||
|
{ \
|
||||||
|
Xil_Assert(__FILE__, __LINE__); \
|
||||||
|
Xil_AssertStatus = XIL_ASSERT_OCCURRED; \
|
||||||
|
return; \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Always assert. This assert macro is to be used for functions that
|
||||||
|
* do return a value. Use for instances where an assert should always
|
||||||
|
* occur.
|
||||||
|
*
|
||||||
|
* @return Returns void unless the Xil_AssertWait variable is true, in which
|
||||||
|
* case no return is made and an infinite loop is entered.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_AssertNonvoidAlways() \
|
||||||
|
{ \
|
||||||
|
Xil_Assert(__FILE__, __LINE__); \
|
||||||
|
Xil_AssertStatus = XIL_ASSERT_OCCURRED; \
|
||||||
|
return 0; \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define Xil_AssertVoid(Expression)
|
||||||
|
#define Xil_AssertVoidAlways()
|
||||||
|
#define Xil_AssertNonvoid(Expression)
|
||||||
|
#define Xil_AssertNonvoidAlways()
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
void Xil_AssertSetCallback(Xil_AssertCallback Routine);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
/**
|
||||||
|
* @} End of "addtogroup common_assert_apis".
|
||||||
|
*/
|
||||||
+107
@@ -0,0 +1,107 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2010 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_cache.h
|
||||||
|
*
|
||||||
|
* @addtogroup a9_cache_apis Cortex A9 Processor Cache Functions
|
||||||
|
*
|
||||||
|
* Cache functions provide access to cache related operations such as flush
|
||||||
|
* and invalidate for instruction and data caches. It gives option to perform
|
||||||
|
* the cache operations on a single cacheline, a range of memory and an entire
|
||||||
|
* cache.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -----------------------------------------------
|
||||||
|
* 1.00a ecm 01/29/10 First release
|
||||||
|
* 3.04a sdm 01/02/12 Remove redundant dsb/dmb instructions in cache maintenance
|
||||||
|
* APIs.
|
||||||
|
* 6.8 aru 09/06/18 Removed compilation warnings for ARMCC toolchain.
|
||||||
|
* 9.0 ml 03/03/23 Updated function prototypes.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XIL_CACHE_H
|
||||||
|
#define XIL_CACHE_H
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
|
||||||
|
#define asm_cp15_inval_dc_line_mva_poc(param) __asm__ __volatile__("mcr " \
|
||||||
|
XREG_CP15_INVAL_DC_LINE_MVA_POC :: "r" (param));
|
||||||
|
|
||||||
|
#define asm_cp15_clean_inval_dc_line_mva_poc(param) __asm__ __volatile__("mcr " \
|
||||||
|
XREG_CP15_CLEAN_INVAL_DC_LINE_MVA_POC :: "r" (param));
|
||||||
|
|
||||||
|
#define asm_cp15_inval_ic_line_mva_pou(param) __asm__ __volatile__("mcr " \
|
||||||
|
XREG_CP15_INVAL_IC_LINE_MVA_POU :: "r" (param));
|
||||||
|
|
||||||
|
#define asm_cp15_inval_dc_line_sw(param) __asm__ __volatile__("mcr " \
|
||||||
|
XREG_CP15_INVAL_DC_LINE_SW :: "r" (param));
|
||||||
|
|
||||||
|
#define asm_cp15_clean_inval_dc_line_sw(param) __asm__ __volatile__("mcr " \
|
||||||
|
XREG_CP15_CLEAN_INVAL_DC_LINE_SW :: "r" (param));
|
||||||
|
|
||||||
|
#elif defined (__ICCARM__)
|
||||||
|
|
||||||
|
#define asm_cp15_inval_dc_line_mva_poc(param) __asm volatile ("mcr " \
|
||||||
|
XREG_CP15_INVAL_DC_LINE_MVA_POC :: "r" (param));
|
||||||
|
|
||||||
|
#define asm_cp15_clean_inval_dc_line_mva_poc(param) __asm volatile ("mcr " \
|
||||||
|
XREG_CP15_CLEAN_INVAL_DC_LINE_MVA_POC :: "r" (param));
|
||||||
|
|
||||||
|
#define asm_cp15_inval_ic_line_mva_pou(param) __asm volatile ("mcr " \
|
||||||
|
XREG_CP15_INVAL_IC_LINE_MVA_POU :: "r" (param));
|
||||||
|
|
||||||
|
#define asm_cp15_inval_dc_line_sw(param) __asm volatile ("mcr " \
|
||||||
|
XREG_CP15_INVAL_DC_LINE_SW :: "r" (param));
|
||||||
|
|
||||||
|
#define asm_cp15_clean_inval_dc_line_sw(param) __asm volatile ("mcr " \
|
||||||
|
XREG_CP15_CLEAN_INVAL_DC_LINE_SW :: "r" (param));
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
|
|
||||||
|
void Xil_DCacheEnable(void);
|
||||||
|
void Xil_DCacheDisable(void);
|
||||||
|
void Xil_DCacheInvalidate(void);
|
||||||
|
void Xil_DCacheInvalidateRange(INTPTR adr, u32 len);
|
||||||
|
void Xil_DCacheFlush(void);
|
||||||
|
void Xil_DCacheFlushRange(INTPTR adr, u32 len);
|
||||||
|
|
||||||
|
void Xil_ICacheEnable(void);
|
||||||
|
void Xil_ICacheDisable(void);
|
||||||
|
void Xil_ICacheInvalidate(void);
|
||||||
|
void Xil_ICacheInvalidateRange(INTPTR adr, u32 len);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
/**
|
||||||
|
* @} End of "addtogroup a9_cache_apis".
|
||||||
|
*/
|
||||||
+75
@@ -0,0 +1,75 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2010 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_cache_l.h
|
||||||
|
*
|
||||||
|
* Contains L1 and L2 specific functions for the ARM cache functionality
|
||||||
|
* used by xcache.c. This functionality is being made available here for
|
||||||
|
* more sophisticated users.
|
||||||
|
*
|
||||||
|
* @addtogroup a9_cache_apis
|
||||||
|
* @{
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -----------------------------------------------
|
||||||
|
* 1.00a ecm 01/24/10 First release
|
||||||
|
* 6.8 aru 09/06/18 Removed compilation warnings for ARMCC toolchain.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef XIL_CACHE_MACH_H
|
||||||
|
#define XIL_CACHE_MACH_H
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
void Xil_DCacheInvalidateLine(u32 adr);
|
||||||
|
void Xil_DCacheFlushLine(u32 adr);
|
||||||
|
void Xil_DCacheStoreLine(u32 adr);
|
||||||
|
void Xil_ICacheInvalidateLine(u32 adr);
|
||||||
|
|
||||||
|
void Xil_L1DCacheEnable(void);
|
||||||
|
void Xil_L1DCacheDisable(void);
|
||||||
|
void Xil_L1DCacheInvalidate(void);
|
||||||
|
void Xil_L1DCacheInvalidateLine(u32 adr);
|
||||||
|
void Xil_L1DCacheInvalidateRange(u32 adr, u32 len);
|
||||||
|
void Xil_L1DCacheFlush(void);
|
||||||
|
void Xil_L1DCacheFlushLine(u32 adr);
|
||||||
|
void Xil_L1DCacheFlushRange(u32 adr, u32 len);
|
||||||
|
void Xil_L1DCacheStoreLine(u32 adr);
|
||||||
|
|
||||||
|
void Xil_L1ICacheEnable(void);
|
||||||
|
void Xil_L1ICacheDisable(void);
|
||||||
|
void Xil_L1ICacheInvalidate(void);
|
||||||
|
void Xil_L1ICacheInvalidateLine(u32 adr);
|
||||||
|
void Xil_L1ICacheInvalidateRange(u32 adr, u32 len);
|
||||||
|
|
||||||
|
void Xil_L2CacheEnable(void);
|
||||||
|
void Xil_L2CacheDisable(void);
|
||||||
|
void Xil_L2CacheInvalidate(void);
|
||||||
|
void Xil_L2CacheInvalidateLine(u32 adr);
|
||||||
|
void Xil_L2CacheInvalidateRange(u32 adr, u32 len);
|
||||||
|
void Xil_L2CacheFlush(void);
|
||||||
|
void Xil_L2CacheFlushLine(u32 adr);
|
||||||
|
void Xil_L2CacheFlushRange(u32 adr, u32 len);
|
||||||
|
void Xil_L2CacheStoreLine(u32 adr);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
/**
|
||||||
|
* @} End of "addtogroup a9_cache_apis".
|
||||||
|
*/
|
||||||
+75
@@ -0,0 +1,75 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2009 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_cache_vxworks.h
|
||||||
|
*
|
||||||
|
* Contains the cache related functions for VxWorks that is wrapped by
|
||||||
|
* xil_cache.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------------
|
||||||
|
* 1.00a hbm 12/11/09 Initial release
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XIL_CACHE_VXWORKS_H
|
||||||
|
#define XIL_CACHE_VXWORKS_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "vxWorks.h"
|
||||||
|
#include "vxLib.h"
|
||||||
|
#include "sysLibExtra.h"
|
||||||
|
#include "cacheLib.h"
|
||||||
|
|
||||||
|
#if (CPU_FAMILY==PPC)
|
||||||
|
|
||||||
|
#define Xil_DCacheEnable() cacheEnable(DATA_CACHE)
|
||||||
|
|
||||||
|
#define Xil_DCacheDisable() cacheDisable(DATA_CACHE)
|
||||||
|
|
||||||
|
#define Xil_DCacheInvalidateRange(Addr, Len) \
|
||||||
|
cacheInvalidate(DATA_CACHE, (void *)(Addr), (Len))
|
||||||
|
|
||||||
|
#define Xil_DCacheFlushRange(Addr, Len) \
|
||||||
|
cacheFlush(DATA_CACHE, (void *)(Addr), (Len))
|
||||||
|
|
||||||
|
#define Xil_ICacheEnable() cacheEnable(INSTRUCTION_CACHE)
|
||||||
|
|
||||||
|
#define Xil_ICacheDisable() cacheDisable(INSTRUCTION_CACHE)
|
||||||
|
|
||||||
|
#define Xil_ICacheInvalidateRange(Addr, Len) \
|
||||||
|
cacheInvalidate(INSTRUCTION_CACHE, (void *)(Addr), (Len))
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
#error "Unknown processor / architecture. Must be PPC for VxWorks."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
+67
@@ -0,0 +1,67 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2020 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_clocking.h
|
||||||
|
*
|
||||||
|
* The xil_clocking.h file contains clocking related functions and macros.
|
||||||
|
* certain conditions.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------------
|
||||||
|
* 7.2 sd 12/11/19 First release
|
||||||
|
* 7.2 sd 03/20/20 Added checking for isolation case
|
||||||
|
* 7.7 sk 01/10/22 Add function prototype for Xil_ClockGetRate to fix
|
||||||
|
* misra_c_2012_rule_8_4 violation.
|
||||||
|
* 9.0 ml 03/03/23 Added description to fix doxygen warnings.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef XIL_CLOCKING_H /**< prevent circular inclusions */
|
||||||
|
#define XIL_CLOCKING_H /**< by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "xdebug.h"
|
||||||
|
#include "xil_printf.h"
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
#include "xparameters.h"
|
||||||
|
#include "xstatus.h"
|
||||||
|
#if defined (XPAR_XCRPSU_0_DEVICE_ID) || defined(XPAR_PSU_CRL_APB_BASEADDR)
|
||||||
|
#include "xclockps.h"
|
||||||
|
#else
|
||||||
|
typedef u32 XClock_OutputClks;
|
||||||
|
typedef u64 XClockRate;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
|
||||||
|
XStatus Xil_ClockDisable(XClock_OutputClks ClockId);
|
||||||
|
XStatus Xil_ClockEnable(XClock_OutputClks ClockId);
|
||||||
|
XStatus Xil_ClockInit(void);
|
||||||
|
XStatus Xil_ClockGet(void);
|
||||||
|
XStatus Xil_ClockSetRate(XClock_OutputClks ClockId, XClockRate Rate, XClockRate *SetRate);
|
||||||
|
XStatus Xil_ClockGetRate(XClock_OutputClks ClockId, XClockRate *Rate);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
+50
@@ -0,0 +1,50 @@
|
|||||||
|
/******************************************************************************/
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file xil_cryptoalginfo.h
|
||||||
|
* @{
|
||||||
|
* @details
|
||||||
|
*
|
||||||
|
* Crypto algotithm information structure declaration.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- -------- -------- -----------------------------------------------
|
||||||
|
* 9.0 mmd 07/04/23 First release.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#ifndef XIL_CRYPTOALGINFO_H
|
||||||
|
#define XIL_CRYPTOALGINFO_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
#include "xil_types.h"
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
typedef enum _Xil_CryptoAlgNistStatus {
|
||||||
|
NOT_APPLICABLE = 0x00,
|
||||||
|
NIST_COMPLIANT = 0x11,
|
||||||
|
NIST_NON_COMPLIANT = 0xFE,
|
||||||
|
} Xil_CryptoAlgNistStatus;
|
||||||
|
|
||||||
|
typedef struct _Xil_CryptoAlgInfo {
|
||||||
|
u32 Version;
|
||||||
|
Xil_CryptoAlgNistStatus NistStatus;
|
||||||
|
} Xil_CryptoAlgInfo;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* XIL_CRYPTOALGINFO_H */
|
||||||
+101
@@ -0,0 +1,101 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2013 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_errata.h
|
||||||
|
*
|
||||||
|
* @addtogroup a9_errata Cortex A9 Processor and pl310 Errata Support
|
||||||
|
* @{
|
||||||
|
* Various ARM errata are handled in the standalone BSP. The implementation for
|
||||||
|
* errata handling follows ARM guidelines and is based on the open source Linux
|
||||||
|
* support for these errata.
|
||||||
|
*
|
||||||
|
* @note The errata handling is enabled by default. To disable handling of all the
|
||||||
|
* errata globally, un-define the macro ENABLE_ARM_ERRATA in xil_errata.h. To
|
||||||
|
* disable errata on a per-erratum basis, un-define relevant macros in
|
||||||
|
* xil_errata.h.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -----------------------------------------------
|
||||||
|
* 1.00a srt 04/18/13 First release
|
||||||
|
* 6.6 mus 12/07/17 Removed errata 753970, It fixes CR#989132
|
||||||
|
* 7.7 asa 01/06/22 Removed errata 742230 and 743622. These are
|
||||||
|
* already fixed in Cortex-A9 r3p0, the revision
|
||||||
|
* that is being used in Zynq platforms.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef XIL_ERRATA_H
|
||||||
|
#define XIL_ERRATA_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* @name errata_definitions
|
||||||
|
*
|
||||||
|
* The errata conditions handled in the standalone BSP are listed below
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define ENABLE_ARM_ERRATA 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef ENABLE_ARM_ERRATA
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Errata No: 775420
|
||||||
|
* Description: A data cache maintenance operation which aborts,
|
||||||
|
* might lead to deadlock
|
||||||
|
*/
|
||||||
|
#define CONFIG_ARM_ERRATA_775420 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Errata No: 794073
|
||||||
|
* Description: Speculative instruction fetches with MMU disabled
|
||||||
|
* might not comply with architectural requirements
|
||||||
|
*/
|
||||||
|
#define CONFIG_ARM_ERRATA_794073 1
|
||||||
|
|
||||||
|
|
||||||
|
/** PL310 L2 Cache Errata */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Errata No: 588369
|
||||||
|
* Description: Clean & Invalidate maintenance operations do not
|
||||||
|
* invalidate clean lines
|
||||||
|
*/
|
||||||
|
#define CONFIG_PL310_ERRATA_588369 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Errata No: 727915
|
||||||
|
* Description: Background Clean and Invalidate by Way operation
|
||||||
|
* can cause data corruption
|
||||||
|
*/
|
||||||
|
#define CONFIG_PL310_ERRATA_727915 1
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
#endif /* ENABLE_ARM_ERRATA */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* XIL_ERRATA_H */
|
||||||
|
/**
|
||||||
|
* @} End of "addtogroup a9_errata".
|
||||||
|
*/
|
||||||
+532
@@ -0,0 +1,532 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2015 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2022 - 2023 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_exception.h
|
||||||
|
*
|
||||||
|
* This header file contains ARM Cortex A53,A9,R5 specific exception related APIs.
|
||||||
|
* For exception related functions that can be used across all Xilinx supported
|
||||||
|
* processors, please use xil_exception.h.
|
||||||
|
*
|
||||||
|
* @addtogroup arm_exception_apis ARM Processor Exception Handling
|
||||||
|
* @{
|
||||||
|
* ARM processors specific exception related APIs for cortex A53,A9 and R5 can
|
||||||
|
* utilized for enabling/disabling IRQ, registering/removing handler for
|
||||||
|
* exceptions or initializing exception vector table with null handler.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- -------- -------- -----------------------------------------------
|
||||||
|
* 5.2 pkp 28/05/15 First release
|
||||||
|
* 6.0 mus 27/07/16 Consolidated file for a53,a9 and r5 processors
|
||||||
|
* 6.7 mna 26/04/18 Add API Xil_GetExceptionRegisterHandler.
|
||||||
|
* 6.7 asa 18/05/18 Update signature of API Xil_GetExceptionRegisterHandler.
|
||||||
|
* 7.0 mus 01/03/19 Tweak Xil_ExceptionEnableMask and
|
||||||
|
* Xil_ExceptionDisableMask macros to support legacy
|
||||||
|
* examples for Cortexa72 EL3 exception level.
|
||||||
|
* 7.3 mus 04/15/20 Added Xil_EnableNestedInterrupts and
|
||||||
|
* Xil_DisableNestedInterrupts macros for ARMv8.
|
||||||
|
* For Cortexa72, these macro's would not be supported
|
||||||
|
* at EL3, as Cortexa72 is using GIC-500(GICv3), which
|
||||||
|
* triggeres only FIQ at EL3. Fix for CR#1062506
|
||||||
|
* 7.6 mus 09/17/21 Updated flag checking to fix warning reported with
|
||||||
|
* -Wundef compiler option CR#1110261
|
||||||
|
* 7.7 mus 01/31/22 Few of the #defines in xil_exception.h in are treated
|
||||||
|
* in different way based on "versal" flag. In existing
|
||||||
|
* flow, this flag is defined only in xparameters.h and
|
||||||
|
* BSP compiler flags, it is not defined in application
|
||||||
|
* compiler flags. So, including xil_exception.h in
|
||||||
|
* application source file, without including
|
||||||
|
* xparameters.h results in incorrect behavior.
|
||||||
|
* Including xparameters.h in xil_exception.h to avoid
|
||||||
|
* such issues. It fixes CR#1120498.
|
||||||
|
* 8.0 mus 02/24/22 Updated few macros to support legacy driver examples
|
||||||
|
* for CortexR52. This is needed, as by default scugic
|
||||||
|
* driver configures interrupts as group0 and CortexR52
|
||||||
|
* GIC triggers FIQ for group0 interrupts.
|
||||||
|
* 8.0 sk 03/02/22 Define XExc_VectorTableEntry structure to fix
|
||||||
|
* misra_c_2012_rule_5_6 violation.
|
||||||
|
* 8.0 sk 03/02/22 Add XExc_VectorTable as extern to fix misra_c_2012_
|
||||||
|
* rule_8_4 violation.
|
||||||
|
* 8.1 asa 02/12/23 Updated data abort and prefetch abort fault
|
||||||
|
* status reporting for ARMv7.
|
||||||
|
* Updated Sync and SError fault status reporting
|
||||||
|
* for ARMv8.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XIL_EXCEPTION_H /* prevent circular inclusions */
|
||||||
|
#define XIL_EXCEPTION_H /* by using protection macros */
|
||||||
|
|
||||||
|
/***************************** Include Files ********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xpseudo_asm.h"
|
||||||
|
#include "bspconfig.h"
|
||||||
|
#ifndef SDT
|
||||||
|
#include "xparameters.h"
|
||||||
|
#include "xdebug.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************** Constant Definitions ****************************/
|
||||||
|
|
||||||
|
#define XIL_EXCEPTION_FIQ XREG_CPSR_FIQ_ENABLE
|
||||||
|
#define XIL_EXCEPTION_IRQ XREG_CPSR_IRQ_ENABLE
|
||||||
|
#define XIL_EXCEPTION_ALL (XREG_CPSR_FIQ_ENABLE | XREG_CPSR_IRQ_ENABLE)
|
||||||
|
|
||||||
|
#define XIL_EXCEPTION_ID_FIRST 0U
|
||||||
|
#if defined (__aarch64__)
|
||||||
|
#define XIL_EXCEPTION_ID_SYNC_INT 1U
|
||||||
|
#define XIL_EXCEPTION_ID_IRQ_INT 2U
|
||||||
|
#define XIL_EXCEPTION_ID_FIQ_INT 3U
|
||||||
|
#define XIL_EXCEPTION_ID_SERROR_ABORT_INT 4U
|
||||||
|
#define XIL_EXCEPTION_ID_LAST 5U
|
||||||
|
#else
|
||||||
|
#define XIL_EXCEPTION_ID_RESET 0U
|
||||||
|
#define XIL_EXCEPTION_ID_UNDEFINED_INT 1U
|
||||||
|
#define XIL_EXCEPTION_ID_SWI_INT 2U
|
||||||
|
#define XIL_EXCEPTION_ID_PREFETCH_ABORT_INT 3U
|
||||||
|
#define XIL_EXCEPTION_ID_DATA_ABORT_INT 4U
|
||||||
|
#define XIL_EXCEPTION_ID_IRQ_INT 5U
|
||||||
|
#define XIL_EXCEPTION_ID_FIQ_INT 6U
|
||||||
|
#define XIL_EXCEPTION_ID_LAST 6U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
|
||||||
|
#if defined (__aarch64__)
|
||||||
|
#define ARMV8_SYNC_ERROR 0x01U
|
||||||
|
#define ARMV8_SERROR 0x02U
|
||||||
|
|
||||||
|
#define ARMV8_FAR_VALUE_VALID 0x01U
|
||||||
|
|
||||||
|
#define ARMV8_ESR_EC_SHIFT 26U
|
||||||
|
#define ARMV8_ESR_EC_MASK ((0x3FU) << ARMV8_ESR_EC_SHIFT)
|
||||||
|
#define ARMV8_EXTRACT_ESR_EC(Val) \
|
||||||
|
(((Val) & ARMV8_ESR_EC_MASK) >> ARMV8_ESR_EC_SHIFT)
|
||||||
|
|
||||||
|
#define ARMV8_ESR_IL_SHIFT (25U)
|
||||||
|
#define ARMV8_ESR_IL_MASK ((1U) << ARMV8_ESR_IL_SHIFT)
|
||||||
|
#define ARMV8_EXTRACT_ESR_IL(Val) \
|
||||||
|
(((Val) & ARMV8_ESR_IL_MASK) >> ARMV8_ESR_IL_SHIFT)
|
||||||
|
|
||||||
|
#define ARMV8_ESR_ISS_MASK (ARMV8_ESR_IL_MASK - 1U)
|
||||||
|
#define ARMV8_EXTRACT_ESR_ISS(Val) ((Val) & ARMV8_ESR_ISS_MASK)
|
||||||
|
|
||||||
|
|
||||||
|
#define ARMV8_ESR_EC_UNKNOWN_ERR 0x00U
|
||||||
|
#define ARMV8_ESR_EC_FP_ASIMD 0x07U
|
||||||
|
#define ARMV8_ESR_ILL_EXECUTION_STATE 0x0EU
|
||||||
|
#define ARMV8_ESR_EC_DATA_ABORT_LOWER 0x24U
|
||||||
|
#define ARMV8_ESR_EC_DATA_ABORT 0x25U
|
||||||
|
#define ARMV8_ESR_EC_INS_ABORT_LOWER 0x20U
|
||||||
|
#define ARMV8_ESR_EC_INS_ABORT 0x21U
|
||||||
|
#define ARMV8_ESR_EC_PC_ALIGNMENT_FAULT 0x22U
|
||||||
|
#define ARMV8_ESR_EC_SP_ALIGNMENT_FAULT 0x26U
|
||||||
|
#define ARMV8_ESR_EC_SERROR 0x2FU
|
||||||
|
|
||||||
|
|
||||||
|
/* ISS field definitions shared by different classes */
|
||||||
|
#define ARMV8_ESR_ISS_WNR_SHIFT (6U)
|
||||||
|
#define ARMV8_ESR_ISS_WNR_MASK ((1U) << ARMV8_ESR_ISS_WNR_SHIFT)
|
||||||
|
|
||||||
|
/* Asynchronous Error Type */
|
||||||
|
|
||||||
|
#define ARMV8_ESR_ISS_AET_SHIFT (10U)
|
||||||
|
#define ARMV8_ESR_ISS_AET_MASK ((0x7U) << ARMV8_ESR_ISS_AET_SHIFT)
|
||||||
|
#define ARMV8_ESR_ISS_AET_UC ((0U) << ARMV8_ESR_ISS_AET_SHIFT)
|
||||||
|
#define ARMV8_ESR_ISS_AET_UEU ((1U) << ARMV8_ESR_ISS_AET_SHIFT)
|
||||||
|
#define ARMV8_ESR_ISS_AET_UEO ((2U) << ARMV8_ESR_ISS_AET_SHIFT)
|
||||||
|
#define ARMV8_ESR_ISS_AET_UER ((3U) << ARMV8_ESR_ISS_AET_SHIFT)
|
||||||
|
#define ARMV8_ESR_ISS_AET_CE ((6U) << ARMV8_ESR_ISS_AET_SHIFT)
|
||||||
|
|
||||||
|
|
||||||
|
/* Shared ISS fault status code(IFSC/DFSC) for Data/Instruction aborts */
|
||||||
|
#define ARMV8_ESR_ISS_FSC (0x3FU)
|
||||||
|
#define ARMV8_ESR_ISS_CM_SHIFT (8U)
|
||||||
|
#define ARMV8_ESR_ISS_CM_MASK ((1U) << ARMV8_ESR_ISS_CM_SHIFT)
|
||||||
|
|
||||||
|
#define ARMV8_LEVEL_0_ADDR_FAULT 0x00U
|
||||||
|
#define ARMV8_LEVEL_1_ADDR_FAULT 0x01U
|
||||||
|
#define ARMV8_LEVEL_2_ADDR_FAULT 0x02U
|
||||||
|
#define ARMV8_LEVEL_3_ADDR_FAULT 0x03U
|
||||||
|
#define ARMV8_LEVEL_0_TRANS_FAULT 0x04U
|
||||||
|
#define ARMV8_LEVEL_1_TRANS_FAULT 0x05U
|
||||||
|
#define ARMV8_LEVEL_2_TRANS_FAULT 0x06U
|
||||||
|
#define ARMV8_LEVEL_3_TRANS_FAULT 0x07U
|
||||||
|
#define ARMV8_LEVEL_0_ACCS_FLAG_FAULT 0x08U
|
||||||
|
#define ARMV8_LEVEL_1_ACCS_FLAG_FAULT 0x09U
|
||||||
|
#define ARMV8_LEVEL_2_ACCS_FLAG_FAULT 0x0AU
|
||||||
|
#define ARMV8_LEVEL_3_ACCS_FLAG_FAULT 0x0BU
|
||||||
|
#define ARMV8_LEVEL_0_PERMISSION_FAULT 0x0CU
|
||||||
|
#define ARMV8_LEVEL_1_PERMISSION_FAULT 0x0DU
|
||||||
|
#define ARMV8_LEVEL_2_PERMISSION_FAULT 0x0EU
|
||||||
|
#define ARMV8_LEVEL_3_PERMISSION_FAULT 0x0FU
|
||||||
|
|
||||||
|
#define ARMV8_SYNC_EXT_ABORT_NOT_ON_TTW 0x10U
|
||||||
|
#define ARMV8_LEVEL_0_SYNC_EXT_ABORT 0x14U
|
||||||
|
#define ARMV8_LEVEL_1_SYNC_EXT_ABORT 0x15U
|
||||||
|
#define ARMV8_LEVEL_2_SYNC_EXT_ABORT 0x16U
|
||||||
|
#define ARMV8_LEVEL_3_SYNC_EXT_ABORT 0x17U
|
||||||
|
|
||||||
|
#define ARMV8_SYNC_PAR_OR_ECC_ERROR_NOT_ON_TTW 0x18U
|
||||||
|
#define ARMV8_LEVEL_0_SYNC_PAR_OR_ECC_ERROR 0x1CU
|
||||||
|
#define ARMV8_LEVEL_1_SYNC_PAR_OR_ECC_ERROR 0x1DU
|
||||||
|
#define ARMV8_LEVEL_2_SYNC_PAR_OR_ECC_ERROR 0x1EU
|
||||||
|
#define ARMV8_LEVEL_3_SYNC_PAR_OR_ECC_ERROR 0x1FU
|
||||||
|
|
||||||
|
#define ARMV8_ALIGNMENT_FAULT 0x21U
|
||||||
|
#define ARMV8_TLB_CONFLICT_ABORT 0x30U
|
||||||
|
|
||||||
|
#define ARMV8_ASYNC_SEEROR_INTERRUPT 0x11U
|
||||||
|
|
||||||
|
#else /* #if defined (__aarch64__) */
|
||||||
|
|
||||||
|
#define DATA_ABORT 0x00U
|
||||||
|
#define INS_PREFETCH_ABORT 0x01U
|
||||||
|
#define ARMV7_FAULT_STATUS_MASK_BIT3_0 0x0FU
|
||||||
|
#define ARMV7_DFAR_VALUE_VALID 0x01U
|
||||||
|
#define ARMV7_FAULT_STATUS_BIT10_MASK 0x400U
|
||||||
|
|
||||||
|
#define ARMV7_BACKGROUND_FAULT 0x00U
|
||||||
|
#define ARMV7_ALIGNMENT_FAULT 0x01U
|
||||||
|
#define ARMV7_DEBUG_EVENT 0x02U
|
||||||
|
#define ARMV7_ACCESS_FLAG_FAULT 0x03U
|
||||||
|
#define ARMV7_ICACHE_MAINTENANCE_FAULT 0x04U
|
||||||
|
#define ARMV7_TRANSLATION_FAULT 0x05U
|
||||||
|
#define ARMV7_SYNC_EXT_ABORT 0x08U
|
||||||
|
#define ARMV7_DOMAIN_FAULT 0x09U
|
||||||
|
#define ARMV7_SYNC_ABORT_TRANSTAB_WALK 0x0CU
|
||||||
|
#define ARMV7_PERMISSION_FAULT 0x0DU
|
||||||
|
#define ARMV7_TLB_CONFLICT_ABORT 0x10U
|
||||||
|
#define ARMV7_ASYNC_EXT_ABORT 0x16U
|
||||||
|
#define ARMV7_MEM_ACS_ASYNC_PAR_ERR 0x18U
|
||||||
|
#define ARMV7_MEM_ACS_SYNC_PAR_ERR 0x19U
|
||||||
|
#define ARMV7_SYNCPAR_ERR_TRANSTAB_WALK 0x1CU
|
||||||
|
|
||||||
|
#define EXTRACT_BITS_10_AND_3_TO_0(Val) \
|
||||||
|
((Val & (ARMV7_FAULT_STATUS_BIT10_MASK)) >> 6) | \
|
||||||
|
(Val & ARMV7_FAULT_STATUS_MASK_BIT3_0)
|
||||||
|
|
||||||
|
#endif /* #if defined (__aarch64__) */
|
||||||
|
#endif /* #ifdef DEBUG */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XIL_EXCEPTION_ID_INT is defined for all Xilinx processors.
|
||||||
|
*/
|
||||||
|
#if (defined (versal) && !defined(ARMR5) && EL3)
|
||||||
|
#define XIL_EXCEPTION_ID_INT XIL_EXCEPTION_ID_FIQ_INT
|
||||||
|
#else
|
||||||
|
#define XIL_EXCEPTION_ID_INT XIL_EXCEPTION_ID_IRQ_INT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**************************** Type Definitions ******************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This typedef is the exception handler function.
|
||||||
|
*/
|
||||||
|
typedef void (*Xil_ExceptionHandler)(void *data);
|
||||||
|
typedef void (*Xil_InterruptHandler)(void *data);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Xil_ExceptionHandler Handler;
|
||||||
|
void *Data;
|
||||||
|
} XExc_VectorTableEntry;
|
||||||
|
|
||||||
|
extern XExc_VectorTableEntry XExc_VectorTable[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions ********************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Enable Exceptions.
|
||||||
|
*
|
||||||
|
* @param Mask: Value for enabling the exceptions.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note If bit is 0, exception is enabled.
|
||||||
|
* C-Style signature: void Xil_ExceptionEnableMask(Mask)
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#if (defined (versal) && !defined(ARMR5) && EL3)
|
||||||
|
/*
|
||||||
|
* Cortexa72 processor in versal is coupled with GIC-500, and GIC-500 supports
|
||||||
|
* only FIQ at EL3. Hence, tweaking this macro to always enable FIQ
|
||||||
|
* ignoring argument passed by user.
|
||||||
|
*/
|
||||||
|
#define Xil_ExceptionEnableMask(Mask) \
|
||||||
|
(void)Mask; \
|
||||||
|
mtcpsr(mfcpsr() & ~ ((XIL_EXCEPTION_FIQ) & XIL_EXCEPTION_ALL))
|
||||||
|
#elif defined (__GNUC__) || defined (__ICCARM__)
|
||||||
|
#define Xil_ExceptionEnableMask(Mask) \
|
||||||
|
mtcpsr(mfcpsr() & ~ ((Mask) & XIL_EXCEPTION_ALL))
|
||||||
|
#else
|
||||||
|
#define Xil_ExceptionEnableMask(Mask) \
|
||||||
|
{ \
|
||||||
|
register u32 Reg __asm("cpsr"); \
|
||||||
|
mtcpsr((Reg) & (~((Mask) & XIL_EXCEPTION_ALL))); \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Enable the IRQ exception.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note None.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#if (defined (versal) && !defined(ARMR5) && EL3)
|
||||||
|
#define Xil_ExceptionEnable() \
|
||||||
|
Xil_ExceptionEnableMask(XIL_EXCEPTION_FIQ)
|
||||||
|
#else
|
||||||
|
#define Xil_ExceptionEnable() \
|
||||||
|
Xil_ExceptionEnableMask(XIL_EXCEPTION_IRQ)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Disable Exceptions.
|
||||||
|
*
|
||||||
|
* @param Mask: Value for disabling the exceptions.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note If bit is 1, exception is disabled.
|
||||||
|
* C-Style signature: Xil_ExceptionDisableMask(Mask)
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#if (defined (versal) && !defined(ARMR5) && EL3)
|
||||||
|
/*
|
||||||
|
* Cortexa72 processor in versal is coupled with GIC-500, and GIC-500 supports
|
||||||
|
* only FIQ at EL3. Hence, tweaking this macro to always disable FIQ
|
||||||
|
* ignoring argument passed by user.
|
||||||
|
*/
|
||||||
|
#define Xil_ExceptionDisableMask(Mask) \
|
||||||
|
mtcpsr(mfcpsr() | ((XIL_EXCEPTION_FIQ) & XIL_EXCEPTION_ALL))
|
||||||
|
#elif defined (__GNUC__) || defined (__ICCARM__)
|
||||||
|
#define Xil_ExceptionDisableMask(Mask) \
|
||||||
|
mtcpsr(mfcpsr() | ((Mask) & XIL_EXCEPTION_ALL))
|
||||||
|
#else
|
||||||
|
#define Xil_ExceptionDisableMask(Mask) \
|
||||||
|
{ \
|
||||||
|
register u32 Reg __asm("cpsr"); \
|
||||||
|
mtcpsr((Reg) | ((Mask) & XIL_EXCEPTION_ALL)); \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* Disable the IRQ exception.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note None.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_ExceptionDisable() \
|
||||||
|
Xil_ExceptionDisableMask(XIL_EXCEPTION_IRQ)
|
||||||
|
|
||||||
|
#if ( defined (PLATFORM_ZYNQMP) && defined (EL3) && (EL3==1) )
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Enable nested interrupts by clearing the I bit in DAIF.This
|
||||||
|
* macro is defined for Cortex-A53 64 bit mode BSP configured to run
|
||||||
|
* at EL3.. However,it is not defined for Versal Cortex-A72 BSP
|
||||||
|
* configured to run at EL3. Reason is, Cortex-A72 is coupled
|
||||||
|
* with GIC-500(GICv3 specifications) and it triggers only FIQ at EL3.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note This macro is supposed to be used from interrupt handlers. In the
|
||||||
|
* interrupt handler the interrupts are disabled by default (I bit
|
||||||
|
* is set as 1). To allow nesting of interrupts, this macro should be
|
||||||
|
* used. It clears the I bit. Once that bit is cleared and provided the
|
||||||
|
* preemption of interrupt conditions are met in the GIC, nesting of
|
||||||
|
* interrupts will start happening.
|
||||||
|
* Caution: This macro must be used with caution. Before calling this
|
||||||
|
* macro, the user must ensure that the source of the current IRQ
|
||||||
|
* is appropriately cleared. Otherwise, as soon as we clear the I
|
||||||
|
* bit, there can be an infinite loop of interrupts with an
|
||||||
|
* eventual crash (all the stack space getting consumed).
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_EnableNestedInterrupts() \
|
||||||
|
__asm__ __volatile__ ("mrs X1, ELR_EL3"); \
|
||||||
|
__asm__ __volatile__ ("mrs X2, SPSR_EL3"); \
|
||||||
|
__asm__ __volatile__ ("stp X1,X2, [sp,#-0x10]!"); \
|
||||||
|
__asm__ __volatile__ ("mrs X1, DAIF"); \
|
||||||
|
__asm__ __volatile__ ("bic X1,X1,#(0x1<<7)"); \
|
||||||
|
__asm__ __volatile__ ("msr DAIF, X1"); \
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Disable the nested interrupts by setting the I bit in DAIF. This
|
||||||
|
* macro is defined for Cortex-A53 64 bit mode BSP configured to run
|
||||||
|
* at EL3.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note This macro is meant to be called in the interrupt service routines.
|
||||||
|
* This macro cannot be used independently. It can only be used when
|
||||||
|
* nesting of interrupts have been enabled by using the macro
|
||||||
|
* Xil_EnableNestedInterrupts(). In a typical flow, the user first
|
||||||
|
* calls the Xil_EnableNestedInterrupts in the ISR at the appropriate
|
||||||
|
* point. The user then must call this macro before exiting the interrupt
|
||||||
|
* service routine. This macro puts the ARM back in IRQ mode and
|
||||||
|
* hence sets back the I bit.
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_DisableNestedInterrupts() \
|
||||||
|
__asm__ __volatile__ ("ldp X1,X2, [sp,#0x10]!"); \
|
||||||
|
__asm__ __volatile__ ("msr ELR_EL3, X1"); \
|
||||||
|
__asm__ __volatile__ ("msr SPSR_EL3, X2"); \
|
||||||
|
__asm__ __volatile__ ("mrs X1, DAIF"); \
|
||||||
|
__asm__ __volatile__ ("orr X1, X1, #(0x1<<7)"); \
|
||||||
|
__asm__ __volatile__ ("msr DAIF, X1"); \
|
||||||
|
|
||||||
|
#elif (defined (EL1_NONSECURE) && (EL1_NONSECURE==1))
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Enable nested interrupts by clearing the I bit in DAIF.This
|
||||||
|
* macro is defined for Cortex-A53 64 bit mode and Cortex-A72 64 bit
|
||||||
|
* BSP configured to run at EL1 NON SECURE
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note This macro is supposed to be used from interrupt handlers. In the
|
||||||
|
* interrupt handler the interrupts are disabled by default (I bit
|
||||||
|
* is set as 1). To allow nesting of interrupts, this macro should be
|
||||||
|
* used. It clears the I bit. Once that bit is cleared and provided the
|
||||||
|
* preemption of interrupt conditions are met in the GIC, nesting of
|
||||||
|
* interrupts will start happening.
|
||||||
|
* Caution: This macro must be used with caution. Before calling this
|
||||||
|
* macro, the user must ensure that the source of the current IRQ
|
||||||
|
* is appropriately cleared. Otherwise, as soon as we clear the I
|
||||||
|
* bit, there can be an infinite loop of interrupts with an
|
||||||
|
* eventual crash (all the stack space getting consumed).
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_EnableNestedInterrupts() \
|
||||||
|
__asm__ __volatile__ ("mrs X1, ELR_EL1"); \
|
||||||
|
__asm__ __volatile__ ("mrs X2, SPSR_EL1"); \
|
||||||
|
__asm__ __volatile__ ("stp X1,X2, [sp,#-0x10]!"); \
|
||||||
|
__asm__ __volatile__ ("mrs X1, DAIF"); \
|
||||||
|
__asm__ __volatile__ ("bic X1,X1,#(0x1<<7)"); \
|
||||||
|
__asm__ __volatile__ ("msr DAIF, X1"); \
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Disable the nested interrupts by setting the I bit in DAIF. This
|
||||||
|
* macro is defined for Cortex-A53 64 bit mode and Cortex-A72 64 bit
|
||||||
|
* BSP configured to run at EL1 NON SECURE
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note This macro is meant to be called in the interrupt service routines.
|
||||||
|
* This macro cannot be used independently. It can only be used when
|
||||||
|
* nesting of interrupts have been enabled by using the macro
|
||||||
|
* Xil_EnableNestedInterrupts(). In a typical flow, the user first
|
||||||
|
* calls the Xil_EnableNestedInterrupts in the ISR at the appropriate
|
||||||
|
* point. The user then must call this macro before exiting the interrupt
|
||||||
|
* service routine. This macro puts the ARM back in IRQ mode and
|
||||||
|
* hence sets back the I bit.
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_DisableNestedInterrupts() \
|
||||||
|
__asm__ __volatile__ ("ldp X1,X2, [sp,#0x10]!"); \
|
||||||
|
__asm__ __volatile__ ("msr ELR_EL1, X1"); \
|
||||||
|
__asm__ __volatile__ ("msr SPSR_EL1, X2"); \
|
||||||
|
__asm__ __volatile__ ("mrs X1, DAIF"); \
|
||||||
|
__asm__ __volatile__ ("orr X1, X1, #(0x1<<7)"); \
|
||||||
|
__asm__ __volatile__ ("msr DAIF, X1"); \
|
||||||
|
|
||||||
|
#elif (!defined (__aarch64__) && !defined (ARMA53_32))
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Enable nested interrupts by clearing the I and F bits in CPSR. This
|
||||||
|
* API is defined for cortex-a9 and cortex-r5.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note This macro is supposed to be used from interrupt handlers. In the
|
||||||
|
* interrupt handler the interrupts are disabled by default (I and F
|
||||||
|
* are 1). To allow nesting of interrupts, this macro should be
|
||||||
|
* used. It clears the I and F bits by changing the ARM mode to
|
||||||
|
* system mode. Once these bits are cleared and provided the
|
||||||
|
* preemption of interrupt conditions are met in the GIC, nesting of
|
||||||
|
* interrupts will start happening.
|
||||||
|
* Caution: This macro must be used with caution. Before calling this
|
||||||
|
* macro, the user must ensure that the source of the current IRQ
|
||||||
|
* is appropriately cleared. Otherwise, as soon as we clear the I and
|
||||||
|
* F bits, there can be an infinite loop of interrupts with an
|
||||||
|
* eventual crash (all the stack space getting consumed).
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_EnableNestedInterrupts() \
|
||||||
|
__asm__ __volatile__ ("stmfd sp!, {lr}"); \
|
||||||
|
__asm__ __volatile__ ("mrs lr, spsr"); \
|
||||||
|
__asm__ __volatile__ ("stmfd sp!, {lr}"); \
|
||||||
|
__asm__ __volatile__ ("msr cpsr_c, #0x1F"); \
|
||||||
|
__asm__ __volatile__ ("stmfd sp!, {lr}");
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @brief Disable the nested interrupts by setting the I and F bits. This API
|
||||||
|
* is defined for cortex-a9 and cortex-r5.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
* @note This macro is meant to be called in the interrupt service routines.
|
||||||
|
* This macro cannot be used independently. It can only be used when
|
||||||
|
* nesting of interrupts have been enabled by using the macro
|
||||||
|
* Xil_EnableNestedInterrupts(). In a typical flow, the user first
|
||||||
|
* calls the Xil_EnableNestedInterrupts in the ISR at the appropriate
|
||||||
|
* point. The user then must call this macro before exiting the interrupt
|
||||||
|
* service routine. This macro puts the ARM back in IRQ/FIQ mode and
|
||||||
|
* hence sets back the I and F bits.
|
||||||
|
******************************************************************************/
|
||||||
|
#define Xil_DisableNestedInterrupts() \
|
||||||
|
__asm__ __volatile__ ("ldmfd sp!, {lr}"); \
|
||||||
|
__asm__ __volatile__ ("msr cpsr_c, #0x92"); \
|
||||||
|
__asm__ __volatile__ ("ldmfd sp!, {lr}"); \
|
||||||
|
__asm__ __volatile__ ("msr spsr_cxsf, lr"); \
|
||||||
|
__asm__ __volatile__ ("ldmfd sp!, {lr}"); \
|
||||||
|
|
||||||
|
#endif
|
||||||
|
/************************** Variable Definitions ****************************/
|
||||||
|
|
||||||
|
/************************** Function Prototypes *****************************/
|
||||||
|
|
||||||
|
extern void Xil_ExceptionRegisterHandler(u32 Exception_id,
|
||||||
|
Xil_ExceptionHandler Handler,
|
||||||
|
void *Data);
|
||||||
|
|
||||||
|
extern void Xil_ExceptionRemoveHandler(u32 Exception_id);
|
||||||
|
extern void Xil_GetExceptionRegisterHandler(u32 Exception_id,
|
||||||
|
Xil_ExceptionHandler *Handler, void **Data);
|
||||||
|
|
||||||
|
extern void Xil_ExceptionInit(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* XIL_EXCEPTION_H */
|
||||||
|
/**
|
||||||
|
* @} End of "addtogroup arm_exception_apis".
|
||||||
|
*/
|
||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2009 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_hal.h
|
||||||
|
*
|
||||||
|
* Contains all the HAL header files.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------------
|
||||||
|
* 1.00a hbm 07/28/09 Initial release
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef XIL_HAL_H
|
||||||
|
#define XIL_HAL_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "xil_cache.h"
|
||||||
|
#include "xil_io.h"
|
||||||
|
#include "xil_assert.h"
|
||||||
|
#include "xil_exception.h"
|
||||||
|
#include "xil_types.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
+433
@@ -0,0 +1,433 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2014 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_io.h
|
||||||
|
*
|
||||||
|
* @addtogroup common_io_interfacing_apis Register IO interfacing APIs
|
||||||
|
*
|
||||||
|
* The xil_io.h file contains the interface for the general I/O component, which
|
||||||
|
* encapsulates the Input/Output functions for the processors that do not
|
||||||
|
* require any special I/O handling.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- -------- -------- -----------------------------------------------
|
||||||
|
* 5.00 pkp 05/29/14 First release
|
||||||
|
* 6.00 mus 08/19/16 Remove checking of __LITTLE_ENDIAN__ flag for
|
||||||
|
* ARM processors
|
||||||
|
* 7.20 har 01/03/20 Added Xil_SecureOut32 for avoiding blindwrite for
|
||||||
|
* CR-1049218
|
||||||
|
* 7.30 kpt 09/21/20 Moved Xil_EndianSwap16 and Xil_EndianSwap32 to
|
||||||
|
* xil_io.h and made them as static inline
|
||||||
|
* am 10/13/20 Changed the return type of Xil_SecureOut32 function
|
||||||
|
* from u32 to int
|
||||||
|
* 7.50 dp 02/12/21 Fix compilation error in Xil_EndianSwap32() that occur
|
||||||
|
* when -Werror=conversion compiler flag is enabled
|
||||||
|
* 7.5 mus 05/17/21 Update the functions with comments. It fixes CR#1067739.
|
||||||
|
* 9.0 ml 03/03/23 Add description and remove comments to fix doxygen warnings.
|
||||||
|
* </pre>
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef XIL_IO_H /**< prevent circular inclusions */
|
||||||
|
#define XIL_IO_H /**< by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_printf.h"
|
||||||
|
#include "xstatus.h"
|
||||||
|
|
||||||
|
#if defined (__MICROBLAZE__)
|
||||||
|
#include "mb_interface.h"
|
||||||
|
#else
|
||||||
|
#include "xpseudo_asm.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
#ifdef ENABLE_SAFETY
|
||||||
|
extern u32 XStl_RegUpdate(u32 RegAddr, u32 RegVal);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
#if defined __GNUC__
|
||||||
|
#if defined (__MICROBLAZE__)
|
||||||
|
# define INST_SYNC mbar(0) /**< Instruction Synchronization Barrier */
|
||||||
|
# define DATA_SYNC mbar(1) /**< Data Synchronization Barrier */
|
||||||
|
# else
|
||||||
|
# define SYNCHRONIZE_IO dmb() /**< Data Memory Barrier */
|
||||||
|
# define INST_SYNC isb() /**< Instruction Synchronization Barrier */
|
||||||
|
# define DATA_SYNC dsb() /**< Data Synchronization Barrier */
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define SYNCHRONIZE_IO /**< Data Memory Barrier */
|
||||||
|
# define INST_SYNC /**< Instruction Synchronization Barrier */
|
||||||
|
# define DATA_SYNC /**< Data Synchronization Barrier */
|
||||||
|
# define INST_SYNC /**< Instruction Synchronization Barrier */
|
||||||
|
# define DATA_SYNC /**< Data Synchronization Barrier */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__GNUC__) || defined (__ICCARM__) || defined (__MICROBLAZE__)
|
||||||
|
#define INLINE inline /**< static inline keyword */
|
||||||
|
#else
|
||||||
|
#define INLINE __inline /**<static inline keyword */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an input operation for a memory location by reading
|
||||||
|
* from the specified address and returning the 8 bit Value read from
|
||||||
|
* that address.
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the input operation
|
||||||
|
*
|
||||||
|
* @return The 8 bit Value read from the specified input address.
|
||||||
|
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE u8 Xil_In8(UINTPTR Addr)
|
||||||
|
{
|
||||||
|
return *(volatile u8 *) Addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an input operation for a memory location by reading from
|
||||||
|
* the specified address and returning the 16 bit Value read from that
|
||||||
|
* address.
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the input operation
|
||||||
|
*
|
||||||
|
* @return The 16 bit Value read from the specified input address.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE u16 Xil_In16(UINTPTR Addr)
|
||||||
|
{
|
||||||
|
return *(volatile u16 *) Addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an input operation for a memory location by
|
||||||
|
* reading from the specified address and returning the 32 bit Value
|
||||||
|
* read from that address.
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the input operation
|
||||||
|
*
|
||||||
|
* @return The 32 bit Value read from the specified input address.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE u32 Xil_In32(UINTPTR Addr)
|
||||||
|
{
|
||||||
|
return *(volatile u32 *) Addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an input operation for a memory location by reading the
|
||||||
|
* 64 bit Value read from that address.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the input operation
|
||||||
|
*
|
||||||
|
* @return The 64 bit Value read from the specified input address.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE u64 Xil_In64(UINTPTR Addr)
|
||||||
|
{
|
||||||
|
return *(volatile u64 *) Addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an output operation for an memory location by
|
||||||
|
* writing the 8 bit Value to the the specified address.
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the output operation
|
||||||
|
* @param Value contains the 8 bit Value to be written at the specified
|
||||||
|
* address.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE void Xil_Out8(UINTPTR Addr, u8 Value)
|
||||||
|
{
|
||||||
|
/* write 8 bit value to specified address */
|
||||||
|
volatile u8 *LocalAddr = (volatile u8 *)Addr;
|
||||||
|
*LocalAddr = Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an output operation for a memory location by writing the
|
||||||
|
* 16 bit Value to the the specified address.
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the output operation
|
||||||
|
* @param Value contains the Value to be written at the specified address.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE void Xil_Out16(UINTPTR Addr, u16 Value)
|
||||||
|
{
|
||||||
|
/* write 16 bit value to specified address */
|
||||||
|
volatile u16 *LocalAddr = (volatile u16 *)Addr;
|
||||||
|
*LocalAddr = Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an output operation for a memory location by writing the
|
||||||
|
* 32 bit Value to the the specified address.
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the output operation
|
||||||
|
* @param Value contains the 32 bit Value to be written at the specified
|
||||||
|
* address.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE void Xil_Out32(UINTPTR Addr, u32 Value)
|
||||||
|
{
|
||||||
|
/* write 32 bit value to specified address */
|
||||||
|
#ifndef ENABLE_SAFETY
|
||||||
|
volatile u32 *LocalAddr = (volatile u32 *)Addr;
|
||||||
|
*LocalAddr = Value;
|
||||||
|
#else
|
||||||
|
XStl_RegUpdate(Addr, Value);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an output operation for a memory location by writing the
|
||||||
|
* 64 bit Value to the the specified address.
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the output operation
|
||||||
|
* @param Value contains 64 bit Value to be written at the specified address.
|
||||||
|
*
|
||||||
|
* @return None.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE void Xil_Out64(UINTPTR Addr, u64 Value)
|
||||||
|
{
|
||||||
|
/* write 64 bit value to specified address */
|
||||||
|
volatile u64 *LocalAddr = (volatile u64 *)Addr;
|
||||||
|
*LocalAddr = Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Performs an output operation for a memory location by writing the
|
||||||
|
* 32 bit Value to the the specified address and then reading it
|
||||||
|
* back to verify the value written in the register.
|
||||||
|
*
|
||||||
|
* @param Addr contains the address to perform the output operation
|
||||||
|
* @param Value contains 32 bit Value to be written at the specified address
|
||||||
|
*
|
||||||
|
* @return Returns Status
|
||||||
|
* - XST_SUCCESS on success
|
||||||
|
* - XST_FAILURE on failure
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
static INLINE int Xil_SecureOut32(UINTPTR Addr, u32 Value)
|
||||||
|
{
|
||||||
|
int Status = XST_FAILURE;
|
||||||
|
u32 ReadReg;
|
||||||
|
u32 ReadRegTemp;
|
||||||
|
|
||||||
|
/* writing 32 bit value to specified address */
|
||||||
|
Xil_Out32(Addr, Value);
|
||||||
|
|
||||||
|
/* verify value written to specified address with multiple reads */
|
||||||
|
ReadReg = Xil_In32(Addr);
|
||||||
|
ReadRegTemp = Xil_In32(Addr);
|
||||||
|
|
||||||
|
if( (ReadReg == Value) && (ReadRegTemp == Value) ) {
|
||||||
|
Status = XST_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Perform a 16-bit endian conversion.
|
||||||
|
*
|
||||||
|
* @param Data 16 bit value to be converted
|
||||||
|
*
|
||||||
|
* @return 16 bit Data with converted endianness
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE __attribute__((always_inline)) u16 Xil_EndianSwap16(u16 Data)
|
||||||
|
{
|
||||||
|
return (u16) (((Data & 0xFF00U) >> 8U) | ((Data & 0x00FFU) << 8U));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @brief Perform a 32-bit endian conversion.
|
||||||
|
*
|
||||||
|
* @param Data : 32 bit value to be converted
|
||||||
|
*
|
||||||
|
* @return 32 bit data with converted endianness
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
static INLINE __attribute__((always_inline)) u32 Xil_EndianSwap32(u32 Data)
|
||||||
|
{
|
||||||
|
u16 LoWord;
|
||||||
|
u16 HiWord;
|
||||||
|
|
||||||
|
/* get each of the half words from the 32 bit word */
|
||||||
|
|
||||||
|
LoWord = (u16) (Data & 0x0000FFFFU);
|
||||||
|
HiWord = (u16) ((Data & 0xFFFF0000U) >> 16U);
|
||||||
|
|
||||||
|
/* byte swap each of the 16 bit half words */
|
||||||
|
|
||||||
|
LoWord = (u16)(((LoWord & 0xFF00U) >> 8U) | ((LoWord & 0x00FFU) << 8U));
|
||||||
|
HiWord = (u16)(((HiWord & 0xFF00U) >> 8U) | ((HiWord & 0x00FFU) << 8U));
|
||||||
|
|
||||||
|
/* swap the half words before returning the value */
|
||||||
|
|
||||||
|
return ((((u32)LoWord) << (u32)16U) | (u32)HiWord);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined (__MICROBLAZE__)
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
# define Xil_In16LE Xil_In16 /**< Register Read of 16 Bits in Little Endian */
|
||||||
|
# define Xil_In32LE Xil_In32 /**< Register Read of 32 Bits in Little Endian */
|
||||||
|
# define Xil_Out16LE Xil_Out16 /**< Register Write of 16 Bits in Little Endian */
|
||||||
|
# define Xil_Out32LE Xil_Out32 /**< Register Write of 32 Bits in Little Endian */
|
||||||
|
# define Xil_Htons Xil_EndianSwap16 /**< Endian swap of 16 bits */
|
||||||
|
# define Xil_Htonl Xil_EndianSwap32 /**< Endian swap of 32 bits */
|
||||||
|
# define Xil_Ntohs Xil_EndianSwap16 /**< Endian swap of 16 bits */
|
||||||
|
# define Xil_Ntohl Xil_EndianSwap32 /**< Endian swap of 32 bits */
|
||||||
|
# else
|
||||||
|
# define Xil_In16BE Xil_In16 /**< Register Read of 16 Bits in Big Endian */
|
||||||
|
# define Xil_In32BE Xil_In32 /**< Register Read of 32 Bits in Big Endian */
|
||||||
|
# define Xil_Out16BE Xil_Out16 /**< Register Write of 16 Bits in Big Endian */
|
||||||
|
# define Xil_Out32BE Xil_Out32 /**< Register Write of 32 Bits in Big Endian */
|
||||||
|
# define Xil_Htons(Data) (Data) /**< Endian swap of 16 bits */
|
||||||
|
# define Xil_Htonl(Data) (Data) /**< Endian swap of 32 bits */
|
||||||
|
# define Xil_Ntohs(Data) (Data) /**< Endian swap of 16 bits */
|
||||||
|
# define Xil_Ntohl(Data) (Data) /**< Endian swap of 32 bits */
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
# define Xil_In16LE Xil_In16 /**< Register Read of 16 Bits in Little Endian */
|
||||||
|
# define Xil_In32LE Xil_In32 /**< Register Read of 32 Bits in Little Endian */
|
||||||
|
# define Xil_Out16LE Xil_Out16 /**< Register Write of 16 Bits in Little Endian */
|
||||||
|
# define Xil_Out32LE Xil_Out32 /**< Register Write of 32 Bits in Little Endian */
|
||||||
|
# define Xil_Htons Xil_EndianSwap16 /**< Endian swap of 16 bits */
|
||||||
|
# define Xil_Htonl Xil_EndianSwap32 /**< Endian swap of 32 bits */
|
||||||
|
# define Xil_Ntohs Xil_EndianSwap16 /**< Endian swap of 16 bits */
|
||||||
|
# define Xil_Ntohl Xil_EndianSwap32 /**< Endian swap of 32 bits */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__MICROBLAZE__)
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
static INLINE u16 Xil_In16BE(UINTPTR Addr) /**< Static inline function to Read
|
||||||
|
Register of 16 Bits in Big Endian */
|
||||||
|
#else
|
||||||
|
static INLINE u16 Xil_In16LE(UINTPTR Addr) /**< Static inline function to Read
|
||||||
|
Register of 16 Bits in Little Endian */
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
/**
|
||||||
|
* Static inline function to Read Register of 16 Bits in Big Endian.
|
||||||
|
**********************************************************************************/
|
||||||
|
static INLINE u16 Xil_In16BE(UINTPTR Addr)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
u16 value = Xil_In16(Addr);
|
||||||
|
return Xil_EndianSwap16(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined (__MICROBLAZE__)
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
static INLINE u32 Xil_In32BE(UINTPTR Addr) /**< Static inline function to Read
|
||||||
|
Register of 32 Bits in Big Endian */
|
||||||
|
#else
|
||||||
|
static INLINE u32 Xil_In32LE(UINTPTR Addr) /**< Static inline function to Read
|
||||||
|
Register of 32 Bits in Little Endian */
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
/**
|
||||||
|
* Static inline function to Read Register of 32 Bits in Big Endian.
|
||||||
|
**********************************************************************************/
|
||||||
|
static INLINE u32 Xil_In32BE(UINTPTR Addr)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
u32 value = Xil_In32(Addr);
|
||||||
|
return Xil_EndianSwap32(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined (__MICROBLAZE__)
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
static INLINE void Xil_Out16BE(UINTPTR Addr, u16 Value) /**< Static inline function to write
|
||||||
|
Register of 16 Bits in Big Endian */
|
||||||
|
#else
|
||||||
|
static INLINE void Xil_Out16LE(UINTPTR Addr, u16 Value) /**< Static inline function to write
|
||||||
|
Register of 16 Bits in Little Endian */
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
/**
|
||||||
|
* Static inline function to write Register of 16 Bits in Big Endian.
|
||||||
|
**********************************************************************************/
|
||||||
|
static INLINE void Xil_Out16BE(UINTPTR Addr, u16 Value)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
Value = Xil_EndianSwap16(Value);
|
||||||
|
Xil_Out16(Addr, Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined (__MICROBLAZE__)
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
static INLINE void Xil_Out32BE(UINTPTR Addr, u32 Value) /**< Static inline function to write
|
||||||
|
Register of 32 Bits in Big Endian */
|
||||||
|
#else
|
||||||
|
static INLINE void Xil_Out32LE(UINTPTR Addr, u32 Value) /**< Static inline function to write
|
||||||
|
Register of 32 Bits in Little Endian */
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
/**
|
||||||
|
* Static inline function to Read Register of 16 Bits in Big Endian.
|
||||||
|
**********************************************************************************/
|
||||||
|
static INLINE void Xil_Out32BE(UINTPTR Addr, u32 Value)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
Value = Xil_EndianSwap32(Value);
|
||||||
|
Xil_Out32(Addr, Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
|
/**
|
||||||
|
* @} End of "addtogroup common_io_interfacing_apis".
|
||||||
|
*/
|
||||||
+1113
File diff suppressed because it is too large
Load Diff
+48
@@ -0,0 +1,48 @@
|
|||||||
|
/******************************************************************************/
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2015 - 2020 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file xil_mem.h
|
||||||
|
*
|
||||||
|
* @addtogroup common_mem_operation_api Customized APIs for Memory Operations
|
||||||
|
*
|
||||||
|
* The xil_mem.h file contains prototype for functions related
|
||||||
|
* to memory operations. These APIs are applicable for all processors supported
|
||||||
|
* by Xilinx.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- -------- -------- -----------------------------------------------
|
||||||
|
* 6.1 nsk 11/07/16 First release.
|
||||||
|
* 7.0 mus 01/07/19 Add cpp extern macro
|
||||||
|
* 9.0 ml 03/03/23 Add description to fix doxygen warnings.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
#ifndef XIL_MEM_H /**< prevent circular inclusions */
|
||||||
|
#define XIL_MEM_H /**< by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************** Function Prototypes *****************************/
|
||||||
|
|
||||||
|
void Xil_MemCpy(void* dst, const void* src, u32 cnt);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* XIL_MEM_H */
|
||||||
|
/**
|
||||||
|
* @} End of "addtogroup common_mem_operation_api".
|
||||||
|
*/
|
||||||
+263
@@ -0,0 +1,263 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2013 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file xil_misc_psreset_api.h
|
||||||
|
*
|
||||||
|
* This file contains the various register definitions and function prototypes for
|
||||||
|
* implementing the reset functionality of zynq ps devices
|
||||||
|
*
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------------
|
||||||
|
* 1.00b kpc 03/07/13 First release.
|
||||||
|
* 9.0 ml 03/03/23 Add description to fix doxygen warnings.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef XIL_MISC_RESET_H /**< prevent circular inclusions */
|
||||||
|
#define XIL_MISC_RESET_H /**< by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xil_io.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XDDRC_CTRL_BASEADDR 0xF8006000U
|
||||||
|
#define XSLCR_BASEADDR 0xF8000000U
|
||||||
|
/**< OCM configuration register */
|
||||||
|
#define XSLCR_OCM_CFG_ADDR (XSLCR_BASEADDR + 0x00000910U)
|
||||||
|
/**< SLCR unlock register */
|
||||||
|
#define XSLCR_UNLOCK_ADDR (XSLCR_BASEADDR + 0x00000008U)
|
||||||
|
/**< SLCR GEM0 rx clock control register */
|
||||||
|
#define XSLCR_GEM0_RCLK_CTRL_ADDR (XSLCR_BASEADDR + 0x00000138U)
|
||||||
|
/**< SLCR GEM1 rx clock control register */
|
||||||
|
#define XSLCR_GEM1_RCLK_CTRL_ADDR (XSLCR_BASEADDR + 0x0000013CU)
|
||||||
|
/**< SLCR GEM0 clock control register */
|
||||||
|
#define XSLCR_GEM0_CLK_CTRL_ADDR (XSLCR_BASEADDR + 0x00000140U)
|
||||||
|
/**< SLCR GEM1 clock control register */
|
||||||
|
#define XSLCR_GEM1_CLK_CTRL_ADDR (XSLCR_BASEADDR + 0x00000144U)
|
||||||
|
/**< SLCR SMC clock control register */
|
||||||
|
#define XSLCR_SMC_CLK_CTRL_ADDR (XSLCR_BASEADDR + 0x00000148U)
|
||||||
|
/**< SLCR GEM reset control register */
|
||||||
|
#define XSLCR_GEM_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000214U)
|
||||||
|
/**< SLCR USB0 clock control register */
|
||||||
|
#define XSLCR_USB0_CLK_CTRL_ADDR (XSLCR_BASEADDR + 0x00000130U)
|
||||||
|
/**< SLCR USB1 clock control register */
|
||||||
|
#define XSLCR_USB1_CLK_CTRL_ADDR (XSLCR_BASEADDR + 0x00000134U)
|
||||||
|
/**< SLCR USB1 reset control register */
|
||||||
|
#define XSLCR_USB_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000210U)
|
||||||
|
/**< SLCR SMC reset control register */
|
||||||
|
#define XSLCR_SMC_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000234U)
|
||||||
|
/**< SLCR Level shifter enable register */
|
||||||
|
#define XSLCR_LVL_SHFTR_EN_ADDR (XSLCR_BASEADDR + 0x00000900U)
|
||||||
|
/**< SLCR ARM pll control register */
|
||||||
|
#define XSLCR_ARM_PLL_CTRL_ADDR (XSLCR_BASEADDR + 0x00000100U)
|
||||||
|
/**< SLCR DDR pll control register */
|
||||||
|
#define XSLCR_DDR_PLL_CTRL_ADDR (XSLCR_BASEADDR + 0x00000104U)
|
||||||
|
/**< SLCR IO pll control register */
|
||||||
|
#define XSLCR_IO_PLL_CTRL_ADDR (XSLCR_BASEADDR + 0x00000108U)
|
||||||
|
/**< SLCR ARM pll configuration register */
|
||||||
|
#define XSLCR_ARM_PLL_CFG_ADDR (XSLCR_BASEADDR + 0x00000110U)
|
||||||
|
/**< SLCR DDR pll configuration register */
|
||||||
|
#define XSLCR_DDR_PLL_CFG_ADDR (XSLCR_BASEADDR + 0x00000114U)
|
||||||
|
/**< SLCR IO pll configuration register */
|
||||||
|
#define XSLCR_IO_PLL_CFG_ADDR (XSLCR_BASEADDR + 0x00000118U)
|
||||||
|
/**< SLCR ARM clock control register */
|
||||||
|
#define XSLCR_ARM_CLK_CTRL_ADDR (XSLCR_BASEADDR + 0x00000120U)
|
||||||
|
/**< SLCR DDR clock control register */
|
||||||
|
#define XSLCR_DDR_CLK_CTRL_ADDR (XSLCR_BASEADDR + 0x00000124U)
|
||||||
|
/**< SLCR MIO pin address register */
|
||||||
|
#define XSLCR_MIO_PIN_00_ADDR (XSLCR_BASEADDR + 0x00000700U)
|
||||||
|
/**< SLCR DMAC reset control address register */
|
||||||
|
#define XSLCR_DMAC_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x0000020CU)
|
||||||
|
/**< SLCR USB reset control address register */
|
||||||
|
/*#define XSLCR_USB_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000210U)*/
|
||||||
|
/**< SLCR GEM reset control address register */
|
||||||
|
/*#define XSLCR_GEM_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000214U)*/
|
||||||
|
/**< SLCR SDIO reset control address register */
|
||||||
|
#define XSLCR_SDIO_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000218U)
|
||||||
|
/**< SLCR SPI reset control address register */
|
||||||
|
#define XSLCR_SPI_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x0000021CU)
|
||||||
|
/**< SLCR CAN reset control address register */
|
||||||
|
#define XSLCR_CAN_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000220U)
|
||||||
|
/**< SLCR I2C reset control address register */
|
||||||
|
#define XSLCR_I2C_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000224U)
|
||||||
|
/**< SLCR UART reset control address register */
|
||||||
|
#define XSLCR_UART_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000228U)
|
||||||
|
/**< SLCR GPIO reset control address register */
|
||||||
|
#define XSLCR_GPIO_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x0000022CU)
|
||||||
|
/**< SLCR LQSPI reset control address register */
|
||||||
|
#define XSLCR_LQSPI_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000230U)
|
||||||
|
/**< SLCR SMC reset control address register */
|
||||||
|
/*#define XSLCR_SMC_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000234U)*/
|
||||||
|
/**< SLCR OCM reset control address register */
|
||||||
|
#define XSLCR_OCM_RST_CTRL_ADDR (XSLCR_BASEADDR + 0x00000238U)
|
||||||
|
|
||||||
|
/**< SMC mem controller clear config register */
|
||||||
|
#define XSMC_MEMC_CLR_CONFIG_OFFSET 0x0000000CU
|
||||||
|
/**< SMC idlecount configuration register */
|
||||||
|
#define XSMC_REFRESH_PERIOD_0_OFFSET 0x00000020U
|
||||||
|
#define XSMC_REFRESH_PERIOD_1_OFFSET 0x00000024U
|
||||||
|
/**< SMC ECC configuration register */
|
||||||
|
#define XSMC_ECC_MEMCFG1_OFFSET 0x00000404U
|
||||||
|
/**< SMC ECC command 1 register */
|
||||||
|
#define XSMC_ECC_MEMCMD1_OFFSET 0x00000404U
|
||||||
|
/**< SMC ECC command 2 register */
|
||||||
|
#define XSMC_ECC_MEMCMD2_OFFSET 0x00000404U
|
||||||
|
|
||||||
|
/**< SLCR unlock code */
|
||||||
|
#define XSLCR_UNLOCK_CODE 0x0000DF0DU
|
||||||
|
|
||||||
|
/**< SMC mem clear configuration mask */
|
||||||
|
#define XSMC_MEMC_CLR_CONFIG_MASK 0x000005FU
|
||||||
|
/**< SMC ECC memconfig 1 reset value */
|
||||||
|
#define XSMC_ECC_MEMCFG1_RESET_VAL 0x0000043U
|
||||||
|
/**< SMC ECC memcommand 1 reset value */
|
||||||
|
#define XSMC_ECC_MEMCMD1_RESET_VAL 0x01300080U
|
||||||
|
/**< SMC ECC memcommand 2 reset value */
|
||||||
|
#define XSMC_ECC_MEMCMD2_RESET_VAL 0x01E00585U
|
||||||
|
|
||||||
|
/**< DDR controller reset bit mask */
|
||||||
|
#define XDDRPS_CTRL_RESET_MASK 0x00000001U
|
||||||
|
/**< SLCR OCM configuration reset value*/
|
||||||
|
#define XSLCR_OCM_CFG_RESETVAL 0x00000008U
|
||||||
|
/**< SLCR OCM bank selection mask*/
|
||||||
|
#define XSLCR_OCM_CFG_HIADDR_MASK 0x0000000FU
|
||||||
|
/**< SLCR level shifter enable mask*/
|
||||||
|
#define XSLCR_LVL_SHFTR_EN_MASK 0x0000000FU
|
||||||
|
|
||||||
|
/**< SLCR PLL register reset values */
|
||||||
|
#define XSLCR_ARM_PLL_CTRL_RESET_VAL 0x0001A008U
|
||||||
|
#define XSLCR_DDR_PLL_CTRL_RESET_VAL 0x0001A008U
|
||||||
|
#define XSLCR_IO_PLL_CTRL_RESET_VAL 0x0001A008U
|
||||||
|
#define XSLCR_ARM_PLL_CFG_RESET_VAL 0x00177EA0U
|
||||||
|
#define XSLCR_DDR_PLL_CFG_RESET_VAL 0x00177EA0U
|
||||||
|
#define XSLCR_IO_PLL_CFG_RESET_VAL 0x00177EA0U
|
||||||
|
#define XSLCR_ARM_CLK_CTRL_RESET_VAL 0x1F000400U
|
||||||
|
#define XSLCR_DDR_CLK_CTRL_RESET_VAL 0x18400003U
|
||||||
|
|
||||||
|
/**< SLCR MIO register default values */
|
||||||
|
#define XSLCR_MIO_PIN_00_RESET_VAL 0x00001601U
|
||||||
|
#define XSLCR_MIO_PIN_02_RESET_VAL 0x00000601U
|
||||||
|
|
||||||
|
/**< SLCR Reset control registers default values */
|
||||||
|
#define XSLCR_DMAC_RST_CTRL_VAL 0x00000001U
|
||||||
|
#define XSLCR_GEM_RST_CTRL_VAL 0x000000F3U
|
||||||
|
#define XSLCR_USB_RST_CTRL_VAL 0x00000003U
|
||||||
|
#define XSLCR_I2C_RST_CTRL_VAL 0x00000003U
|
||||||
|
#define XSLCR_SPI_RST_CTRL_VAL 0x0000000FU
|
||||||
|
#define XSLCR_UART_RST_CTRL_VAL 0x0000000FU
|
||||||
|
#define XSLCR_QSPI_RST_CTRL_VAL 0x00000003U
|
||||||
|
#define XSLCR_GPIO_RST_CTRL_VAL 0x00000001U
|
||||||
|
#define XSLCR_SMC_RST_CTRL_VAL 0x00000003U
|
||||||
|
#define XSLCR_OCM_RST_CTRL_VAL 0x00000001U
|
||||||
|
#define XSLCR_SDIO_RST_CTRL_VAL 0x00000033U
|
||||||
|
#define XSLCR_CAN_RST_CTRL_VAL 0x00000003U
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/* the following data type is used to hold a null terminated version string
|
||||||
|
* consisting of the following format, "X.YYX"
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
/*
|
||||||
|
* Performs reset operation to the ddr interface
|
||||||
|
*/
|
||||||
|
void XDdr_ResetHw(void);
|
||||||
|
/*
|
||||||
|
* Map the ocm region to post bootrom state
|
||||||
|
*/
|
||||||
|
void XOcm_Remap(void);
|
||||||
|
/*
|
||||||
|
* Performs the smc interface reset
|
||||||
|
*/
|
||||||
|
void XSmc_ResetHw(u32 BaseAddress);
|
||||||
|
/*
|
||||||
|
* updates the MIO registers with reset values
|
||||||
|
*/
|
||||||
|
void XSlcr_MioWriteResetValues(void);
|
||||||
|
/*
|
||||||
|
* updates the PLL and clock registers with reset values
|
||||||
|
*/
|
||||||
|
void XSlcr_PllWriteResetValues(void);
|
||||||
|
/*
|
||||||
|
* Disables the level shifters
|
||||||
|
*/
|
||||||
|
void XSlcr_DisableLevelShifters(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the GPIO interface
|
||||||
|
*/
|
||||||
|
void XSlcr_GpioPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the DMA interface
|
||||||
|
*/
|
||||||
|
void XSlcr_DmaPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the SMC interface
|
||||||
|
*/
|
||||||
|
void XSlcr_SmcPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the CAN interface
|
||||||
|
*/
|
||||||
|
void XSlcr_CanPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the Uart interface
|
||||||
|
*/
|
||||||
|
void XSlcr_UartPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the I2C interface
|
||||||
|
*/
|
||||||
|
void XSlcr_I2cPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the SPI interface
|
||||||
|
*/
|
||||||
|
void XSlcr_SpiPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the QSPI interface
|
||||||
|
*/
|
||||||
|
void XSlcr_QspiPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the USB interface
|
||||||
|
*/
|
||||||
|
void XSlcr_UsbPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the GEM interface
|
||||||
|
*/
|
||||||
|
void XSlcr_EmacPsReset(void);
|
||||||
|
/*
|
||||||
|
* provides softreset to the OCM interface
|
||||||
|
*/
|
||||||
|
void XSlcr_OcmReset(void);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* XIL_MISC_RESET_H */
|
||||||
+92
@@ -0,0 +1,92 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (c) 2012 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file xil_mmu.h
|
||||||
|
*
|
||||||
|
* @addtogroup a9_mmu_apis Cortex A9 Processor MMU Functions
|
||||||
|
*
|
||||||
|
* MMU functions equip users to enable MMU, disable MMU and modify default
|
||||||
|
* memory attributes of MMU table as per the need.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- ---------------------------------------------------
|
||||||
|
* 1.00a sdm 01/12/12 Initial version
|
||||||
|
* 4.2 pkp 07/21/14 Included xil_types.h file which contains definition for
|
||||||
|
* u32 which resolves issue of CR#805869
|
||||||
|
* 5.4 pkp 23/11/15 Added attribute definitions for Xil_SetTlbAttributes API
|
||||||
|
* 6.8 aru 09/06/18 Removed compilation warnings for ARMCC toolchain.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XIL_MMU_H
|
||||||
|
#define XIL_MMU_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
/***************************** Include Files *********************************/
|
||||||
|
|
||||||
|
#include "xil_types.h"
|
||||||
|
|
||||||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
/* Memory type */
|
||||||
|
#define NORM_NONCACHE 0x11DE2 /* Normal Non-cacheable */
|
||||||
|
#define STRONG_ORDERED 0xC02 /* Strongly ordered */
|
||||||
|
#define DEVICE_MEMORY 0xC06 /* Device memory */
|
||||||
|
#define RESERVED 0x0 /* reserved memory */
|
||||||
|
|
||||||
|
/* Normal write-through cacheable shareable */
|
||||||
|
#define NORM_WT_CACHE 0x16DEA
|
||||||
|
|
||||||
|
/* Normal write back cacheable shareable */
|
||||||
|
#define NORM_WB_CACHE 0x15DE6
|
||||||
|
|
||||||
|
/* shareability attribute */
|
||||||
|
#define SHAREABLE (0x1 << 16)
|
||||||
|
#define NON_SHAREABLE (~(0x1 << 16))
|
||||||
|
|
||||||
|
/* Execution type */
|
||||||
|
#define EXECUTE_NEVER ((0x1 << 4) | (0x1 << 0))
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
|
|
||||||
|
/************************** Variable Definitions *****************************/
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
void Xil_SetTlbAttributes(INTPTR Addr, u32 attrib);
|
||||||
|
void Xil_EnableMMU(void);
|
||||||
|
void Xil_DisableMMU(void);
|
||||||
|
void* Xil_MemMap(UINTPTR PhysAddr, size_t size, u32 flags);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* XIL_MMU_H */
|
||||||
|
/**
|
||||||
|
* @} End of "addtogroup a9_mmu_apis".
|
||||||
|
*/
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 1995 - 2021 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*******************************************************************************/
|
||||||
|
#ifndef XIL_PRINTF_H
|
||||||
|
#define XIL_PRINTF_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "bspconfig.h"
|
||||||
|
#ifndef SDT
|
||||||
|
#include "xparameters.h"
|
||||||
|
#endif
|
||||||
|
#if defined (__aarch64__) && HYP_GUEST && EL1_NONSECURE && XEN_USE_PV_CONSOLE
|
||||||
|
#include "xen_console.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*----------------------------------------------------*/
|
||||||
|
/* Use the following parameter passing structure to */
|
||||||
|
/* make xil_printf re-entrant. */
|
||||||
|
/*----------------------------------------------------*/
|
||||||
|
|
||||||
|
struct params_s;
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------*/
|
||||||
|
/* The purpose of this routine is to output data the */
|
||||||
|
/* same as the standard printf function without the */
|
||||||
|
/* overhead most run-time libraries involve. Usually */
|
||||||
|
/* the printf brings in many kilobytes of code and */
|
||||||
|
/* that is unacceptable in most embedded systems. */
|
||||||
|
/*---------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef char8* charptr;
|
||||||
|
typedef s32 (*func_ptr)(int c);
|
||||||
|
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
/**< prints the statement */
|
||||||
|
void xil_printf( const char8 *ctrl1, ...);
|
||||||
|
/**< This routine is equivalent to vprintf routine */
|
||||||
|
void xil_vprintf(const char8 *ctrl1, va_list argp);
|
||||||
|
void print( const char8 *ptr);
|
||||||
|
extern void outbyte (char c); /**< To send byte */
|
||||||
|
extern char inbyte(void); /**< To receive byte */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* end of protection macro */
|
||||||
+120
@@ -0,0 +1,120 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2017 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_sleeptimer.h
|
||||||
|
*
|
||||||
|
* This header file contains ARM Cortex A53,A9,R5 specific sleep related APIs.
|
||||||
|
* For sleep related functions that can be used across all Xilinx supported
|
||||||
|
* processors, please use xil_sleeptimer.h.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY :
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- ---- -------- -------------------------------------------------------
|
||||||
|
* 6.6 srm 10/18/17 First Release.
|
||||||
|
* 7.0 mus 01/07/19 Add cpp extern macro
|
||||||
|
* 7.7 sk 01/10/22 Add explicit parentheses for EL3==1 to fix
|
||||||
|
* misra_c_2012_rule_12_1 violation.
|
||||||
|
* 7.7 sk 01/10/22 Add void to XTime_StartTTCTimer function declaration
|
||||||
|
* to fix misra_c_2012_rule_8_2 violation.
|
||||||
|
* 9.0 ml 03/03/23 Add description to fix doxygen warnings.
|
||||||
|
* </pre>
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@cond nocomments
|
||||||
|
*/
|
||||||
|
#ifndef XIL_SLEEPTIMER_H /* prevent circular inclusions */
|
||||||
|
#define XIL_SLEEPTIMER_H /* by using protection macros */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**************************** Include Files ********************************/
|
||||||
|
|
||||||
|
#include "xil_io.h"
|
||||||
|
#include "xparameters.h"
|
||||||
|
#include "bspconfig.h"
|
||||||
|
|
||||||
|
/************************** Constant Definitions *****************************/
|
||||||
|
|
||||||
|
#if defined (ARMR5) || (__aarch64__) || (ARMA53_32)
|
||||||
|
#define XSLEEP_TIMER_REG_SHIFT 32U
|
||||||
|
#define XSleep_ReadCounterVal Xil_In32
|
||||||
|
#define XCntrVal u32
|
||||||
|
#else
|
||||||
|
#define XSLEEP_TIMER_REG_SHIFT 16U
|
||||||
|
#define XSleep_ReadCounterVal Xil_In16
|
||||||
|
#define XCntrVal u16
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARMR5) || (defined (__aarch64__) && (EL3==1)) || defined (ARMA53_32)
|
||||||
|
#if defined (versal)
|
||||||
|
#define CRL_TTC_RST 0xFF5E0344U
|
||||||
|
#define CRL_TTC_BASE_RST_MASK 0x1U
|
||||||
|
#else
|
||||||
|
#define RST_LPD_IOU2 0xFF5E0238U
|
||||||
|
#define RST_LPD_IOU2_TTC_BASE_RESET_MASK 0x00000800U
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (SLEEP_TIMER_BASEADDR)
|
||||||
|
/** @name Register Map
|
||||||
|
*
|
||||||
|
* Register offsets from the base address of the TTC device
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XSLEEP_TIMER_TTC_CLK_CNTRL_OFFSET 0x00000000U
|
||||||
|
/**< Clock Control Register */
|
||||||
|
#define XSLEEP_TIMER_TTC_CNT_CNTRL_OFFSET 0x0000000CU
|
||||||
|
/**< Counter Control Register*/
|
||||||
|
#define XSLEEP_TIMER_TTC_COUNT_VALUE_OFFSET 0x00000018U
|
||||||
|
/**< Current Counter Value */
|
||||||
|
/* @} */
|
||||||
|
/** @name Clock Control Register
|
||||||
|
* Clock Control Register definitions of TTC
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XSLEEP_TIMER_TTC_CLK_CNTRL_PS_EN_MASK 0x00000001U
|
||||||
|
/**< Prescale enable */
|
||||||
|
/* @} */
|
||||||
|
/** @name Counter Control Register
|
||||||
|
* Counter Control Register definitions of TTC
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define XSLEEP_TIMER_TTC_CNT_CNTRL_DIS_MASK 0x00000001U
|
||||||
|
/**< Disable the counter */
|
||||||
|
#define XSLEEP_TIMER_TTC_CNT_CNTRL_RST_MASK 0x00000010U
|
||||||
|
/**< Reset counter */
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
/**************************** Type Definitions *******************************/
|
||||||
|
/**
|
||||||
|
*@endcond
|
||||||
|
*/
|
||||||
|
/************************** Function Prototypes ******************************/
|
||||||
|
|
||||||
|
/**< This is a helper function used by sleep/usleep APIs to
|
||||||
|
* have delay in sec/usec */
|
||||||
|
void Xil_SleepTTCCommon(u32 delay, u64 frequency);
|
||||||
|
|
||||||
|
void XTime_StartTTCTimer(void); /**< This API starts the Triple
|
||||||
|
* Timer Counter */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* XIL_SLEEPTIMER_H */
|
||||||
+83
@@ -0,0 +1,83 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2021 - 2022 Xilinx, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file xil_spinlock.h
|
||||||
|
*
|
||||||
|
* This header file contains function prototypes to be used while using Xilinx
|
||||||
|
* spinlocking mechanism.
|
||||||
|
* Please refer to file header contents of xil_spinlock.c to understand in
|
||||||
|
* detail the spinlocking mechanism.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* MODIFICATION HISTORY:
|
||||||
|
*
|
||||||
|
* Ver Who Date Changes
|
||||||
|
* ----- -------- -------- -----------------------------------------------
|
||||||
|
* 7.5 asa 02/16/21 First release
|
||||||
|
* 7.6 sk 08/05/21 Add Boolean check and braces for Xil_IsSpinLockEnabled
|
||||||
|
* if condition to fix misrac violations.
|
||||||
|
* 7.7 sk 01/10/22 Update XIL_SPINLOCK_ENABLED from signed to unsigned to
|
||||||
|
* fix misra_c_2012_rule_10_4 violation.
|
||||||
|
* 9.0 ml 03/03/23 Add description to fix doxygen warnings.
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef XIL_SPINLOCK_H /**< prevent circular inclusions */
|
||||||
|
#define XIL_SPINLOCK_H /**< by using protection macros */
|
||||||
|
|
||||||
|
/***************************** Include Files ********************************/
|
||||||
|
#include "xil_types.h"
|
||||||
|
#include "xstatus.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#if !defined (__aarch64__) && defined(__GNUC__) && !defined(__clang__)
|
||||||
|
/************************** Function Prototypes *****************************/
|
||||||
|
u32 Xil_SpinLock(void);
|
||||||
|
u32 Xil_SpinUnlock(void);
|
||||||
|
u32 Xil_InitializeSpinLock(UINTPTR lockaddr, UINTPTR lockflagaddr,
|
||||||
|
u32 lockflag);
|
||||||
|
void Xil_ReleaseSpinLock(void);
|
||||||
|
u32 Xil_IsSpinLockEnabled(void);
|
||||||
|
|
||||||
|
/************************** MACRO Definitions ****************************/
|
||||||
|
#define XIL_SPINLOCK_LOCKVAL 0x10203040
|
||||||
|
#define XIL_SPINLOCK_RESETVAL 0x40302010
|
||||||
|
#define XIL_SPINLOCK_ENABLE 0x17273747
|
||||||
|
#define XIL_SPINLOCK_ENABLED 0x17273747U
|
||||||
|
/***************** Macros (Inline Functions) Definitions ********************/
|
||||||
|
|
||||||
|
#endif /* !(__aarch64__) && (__GNUC__) && !(__clang__)*/
|
||||||
|
/***************************************************************************/
|
||||||
|
#if !defined (__aarch64__) && defined(__GNUC__) && !defined(__clang__)
|
||||||
|
#define XIL_SPINLOCK() \
|
||||||
|
if(Xil_IsSpinLockEnabled()!=(u32)0) { \
|
||||||
|
Xil_SpinLock(); }
|
||||||
|
#else
|
||||||
|
#define XIL_SPINLOCK() /**< protect multiple applications running at separate
|
||||||
|
* CPUs to write to the same register */
|
||||||
|
#endif /* !(__aarch64__) && (__GNUC__) && !(__clang__)*/
|
||||||
|
|
||||||
|
#if !defined (__aarch64__) && defined(__GNUC__) && !defined(__clang__)
|
||||||
|
#define XIL_SPINUNLOCK() \
|
||||||
|
if(Xil_IsSpinLockEnabled()!=(u32)0) { \
|
||||||
|
Xil_SpinUnlock(); }
|
||||||
|
#else
|
||||||
|
#define XIL_SPINUNLOCK() /**< Release the lock previously taken */
|
||||||
|
#endif /* !(__aarch64__) && (__GNUC__) && !(__clang__)*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* XIL_SPINLOCK_H */
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user