diff --git a/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/ip/ad9361_fifo/ad9361_fifo.xci b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/ip/ad9361_fifo/ad9361_fifo.xci
new file mode 100644
index 00000000..6f5eb26d
--- /dev/null
+++ b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/ip/ad9361_fifo/ad9361_fifo.xci
@@ -0,0 +1,479 @@
+{
+ "schema": "xilinx.com:schema:json_instance:1.0",
+ "ip_inst": {
+ "xci_name": "ad9361_fifo",
+ "component_reference": "xilinx.com:ip:fifo_generator:13.2",
+ "ip_revision": "9",
+ "gen_directory": "../../../../ad9361_mapping.gen/sources_1/ip/ad9361_fifo",
+ "parameters": {
+ "component_parameters": {
+ "Component_Name": [ { "value": "ad9361_fifo", "resolve_type": "user", "usage": "all" } ],
+ "Fifo_Implementation": [ { "value": "Independent_Clocks_Distributed_RAM", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "synchronization_stages": [ { "value": "3", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "synchronization_stages_axi": [ { "value": "2", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "INTERFACE_TYPE": [ { "value": "Native", "resolve_type": "user", "usage": "all" } ],
+ "Performance_Options": [ { "value": "Standard_FIFO", "resolve_type": "user", "usage": "all" } ],
+ "asymmetric_port_width": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Input_Data_Width": [ { "value": "12", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Input_Depth": [ { "value": "16", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Output_Data_Width": [ { "value": "12", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Output_Depth": [ { "value": "16", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Enable_ECC": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Use_Embedded_Registers": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Reset_Pin": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Enable_Reset_Synchronization": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Reset_Type": [ { "value": "Asynchronous_Reset", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Full_Flags_Reset_Value": [ { "value": "1", "resolve_type": "user", "usage": "all" } ],
+ "Use_Dout_Reset": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Dout_Reset_Value": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "dynamic_power_saving": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Almost_Full_Flag": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Almost_Empty_Flag": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Valid_Flag": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Valid_Sense": [ { "value": "Active_High", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Underflow_Flag": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Underflow_Sense": [ { "value": "Active_High", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Write_Acknowledge_Flag": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Write_Acknowledge_Sense": [ { "value": "Active_High", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Overflow_Flag": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Overflow_Sense": [ { "value": "Active_High", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Inject_Sbit_Error": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Dbit_Error": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "ecc_pipeline_reg": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Use_Extra_Logic": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Data_Count": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Data_Count_Width": [ { "value": "4", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Write_Data_Count": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Write_Data_Count_Width": [ { "value": "4", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Read_Data_Count": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Read_Data_Count_Width": [ { "value": "4", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Disable_Timing_Violations": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Read_Clock_Frequency": [ { "value": "1", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Write_Clock_Frequency": [ { "value": "1", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Programmable_Full_Type": [ { "value": "No_Programmable_Full_Threshold", "resolve_type": "user", "usage": "all" } ],
+ "Full_Threshold_Assert_Value": [ { "value": "13", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Full_Threshold_Negate_Value": [ { "value": "12", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Programmable_Empty_Type": [ { "value": "No_Programmable_Empty_Threshold", "resolve_type": "user", "usage": "all" } ],
+ "Empty_Threshold_Assert_Value": [ { "value": "2", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Empty_Threshold_Negate_Value": [ { "value": "3", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "PROTOCOL": [ { "value": "AXI4", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Clock_Type_AXI": [ { "value": "Common_Clock", "resolve_type": "user", "usage": "all" } ],
+ "HAS_ACLKEN": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Clock_Enable_Type": [ { "value": "Slave_Interface_Clock_Enable", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "READ_WRITE_MODE": [ { "value": "READ_WRITE", "resolve_type": "user", "usage": "all" } ],
+ "ID_WIDTH": [ { "value": "0", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "ADDRESS_WIDTH": [ { "value": "32", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "DATA_WIDTH": [ { "value": "64", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "AWUSER_Width": [ { "value": "0", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "WUSER_Width": [ { "value": "0", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "BUSER_Width": [ { "value": "0", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "ARUSER_Width": [ { "value": "0", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "RUSER_Width": [ { "value": "0", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "TDATA_NUM_BYTES": [ { "value": "1", "resolve_type": "user", "usage": "all" } ],
+ "TID_WIDTH": [ { "value": "0", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "TDEST_WIDTH": [ { "value": "0", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "TUSER_WIDTH": [ { "value": "4", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Enable_TREADY": [ { "value": "true", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Enable_TLAST": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "HAS_TSTRB": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "TSTRB_WIDTH": [ { "value": "1", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "HAS_TKEEP": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "TKEEP_WIDTH": [ { "value": "1", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "wach_type": [ { "value": "FIFO", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Implementation_wach": [ { "value": "Common_Clock_Block_RAM", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Application_Type_wach": [ { "value": "Data_FIFO", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_ECC_wach": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Sbit_Error_wach": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Dbit_Error_wach": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Input_Depth_wach": [ { "value": "16", "resolve_type": "user", "usage": "all" } ],
+ "Enable_Data_Counts_wach": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Programmable_Full_Type_wach": [ { "value": "No_Programmable_Full_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Full_Threshold_Assert_Value_wach": [ { "value": "1023", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Programmable_Empty_Type_wach": [ { "value": "No_Programmable_Empty_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Empty_Threshold_Assert_Value_wach": [ { "value": "1022", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "wdch_type": [ { "value": "FIFO", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Implementation_wdch": [ { "value": "Common_Clock_Block_RAM", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Application_Type_wdch": [ { "value": "Data_FIFO", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_ECC_wdch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Sbit_Error_wdch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Dbit_Error_wdch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Input_Depth_wdch": [ { "value": "1024", "resolve_type": "user", "usage": "all" } ],
+ "Enable_Data_Counts_wdch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Programmable_Full_Type_wdch": [ { "value": "No_Programmable_Full_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Full_Threshold_Assert_Value_wdch": [ { "value": "1023", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Programmable_Empty_Type_wdch": [ { "value": "No_Programmable_Empty_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Empty_Threshold_Assert_Value_wdch": [ { "value": "1022", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "wrch_type": [ { "value": "FIFO", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Implementation_wrch": [ { "value": "Common_Clock_Block_RAM", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Application_Type_wrch": [ { "value": "Data_FIFO", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_ECC_wrch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Sbit_Error_wrch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Dbit_Error_wrch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Input_Depth_wrch": [ { "value": "16", "resolve_type": "user", "usage": "all" } ],
+ "Enable_Data_Counts_wrch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Programmable_Full_Type_wrch": [ { "value": "No_Programmable_Full_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Full_Threshold_Assert_Value_wrch": [ { "value": "1023", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Programmable_Empty_Type_wrch": [ { "value": "No_Programmable_Empty_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Empty_Threshold_Assert_Value_wrch": [ { "value": "1022", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "rach_type": [ { "value": "FIFO", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Implementation_rach": [ { "value": "Common_Clock_Block_RAM", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Application_Type_rach": [ { "value": "Data_FIFO", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_ECC_rach": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Sbit_Error_rach": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Dbit_Error_rach": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Input_Depth_rach": [ { "value": "16", "resolve_type": "user", "usage": "all" } ],
+ "Enable_Data_Counts_rach": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Programmable_Full_Type_rach": [ { "value": "No_Programmable_Full_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Full_Threshold_Assert_Value_rach": [ { "value": "1023", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Programmable_Empty_Type_rach": [ { "value": "No_Programmable_Empty_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Empty_Threshold_Assert_Value_rach": [ { "value": "1022", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "rdch_type": [ { "value": "FIFO", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Implementation_rdch": [ { "value": "Common_Clock_Block_RAM", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Application_Type_rdch": [ { "value": "Data_FIFO", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_ECC_rdch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Sbit_Error_rdch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Dbit_Error_rdch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Input_Depth_rdch": [ { "value": "1024", "resolve_type": "user", "usage": "all" } ],
+ "Enable_Data_Counts_rdch": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Programmable_Full_Type_rdch": [ { "value": "No_Programmable_Full_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Full_Threshold_Assert_Value_rdch": [ { "value": "1023", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Programmable_Empty_Type_rdch": [ { "value": "No_Programmable_Empty_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Empty_Threshold_Assert_Value_rdch": [ { "value": "1022", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "axis_type": [ { "value": "FIFO", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Implementation_axis": [ { "value": "Common_Clock_Block_RAM", "resolve_type": "user", "usage": "all" } ],
+ "FIFO_Application_Type_axis": [ { "value": "Data_FIFO", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_ECC_axis": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Sbit_Error_axis": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Inject_Dbit_Error_axis": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Input_Depth_axis": [ { "value": "1024", "resolve_type": "user", "usage": "all" } ],
+ "Enable_Data_Counts_axis": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Programmable_Full_Type_axis": [ { "value": "No_Programmable_Full_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Full_Threshold_Assert_Value_axis": [ { "value": "1023", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Programmable_Empty_Type_axis": [ { "value": "No_Programmable_Empty_Threshold", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Empty_Threshold_Assert_Value_axis": [ { "value": "1022", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Register_Slice_Mode_wach": [ { "value": "Fully_Registered", "resolve_type": "user", "usage": "all" } ],
+ "Register_Slice_Mode_wdch": [ { "value": "Fully_Registered", "resolve_type": "user", "usage": "all" } ],
+ "Register_Slice_Mode_wrch": [ { "value": "Fully_Registered", "resolve_type": "user", "usage": "all" } ],
+ "Register_Slice_Mode_rach": [ { "value": "Fully_Registered", "resolve_type": "user", "usage": "all" } ],
+ "Register_Slice_Mode_rdch": [ { "value": "Fully_Registered", "resolve_type": "user", "usage": "all" } ],
+ "Register_Slice_Mode_axis": [ { "value": "Fully_Registered", "resolve_type": "user", "usage": "all" } ],
+ "Underflow_Flag_AXI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Underflow_Sense_AXI": [ { "value": "Active_High", "resolve_type": "user", "usage": "all" } ],
+ "Overflow_Flag_AXI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Overflow_Sense_AXI": [ { "value": "Active_High", "resolve_type": "user", "usage": "all" } ],
+ "Disable_Timing_Violations_AXI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Add_NGC_Constraint_AXI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Enable_Common_Underflow": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Enable_Common_Overflow": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "enable_read_pointer_increment_by2": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Use_Embedded_Registers_axis": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "enable_low_latency": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "use_dout_register": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Master_interface_Clock_enable_memory_mapped": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Slave_interface_Clock_enable_memory_mapped": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Output_Register_Type": [ { "value": "Embedded_Reg", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_Safety_Circuit": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Enable_ECC_Type": [ { "value": "Hard_ECC", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "C_SELECT_XPM": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "all" } ]
+ },
+ "model_parameters": {
+ "C_COMMON_CLOCK": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_SELECT_XPM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COUNT_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DATA_COUNT_WIDTH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DEFAULT_VALUE": [ { "value": "BlankString", "resolve_type": "generated", "usage": "all" } ],
+ "C_DIN_WIDTH": [ { "value": "12", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DOUT_RST_VAL": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_DOUT_WIDTH": [ { "value": "12", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ENABLE_RLOCS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_FAMILY": [ { "value": "zynq", "resolve_type": "generated", "usage": "all" } ],
+ "C_FULL_FLAGS_RST_VAL": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_ALMOST_EMPTY": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_ALMOST_FULL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_BACKUP": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_DATA_COUNT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_INT_CLK": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_MEMINIT_FILE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_OVERFLOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_RD_DATA_COUNT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_RD_RST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_RST": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_SRST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_UNDERFLOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_VALID": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_WR_ACK": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_WR_DATA_COUNT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_WR_RST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_IMPLEMENTATION_TYPE": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_INIT_WR_PNTR_VAL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MEMORY_TYPE": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MIF_FILE_NAME": [ { "value": "BlankString", "resolve_type": "generated", "usage": "all" } ],
+ "C_OPTIMIZATION_MODE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OVERFLOW_LOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PRELOAD_LATENCY": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PRELOAD_REGS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PRIM_FIFO_TYPE": [ { "value": "512x36", "resolve_type": "generated", "usage": "all" } ],
+ "C_PROG_EMPTY_THRESH_ASSERT_VAL": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_THRESH_NEGATE_VAL": [ { "value": "3", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_THRESH_ASSERT_VAL": [ { "value": "13", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_THRESH_NEGATE_VAL": [ { "value": "12", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RD_DATA_COUNT_WIDTH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RD_DEPTH": [ { "value": "16", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RD_FREQ": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RD_PNTR_WIDTH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_UNDERFLOW_LOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_DOUT_RST": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_ECC": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_EMBEDDED_REG": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_PIPELINE_REG": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_POWER_SAVING_MODE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_FIFO16_FLAGS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_FWFT_DATA_COUNT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_VALID_LOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_ACK_LOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_DATA_COUNT_WIDTH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_DEPTH": [ { "value": "16", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_FREQ": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_PNTR_WIDTH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_RESPONSE_LATENCY": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MSGON_VAL": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ENABLE_RST_SYNC": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_EN_SAFETY_CKT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ERROR_INJECTION_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_SYNCHRONIZER_STAGE": [ { "value": "3", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_INTERFACE_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_TYPE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXI_WR_CHANNEL": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXI_RD_CHANNEL": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_SLAVE_CE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_MASTER_CE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ADD_NGC_CONSTRAINT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_COMMON_OVERFLOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_COMMON_UNDERFLOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_DEFAULT_SETTINGS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_ID_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_ADDR_WIDTH": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_DATA_WIDTH": [ { "value": "64", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_LEN_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_LOCK_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXI_ID": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXI_AWUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXI_WUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXI_BUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXI_ARUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXI_RUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_ARUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_AWUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_WUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_BUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_RUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXIS_TDATA": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXIS_TID": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXIS_TDEST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXIS_TUSER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXIS_TREADY": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXIS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXIS_TSTRB": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_AXIS_TKEEP": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXIS_TDATA_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXIS_TID_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXIS_TDEST_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXIS_TUSER_WIDTH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXIS_TSTRB_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXIS_TKEEP_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WACH_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WDCH_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WRCH_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RACH_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RDCH_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXIS_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_IMPLEMENTATION_TYPE_WACH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_IMPLEMENTATION_TYPE_WDCH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_IMPLEMENTATION_TYPE_WRCH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_IMPLEMENTATION_TYPE_RACH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_IMPLEMENTATION_TYPE_RDCH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_IMPLEMENTATION_TYPE_AXIS": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_APPLICATION_TYPE_WACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_APPLICATION_TYPE_WDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_APPLICATION_TYPE_WRCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_APPLICATION_TYPE_RACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_APPLICATION_TYPE_RDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_APPLICATION_TYPE_AXIS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PRIM_FIFO_TYPE_WACH": [ { "value": "512x36", "resolve_type": "generated", "usage": "all" } ],
+ "C_PRIM_FIFO_TYPE_WDCH": [ { "value": "1kx36", "resolve_type": "generated", "usage": "all" } ],
+ "C_PRIM_FIFO_TYPE_WRCH": [ { "value": "512x36", "resolve_type": "generated", "usage": "all" } ],
+ "C_PRIM_FIFO_TYPE_RACH": [ { "value": "512x36", "resolve_type": "generated", "usage": "all" } ],
+ "C_PRIM_FIFO_TYPE_RDCH": [ { "value": "1kx36", "resolve_type": "generated", "usage": "all" } ],
+ "C_PRIM_FIFO_TYPE_AXIS": [ { "value": "1kx18", "resolve_type": "generated", "usage": "all" } ],
+ "C_USE_ECC_WACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_ECC_WDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_ECC_WRCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_ECC_RACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_ECC_RDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_ECC_AXIS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ERROR_INJECTION_TYPE_WACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ERROR_INJECTION_TYPE_WDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ERROR_INJECTION_TYPE_WRCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ERROR_INJECTION_TYPE_RACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ERROR_INJECTION_TYPE_RDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ERROR_INJECTION_TYPE_AXIS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DIN_WIDTH_WACH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DIN_WIDTH_WDCH": [ { "value": "64", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DIN_WIDTH_WRCH": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DIN_WIDTH_RACH": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DIN_WIDTH_RDCH": [ { "value": "64", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DIN_WIDTH_AXIS": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_DEPTH_WACH": [ { "value": "16", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_DEPTH_WDCH": [ { "value": "1024", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_DEPTH_WRCH": [ { "value": "16", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_DEPTH_RACH": [ { "value": "16", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_DEPTH_RDCH": [ { "value": "1024", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_DEPTH_AXIS": [ { "value": "1024", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_PNTR_WIDTH_WACH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_PNTR_WIDTH_WDCH": [ { "value": "10", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_PNTR_WIDTH_WRCH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_PNTR_WIDTH_RACH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_PNTR_WIDTH_RDCH": [ { "value": "10", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WR_PNTR_WIDTH_AXIS": [ { "value": "10", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_DATA_COUNTS_WACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_DATA_COUNTS_WDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_DATA_COUNTS_WRCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_DATA_COUNTS_RACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_DATA_COUNTS_RDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_DATA_COUNTS_AXIS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_PROG_FLAGS_WACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_PROG_FLAGS_WDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_PROG_FLAGS_WRCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_PROG_FLAGS_RACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_PROG_FLAGS_RDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_PROG_FLAGS_AXIS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_TYPE_WACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_TYPE_WDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_TYPE_WRCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_TYPE_RACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_TYPE_RDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_TYPE_AXIS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_THRESH_ASSERT_VAL_WACH": [ { "value": "1023", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_THRESH_ASSERT_VAL_WDCH": [ { "value": "1023", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_THRESH_ASSERT_VAL_WRCH": [ { "value": "1023", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_THRESH_ASSERT_VAL_RACH": [ { "value": "1023", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_THRESH_ASSERT_VAL_RDCH": [ { "value": "1023", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_FULL_THRESH_ASSERT_VAL_AXIS": [ { "value": "1023", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_TYPE_WACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_TYPE_WDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_TYPE_WRCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_TYPE_RACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_TYPE_RDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_TYPE_AXIS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_THRESH_ASSERT_VAL_WACH": [ { "value": "1022", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_THRESH_ASSERT_VAL_WDCH": [ { "value": "1022", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_THRESH_ASSERT_VAL_WRCH": [ { "value": "1022", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_THRESH_ASSERT_VAL_RACH": [ { "value": "1022", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_THRESH_ASSERT_VAL_RDCH": [ { "value": "1022", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PROG_EMPTY_THRESH_ASSERT_VAL_AXIS": [ { "value": "1022", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_REG_SLICE_MODE_WACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_REG_SLICE_MODE_WDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_REG_SLICE_MODE_WRCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_REG_SLICE_MODE_RACH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_REG_SLICE_MODE_RDCH": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_REG_SLICE_MODE_AXIS": [ { "value": "0", "resolve_type": "generated", "format": "long", "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": "9" } ],
+ "MANAGED": [ { "value": "TRUE" } ],
+ "OUTPUTDIR": [ { "value": "../../../../ad9361_mapping.gen/sources_1/ip/ad9361_fifo" } ],
+ "SELECTEDSIMMODEL": [ { "value": "" } ],
+ "SHAREDDIR": [ { "value": "." } ],
+ "SWVERSION": [ { "value": "2023.2.1" } ],
+ "SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ]
+ }
+ },
+ "boundary": {
+ "ports": {
+ "rst": [ { "direction": "in", "driver_value": "0" } ],
+ "wr_clk": [ { "direction": "in", "driver_value": "0" } ],
+ "rd_clk": [ { "direction": "in", "driver_value": "0" } ],
+ "din": [ { "direction": "in", "size_left": "11", "size_right": "0", "driver_value": "0" } ],
+ "wr_en": [ { "direction": "in", "driver_value": "0" } ],
+ "rd_en": [ { "direction": "in", "driver_value": "0" } ],
+ "dout": [ { "direction": "out", "size_left": "11", "size_right": "0", "driver_value": "0" } ],
+ "full": [ { "direction": "out", "driver_value": "0x0" } ],
+ "empty": [ { "direction": "out", "driver_value": "0x1" } ]
+ },
+ "interfaces": {
+ "write_clk": {
+ "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": "user", "format": "long", "usage": "all" } ],
+ "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": [ { "physical_name": "wr_clk" } ]
+ }
+ },
+ "read_clk": {
+ "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": "user", "format": "long", "usage": "all" } ],
+ "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": [ { "physical_name": "rd_clk" } ]
+ }
+ },
+ "FIFO_WRITE": {
+ "vlnv": "xilinx.com:interface:fifo_write:1.0",
+ "abstraction_type": "xilinx.com:interface:fifo_write_rtl:1.0",
+ "mode": "slave",
+ "port_maps": {
+ "FULL": [ { "physical_name": "full" } ],
+ "WR_DATA": [ { "physical_name": "din" } ],
+ "WR_EN": [ { "physical_name": "wr_en" } ]
+ }
+ },
+ "FIFO_READ": {
+ "vlnv": "xilinx.com:interface:fifo_read:1.0",
+ "abstraction_type": "xilinx.com:interface:fifo_read_rtl:1.0",
+ "mode": "slave",
+ "port_maps": {
+ "EMPTY": [ { "physical_name": "empty" } ],
+ "RD_DATA": [ { "physical_name": "dout" } ],
+ "RD_EN": [ { "physical_name": "rd_en" } ]
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_cmos_dual.v b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_cmos_dual.v
new file mode 100644
index 00000000..5e308fa1
--- /dev/null
+++ b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_cmos_dual.v
@@ -0,0 +1,196 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer:
+// _ _ ____
+// | | ___ ___| |__ / ___| __ _ ___
+// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
+// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
+// \___/ \___/|___/_| |_| \____|\__,_|\___/
+//
+// Create Date: 2022/07/01 17:37:27
+// Last Modified Date: 2023/03/06 11:26
+// Design Name:
+// Module Name: ad9361_rx_map_cmos_dual
+// Project Name:
+// Target Devices:
+// Tool Versions:
+// Description:
+//
+// Dependencies:
+//
+// Revision:
+// Revision 0.01 - File Created
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+
+module ad9361_rx_map_cmos_dual
+(
+ input clk_2x_in ,
+ input clk_in_rst ,
+
+ input rx_data_clk , // sync to output data
+ input rx_data_clk_rst ,
+
+ input rx_fifo_rst , // async fifo reset
+
+ input rx_frame ,
+ input [11:0] rx_data ,
+
+ output [11:0] rx_ch1_i ,
+ output [11:0] rx_ch1_q ,
+ output [11:0] rx_ch2_i ,
+ output [11:0] rx_ch2_q
+);
+
+genvar m;
+
+// rx data
+wire [11:0] rx_data_i, rx_data_q;
+
+generate
+for (m=0; m<12; m=m+1) begin : rx_data_iddr
+
+IDDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT_Q1 (1'b0 ),
+ .INIT_Q2 (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) i_rx_data_iddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_2x_in ),
+ .D (rx_data[m] ),
+ .Q1 (rx_data_q[m] ),
+ .Q2 (rx_data_i[m] )
+);
+
+end
+endgenerate
+
+// rx frame
+wire rx_frame_i;
+wire rx_frame_q;
+
+IDDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT_Q1 (1'b0 ),
+ .INIT_Q2 (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) i_rx_frame_iddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_2x_in ),
+ .D (rx_frame ),
+ .Q1 (rx_frame_q ),
+ .Q2 (rx_frame_i )
+);
+
+// divide rx_data to dual channel
+reg [11:0] rx1_data_i = 'b0;
+reg [11:0] rx1_data_q = 'b0;
+reg [11:0] rx2_data_i = 'b0;
+reg [11:0] rx2_data_q = 'b0;
+
+wire rx_fifo_wr_en;
+reg rx_fifo_rd_en = 'b0;
+
+wire rx_fifo_empty_1;
+wire rx_fifo_empty_2;
+wire rx_fifo_empty_3;
+wire rx_fifo_empty_4;
+
+assign rx_fifo_wr_en = rx_frame_i; // align data & write enable
+
+always @ (posedge clk_2x_in) begin
+ if (clk_in_rst) begin
+ rx1_data_i <= 'b0;
+ rx2_data_i <= 'b0;
+ end
+ else if(rx_frame_i) begin
+ rx1_data_i <= rx_data_i;
+ end
+ else begin
+ rx2_data_i <= rx_data_i;
+ end
+end
+
+always @ (posedge clk_2x_in) begin
+ if (clk_in_rst) begin
+ rx1_data_q <= 'b0;
+ rx2_data_q <= 'b0;
+ end
+ else if(rx_frame_q) begin
+ rx1_data_q <= rx_data_q;
+ end
+ else begin
+ rx2_data_q <= rx_data_q;
+ end
+end
+
+always @(posedge rx_data_clk) begin
+ if (rx_data_clk_rst) begin
+ rx_fifo_rd_en <= 'b0;
+ end
+ else begin
+ rx_fifo_rd_en <= &{~rx_fifo_empty_1, ~rx_fifo_empty_2, ~rx_fifo_empty_3, ~rx_fifo_empty_4};
+ end
+end
+
+ad9361_fifo u_rx_fifo_ch1_i
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_2x_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx1_data_i ), // input wire [11 : 0] din
+ .wr_en (rx_fifo_wr_en ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (rx_ch1_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_1) // output wire empty
+);
+
+ad9361_fifo u_rx_fifo_ch1_q
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_2x_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx1_data_q ), // input wire [11 : 0] din
+ .wr_en (rx_fifo_wr_en ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (rx_ch1_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_2) // output wire empty
+);
+
+ad9361_fifo u_rx_fifo_ch2_i
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_2x_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx2_data_i ), // input wire [11 : 0] din
+ .wr_en (rx_fifo_wr_en ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (rx_ch2_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_3) // output wire empty
+);
+
+ad9361_fifo u_rx_fifo_ch2_q
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_2x_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx2_data_q ), // input wire [11 : 0] din
+ .wr_en (rx_fifo_wr_en ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (rx_ch2_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_4) // output wire empty
+);
+
+endmodule
diff --git a/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_cmos_single.v b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_cmos_single.v
new file mode 100644
index 00000000..c5bb387a
--- /dev/null
+++ b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_cmos_single.v
@@ -0,0 +1,124 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer:
+// _ _ ____
+// | | ___ ___| |__ / ___| __ _ ___
+// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
+// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
+// \___/ \___/|___/_| |_| \____|\__,_|\___/
+//
+// Create Date: 2022/07/01 17:37:27
+// Last Modified Date: 2023/03/03 13:01
+// Design Name:
+// Module Name: ad9361_rx_map_cmos_single
+// Project Name:
+// Target Devices:
+// Tool Versions:
+// Description:
+//
+// Dependencies:
+//
+// Revision:
+// Revision 0.01 - File Created
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+
+module ad9361_rx_map_cmos_single
+(
+ input clk_in ,
+ input clk_in_rst ,
+
+ input rx_data_clk ,
+ input rx_data_clk_rst ,
+
+ input rx_fifo_rst ,
+
+ input rx_frame ,
+ input [11:0] rx_data ,
+
+ output [11:0] rx_data_i ,
+ output [11:0] rx_data_q
+);
+
+genvar m;
+
+// rx data
+wire [11:0] rx_raw_i, rx_raw_q;
+
+generate
+for (m=0; m<12; m=m+1) begin : rx_data_iddr
+
+IDDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT_Q1 (1'b0 ),
+ .INIT_Q2 (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) i_rx_data_iddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_in ),
+ .D (rx_data[m] ),
+ .Q1 (rx_raw_q[m] ),
+ .Q2 (rx_raw_i[m] )
+);
+
+end
+endgenerate
+
+
+// divide rx_data to dual channel
+reg rx_fifo_wr_en = 1'b0;
+reg rx_fifo_rd_en = 'b0;
+
+wire rx_fifo_empty_1;
+wire rx_fifo_empty_2;
+
+always @(posedge clk_in) begin
+ if (clk_in_rst) begin
+ rx_fifo_wr_en <= 1'b0;
+ end
+ else begin
+ rx_fifo_wr_en <= 1'b1;
+ end
+end
+
+always @(posedge rx_data_clk) begin
+ if (rx_data_clk_rst) begin
+ rx_fifo_rd_en <= 'b0;
+ end
+ else begin
+ rx_fifo_rd_en <= &{~rx_fifo_empty_1, ~rx_fifo_empty_2};
+ end
+end
+
+ad9361_fifo u_rx_fifo_i
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx_raw_i ), // input wire [11 : 0] din
+ .wr_en (rx_fifo_wr_en ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (rx_data_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_1) // output wire empty
+);
+
+ad9361_fifo u_rx_fifo_q
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx_raw_q ), // input wire [11 : 0] din
+ .wr_en (rx_fifo_wr_en ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (rx_data_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_2) // output wire empty
+);
+
+endmodule
diff --git a/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_lvds_dual.v b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_lvds_dual.v
new file mode 100644
index 00000000..026330d0
--- /dev/null
+++ b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_rx_map_lvds_dual.v
@@ -0,0 +1,277 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer:
+// _ _ ____
+// | | ___ ___| |__ / ___| __ _ ___
+// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
+// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
+// \___/ \___/|___/_| |_| \____|\__,_|\___/
+//
+// Create Date: 2022/07/01 17:37:27
+// Last Modified Date: 2023/03/06 10:54
+// Design Name:
+// Module Name: ad9361_rx_mapping_dual
+// Project Name:
+// Target Devices:
+// Tool Versions:
+// Description:
+//
+// Dependencies:
+//
+// Revision:
+// Revision 0.01 - File Created
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+
+module ad9361_rx_map_lvds_dual
+(
+ input clk_4x_in , // sync to input data
+ input clk_in_rst ,
+
+ input rx_data_clk , // sync to output data
+ input rx_data_clk_rst ,
+
+ input rx_fifo_rst , // async fifo reset
+
+ input rx_frame_p ,
+ input rx_frame_n ,
+ input [ 5:0] rx_data_p , // data from ad9361 p1 port
+ input [ 5:0] rx_data_n ,
+
+ output [11:0] rx_ch1_i ,
+ output [11:0] rx_ch1_q ,
+ output [11:0] rx_ch2_i ,
+ output [11:0] rx_ch2_q
+);
+
+genvar m;
+
+// rx data
+wire [5:0] rx_data;
+wire [5:0] rx_data_i, rx_data_q;
+
+generate
+for (m=0; m<6; m=m+1) begin : rx_data_iddr
+
+IBUFDS #(
+ .DIFF_TERM ("TRUE" )
+) u_ibufds_rx_data
+(
+ .I (rx_data_p[m] ),
+ .IB (rx_data_n[m] ),
+ .O (rx_data[m] )
+);
+
+IDDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT_Q1 (1'b0 ),
+ .INIT_Q2 (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) u_rx_data_iddr (
+ .CE (1'b1 ), // clock enable
+ .R (1'b0 ), // iddr reset
+ .S (1'b0 ), // iddr set
+ .C (clk_4x_in ), // iddr clock
+ .D (rx_data[m] ), // ddr data
+ .Q1 (rx_data_q[m] ), // sdr data at rising edge
+ .Q2 (rx_data_i[m] ) // sdr data at falling edge
+);
+
+end
+endgenerate
+
+// rx frame
+wire rx_frame;
+wire rx_frame_i;
+wire rx_frame_q;
+
+IBUFDS #(
+ .DIFF_TERM ("TRUE" )
+) u_ibufds_rx_frame
+(
+ .I (rx_frame_p ),
+ .IB (rx_frame_n ),
+ .O (rx_frame )
+);
+
+IDDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT_Q1 (1'b0 ),
+ .INIT_Q2 (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) u_rx_frame_iddr (
+ .CE (1'b1 ), // clock enable
+ .R (1'b0 ), // iddr reset
+ .S (1'b0 ), // iddr set
+ .C (clk_4x_in ), // iddr clock
+ .D (rx_frame ), // ddr data
+ .Q1 (rx_frame_q ), // sdr data at rising edge
+ .Q2 (rx_frame_i ) // sdr data at falling edge
+);
+
+// unpack rx frame & data
+reg rx_frame_i_d1 = 'b0;
+reg [ 5:0] rx_data_i_d1 = 'b0;
+reg [ 5:0] rx_data_q_d1 = 'b0;
+reg rx_flag = 'b0; // rx frame rising edge indicator
+reg [ 1:0] rx_cnt = 'b0; // unpack stage counter
+
+always @(posedge clk_4x_in) begin
+ // wait for [rx_flag]
+ rx_frame_i_d1 <= rx_frame_i;
+ rx_data_i_d1 <= rx_data_i;
+ rx_data_q_d1 <= rx_data_q;
+end
+
+always @(posedge clk_4x_in) begin
+ if (clk_in_rst) begin
+ rx_flag <= 'b0;
+ end
+ else if (~rx_frame_i_d1 & rx_frame_i) begin
+ // assert when rising edge of rx frame is detected
+ rx_flag <= 'b1;
+ end
+ else begin
+ rx_flag <= rx_flag;
+ end
+end
+
+always @(posedge clk_4x_in) begin
+ if (clk_in_rst) begin
+ rx_cnt <= 'b0;
+ end
+ else begin
+ rx_cnt <= (rx_flag) ? rx_cnt + 1'b1 : rx_cnt;
+ end
+end
+
+reg [11:0] rx1_data_i = 'b0;
+reg [11:0] rx1_data_q = 'b0;
+reg [11:0] rx2_data_i = 'b0;
+reg [11:0] rx2_data_q = 'b0;
+
+always @(posedge clk_4x_in) begin
+ if (clk_in_rst) begin
+ rx1_data_i <= 'b0;
+ rx1_data_q <= 'b0;
+ rx2_data_i <= 'b0;
+ rx2_data_q <= 'b0;
+ end
+ else begin
+ case (rx_cnt)
+ 3'd0: begin
+ // 1st clock cycle: upper 6-bit of rx ch1 inphase/quadrature data
+ rx1_data_i[11:6] <= rx_data_i_d1;
+ rx1_data_q[11:6] <= rx_data_q_d1;
+ end
+ 3'd1: begin
+ // 2nd clock cycle: lower 6-bit of rx ch1 inphase/quadrature data
+ rx1_data_i[ 5:0] <= rx_data_i_d1;
+ rx1_data_q[ 5:0] <= rx_data_q_d1;
+ end
+ 3'd2: begin
+ // 3rd clock cycle: upper 6-bit of rx ch2 inphase/quadrature data
+ rx2_data_i[11:6] <= rx_data_i_d1;
+ rx2_data_q[11:6] <= rx_data_q_d1;
+ end
+ 3'd3: begin
+ // 4th clock cycle: lower 6-bit of rx ch2 inphase/quadrature data
+ rx2_data_i[ 5:0] <= rx_data_i_d1;
+ rx2_data_q[ 5:0] <= rx_data_q_d1;
+ end
+ default: begin
+ rx1_data_i <= 'b0;
+ rx1_data_q <= 'b0;
+ rx2_data_i <= 'b0;
+ rx2_data_q <= 'b0;
+ end
+ endcase
+ end
+end
+
+// write fifo when rx1/2_data_i/q are all prepared with 192MHz clock
+// read fifo at every clock cycle with 48MHz clock
+reg fifo_wr_en = 'b0;
+reg fifo_rd_en = 'b0;
+wire rx_fifo_empty_1;
+wire rx_fifo_empty_2;
+wire rx_fifo_empty_3;
+wire rx_fifo_empty_4;
+
+always @(posedge clk_4x_in) begin
+ if (clk_in_rst) begin
+ fifo_wr_en <= 'b0;
+ end
+ else if (rx_cnt == 2'd3) begin
+ fifo_wr_en <= 1'b1;
+ end
+ else begin
+ fifo_wr_en <= 'b0;
+ end
+end
+
+always @(posedge rx_data_clk) begin
+ if (rx_data_clk_rst) begin
+ fifo_rd_en <= 1'b0;
+ end
+ else begin
+ fifo_rd_en <= &{~rx_fifo_empty_1, ~rx_fifo_empty_2, ~rx_fifo_empty_3, ~rx_fifo_empty_4};
+ end
+end
+
+ad9361_fifo u_rx_fifo_ch1_i
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_4x_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx1_data_i ), // input wire [11 : 0] din
+ .wr_en (fifo_wr_en ), // input wire wr_en
+ .rd_en (fifo_rd_en ), // input wire rd_en
+ .dout (rx_ch1_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_1) // output wire empty
+);
+
+ad9361_fifo u_rx_fifo_ch1_q
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_4x_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx1_data_q ), // input wire [11 : 0] din
+ .wr_en (fifo_wr_en ), // input wire wr_en
+ .rd_en (fifo_rd_en ), // input wire rd_en
+ .dout (rx_ch1_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_2) // output wire empty
+);
+
+ad9361_fifo u_rx_fifo_ch2_i
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_4x_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx2_data_i ), // input wire [11 : 0] din
+ .wr_en (fifo_wr_en ), // input wire wr_en
+ .rd_en (fifo_rd_en ), // input wire rd_en
+ .dout (rx_ch2_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_3) // output wire empty
+);
+
+ad9361_fifo u_rx_fifo_ch2_q
+(
+ .rst (rx_fifo_rst ), // input wire rst
+ .wr_clk (clk_4x_in ), // input wire wr_clk
+ .rd_clk (rx_data_clk ), // input wire rd_clk
+ .din (rx2_data_q ), // input wire [11 : 0] din
+ .wr_en (fifo_wr_en ), // input wire wr_en
+ .rd_en (fifo_rd_en ), // input wire rd_en
+ .dout (rx_ch2_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty (rx_fifo_empty_4) // output wire empty
+);
+
+endmodule
diff --git a/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_cmos_dual.v b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_cmos_dual.v
new file mode 100644
index 00000000..7fb0b8a8
--- /dev/null
+++ b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_cmos_dual.v
@@ -0,0 +1,183 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer:
+// _ _ ____
+// | | ___ ___| |__ / ___| __ _ ___
+// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
+// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
+// \___/ \___/|___/_| |_| \____|\__,_|\___/
+//
+// Create Date: 2022/07/01 16:39:19
+// Last Modified Date: 2023/03/06 11:45
+// Design Name:
+// Module Name: ad9361_tx_map_cmos_dual
+// Project Name:
+// Target Devices:
+// Tool Versions:
+// Description:
+//
+// Dependencies:
+//
+// Revision:
+// Revision 0.01 - File Created
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+
+module ad9361_tx_map_cmos_dual
+(
+ input clk_2x_in ,
+ input clk_in_rst ,
+
+ input tx_data_clk ,
+ input tx_data_clk_rst ,
+
+ input [11:0] tx_ch1_i ,
+ input [11:0] tx_ch1_q ,
+ input [11:0] tx_ch2_i ,
+ input [11:0] tx_ch2_q ,
+
+ output clk_out ,
+ output tx_frame ,
+ output [11:0] tx_data
+);
+
+genvar m;
+
+// input data fifo
+reg rx_fifo_rd_en = 'b0;
+wire [11:0] tx_fifo_ch1_i;
+wire [11:0] tx_fifo_ch1_q;
+wire [11:0] tx_fifo_ch2_i;
+wire [11:0] tx_fifo_ch2_q;
+
+always @(posedge clk_2x_in) begin
+ if (clk_in_rst) begin
+ rx_fifo_rd_en <= 'b0;
+ end
+ else begin
+ rx_fifo_rd_en <= ~rx_fifo_rd_en;
+ end
+end
+
+ad9361_fifo u_tx_fifo_ch1_i
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_2x_in ), // input wire rd_clk
+ .din (tx_ch1_i ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (tx_fifo_ch1_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+ad9361_fifo u_tx_fifo_ch1_q
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_2x_in ), // input wire rd_clk
+ .din (tx_ch1_q ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (tx_fifo_ch1_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+ad9361_fifo u_tx_fifo_ch2_i
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_2x_in ), // input wire rd_clk
+ .din (tx_ch2_i ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (tx_fifo_ch2_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+ad9361_fifo u_tx_fifo_ch2_q
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_2x_in ), // input wire rd_clk
+ .din (tx_ch2_q ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (tx_fifo_ch2_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+// frame and data control
+reg tx_frame_i = 'b0;
+reg tx_frame_q = 'b0;
+reg [11:0] tx_data_i = 'b0;
+reg [11:0] tx_data_q = 'b0;
+
+always @(posedge clk_2x_in) begin
+ if (clk_in_rst) begin
+ tx_frame_i <= 'b0;
+ tx_frame_q <= 'b0;
+ tx_data_i <= 'b0;
+ tx_data_q <= 'b0;
+ end
+ else if (rx_fifo_rd_en == 1'b0) begin
+ tx_frame_i <= 1'b1;
+ tx_frame_q <= 1'b1;
+ tx_data_i <= tx_fifo_ch1_i;
+ tx_data_q <= tx_fifo_ch1_q;
+ end
+ else begin
+ tx_frame_i <= 1'b0;
+ tx_frame_q <= 1'b0;
+ tx_data_i <= tx_fifo_ch2_i;
+ tx_data_q <= tx_fifo_ch2_q;
+ end
+end
+
+// output clock to port
+assign clk_out = clk_2x_in;
+
+// output tx frame to port
+ODDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) u_tx_frame_oddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_2x_in ),
+ .D1 (tx_frame_i ),
+ .D2 (tx_frame_q ),
+ .Q (tx_frame )
+);
+
+// output tx data to port
+generate
+for (m=0; m<12; m=m+1) begin: tx_data_oddr
+
+ODDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) u_tx_data_oddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_2x_in ),
+ .D1 (tx_data_i[m] ),
+ .D2 (tx_data_q[m] ),
+ .Q (tx_data[m] )
+);
+
+end
+endgenerate
+
+endmodule
diff --git a/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_cmos_single.v b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_cmos_single.v
new file mode 100644
index 00000000..ad614384
--- /dev/null
+++ b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_cmos_single.v
@@ -0,0 +1,119 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer:
+// _ _ ____
+// | | ___ ___| |__ / ___| __ _ ___
+// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
+// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
+// \___/ \___/|___/_| |_| \____|\__,_|\___/
+//
+// Create Date: 2022/07/01 16:39:19
+// Design Name:
+// Module Name: ad9361_tx_mapping_single
+// Project Name:
+// Target Devices:
+// Tool Versions:
+// Description:
+//
+// Dependencies:
+//
+// Revision:
+// Revision 0.01 - File Created
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+
+module ad9361_tx_map_cmos_single
+(
+ input clk_in ,
+ input clk_in_rst ,
+
+ input tx_data_clk ,
+ input tx_data_clk_rst ,
+
+ input [11:0] tx_data_i ,
+ input [11:0] tx_data_q ,
+
+ output clk_out ,
+ output tx_frame ,
+ output [11:0] tx_data
+);
+
+genvar m;
+
+// inout data fifo
+wire [11:0] tx_fifo_i;
+wire [11:0] tx_fifo_q;
+
+ad9361_fifo u_tx_fifo_i
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_in ), // input wire rd_clk
+ .din (tx_data_i ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (1'b1 ), // input wire rd_en
+ .dout (tx_fifo_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+ad9361_fifo u_tx_fifo_q
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_in ), // input wire rd_clk
+ .din (tx_data_q ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (1'b1 ), // input wire rd_en
+ .dout (tx_fifo_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+// frame and data control
+assign tx_frame_i = 1'b1;
+assign tx_frame_q = 1'b0;
+
+// output clock to port
+assign clk_out = clk_in;
+
+// output tx frame to port
+ODDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) u_tx_frame_oddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_in ),
+ .D1 (tx_frame_i ),
+ .D2 (tx_frame_q ),
+ .Q (tx_frame )
+);
+
+// output tx data to port
+generate
+for (m=0; m<12; m=m+1) begin: tx_data_oddr
+
+ODDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) u_tx_data_oddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_in ),
+ .D1 (tx_fifo_i[m] ),
+ .D2 (tx_fifo_q[m] ),
+ .Q (tx_data[m] )
+);
+
+end
+endgenerate
+
+endmodule
diff --git a/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_lvds_dual.v b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_lvds_dual.v
new file mode 100644
index 00000000..0775eb88
--- /dev/null
+++ b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.srcs/sources_1/new/ad9361_tx_map_lvds_dual.v
@@ -0,0 +1,246 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer:
+// _ _ ____
+// | | ___ ___| |__ / ___| __ _ ___
+// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
+// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
+// \___/ \___/|___/_| |_| \____|\__,_|\___/
+//
+// Create Date: 2023/03/05 23:21:27
+// Last Modified Date: 2023/03/06 11:01
+// Design Name:
+// Module Name: ad9361_tx_map_lvds_dual
+// Project Name:
+// Target Devices:
+// Tool Versions:
+// Description:
+//
+// Dependencies:
+//
+// Revision:
+// Revision 0.01 - File Created
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+
+module ad9361_tx_map_lvds_dual
+(
+ input clk_4x_in ,
+ input clk_in_rst ,
+
+ input tx_data_clk ,
+ input tx_data_clk_rst ,
+
+ input [11:0] tx_ch1_i ,
+ input [11:0] tx_ch1_q ,
+ input [11:0] tx_ch2_i ,
+ input [11:0] tx_ch2_q ,
+
+ output clk_out_p ,
+ output clk_out_n ,
+ output tx_frame_p ,
+ output tx_frame_n ,
+ output [ 5:0] tx_data_p ,
+ output [ 5:0] tx_data_n
+);
+
+genvar m;
+
+// input data fifo
+reg [1:0] tx_control_cnt = 'b0;
+reg rx_fifo_rd_en = 'b0;
+wire [11:0] tx_fifo_ch1_i;
+wire [11:0] tx_fifo_ch1_q;
+wire [11:0] tx_fifo_ch2_i;
+wire [11:0] tx_fifo_ch2_q;
+
+always @(posedge clk_4x_in) begin
+ if (clk_in_rst) begin
+ tx_control_cnt <= 'b0;
+ end
+ else begin
+ tx_control_cnt <= tx_control_cnt + 1'b1;
+ end
+end
+
+always @(posedge clk_4x_in) begin
+ if (clk_in_rst) begin
+ rx_fifo_rd_en <= 'b0;
+ end
+ else if (tx_control_cnt == 2'd2) begin
+ rx_fifo_rd_en <= 1'b1;
+ end
+ else begin
+ rx_fifo_rd_en <= 'b0;
+ end
+end
+
+ad9361_fifo u_tx_fifo_ch1_i
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_4x_in ), // input wire rd_clk
+ .din (tx_ch1_i ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (tx_fifo_ch1_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+ad9361_fifo u_tx_fifo_ch1_q
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_4x_in ), // input wire rd_clk
+ .din (tx_ch1_q ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (tx_fifo_ch1_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+ad9361_fifo u_tx_fifo_ch2_i
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_4x_in ), // input wire rd_clk
+ .din (tx_ch2_i ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (tx_fifo_ch2_i ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+ad9361_fifo u_tx_fifo_ch2_q
+(
+ .rst (clk_in_rst ), // input wire rst
+ .wr_clk (tx_data_clk ), // input wire wr_clk
+ .rd_clk (clk_4x_in ), // input wire rd_clk
+ .din (tx_ch2_q ), // input wire [11 : 0] din
+ .wr_en (1'b1 ), // input wire wr_en
+ .rd_en (rx_fifo_rd_en ), // input wire rd_en
+ .dout (tx_fifo_ch2_q ), // output wire [11 : 0] dout
+ .full ( ), // output wire full
+ .empty ( ) // output wire empty
+);
+
+
+// frame and data control
+reg tx_frame_r = 'b0; // rising edge data
+reg tx_frame_f = 'b0; // falling edge data
+reg [5:0] tx_data_r = 'b0;
+reg [5:0] tx_data_f = 'b0;
+
+always @(posedge clk_4x_in) begin
+ if (clk_in_rst) begin
+ tx_frame_r <= 'b0;
+ tx_frame_f <= 'b0;
+ tx_data_r <= 'b0;
+ tx_data_f <= 'b0;
+ end
+ else begin
+ case (tx_control_cnt)
+ 2'd0: begin
+ tx_frame_r <= 1'b1;
+ tx_frame_f <= 1'b1;
+ tx_data_r <= tx_fifo_ch1_i[11: 6];
+ tx_data_f <= tx_fifo_ch1_q[11: 6];
+ end
+ 2'd1: begin
+ tx_frame_r <= 1'b1;
+ tx_frame_f <= 1'b1;
+ tx_data_r <= tx_fifo_ch1_i[5:0];
+ tx_data_f <= tx_fifo_ch1_q[5:0];
+ end
+ 2'd2: begin
+ tx_frame_r <= 1'b0;
+ tx_frame_f <= 1'b0;
+ tx_data_r <= tx_fifo_ch2_i[11:6];
+ tx_data_f <= tx_fifo_ch2_q[11:6];
+ end
+ 2'd3: begin
+ tx_frame_r <= 1'b0;
+ tx_frame_f <= 1'b0;
+ tx_data_r <= tx_fifo_ch2_i[5:0];
+ tx_data_f <= tx_fifo_ch2_q[5:0];
+ end
+ default: begin
+ tx_frame_r <= 'b0;
+ tx_frame_f <= 'b0;
+ tx_data_r <= 'b0;
+ tx_data_f <= 'b0;
+ end
+ endcase
+ end
+end
+
+// output clock to port
+wire clk_out;
+assign clk_out = clk_4x_in;
+
+OBUFDS u_obufds_clk_out
+(
+ .I (clk_out ),
+ .O (clk_out_p ),
+ .OB (clk_out_n )
+);
+
+// output tx frame to port
+ODDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) u_tx_frame_oddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_4x_in ),
+ .D1 (tx_frame_r ),
+ .D2 (tx_frame_f ),
+ .Q (tx_frame )
+);
+
+OBUFDS u_obufds_tx_frame
+(
+ .I (tx_frame ),
+ .O (tx_frame_p ),
+ .OB (tx_frame_n )
+);
+
+// output tx data to port
+wire [5:0] tx_data;
+
+generate
+for (m=0; m<6; m=m+1) begin: tx_data_oddr
+
+ODDR #(
+ .DDR_CLK_EDGE ("SAME_EDGE" ),
+ .INIT (1'b0 ),
+ .SRTYPE ("ASYNC" )
+) u_tx_data_oddr (
+ .CE (1'b1 ),
+ .R (1'b0 ),
+ .S (1'b0 ),
+ .C (clk_4x_in ),
+ .D1 (tx_data_r[m] ),
+ .D2 (tx_data_f[m] ),
+ .Q (tx_data[m] )
+);
+
+OBUFDS u_obufds_tx_data
+(
+ .I (tx_data[m] ),
+ .O (tx_data_p[m] ),
+ .OB (tx_data_n[m] )
+);
+
+end
+endgenerate
+
+endmodule
diff --git a/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.xpr b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.xpr
new file mode 100644
index 00000000..ab7f5d95
--- /dev/null
+++ b/modules/xc7z100ffg900-2/ad9361_mapping/ad9361_mapping.xpr
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vivado Synthesis Defaults
+
+
+
+
+
+
+
+
+
+
+
+ Vivado Synthesis Defaults
+
+
+
+
+
+
+
+
+
+
+
+ Default settings for Implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default settings for Implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ default_dashboard
+
+
+
diff --git a/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/cmpy_18x8/cmpy_18x8.xci b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/cmpy_18x8/cmpy_18x8.xci
new file mode 100644
index 00000000..bc2adb7a
--- /dev/null
+++ b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/cmpy_18x8/cmpy_18x8.xci
@@ -0,0 +1,212 @@
+{
+ "schema": "xilinx.com:schema:json_instance:1.0",
+ "ip_inst": {
+ "xci_name": "cmpy_18x8",
+ "component_reference": "xilinx.com:ip:cmpy:6.0",
+ "ip_revision": "22",
+ "gen_directory": "../../../../tx_qpsk.gen/sources_1/ip/cmpy_18x8",
+ "parameters": {
+ "component_parameters": {
+ "Component_Name": [ { "value": "cmpy_18x8", "resolve_type": "user", "usage": "all" } ],
+ "APortWidth": [ { "value": "18", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "HasATLAST": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "HasATUSER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "ATUSERWidth": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "BPortWidth": [ { "value": "8", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "HasBTLAST": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "HasBTUSER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "BTUSERWidth": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "MultType": [ { "value": "Use_LUTs", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "OptimizeGoal": [ { "value": "Resources", "resolve_type": "user", "usage": "all" } ],
+ "FlowControl": [ { "value": "NonBlocking", "resolve_type": "user", "usage": "all" } ],
+ "RoundMode": [ { "value": "Truncate", "resolve_type": "user", "usage": "all" } ],
+ "OutputWidth": [ { "value": "27", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "HasCTRLTLAST": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "HasCTRLTUSER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "CTRLTUSERWidth": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "OutTLASTBehv": [ { "value": "Null", "resolve_type": "user", "usage": "all" } ],
+ "LatencyConfig": [ { "value": "Automatic", "resolve_type": "user", "usage": "all" } ],
+ "MinimumLatency": [ { "value": "4", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "ACLKEN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "ARESETN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ]
+ },
+ "model_parameters": {
+ "C_VERBOSITY": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_XDEVICEFAMILY": [ { "value": "zynq", "resolve_type": "generated", "usage": "all" } ],
+ "C_XDEVICE": [ { "value": "xc7z100", "resolve_type": "generated", "usage": "all" } ],
+ "C_A_WIDTH": [ { "value": "18", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_B_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OUT_WIDTH": [ { "value": "27", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_LATENCY": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MULT_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OPTIMIZE_GOAL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "HAS_NEGATE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "SINGLE_OUTPUT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "ROUND": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "USE_DSP_CASCADES": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_THROTTLE_SCHEME": [ { "value": "3", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_ACLKEN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_ARESETN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_S_AXIS_A_TUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_S_AXIS_A_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_S_AXIS_B_TUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_S_AXIS_B_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_S_AXIS_CTRL_TUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_S_AXIS_CTRL_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_TLAST_RESOLUTION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_AXIS_A_TDATA_WIDTH": [ { "value": "48", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_AXIS_A_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_AXIS_B_TDATA_WIDTH": [ { "value": "16", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_AXIS_B_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_AXIS_CTRL_TDATA_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_AXIS_CTRL_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_AXIS_DOUT_TDATA_WIDTH": [ { "value": "64", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_AXIS_DOUT_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "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": "22" } ],
+ "MANAGED": [ { "value": "TRUE" } ],
+ "OUTPUTDIR": [ { "value": "../../../../tx_qpsk.gen/sources_1/ip/cmpy_18x8" } ],
+ "SELECTEDSIMMODEL": [ { "value": "" } ],
+ "SHAREDDIR": [ { "value": "." } ],
+ "SWVERSION": [ { "value": "2023.2.1" } ],
+ "SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ]
+ }
+ },
+ "boundary": {
+ "ports": {
+ "aclk": [ { "direction": "in", "driver_value": "0x0" } ],
+ "s_axis_a_tvalid": [ { "direction": "in", "driver_value": "0x0" } ],
+ "s_axis_a_tdata": [ { "direction": "in", "size_left": "47", "size_right": "0", "driver_value": "0" } ],
+ "s_axis_b_tvalid": [ { "direction": "in", "driver_value": "0x0" } ],
+ "s_axis_b_tdata": [ { "direction": "in", "size_left": "15", "size_right": "0", "driver_value": "0" } ],
+ "m_axis_dout_tvalid": [ { "direction": "out", "driver_value": "0x0" } ],
+ "m_axis_dout_tdata": [ { "direction": "out", "size_left": "63", "size_right": "0", "driver_value": "0" } ]
+ },
+ "interfaces": {
+ "M_AXIS_DOUT": {
+ "vlnv": "xilinx.com:interface:axis:1.0",
+ "abstraction_type": "xilinx.com:interface:axis_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "TDATA_NUM_BYTES": [ { "value": "8", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TDEST_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TID_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TUSER_WIDTH": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TREADY": [ { "value": "0", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TSTRB": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TKEEP": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "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 } ],
+ "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 } ],
+ "LAYERED_METADATA": [ { "value": "undef", "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": {
+ "TDATA": [ { "physical_name": "m_axis_dout_tdata" } ],
+ "TVALID": [ { "physical_name": "m_axis_dout_tvalid" } ]
+ }
+ },
+ "aclk_intf": {
+ "vlnv": "xilinx.com:signal:clock:1.0",
+ "abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "ASSOCIATED_BUSIF": [ { "value": "S_AXIS_CTRL:S_AXIS_B:S_AXIS_A:M_AXIS_DOUT", "value_src": "constant", "usage": "all" } ],
+ "ASSOCIATED_RESET": [ { "value": "aresetn", "value_src": "constant", "usage": "all" } ],
+ "ASSOCIATED_CLKEN": [ { "value": "aclken", "value_src": "constant", "usage": "all" } ],
+ "FREQ_HZ": [ { "value": "10000000", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "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_PORT": [ { "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": [ { "physical_name": "aclk" } ]
+ }
+ },
+ "aresetn_intf": {
+ "vlnv": "xilinx.com:signal:reset:1.0",
+ "abstraction_type": "xilinx.com:signal:reset_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "POLARITY": [ { "value": "ACTIVE_LOW", "value_src": "constant", "usage": "all" } ],
+ "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "aclken_intf": {
+ "vlnv": "xilinx.com:signal:clockenable:1.0",
+ "abstraction_type": "xilinx.com:signal:clockenable_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "POLARITY": [ { "value": "ACTIVE_HIGH", "value_src": "constant", "usage": "all" } ]
+ }
+ },
+ "S_AXIS_A": {
+ "vlnv": "xilinx.com:interface:axis:1.0",
+ "abstraction_type": "xilinx.com:interface:axis_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "TDATA_NUM_BYTES": [ { "value": "6", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TDEST_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TID_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TUSER_WIDTH": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TREADY": [ { "value": "0", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TSTRB": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TKEEP": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "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 } ],
+ "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 } ],
+ "LAYERED_METADATA": [ { "value": "undef", "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": {
+ "TDATA": [ { "physical_name": "s_axis_a_tdata" } ],
+ "TVALID": [ { "physical_name": "s_axis_a_tvalid" } ]
+ }
+ },
+ "S_AXIS_B": {
+ "vlnv": "xilinx.com:interface:axis:1.0",
+ "abstraction_type": "xilinx.com:interface:axis_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "TDATA_NUM_BYTES": [ { "value": "2", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TDEST_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TID_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TUSER_WIDTH": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TREADY": [ { "value": "0", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TSTRB": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TKEEP": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "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 } ],
+ "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 } ],
+ "LAYERED_METADATA": [ { "value": "undef", "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": {
+ "TDATA": [ { "physical_name": "s_axis_b_tdata" } ],
+ "TVALID": [ { "physical_name": "s_axis_b_tvalid" } ]
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/coe/hrc_64_12_025.coe b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/coe/hrc_64_12_025.coe
new file mode 100644
index 00000000..64167ba1
--- /dev/null
+++ b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/coe/hrc_64_12_025.coe
@@ -0,0 +1,771 @@
+RADIX = 10;
+COEFDATA =
+-47,
+-30,
+-13,
+4,
+21,
+38,
+56,
+73,
+89,
+106,
+122,
+138,
+153,
+168,
+182,
+196,
+209,
+221,
+232,
+243,
+252,
+261,
+268,
+275,
+281,
+285,
+289,
+291,
+292,
+292,
+291,
+288,
+285,
+280,
+274,
+267,
+259,
+249,
+239,
+228,
+215,
+202,
+187,
+172,
+156,
+139,
+122,
+104,
+85,
+66,
+46,
+26,
+5,
+-15,
+-36,
+-56,
+-77,
+-98,
+-118,
+-138,
+-158,
+-177,
+-195,
+-213,
+-231,
+-247,
+-263,
+-277,
+-291,
+-303,
+-314,
+-325,
+-333,
+-341,
+-347,
+-351,
+-354,
+-356,
+-356,
+-354,
+-351,
+-346,
+-340,
+-332,
+-322,
+-311,
+-298,
+-284,
+-268,
+-250,
+-231,
+-211,
+-189,
+-166,
+-142,
+-117,
+-90,
+-63,
+-35,
+-6,
+24,
+54,
+85,
+116,
+147,
+179,
+210,
+242,
+273,
+304,
+334,
+363,
+392,
+420,
+447,
+473,
+497,
+520,
+542,
+562,
+580,
+596,
+611,
+623,
+633,
+641,
+647,
+650,
+650,
+649,
+644,
+637,
+627,
+615,
+600,
+582,
+562,
+538,
+513,
+484,
+453,
+419,
+383,
+345,
+304,
+261,
+216,
+169,
+119,
+69,
+16,
+-38,
+-93,
+-150,
+-207,
+-265,
+-324,
+-383,
+-443,
+-502,
+-562,
+-621,
+-679,
+-736,
+-793,
+-848,
+-902,
+-954,
+-1004,
+-1052,
+-1097,
+-1140,
+-1181,
+-1218,
+-1252,
+-1283,
+-1310,
+-1333,
+-1353,
+-1369,
+-1380,
+-1387,
+-1389,
+-1387,
+-1381,
+-1369,
+-1353,
+-1332,
+-1306,
+-1274,
+-1238,
+-1197,
+-1151,
+-1100,
+-1044,
+-983,
+-918,
+-848,
+-773,
+-694,
+-611,
+-524,
+-432,
+-337,
+-239,
+-137,
+-33,
+74,
+184,
+296,
+410,
+525,
+642,
+759,
+877,
+995,
+1113,
+1230,
+1346,
+1461,
+1575,
+1686,
+1794,
+1900,
+2002,
+2101,
+2195,
+2285,
+2371,
+2451,
+2525,
+2593,
+2655,
+2711,
+2759,
+2800,
+2833,
+2859,
+2876,
+2885,
+2886,
+2877,
+2860,
+2833,
+2798,
+2752,
+2698,
+2633,
+2559,
+2476,
+2382,
+2280,
+2168,
+2046,
+1915,
+1775,
+1627,
+1469,
+1304,
+1130,
+948,
+759,
+563,
+360,
+151,
+-64,
+-284,
+-509,
+-739,
+-972,
+-1208,
+-1447,
+-1687,
+-1929,
+-2172,
+-2414,
+-2656,
+-2896,
+-3133,
+-3368,
+-3600,
+-3826,
+-4048,
+-4263,
+-4472,
+-4673,
+-4866,
+-5050,
+-5224,
+-5387,
+-5539,
+-5679,
+-5807,
+-5920,
+-6020,
+-6104,
+-6173,
+-6226,
+-6262,
+-6281,
+-6282,
+-6264,
+-6228,
+-6171,
+-6096,
+-5999,
+-5882,
+-5745,
+-5585,
+-5405,
+-5203,
+-4978,
+-4732,
+-4464,
+-4174,
+-3861,
+-3527,
+-3170,
+-2792,
+-2392,
+-1971,
+-1529,
+-1066,
+-582,
+-79,
+444,
+985,
+1545,
+2123,
+2717,
+3328,
+3955,
+4597,
+5253,
+5921,
+6603,
+7295,
+7998,
+8711,
+9432,
+10160,
+10895,
+11635,
+12379,
+13126,
+13875,
+14624,
+15374,
+16121,
+16866,
+17607,
+18342,
+19071,
+19793,
+20505,
+21208,
+21900,
+22579,
+23245,
+23896,
+24532,
+25151,
+25752,
+26334,
+26896,
+27438,
+27957,
+28455,
+28928,
+29377,
+29801,
+30200,
+30571,
+30915,
+31232,
+31520,
+31779,
+32009,
+32209,
+32379,
+32518,
+32627,
+32704,
+32751,
+32767,
+32751,
+32704,
+32627,
+32518,
+32379,
+32209,
+32009,
+31779,
+31520,
+31232,
+30915,
+30571,
+30200,
+29801,
+29377,
+28928,
+28455,
+27957,
+27438,
+26896,
+26334,
+25752,
+25151,
+24532,
+23896,
+23245,
+22579,
+21900,
+21208,
+20505,
+19793,
+19071,
+18342,
+17607,
+16866,
+16121,
+15374,
+14624,
+13875,
+13126,
+12379,
+11635,
+10895,
+10160,
+9432,
+8711,
+7998,
+7295,
+6603,
+5921,
+5253,
+4597,
+3955,
+3328,
+2717,
+2123,
+1545,
+985,
+444,
+-79,
+-582,
+-1066,
+-1529,
+-1971,
+-2392,
+-2792,
+-3170,
+-3527,
+-3861,
+-4174,
+-4464,
+-4732,
+-4978,
+-5203,
+-5405,
+-5585,
+-5745,
+-5882,
+-5999,
+-6096,
+-6171,
+-6228,
+-6264,
+-6282,
+-6281,
+-6262,
+-6226,
+-6173,
+-6104,
+-6020,
+-5920,
+-5807,
+-5679,
+-5539,
+-5387,
+-5224,
+-5050,
+-4866,
+-4673,
+-4472,
+-4263,
+-4048,
+-3826,
+-3600,
+-3368,
+-3133,
+-2896,
+-2656,
+-2414,
+-2172,
+-1929,
+-1687,
+-1447,
+-1208,
+-972,
+-739,
+-509,
+-284,
+-64,
+151,
+360,
+563,
+759,
+948,
+1130,
+1304,
+1469,
+1627,
+1775,
+1915,
+2046,
+2168,
+2280,
+2382,
+2476,
+2559,
+2633,
+2698,
+2752,
+2798,
+2833,
+2860,
+2877,
+2886,
+2885,
+2876,
+2859,
+2833,
+2800,
+2759,
+2711,
+2655,
+2593,
+2525,
+2451,
+2371,
+2285,
+2195,
+2101,
+2002,
+1900,
+1794,
+1686,
+1575,
+1461,
+1346,
+1230,
+1113,
+995,
+877,
+759,
+642,
+525,
+410,
+296,
+184,
+74,
+-33,
+-137,
+-239,
+-337,
+-432,
+-524,
+-611,
+-694,
+-773,
+-848,
+-918,
+-983,
+-1044,
+-1100,
+-1151,
+-1197,
+-1238,
+-1274,
+-1306,
+-1332,
+-1353,
+-1369,
+-1381,
+-1387,
+-1389,
+-1387,
+-1380,
+-1369,
+-1353,
+-1333,
+-1310,
+-1283,
+-1252,
+-1218,
+-1181,
+-1140,
+-1097,
+-1052,
+-1004,
+-954,
+-902,
+-848,
+-793,
+-736,
+-679,
+-621,
+-562,
+-502,
+-443,
+-383,
+-324,
+-265,
+-207,
+-150,
+-93,
+-38,
+16,
+69,
+119,
+169,
+216,
+261,
+304,
+345,
+383,
+419,
+453,
+484,
+513,
+538,
+562,
+582,
+600,
+615,
+627,
+637,
+644,
+649,
+650,
+650,
+647,
+641,
+633,
+623,
+611,
+596,
+580,
+562,
+542,
+520,
+497,
+473,
+447,
+420,
+392,
+363,
+334,
+304,
+273,
+242,
+210,
+179,
+147,
+116,
+85,
+54,
+24,
+-6,
+-35,
+-63,
+-90,
+-117,
+-142,
+-166,
+-189,
+-211,
+-231,
+-250,
+-268,
+-284,
+-298,
+-311,
+-322,
+-332,
+-340,
+-346,
+-351,
+-354,
+-356,
+-356,
+-354,
+-351,
+-347,
+-341,
+-333,
+-325,
+-314,
+-303,
+-291,
+-277,
+-263,
+-247,
+-231,
+-213,
+-195,
+-177,
+-158,
+-138,
+-118,
+-98,
+-77,
+-56,
+-36,
+-15,
+5,
+26,
+46,
+66,
+85,
+104,
+122,
+139,
+156,
+172,
+187,
+202,
+215,
+228,
+239,
+249,
+259,
+267,
+274,
+280,
+285,
+288,
+291,
+292,
+292,
+291,
+289,
+285,
+281,
+275,
+268,
+261,
+252,
+243,
+232,
+221,
+209,
+196,
+182,
+168,
+153,
+138,
+122,
+106,
+89,
+73,
+56,
+38,
+21,
+4,
+-13,
+-30,
+-47;
diff --git a/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/coe/sweep_freq.coe b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/coe/sweep_freq.coe
new file mode 100644
index 00000000..e6b436de
--- /dev/null
+++ b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/coe/sweep_freq.coe
@@ -0,0 +1,258 @@
+MEMORY_INITIALIZATION_RADIX = 10;
+MEMORY_INITIALIZATION_VECTOR =
+-2147483647,
+-2130640638,
+-2113797629,
+-2096954620,
+-2080111611,
+-2063268602,
+-2046425593,
+-2029582584,
+-2012739575,
+-1995896566,
+-1979053557,
+-1962210548,
+-1945367539,
+-1928524530,
+-1911681521,
+-1894838512,
+-1877995503,
+-1861152494,
+-1844309485,
+-1827466476,
+-1810623467,
+-1793780458,
+-1776937449,
+-1760094440,
+-1743251431,
+-1726408422,
+-1709565413,
+-1692722404,
+-1675879395,
+-1659036386,
+-1642193377,
+-1625350368,
+-1608507359,
+-1591664350,
+-1574821341,
+-1557978332,
+-1541135323,
+-1524292314,
+-1507449305,
+-1490606296,
+-1473763287,
+-1456920278,
+-1440077269,
+-1423234260,
+-1406391251,
+-1389548242,
+-1372705233,
+-1355862224,
+-1339019215,
+-1322176206,
+-1305333197,
+-1288490188,
+-1271647179,
+-1254804170,
+-1237961161,
+-1221118152,
+-1204275143,
+-1187432134,
+-1170589125,
+-1153746116,
+-1136903107,
+-1120060098,
+-1103217089,
+-1086374080,
+-1069531071,
+-1052688062,
+-1035845053,
+-1019002044,
+-1002159035,
+-985316026,
+-968473017,
+-951630008,
+-934786999,
+-917943990,
+-901100981,
+-884257972,
+-867414963,
+-850571954,
+-833728945,
+-816885936,
+-800042927,
+-783199918,
+-766356909,
+-749513900,
+-732670891,
+-715827882,
+-698984873,
+-682141864,
+-665298855,
+-648455846,
+-631612837,
+-614769828,
+-597926819,
+-581083810,
+-564240801,
+-547397792,
+-530554783,
+-513711774,
+-496868765,
+-480025756,
+-463182747,
+-446339738,
+-429496729,
+-412653720,
+-395810711,
+-378967702,
+-362124693,
+-345281684,
+-328438675,
+-311595666,
+-294752657,
+-277909648,
+-261066639,
+-244223630,
+-227380621,
+-210537612,
+-193694603,
+-176851594,
+-160008585,
+-143165576,
+-126322567,
+-109479558,
+-92636549,
+-75793540,
+-58950531,
+-42107522,
+-25264513,
+-8421504,
+8421504,
+25264513,
+42107522,
+58950531,
+75793540,
+92636549,
+109479558,
+126322567,
+143165576,
+160008585,
+176851594,
+193694603,
+210537612,
+227380621,
+244223630,
+261066639,
+277909648,
+294752657,
+311595666,
+328438675,
+345281684,
+362124693,
+378967702,
+395810711,
+412653720,
+429496729,
+446339738,
+463182747,
+480025756,
+496868765,
+513711774,
+530554783,
+547397792,
+564240801,
+581083810,
+597926819,
+614769828,
+631612837,
+648455846,
+665298855,
+682141864,
+698984873,
+715827882,
+732670891,
+749513900,
+766356909,
+783199918,
+800042927,
+816885936,
+833728945,
+850571954,
+867414963,
+884257972,
+901100981,
+917943990,
+934786999,
+951630008,
+968473017,
+985316026,
+1002159035,
+1019002044,
+1035845053,
+1052688062,
+1069531071,
+1086374080,
+1103217089,
+1120060098,
+1136903107,
+1153746116,
+1170589125,
+1187432134,
+1204275143,
+1221118152,
+1237961161,
+1254804170,
+1271647179,
+1288490188,
+1305333197,
+1322176206,
+1339019215,
+1355862224,
+1372705233,
+1389548242,
+1406391251,
+1423234260,
+1440077269,
+1456920278,
+1473763287,
+1490606296,
+1507449305,
+1524292314,
+1541135323,
+1557978332,
+1574821341,
+1591664350,
+1608507359,
+1625350368,
+1642193377,
+1659036386,
+1675879395,
+1692722404,
+1709565413,
+1726408422,
+1743251431,
+1760094440,
+1776937449,
+1793780458,
+1810623467,
+1827466476,
+1844309485,
+1861152494,
+1877995503,
+1894838512,
+1911681521,
+1928524530,
+1945367539,
+1962210548,
+1979053557,
+1995896566,
+2012739575,
+2029582584,
+2046425593,
+2063268602,
+2080111611,
+2096954620,
+2113797629,
+2130640638,
+2147483647;
diff --git a/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/dds_32b_8b/dds_32b_8b.xci b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/dds_32b_8b/dds_32b_8b.xci
new file mode 100644
index 00000000..28c011f9
--- /dev/null
+++ b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/dds_32b_8b/dds_32b_8b.xci
@@ -0,0 +1,355 @@
+{
+ "schema": "xilinx.com:schema:json_instance:1.0",
+ "ip_inst": {
+ "xci_name": "dds_32b_8b",
+ "component_reference": "xilinx.com:ip:dds_compiler:6.0",
+ "ip_revision": "23",
+ "gen_directory": "../../../../tx_qpsk.gen/sources_1/ip/dds_32b_8b",
+ "parameters": {
+ "component_parameters": {
+ "Component_Name": [ { "value": "dds_32b_8b", "resolve_type": "user", "usage": "all" } ],
+ "PartsPresent": [ { "value": "Phase_Generator_and_SIN_COS_LUT", "resolve_type": "user", "usage": "all" } ],
+ "DDS_Clock_Rate": [ { "value": "100", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Channels": [ { "value": "1", "resolve_type": "user", "usage": "all" } ],
+ "Mode_of_Operation": [ { "value": "Standard", "resolve_type": "user", "usage": "all" } ],
+ "Modulus": [ { "value": "9", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Parameter_Entry": [ { "value": "Hardware_Parameters", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Spurious_Free_Dynamic_Range": [ { "value": "45", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Frequency_Resolution": [ { "value": "0.4", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Noise_Shaping": [ { "value": "None", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Width": [ { "value": "32", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Output_Width": [ { "value": "8", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Phase_Increment": [ { "value": "Programmable", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Resync": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Phase_offset": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
+ "Output_Selection": [ { "value": "Sine_and_Cosine", "resolve_type": "user", "usage": "all" } ],
+ "Negative_Sine": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Negative_Cosine": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Amplitude_Mode": [ { "value": "Full_Range", "resolve_type": "user", "usage": "all" } ],
+ "Memory_Type": [ { "value": "Auto", "resolve_type": "user", "usage": "all" } ],
+ "Optimization_Goal": [ { "value": "Auto", "resolve_type": "user", "usage": "all" } ],
+ "DSP48_Use": [ { "value": "Minimal", "resolve_type": "user", "usage": "all" } ],
+ "Has_Phase_Out": [ { "value": "false", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "DATA_Has_TLAST": [ { "value": "Not_Required", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Has_TREADY": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "S_PHASE_Has_TUSER": [ { "value": "Not_Required", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "S_PHASE_TUSER_Width": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "M_DATA_Has_TUSER": [ { "value": "Not_Required", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "M_PHASE_Has_TUSER": [ { "value": "Not_Required", "resolve_type": "user", "usage": "all" } ],
+ "S_CONFIG_Sync_Mode": [ { "value": "On_Vector", "resolve_type": "user", "usage": "all" } ],
+ "OUTPUT_FORM": [ { "value": "Twos_Complement", "resolve_type": "user", "usage": "all" } ],
+ "Latency_Configuration": [ { "value": "Auto", "resolve_type": "user", "usage": "all" } ],
+ "Latency": [ { "value": "3", "resolve_type": "user", "usage": "all" } ],
+ "Has_ARESETn": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Has_ACLKEN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Output_Frequency1": [ { "value": "0", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC1": [ { "value": "1101000110110111", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles1": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF1": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency2": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC2": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles2": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF2": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency3": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC3": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles3": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF3": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency4": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC4": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles4": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF4": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency5": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC5": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles5": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF5": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency6": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC6": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles6": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF6": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency7": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC7": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles7": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF7": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency8": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC8": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles8": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF8": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency9": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC9": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles9": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF9": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency10": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC10": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles10": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF10": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency11": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC11": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles11": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF11": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency12": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC12": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles12": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF12": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency13": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC13": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles13": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF13": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency14": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC14": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles14": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF14": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency15": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC15": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles15": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF15": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Output_Frequency16": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "PINC16": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "Phase_Offset_Angles16": [ { "value": "0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "POFF16": [ { "value": "0", "resolve_type": "user", "usage": "all" } ],
+ "POR_mode": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "GUI_Behaviour": [ { "value": "Coregen", "resolve_type": "user", "usage": "all" } ],
+ "explicit_period": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "period": [ { "value": "1", "resolve_type": "user", "format": "float", "usage": "all" } ]
+ },
+ "model_parameters": {
+ "C_XDEVICEFAMILY": [ { "value": "zynq", "resolve_type": "generated", "usage": "all" } ],
+ "C_MODE_OF_OPERATION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MODULUS": [ { "value": "9", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ACCUMULATOR_WIDTH": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_CHANNELS": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_PHASE_OUT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_PHASEGEN": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_SINCOS": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_LATENCY": [ { "value": "3", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MEM_TYPE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_NEGATIVE_COSINE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_NEGATIVE_SINE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_NOISE_SHAPING": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OUTPUTS_REQUIRED": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OUTPUT_FORM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OUTPUT_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PHASE_ANGLE_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PHASE_INCREMENT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PHASE_INCREMENT_VALUE": [ { "value": "1101000110110111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "resolve_type": "generated", "usage": "all" } ],
+ "C_RESYNC": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PHASE_OFFSET": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PHASE_OFFSET_VALUE": [ { "value": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "resolve_type": "generated", "usage": "all" } ],
+ "C_OPTIMISE_GOAL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_DSP48": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_POR_MODE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AMPLITUDE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_ACLKEN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_ARESETN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_TREADY": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_S_PHASE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_PHASE_TDATA_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_PHASE_HAS_TUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_PHASE_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_S_CONFIG": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_CONFIG_SYNC_MODE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_CONFIG_TDATA_WIDTH": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_M_DATA": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_DATA_TDATA_WIDTH": [ { "value": "16", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_DATA_HAS_TUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_DATA_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_M_PHASE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_PHASE_TDATA_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_PHASE_HAS_TUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_PHASE_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DEBUG_INTERFACE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_CHAN_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "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": "23" } ],
+ "MANAGED": [ { "value": "TRUE" } ],
+ "OUTPUTDIR": [ { "value": "../../../../tx_qpsk.gen/sources_1/ip/dds_32b_8b" } ],
+ "SELECTEDSIMMODEL": [ { "value": "" } ],
+ "SHAREDDIR": [ { "value": "." } ],
+ "SWVERSION": [ { "value": "2023.2.1" } ],
+ "SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ]
+ }
+ },
+ "boundary": {
+ "ports": {
+ "aclk": [ { "direction": "in", "driver_value": "0x0" } ],
+ "s_axis_config_tvalid": [ { "direction": "in", "driver_value": "0x0" } ],
+ "s_axis_config_tdata": [ { "direction": "in", "size_left": "31", "size_right": "0", "driver_value": "0" } ],
+ "m_axis_data_tvalid": [ { "direction": "out", "driver_value": "0x0" } ],
+ "m_axis_data_tdata": [ { "direction": "out", "size_left": "15", "size_right": "0", "driver_value": "0" } ]
+ },
+ "interfaces": {
+ "event_pinc_invalid_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_poff_invalid_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_phase_in_invalid_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_phase_tlast_missing_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_phase_tlast_unexpected_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_phase_chanid_incorrect_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_config_tlast_missing_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_config_tlast_unexpected_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "aclk_intf": {
+ "vlnv": "xilinx.com:signal:clock:1.0",
+ "abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "ASSOCIATED_BUSIF": [ { "value": "M_AXIS_PHASE:S_AXIS_CONFIG:M_AXIS_DATA:S_AXIS_PHASE", "value_src": "constant", "usage": "all" } ],
+ "ASSOCIATED_RESET": [ { "value": "aresetn", "value_src": "constant", "usage": "all" } ],
+ "ASSOCIATED_CLKEN": [ { "value": "aclken", "value_src": "constant", "usage": "all" } ],
+ "FREQ_HZ": [ { "value": "100000000", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "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_PORT": [ { "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": [ { "physical_name": "aclk" } ]
+ }
+ },
+ "aresetn_intf": {
+ "vlnv": "xilinx.com:signal:reset:1.0",
+ "abstraction_type": "xilinx.com:signal:reset_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "POLARITY": [ { "value": "ACTIVE_LOW", "value_src": "constant", "usage": "all" } ],
+ "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "aclken_intf": {
+ "vlnv": "xilinx.com:signal:clockenable:1.0",
+ "abstraction_type": "xilinx.com:signal:clockenable_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "POLARITY": [ { "value": "ACTIVE_HIGH", "value_src": "constant", "usage": "all" } ]
+ }
+ },
+ "M_AXIS_DATA": {
+ "vlnv": "xilinx.com:interface:axis:1.0",
+ "abstraction_type": "xilinx.com:interface:axis_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "TDATA_NUM_BYTES": [ { "value": "2", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TDEST_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TID_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TUSER_WIDTH": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TREADY": [ { "value": "0", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TSTRB": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TKEEP": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "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 } ],
+ "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 } ],
+ "LAYERED_METADATA": [ { "value": "undef", "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": {
+ "TDATA": [ { "physical_name": "m_axis_data_tdata" } ],
+ "TVALID": [ { "physical_name": "m_axis_data_tvalid" } ]
+ }
+ },
+ "S_AXIS_CONFIG": {
+ "vlnv": "xilinx.com:interface:axis:1.0",
+ "abstraction_type": "xilinx.com:interface:axis_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "TDATA_NUM_BYTES": [ { "value": "4", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TDEST_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TID_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TUSER_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TREADY": [ { "value": "0", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TSTRB": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TKEEP": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "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 } ],
+ "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 } ],
+ "LAYERED_METADATA": [ { "value": "undef", "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": {
+ "TDATA": [ { "physical_name": "s_axis_config_tdata" } ],
+ "TVALID": [ { "physical_name": "s_axis_config_tvalid" } ]
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/hop_rom/hop_rom.xci b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/hop_rom/hop_rom.xci
new file mode 100644
index 00000000..769bab6c
--- /dev/null
+++ b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/hop_rom/hop_rom.xci
@@ -0,0 +1,252 @@
+{
+ "schema": "xilinx.com:schema:json_instance:1.0",
+ "ip_inst": {
+ "xci_name": "hop_rom",
+ "component_reference": "xilinx.com:ip:blk_mem_gen:8.4",
+ "ip_revision": "7",
+ "gen_directory": "../../../../tx_qpsk.gen/sources_1/ip/hop_rom",
+ "parameters": {
+ "component_parameters": {
+ "Component_Name": [ { "value": "hop_rom", "resolve_type": "user", "usage": "all" } ],
+ "Interface_Type": [ { "value": "Native", "resolve_type": "user", "usage": "all" } ],
+ "AXI_Type": [ { "value": "AXI4_Full", "resolve_type": "user", "usage": "all" } ],
+ "AXI_Slave_Type": [ { "value": "Memory_Slave", "resolve_type": "user", "usage": "all" } ],
+ "Use_AXI_ID": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "AXI_ID_Width": [ { "value": "4", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "Memory_Type": [ { "value": "Single_Port_ROM", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "PRIM_type_to_Implement": [ { "value": "BRAM", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_32bit_Address": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "ecctype": [ { "value": "No_ECC", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "ECC": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "softecc": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "EN_SLEEP_PIN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "EN_DEEPSLEEP_PIN": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "EN_SHUTDOWN_PIN": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "EN_ECC_PIPE": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "RD_ADDR_CHNG_A": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "RD_ADDR_CHNG_B": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Use_Error_Injection_Pins": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Error_Injection_Type": [ { "value": "Single_Bit_Error_Injection", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Use_Byte_Write_Enable": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Byte_Size": [ { "value": "9", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Algorithm": [ { "value": "Minimum_Area", "resolve_type": "user", "usage": "all" } ],
+ "Primitive": [ { "value": "8kx2", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Assume_Synchronous_Clk": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Write_Width_A": [ { "value": "32", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Write_Depth_A": [ { "value": "256", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Read_Width_A": [ { "value": "32", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Operating_Mode_A": [ { "value": "WRITE_FIRST", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_A": [ { "value": "Always_Enabled", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Write_Width_B": [ { "value": "32", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Read_Width_B": [ { "value": "32", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Operating_Mode_B": [ { "value": "WRITE_FIRST", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Enable_B": [ { "value": "Always_Enabled", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Register_PortA_Output_of_Memory_Primitives": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Register_PortA_Output_of_Memory_Core": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Use_REGCEA_Pin": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Register_PortB_Output_of_Memory_Primitives": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Register_PortB_Output_of_Memory_Core": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Use_REGCEB_Pin": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "register_porta_input_of_softecc": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "register_portb_output_of_softecc": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Pipeline_Stages": [ { "value": "0", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Load_Init_File": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Coe_File": [ { "value": "../coe/sweep_freq.coe", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Fill_Remaining_Memory_Locations": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Remaining_Memory_Locations": [ { "value": "0", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Use_RSTA_Pin": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Reset_Memory_Latch_A": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Reset_Priority_A": [ { "value": "CE", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Output_Reset_Value_A": [ { "value": "0", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Use_RSTB_Pin": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Reset_Memory_Latch_B": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "Reset_Priority_B": [ { "value": "CE", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Output_Reset_Value_B": [ { "value": "0", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Reset_Type": [ { "value": "SYNC", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Additional_Inputs_for_Power_Estimation": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Port_A_Clock": [ { "value": "100", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Port_A_Write_Rate": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Port_B_Clock": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Port_B_Write_Rate": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Port_A_Enable_Rate": [ { "value": "100", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Port_B_Enable_Rate": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Collision_Warnings": [ { "value": "ALL", "resolve_type": "user", "enabled": false, "usage": "all" } ],
+ "Disable_Collision_Warnings": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Disable_Out_of_Range_Warnings": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "use_bram_block": [ { "value": "Stand_Alone", "resolve_type": "user", "usage": "all" } ],
+ "MEM_FILE": [ { "value": "no_mem_loaded", "resolve_type": "user", "usage": "all" } ],
+ "CTRL_ECC_ALGO": [ { "value": "NONE", "resolve_type": "user", "usage": "all" } ],
+ "EN_SAFETY_CKT": [ { "value": "false", "resolve_type": "user", "format": "bool", "enabled": false, "usage": "all" } ],
+ "READ_LATENCY_A": [ { "value": "1", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ],
+ "READ_LATENCY_B": [ { "value": "1", "resolve_type": "user", "format": "long", "enabled": false, "usage": "all" } ]
+ },
+ "model_parameters": {
+ "C_FAMILY": [ { "value": "zynq", "resolve_type": "generated", "usage": "all" } ],
+ "C_XDEVICEFAMILY": [ { "value": "zynq", "resolve_type": "generated", "usage": "all" } ],
+ "C_ELABORATION_DIR": [ { "value": "./", "resolve_type": "generated", "usage": "all" } ],
+ "C_INTERFACE_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_TYPE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_SLAVE_TYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_BRAM_BLOCK": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ENABLE_32BIT_ADDRESS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_CTRL_ECC_ALGO": [ { "value": "NONE", "resolve_type": "generated", "usage": "all" } ],
+ "C_HAS_AXI_ID": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_AXI_ID_WIDTH": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MEM_TYPE": [ { "value": "3", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_BYTE_SIZE": [ { "value": "9", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ALGORITHM": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_PRIM_TYPE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_LOAD_INIT_FILE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_INIT_FILE_NAME": [ { "value": "hop_rom.mif", "resolve_type": "generated", "usage": "all" } ],
+ "C_INIT_FILE": [ { "value": "hop_rom.mem", "resolve_type": "generated", "usage": "all" } ],
+ "C_USE_DEFAULT_DATA": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DEFAULT_DATA": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_HAS_RSTA": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RST_PRIORITY_A": [ { "value": "CE", "resolve_type": "generated", "usage": "all" } ],
+ "C_RSTRAM_A": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_INITA_VAL": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_HAS_ENA": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_REGCEA": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_BYTE_WEA": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WEA_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WRITE_MODE_A": [ { "value": "WRITE_FIRST", "resolve_type": "generated", "usage": "all" } ],
+ "C_WRITE_WIDTH_A": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_READ_WIDTH_A": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WRITE_DEPTH_A": [ { "value": "256", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_READ_DEPTH_A": [ { "value": "256", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ADDRA_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_RSTB": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RST_PRIORITY_B": [ { "value": "CE", "resolve_type": "generated", "usage": "all" } ],
+ "C_RSTRAM_B": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_INITB_VAL": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_HAS_ENB": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_REGCEB": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_BYTE_WEB": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WEB_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WRITE_MODE_B": [ { "value": "WRITE_FIRST", "resolve_type": "generated", "usage": "all" } ],
+ "C_WRITE_WIDTH_B": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_READ_WIDTH_B": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_WRITE_DEPTH_B": [ { "value": "256", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_READ_DEPTH_B": [ { "value": "256", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ADDRB_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_MEM_OUTPUT_REGS_A": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_MEM_OUTPUT_REGS_B": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_MUX_OUTPUT_REGS_A": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_MUX_OUTPUT_REGS_B": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MUX_PIPELINE_STAGES": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_SOFTECC_INPUT_REGS_A": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_SOFTECC_OUTPUT_REGS_B": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_SOFTECC": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_ECC": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_EN_ECC_PIPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_READ_LATENCY_A": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_READ_LATENCY_B": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_INJECTERR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_SIM_COLLISION_CHECK": [ { "value": "ALL", "resolve_type": "generated", "usage": "all" } ],
+ "C_COMMON_CLK": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DISABLE_WARN_BHV_COLL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_EN_SLEEP_PIN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_USE_URAM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_EN_RDADDRA_CHG": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_EN_RDADDRB_CHG": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_EN_DEEPSLEEP_PIN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_EN_SHUTDOWN_PIN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_EN_SAFETY_CKT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DISABLE_WARN_BHV_RANGE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COUNT_36K_BRAM": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_COUNT_18K_BRAM": [ { "value": "1", "resolve_type": "generated", "usage": "all" } ],
+ "C_EST_POWER_SUMMARY": [ { "value": "Estimated Power for IP : 3.375199 mW", "resolve_type": "generated", "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": "7" } ],
+ "MANAGED": [ { "value": "TRUE" } ],
+ "OUTPUTDIR": [ { "value": "../../../../tx_qpsk.gen/sources_1/ip/hop_rom" } ],
+ "SELECTEDSIMMODEL": [ { "value": "" } ],
+ "SHAREDDIR": [ { "value": "." } ],
+ "SWVERSION": [ { "value": "2023.2.1" } ],
+ "SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ]
+ }
+ },
+ "boundary": {
+ "ports": {
+ "clka": [ { "direction": "in", "driver_value": "0" } ],
+ "addra": [ { "direction": "in", "size_left": "7", "size_right": "0", "driver_value": "0" } ],
+ "douta": [ { "direction": "out", "size_left": "31", "size_right": "0" } ]
+ },
+ "interfaces": {
+ "CLK.ACLK": {
+ "vlnv": "xilinx.com:signal:clock:1.0",
+ "abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "ASSOCIATED_BUSIF": [ { "value": "AXI_SLAVE_S_AXI:AXILite_SLAVE_S_AXI", "value_src": "constant", "usage": "all" } ],
+ "ASSOCIATED_RESET": [ { "value": "s_aresetn", "value_src": "constant", "usage": "all" } ],
+ "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_PORT": [ { "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 } ]
+ }
+ },
+ "RST.ARESETN": {
+ "vlnv": "xilinx.com:signal:reset:1.0",
+ "abstraction_type": "xilinx.com:signal:reset_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "POLARITY": [ { "value": "ACTIVE_LOW", "value_src": "constant", "usage": "all" } ],
+ "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "BRAM_PORTA": {
+ "vlnv": "xilinx.com:interface:bram:1.0",
+ "abstraction_type": "xilinx.com:interface:bram_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "MEM_SIZE": [ { "value": "8192", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "MEM_WIDTH": [ { "value": "32", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "MEM_ECC": [ { "value": "NONE", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
+ "MASTER_TYPE": [ { "value": "OTHER", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
+ "READ_WRITE_MODE": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
+ "READ_LATENCY": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ },
+ "port_maps": {
+ "ADDR": [ { "physical_name": "addra" } ],
+ "CLK": [ { "physical_name": "clka" } ],
+ "DOUT": [ { "physical_name": "douta" } ]
+ }
+ }
+ },
+ "memory_maps": {
+ "S_1": {
+ "address_blocks": {
+ "Mem0": {
+ "base_address": "0",
+ "range": "4096",
+ "usage": "memory",
+ "access": "read-write",
+ "parameters": {
+ "OFFSET_BASE_PARAM": [ { "value": "C_BASEADDR" } ],
+ "OFFSET_HIGH_PARAM": [ { "value": "C_HIGHADDR" } ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/hrc_64_12_025/hrc_64_12_025.xci b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/hrc_64_12_025/hrc_64_12_025.xci
new file mode 100644
index 00000000..9305237f
--- /dev/null
+++ b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/ip/hrc_64_12_025/hrc_64_12_025.xci
@@ -0,0 +1,349 @@
+{
+ "schema": "xilinx.com:schema:json_instance:1.0",
+ "ip_inst": {
+ "xci_name": "hrc_64_12_025",
+ "component_reference": "xilinx.com:ip:fir_compiler:7.2",
+ "ip_revision": "20",
+ "gen_directory": "../../../../tx_qpsk.gen/sources_1/ip/hrc_64_12_025",
+ "parameters": {
+ "component_parameters": {
+ "Component_Name": [ { "value": "hrc_64_12_025", "resolve_type": "user", "usage": "all" } ],
+ "GUI_Behaviour": [ { "value": "Coregen", "resolve_type": "user", "usage": "all" } ],
+ "CoefficientSource": [ { "value": "COE_File", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "CoefficientVector": [ { "value": "6,0,-4,-3,5,6,-6,-13,7,44,64,44,7,-13,-6,6,5,-3,-4,0,6", "resolve_type": "user", "usage": "all" } ],
+ "Coefficient_File": [ { "value": "../coe/hrc_64_12_025.coe", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Coefficient_Sets": [ { "value": "1", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Coefficient_Reload": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Filter_Type": [ { "value": "Interpolation", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Rate_Change_Type": [ { "value": "Integer", "resolve_type": "user", "usage": "all" } ],
+ "Interpolation_Rate": [ { "value": "64", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Decimation_Rate": [ { "value": "1", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Zero_Pack_Factor": [ { "value": "1", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Channel_Sequence": [ { "value": "Basic", "resolve_type": "user", "usage": "all" } ],
+ "Number_Channels": [ { "value": "1", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Select_Pattern": [ { "value": "All", "resolve_type": "user", "usage": "all" } ],
+ "Pattern_List": [ { "value": "P4-0,P4-1,P4-2,P4-3,P4-4", "resolve_type": "user", "usage": "all" } ],
+ "Number_Paths": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "RateSpecification": [ { "value": "Input_Sample_Period", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "HardwareOversamplingRate": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "SamplePeriod": [ { "value": "64", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Sample_Frequency": [ { "value": "0.001", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Clock_Frequency": [ { "value": "300.0", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Coefficient_Sign": [ { "value": "Signed", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Quantization": [ { "value": "Integer_Coefficients", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Coefficient_Width": [ { "value": "16", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "BestPrecision": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Coefficient_Fractional_Bits": [ { "value": "0", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Coefficient_Structure": [ { "value": "Inferred", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Data_Sign": [ { "value": "Signed", "resolve_type": "user", "usage": "all" } ],
+ "Data_Width": [ { "value": "2", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Data_Fractional_Bits": [ { "value": "0", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Output_Rounding_Mode": [ { "value": "Full_Precision", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Output_Width": [ { "value": "18", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Filter_Architecture": [ { "value": "Systolic_Multiply_Accumulate", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "Optimization_Goal": [ { "value": "Area", "resolve_type": "user", "usage": "all" } ],
+ "Optimization_Selection": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
+ "Data_Path_Fanout": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Pre_Adder_Pipeline": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Coefficient_Fanout": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Control_Path_Fanout": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Control_Column_Fanout": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Control_Broadcast_Fanout": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Control_LUT_Pipeline": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "No_BRAM_Read_First_Mode": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Optimal_Column_Lengths": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Data_Path_Broadcast": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Disable_Half_Band_Centre_Tap": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "No_SRL_Attributes": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Other": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Optimization_List": [ { "value": "None", "resolve_type": "user", "usage": "all" } ],
+ "Data_Buffer_Type": [ { "value": "Automatic", "resolve_type": "user", "usage": "all" } ],
+ "Coefficient_Buffer_Type": [ { "value": "Automatic", "resolve_type": "user", "usage": "all" } ],
+ "Input_Buffer_Type": [ { "value": "Automatic", "resolve_type": "user", "usage": "all" } ],
+ "Output_Buffer_Type": [ { "value": "Automatic", "resolve_type": "user", "usage": "all" } ],
+ "Preference_For_Other_Storage": [ { "value": "Automatic", "resolve_type": "user", "usage": "all" } ],
+ "Multi_Column_Support": [ { "value": "Automatic", "resolve_type": "user", "usage": "all" } ],
+ "Inter_Column_Pipe_Length": [ { "value": "4", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "ColumnConfig": [ { "value": "7", "value_src": "user", "resolve_type": "user", "usage": "all" } ],
+ "DATA_Has_TLAST": [ { "value": "Not_Required", "resolve_type": "user", "usage": "all" } ],
+ "M_DATA_Has_TREADY": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "S_DATA_Has_FIFO": [ { "value": "false", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "S_DATA_Has_TUSER": [ { "value": "Not_Required", "resolve_type": "user", "usage": "all" } ],
+ "M_DATA_Has_TUSER": [ { "value": "Not_Required", "resolve_type": "user", "usage": "all" } ],
+ "DATA_TUSER_Width": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "S_CONFIG_Sync_Mode": [ { "value": "On_Vector", "resolve_type": "user", "usage": "all" } ],
+ "S_CONFIG_Method": [ { "value": "Single", "resolve_type": "user", "usage": "all" } ],
+ "Num_Reload_Slots": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "Has_ACLKEN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Has_ARESETn": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Reset_Data_Vector": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Blank_Output": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Gen_MIF_from_Spec": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Gen_MIF_from_COE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Reload_File": [ { "value": "no_coe_file_loaded", "resolve_type": "user", "usage": "all" } ],
+ "Gen_MIF_Files": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "DisplayReloadOrder": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ],
+ "Passband_Min": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Passband_Max": [ { "value": "0.5", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Stopband_Min": [ { "value": "0.5", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Stopband_Max": [ { "value": "1.0", "resolve_type": "user", "format": "float", "usage": "all" } ],
+ "Filter_Selection": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ]
+ },
+ "model_parameters": {
+ "C_XDEVICEFAMILY": [ { "value": "zynq", "resolve_type": "generated", "usage": "all" } ],
+ "C_ELABORATION_DIR": [ { "value": "./", "resolve_type": "generated", "usage": "all" } ],
+ "C_COMPONENT_NAME": [ { "value": "hrc_64_12_025", "resolve_type": "generated", "usage": "all" } ],
+ "C_COEF_FILE": [ { "value": "hrc_64_12_025.mif", "resolve_type": "generated", "usage": "all" } ],
+ "C_COEF_FILE_LINES": [ { "value": "448", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_FILTER_TYPE": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_INTERP_RATE": [ { "value": "64", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DECIM_RATE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_ZERO_PACKING_FACTOR": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_SYMMETRY": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_NUM_FILTS": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_NUM_TAPS": [ { "value": "769", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_NUM_CHANNELS": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_CHANNEL_PATTERN": [ { "value": "fixed", "resolve_type": "generated", "usage": "all" } ],
+ "C_ROUND_MODE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COEF_RELOAD": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_NUM_RELOAD_SLOTS": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COL_MODE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COL_PIPE_LEN": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COL_CONFIG": [ { "value": "7", "resolve_type": "generated", "usage": "all" } ],
+ "C_OPTIMIZATION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DATA_PATH_WIDTHS": [ { "value": "2", "resolve_type": "generated", "usage": "all" } ],
+ "C_DATA_IP_PATH_WIDTHS": [ { "value": "2", "resolve_type": "generated", "usage": "all" } ],
+ "C_DATA_PX_PATH_WIDTHS": [ { "value": "2", "resolve_type": "generated", "usage": "all" } ],
+ "C_DATA_WIDTH": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COEF_PATH_WIDTHS": [ { "value": "17", "resolve_type": "generated", "usage": "all" } ],
+ "C_COEF_WIDTH": [ { "value": "16", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DATA_PATH_SRC": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_COEF_PATH_SRC": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_PX_PATH_SRC": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_DATA_PATH_SIGN": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_COEF_PATH_SIGN": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_ACCUM_PATH_WIDTHS": [ { "value": "19", "resolve_type": "generated", "usage": "all" } ],
+ "C_OUTPUT_WIDTH": [ { "value": "18", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OUTPUT_PATH_WIDTHS": [ { "value": "18", "resolve_type": "generated", "usage": "all" } ],
+ "C_ACCUM_OP_PATH_WIDTHS": [ { "value": "18", "resolve_type": "generated", "usage": "all" } ],
+ "C_EXT_MULT_CNFG": [ { "value": "none", "resolve_type": "generated", "usage": "all" } ],
+ "C_DATA_PATH_PSAMP_SRC": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_OP_PATH_PSAMP_SRC": [ { "value": "0", "resolve_type": "generated", "usage": "all" } ],
+ "C_NUM_MADDS": [ { "value": "7", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OPT_MADDS": [ { "value": "none", "resolve_type": "generated", "usage": "all" } ],
+ "C_OVERSAMPLING_RATE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_INPUT_RATE": [ { "value": "64", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OUTPUT_RATE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DATA_MEMTYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COEF_MEMTYPE": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_IPBUFF_MEMTYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_OPBUFF_MEMTYPE": [ { "value": "2", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DATAPATH_MEMTYPE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_MEM_ARRANGEMENT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DATA_MEM_PACKING": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_COEF_MEM_PACKING": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_FILTS_PACKED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_LATENCY": [ { "value": "17", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_ARESETn": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_ACLKEN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_DATA_HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_DATA_HAS_FIFO": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_DATA_HAS_TUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_DATA_TDATA_WIDTH": [ { "value": "8", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_S_DATA_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_DATA_HAS_TREADY": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_DATA_HAS_TUSER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_DATA_TDATA_WIDTH": [ { "value": "24", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_M_DATA_TUSER_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_HAS_CONFIG_CHANNEL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_CONFIG_SYNC_MODE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_CONFIG_PACKET_SIZE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_CONFIG_TDATA_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ],
+ "C_RELOAD_TDATA_WIDTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "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": "20" } ],
+ "MANAGED": [ { "value": "TRUE" } ],
+ "OUTPUTDIR": [ { "value": "../../../../tx_qpsk.gen/sources_1/ip/hrc_64_12_025" } ],
+ "SELECTEDSIMMODEL": [ { "value": "" } ],
+ "SHAREDDIR": [ { "value": "." } ],
+ "SWVERSION": [ { "value": "2023.2.1" } ],
+ "SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ]
+ }
+ },
+ "boundary": {
+ "ports": {
+ "aclk": [ { "direction": "in" } ],
+ "s_axis_data_tvalid": [ { "direction": "in", "driver_value": "0x0" } ],
+ "s_axis_data_tready": [ { "direction": "out", "driver_value": "0x1" } ],
+ "s_axis_data_tdata": [ { "direction": "in", "size_left": "7", "size_right": "0", "driver_value": "0" } ],
+ "m_axis_data_tvalid": [ { "direction": "out", "driver_value": "0x0" } ],
+ "m_axis_data_tdata": [ { "direction": "out", "size_left": "23", "size_right": "0", "driver_value": "0" } ]
+ },
+ "interfaces": {
+ "event_s_data_tlast_missing_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_data_tlast_unexpected_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_data_chanid_incorrect_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_config_tlast_missing_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_config_tlast_unexpected_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_reload_tlast_missing_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "event_s_reload_tlast_unexpected_intf": {
+ "vlnv": "xilinx.com:signal:interrupt:1.0",
+ "abstraction_type": "xilinx.com:signal:interrupt_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "SENSITIVITY": [ { "value": "EDGE_RISING", "value_src": "constant", "usage": "all" } ],
+ "PortWidth": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "aclk_intf": {
+ "vlnv": "xilinx.com:signal:clock:1.0",
+ "abstraction_type": "xilinx.com:signal:clock_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "ASSOCIATED_BUSIF": [ { "value": "S_AXIS_CONFIG:M_AXIS_DATA:S_AXIS_DATA:S_AXIS_RELOAD", "value_src": "constant", "usage": "all" } ],
+ "ASSOCIATED_RESET": [ { "value": "aresetn", "value_src": "constant", "usage": "all" } ],
+ "ASSOCIATED_CLKEN": [ { "value": "aclken", "value_src": "constant", "usage": "all" } ],
+ "FREQ_HZ": [ { "value": "100000000", "resolve_type": "user", "format": "long", "usage": "all" } ],
+ "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_PORT": [ { "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": [ { "physical_name": "aclk" } ]
+ }
+ },
+ "aresetn_intf": {
+ "vlnv": "xilinx.com:signal:reset:1.0",
+ "abstraction_type": "xilinx.com:signal:reset_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "POLARITY": [ { "value": "ACTIVE_LOW", "value_src": "constant", "usage": "all" } ],
+ "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ]
+ }
+ },
+ "aclken_intf": {
+ "vlnv": "xilinx.com:signal:clockenable:1.0",
+ "abstraction_type": "xilinx.com:signal:clockenable_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "POLARITY": [ { "value": "ACTIVE_HIGH", "value_src": "constant", "usage": "all" } ]
+ }
+ },
+ "S_AXIS_DATA": {
+ "vlnv": "xilinx.com:interface:axis:1.0",
+ "abstraction_type": "xilinx.com:interface:axis_rtl:1.0",
+ "mode": "slave",
+ "parameters": {
+ "TDATA_NUM_BYTES": [ { "value": "1", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TDEST_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TID_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TUSER_WIDTH": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TREADY": [ { "value": "1", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TSTRB": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TKEEP": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "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 } ],
+ "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 } ],
+ "LAYERED_METADATA": [ { "value": "undef", "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": {
+ "TDATA": [ { "physical_name": "s_axis_data_tdata" } ],
+ "TREADY": [ { "physical_name": "s_axis_data_tready" } ],
+ "TVALID": [ { "physical_name": "s_axis_data_tvalid" } ]
+ }
+ },
+ "M_AXIS_DATA": {
+ "vlnv": "xilinx.com:interface:axis:1.0",
+ "abstraction_type": "xilinx.com:interface:axis_rtl:1.0",
+ "mode": "master",
+ "parameters": {
+ "TDATA_NUM_BYTES": [ { "value": "3", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TDEST_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TID_WIDTH": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "TUSER_WIDTH": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TREADY": [ { "value": "0", "value_src": "auto", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TSTRB": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TKEEP": [ { "value": "0", "value_src": "constant", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ],
+ "HAS_TLAST": [ { "value": "0", "resolve_type": "generated", "format": "long", "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 } ],
+ "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 } ],
+ "LAYERED_METADATA": [ { "value": "undef", "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": {
+ "TDATA": [ { "physical_name": "m_axis_data_tdata" } ],
+ "TVALID": [ { "physical_name": "m_axis_data_tvalid" } ]
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/new/tx_qpsk.v b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/new/tx_qpsk.v
new file mode 100644
index 00000000..d757ea01
--- /dev/null
+++ b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.srcs/sources_1/new/tx_qpsk.v
@@ -0,0 +1,539 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer:
+// _ _ ____
+// | | ___ ___| |__ / ___| __ _ ___
+// _ | |/ _ \/ __| '_ \ | | _ / _` |/ _ \
+// | |_| | (_) \__ \ | | | | |_| | (_| | (_) |
+// \___/ \___/|___/_| |_| \____|\__,_|\___/
+//
+// Create Date: 2022/03/23 20:17:56
+// Last Modified Date: 2023/03/10 15:41
+// Design Name:
+// Module Name: tx_qpsk
+// Project Name:
+// Target Devices:
+// Tool Versions:
+// Description:
+//
+// Dependencies:
+//
+// Revision:
+// Revision 0.01 - File Created
+// 20230228-1541 - 修改不扫频、无基带频偏时 [baseband_i/q] 的数据输出,原来从
+// 乘法器引出,会导致频率为 0 时输出数据错误,现在直接从基带数据引出。
+// 20230310-1542 - 增加输入参数,发送数据更改为直接由参数输入,发送方波改为 8
+// 倍过采样,发送双音信号中 1MHz 信号的频率控制字可以根据参数中的时钟频率计
+// 算得出。
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+
+module tx_qpsk
+#(
+ parameter DATA_WIDTH = 12, // need to be <= 16
+ parameter BIT_DATA = 128'b00000011000010100011110010001011001110101001111101000011100010010011011010110111101100011010010111011100110010101011111110000001, // inverse pseudorandom bit sequence, [0,flip(PRSB7)]
+ parameter BIT_DATA_LEN = 128,
+ parameter SQUARE_INTERP = 8,
+ parameter CLK_FREQ = 245760000 // in Hertz
+)
+(
+ input clk ,
+ input rst ,
+ output [DATA_WIDTH-1:0] tx_data_i ,
+ output [DATA_WIDTH-1:0] tx_data_q ,
+ // debug ports
+ input [ 1:0] waveform_sel ,
+ input sweep_on ,
+ input [31:0] freq_set ,
+ input [ 1:0] iq_sel ,
+ input [ 3:0] bb_rshift
+);
+
+localparam RCOS_INTERP = 64;
+localparam INTERP = (RCOS_INTERP > SQUARE_INTERP) ? RCOS_INTERP : SQUARE_INTERP;
+localparam FREQ_WORD_1M = 64'd2**64'd32*64'd1000000/CLK_FREQ;
+
+////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////// Data Counter /////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+// symbol & interpolation counter
+reg [$clog2(INTERP*BIT_DATA_LEN)-1 : 0] cnt = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ cnt <= 'b0;
+ end
+ else begin
+ cnt <= (cnt == INTERP*BIT_DATA_LEN - 1) ? 'b0 : cnt + 16'b1;
+ end
+end
+
+////////////////////////////////////////////////////////////////////////////////
+////////////////////// Root-Rasied Cosine Shaping Filter ///////////////////////
+////////////////////////////////////////////////////////////////////////////////
+// address
+reg [$clog2(BIT_DATA_LEN)-1 : 0] hrc_data_addr_i = 'b0;
+reg [$clog2(BIT_DATA_LEN)-1 : 0] hrc_data_addr_q = 'b1;
+
+always @(posedge clk) begin
+ if (rst) begin
+ hrc_data_addr_i <= 'b0;
+ hrc_data_addr_q <= 'b1;
+ end
+ else begin
+ hrc_data_addr_i <= {cnt[$clog2(RCOS_INTERP) +: ($clog2(BIT_DATA_LEN)-1)],1'b0};
+ hrc_data_addr_q <= {cnt[$clog2(RCOS_INTERP) +: ($clog2(BIT_DATA_LEN)-1)],1'b1};
+ end
+end
+
+// bit data
+reg hrc_data_i = 'b0;
+reg hrc_data_q = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ hrc_data_i <= 'b0;
+ hrc_data_q <= 'b0;
+ end
+ else begin
+ hrc_data_i <= BIT_DATA[hrc_data_addr_i];
+ hrc_data_q <= BIT_DATA[hrc_data_addr_q];
+ end
+end
+
+// polarization
+wire [ 7:0] hrc_data_polar_i;
+wire [ 7:0] hrc_data_polar_q;
+
+assign hrc_data_polar_i = {{7{hrc_data_i}},1'b1};
+assign hrc_data_polar_q = {{7{hrc_data_q}},1'b1};
+
+// root raised cosine shaping-filter
+wire [23:0] hrc_wave_i;
+wire [23:0] hrc_wave_q;
+
+hrc_64_12_025 u_hrc_i (
+ .aclk (clk ), // input wire aclk
+ .s_axis_data_tvalid (~rst ), // input wire s_axis_data_tvalid
+ .s_axis_data_tready ( ), // output wire s_axis_data_tready
+ .s_axis_data_tdata (hrc_data_polar_i ), // input wire [7 : 0] s_axis_data_tdata
+ .m_axis_data_tvalid ( ), // output wire m_axis_data_tvalid
+ .m_axis_data_tdata (hrc_wave_i ) // output wire [23 : 0] m_axis_data_tdata
+);
+
+hrc_64_12_025 u_hrc_q (
+ .aclk (clk ), // input wire aclk
+ .s_axis_data_tvalid (~rst ), // input wire s_axis_data_tvalid
+ .s_axis_data_tready ( ), // output wire s_axis_data_tready
+ .s_axis_data_tdata (hrc_data_polar_q ), // input wire [7 : 0] s_axis_data_tdata
+ .m_axis_data_tvalid ( ), // output wire m_axis_data_tvalid
+ .m_axis_data_tdata (hrc_wave_q ) // output wire [23 : 0] m_axis_data_tdata
+);
+
+
+////////////////////////////////////////////////////////////////////////////////
+//////////////////////////// Square Shaping Filter /////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+// address
+reg [$clog2(BIT_DATA_LEN)-1 : 0] hsq_data_addr = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ hsq_data_addr <= 'b0;
+ end
+ else
+ hsq_data_addr <= {cnt[$clog2(SQUARE_INTERP) +: $clog2(BIT_DATA_LEN)]};
+end
+
+// bit data
+reg hsq_data = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ hsq_data <= 'b0;
+ end
+ else begin
+ hsq_data <= BIT_DATA[hsq_data_addr];
+ end
+end
+
+// square shaping-filter
+reg [17:0] hsq_wave_i ='b0;
+reg [17:0] hsq_wave_q ='b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ hsq_wave_i <= 'b0;
+ hsq_wave_q <= 'b0;
+ end
+ else begin
+ hsq_wave_i <= hsq_data ? 18'b01_1111_1111_1111_1111 : 18'b10_0000_0000_0000_0001;
+ hsq_wave_q <= hsq_data ? 18'b10_0000_0000_0000_0001 : 18'b01_1111_1111_1111_1111;
+ end
+end
+
+
+////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////// Two Tone Siganl ////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+// cosine wave with freq of 1 MHz
+wire signed [7:0] cos_1m;
+wire signed [7:0] sin_1m;
+
+dds_32b_8b u_dds_1m
+(
+ .aclk (clk ), // input wire aclk
+ .s_axis_config_tvalid (1'b1 ), // input wire s_axis_config_tvalid
+ .s_axis_config_tdata (FREQ_WORD_1M[31:0] ), // input wire [31 : 0] s_axis_config_tdata
+ .m_axis_data_tvalid ( ), // output wire m_axis_data_tvalid
+ .m_axis_data_tdata ({sin_1m,cos_1m} ) // output wire [15 : 0] m_axis_data_tdata
+);
+
+// two-tone signal
+reg signed [16:0] two_tone_wave_i = 'b0;
+reg signed [16:0] two_tone_wave_q = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ two_tone_wave_i <= 'b0;
+ two_tone_wave_q <= 'b0;
+ end
+ else begin
+ two_tone_wave_i <= 17'b0_0111_1111_1111_1111 + {cos_1m[7],cos_1m,8'd0};
+ two_tone_wave_q <= 17'b0 + {sin_1m[7],sin_1m,8'd0};
+ end
+end
+
+
+////////////////////////////////////////////////////////////////////////////////
+///////////////////// Waveform Selection & Hopping Control /////////////////////
+////////////////////////////////////////////////////////////////////////////////
+// baseband signal select
+reg [17:0] baseband_sel_i = 'b0;
+reg [17:0] baseband_sel_q = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ baseband_sel_i <= 'b0;
+ baseband_sel_q <= 'b0;
+ end
+ else begin
+ case (waveform_sel[1:0])
+ 2'd0: begin
+ baseband_sel_i <= {hrc_wave_i[16:0],1'b0};
+ baseband_sel_q <= {hrc_wave_q[16:0],1'b0};
+ end
+ 2'd1: begin
+ baseband_sel_i <= hsq_wave_i[17:0];
+ baseband_sel_q <= hsq_wave_q[17:0];
+ end
+ 2'd2: begin
+ baseband_sel_i <= 18'b01_1111_1111_1111_1111;
+ baseband_sel_q <= 18'b0;
+ end
+ 2'd3: begin
+ baseband_sel_i <= {two_tone_wave_i[16:0],1'b0};
+ baseband_sel_q <= {two_tone_wave_q[16:0],1'b0};
+ end
+ default: begin
+ baseband_sel_i <= {hrc_wave_i[16:0],1'b0};
+ baseband_sel_q <= {hrc_wave_q[16:0],1'b0};
+ end
+ endcase
+ end
+end
+
+// hopping control, 3750hop/s
+reg [23:0] sweep_rom_addr = 'b0;
+wire [31:0] freq_sweep;
+
+always @(posedge clk) begin
+ if (rst) begin
+ sweep_rom_addr <= 'b0;
+ end
+ else if (sweep_on) begin
+ sweep_rom_addr <= sweep_rom_addr + 24'b1;
+ end
+ else begin
+ sweep_rom_addr <= 'b0;
+ end
+end
+
+hop_rom u_sweep_rom
+(
+ .clka (clk ), // input wire clka
+ .addra (sweep_rom_addr[23:16] ), // input wire [7 : 0] addra
+ .douta (freq_sweep ) // output wire [31 : 0] douta
+);
+
+// choose the actual frequency word
+reg [31:0] freq_word = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ freq_word <= 'b0;
+ end
+ else if (sweep_on) begin
+ // frequency sweep
+ freq_word <= freq_sweep;
+ end
+ else begin
+ // normal operation
+ freq_word <= freq_set;
+ end
+end
+
+// baseband frequency shift carrier generation
+wire [ 7:0] cos_dds;
+wire [ 7:0] sin_dds;
+reg [ 7:0] cos = 'b0;
+reg [ 7:0] sin = 'b0;
+
+dds_32b_8b u_dds_bb_shift (
+ .aclk (clk ), // input wire aclk
+ .s_axis_config_tvalid (~rst ), // input wire s_axis_config_tvalid
+ .s_axis_config_tdata (freq_word ), // input wire [31 : 0] s_axis_config_tdata
+ .m_axis_data_tvalid ( ), // output wire m_axis_data_tvalid
+ .m_axis_data_tdata ({sin_dds,cos_dds}) // output wire [31 : 0] m_axis_data_tdata
+);
+
+always @(posedge clk) begin
+ if (rst) begin
+ cos <= 'b0;
+ sin <= 'b0;
+ end
+ else if (freq_word == 'b0) begin
+ // to make sure the carriers stay at the right position when freq = 0
+ cos <= 8'b0111_1111;
+ sin <= 8'b0111_1111;
+ end
+ else begin
+ cos <= cos_dds;
+ sin <= sin_dds;
+ end
+end
+
+// baseband frequency shift modulation
+wire [47:0] mod_cmpy_a;
+wire [15:0] mod_cmpy_b;
+wire [63:0] mod_cmpy_out;
+
+wire [26:0] baseband_mult_i;
+wire [26:0] baseband_mult_q;
+
+assign mod_cmpy_a = {6'b0,baseband_sel_q,6'b0,baseband_sel_i};
+assign mod_cmpy_b = {-sin,cos};
+
+assign baseband_mult_i = mod_cmpy_out[58:32];
+assign baseband_mult_q = mod_cmpy_out[26: 0];
+
+cmpy_18x8 u_cmpy_18x8
+(
+ .aclk (clk ), // input wire aclk
+ .s_axis_a_tvalid (1'b1 ), // input wire s_axis_a_tvalid
+ .s_axis_a_tdata (mod_cmpy_a ), // input wire [47 : 0] s_axis_a_tdata
+ .s_axis_b_tvalid (1'b1 ), // input wire s_axis_b_tvalid
+ .s_axis_b_tdata (mod_cmpy_b ), // input wire [15 : 0] s_axis_b_tdata
+ .m_axis_dout_tvalid ( ), // output wire m_axis_dout_tvalid
+ .m_axis_dout_tdata (mod_cmpy_out ) // output wire [63 : 0] m_axis_dout_tdata
+);
+
+// truncate to 16-bit
+reg signed [15:0] baseband_i = 'b0;
+reg signed [15:0] baseband_q = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ baseband_i <= 'b0;
+ baseband_q <= 'b0;
+ end
+ else begin
+ case (waveform_sel[1:0])
+ 2'd0: begin
+ // scale rasied-cosine-shaped bpsk signal by 1.125 or 1.625
+ baseband_i <= (sweep_on == 0 && freq_set == 0) ? (baseband_sel_i[17 -: 16] + {{3{baseband_sel_i[17]}},baseband_sel_i[17 -: 13]}) : (baseband_mult_i[25:10] + {baseband_mult_i[25],baseband_mult_i[25:11]} + {{3{baseband_mult_i[25]}},baseband_mult_i[25:13]});
+ baseband_q <= (sweep_on == 0 && freq_set == 0) ? (baseband_sel_q[17 -: 16] + {{3{baseband_sel_q[17]}},baseband_sel_q[17 -: 13]}) : (baseband_mult_q[25:10] + {baseband_mult_q[25],baseband_mult_q[25:11]} + {{3{baseband_mult_q[25]}},baseband_mult_q[25:13]});
+ end
+ 2'd1: begin
+ baseband_i <= (sweep_on == 0 && freq_set == 0) ? baseband_sel_i[17 -: 16] : (baseband_mult_i[25:10] + {{2{baseband_mult_i[25]}},baseband_mult_i[25:12]});
+ baseband_q <= (sweep_on == 0 && freq_set == 0) ? baseband_sel_q[17 -: 16] : (baseband_mult_q[25:10] + {{2{baseband_mult_q[25]}},baseband_mult_q[25:12]});
+ end
+ 2'd2: begin
+ baseband_i <= baseband_mult_i[24:9];
+ baseband_q <= baseband_mult_q[24:9];
+ end
+ 2'd3: begin
+ baseband_i <= (sweep_on == 0 && freq_set == 0) ? baseband_sel_i[17 -: 16] : baseband_mult_i[24:9];
+ baseband_q <= (sweep_on == 0 && freq_set == 0) ? baseband_sel_q[17 -: 16] : baseband_mult_q[24:9];
+ end
+ default: begin
+ // scale rasied-cosine-shaped bpsk signal by 1.125
+ baseband_i <= baseband_mult_i[25:10] + {{3{baseband_mult_i[25]}},baseband_mult_i[25:13]};
+ baseband_q <= baseband_mult_q[25:10] + {{3{baseband_mult_q[25]}},baseband_mult_q[25:13]};
+ end
+ endcase
+ end
+end
+
+// iq selection & baseband right shift
+reg signed [15:0] baseband_data_i = 'b0;
+reg signed [15:0] baseband_data_q = 'b0;
+
+always @(posedge clk) begin
+ if (rst) begin
+ baseband_data_i <= 'b0;
+ baseband_data_q <= 'b0;
+ end
+ else begin
+ // inphase selection
+ if (iq_sel[1]) begin
+ baseband_data_i <= baseband_i >>> bb_rshift;
+ end
+ else begin
+ baseband_data_i <= 'b0;
+ end
+ // quadrature selection
+ if (iq_sel[0]) begin
+ baseband_data_q <= baseband_q >>> bb_rshift;
+ end
+ else begin
+ baseband_data_q <= 'b0;
+ end
+ end
+end
+
+// output data to ports
+assign tx_data_i = baseband_data_i[15 -: DATA_WIDTH];
+assign tx_data_q = baseband_data_q[15 -: DATA_WIDTH];
+
+endmodule
+
+
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer:
+//
+// Create Date: 2020/12/08 12:43:46
+// Design Name:
+// Module Name: tb_tx_qpsk
+// Project Name:
+// Target Devices:
+// Tool Versions:
+// Description:
+//
+// Dependencies:
+//
+// Revision:
+// Revision 0.01 - File Created
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+
+// module tb_tx_qpsk;
+
+// reg clk = 1'b0 ;
+// reg rst = 1'b1 ;
+// reg tx_on = 1'b1 ;
+// reg [31:0] freq_set ;
+// reg [ 1:0] waveform_sel = 2'b00;
+// reg [ 1:0] iq_sel = 2'b11 ;
+// wire [11:0] tx_data_i ;
+// wire [11:0] tx_data_q ;
+// reg [ 3:0] bb_rshift = 5'b0 ;
+
+// tx_qpsk u_tx_qpsk
+// (
+// .clk (clk ),
+// .rst (rst ),
+// .tx_data_i (tx_data_i ),
+// .tx_data_q (tx_data_q ),
+// .waveform_sel (waveform_sel ),
+// .sweep_on (1'b0 ),
+// // .freq_set (32'd447392426 ),
+// .freq_set (32'd0 ),
+// .iq_sel (iq_sel ),
+// .bb_rshift (bb_rshift )
+// );
+
+// initial begin
+// #102
+// rst = 1'b0;
+// // freq_set = 32'd873813333;
+// // waveform_sel = 2'b00;
+// // bb_rshift = 5'd0;
+// // #5000
+// // bb_rshift = 5'd1;
+// // #5000
+// // bb_rshift = 5'd2;
+// // #5000
+// // bb_rshift = 5'd3;
+// // #5000
+// // bb_rshift = 5'd4;
+// // #5000
+// // bb_rshift = 5'd5;
+// // #5000
+// // bb_rshift = 5'd6;
+// // #5000
+// // bb_rshift = 5'd7;
+// // #5000
+// // bb_rshift = 5'd8;
+// // #5000
+// // bb_rshift = 5'd9;
+// // #5000
+// // bb_rshift = 5'd14;
+// // #5000
+// // bb_rshift = 5'd15;
+// // #5000
+// // bb_rshift = 5'd16;
+// // freq_set = 32'd0;
+// // func_sel = 3'b010;
+// // #7777
+// // freq_set = 32'd536870912;
+// // func_sel = 3'b100;
+// // #7777
+// // freq_set = 32'd0;
+// // func_sel = 3'b100;
+// // #7777
+// // freq_set = 32'd536870912;
+// // func_sel = 3'b010;
+// // #7777
+// // freq_set = 32'd0;
+// // func_sel = 3'b010;
+// // freq_set = 32'd536870912;
+// // iq_sel = 2'b00;
+// // #7777
+// // freq_set = 32'd536870912;
+// // iq_sel = 2'b01;
+// // #7777
+// // freq_set = 32'd536870912;
+// // iq_sel = 2'b10;
+// // #7777
+// // freq_set = 32'd536870912;
+// // iq_sel = 2'b11;
+// end
+
+// always #5 clk = ~clk;
+
+// // integer i;
+// // integer w_file;
+
+// // initial begin
+// // w_file = $fopen("D:\\qpsk_josh.txt","w");
+// // for (i = 0; i <= 35000; i = i + 1) begin
+// // wait(clk);
+// // #10;
+// // $fdisplay(w_file,"%d %d",$signed(tx_data_i),
+// // $signed(tx_data_q));
+// // if (i == 35000) begin
+// // $fclose(w_file);
+// // $stop;
+// // end
+// // end
+// // end
+
+// endmodule
diff --git a/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.xpr b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.xpr
new file mode 100644
index 00000000..cff23427
--- /dev/null
+++ b/modules/xc7z100ffg900-2/tx_qpsk/tx_qpsk.xpr
@@ -0,0 +1,407 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vivado Synthesis Defaults
+
+
+
+
+
+
+
+
+
+
+
+ Vivado Synthesis Defaults
+
+
+
+
+
+
+
+
+
+
+
+ Vivado Synthesis Defaults
+
+
+
+
+
+
+
+
+
+
+
+ Vivado Synthesis Defaults
+
+
+
+
+
+
+
+
+
+
+
+ Vivado Synthesis Defaults
+
+
+
+
+
+
+
+
+
+
+
+ Default settings for Implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default settings for Implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default settings for Implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default settings for Implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default settings for Implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ default_dashboard
+
+
+