Archived
archive dl814_dj_48m, add dl814_k7_cal_coarse
This commit is contained in:
Binary file not shown.
+1038
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+1038
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
||||
19:50:44 INFO : Registering command handlers for SDK TCF services
|
||||
19:50:45 INFO : Launching XSCT server: xsct.bat -interactive D:\vivado-git\projects\datalink_814\dl814_dj_48m\project\dl814_dj_48m\dl814_dj_48m.sdk\temp_xsdb_launch_script.tcl
|
||||
19:50:47 INFO : XSCT server has started successfully.
|
||||
19:50:47 INFO : Successfully done setting XSCT server connection channel
|
||||
19:50:47 INFO : Successfully done setting SDK workspace
|
||||
19:50:47 INFO : Processing command line option -hwspec D:/vivado-git/projects/datalink_814/dl814_dj_48m/project/dl814_dj_48m/dl814_dj_48m.sdk/system_top.hdf.
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="xilinx.gnu.armv7.exe.debug.456866805">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.armv7.exe.debug.456866805" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.xilinx.sdk.managedbuilder.XELF.arm.a53.x32" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="xilinx.gnu.armv7.exe.debug.456866805" name="Debug" parent="xilinx.gnu.armv7.exe.debug" prebuildStep="a9-linaro-pre-build-step">
|
||||
<folderInfo id="xilinx.gnu.armv7.exe.debug.456866805." name="/" resourcePath="">
|
||||
<toolChain id="xilinx.gnu.armv7.exe.debug.toolchain.1586845971" name="Xilinx ARM v7 GNU Toolchain" superClass="xilinx.gnu.armv7.exe.debug.toolchain">
|
||||
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.arm.a53.x32" id="xilinx.armv7.target.gnu.base.debug.1938071845" isAbstract="false" name="Debug Platform" superClass="xilinx.armv7.target.gnu.base.debug"/>
|
||||
<builder buildPath="${workspace_loc:/dl814_dj}/Debug" enableAutoBuild="true" id="xilinx.gnu.armv7.toolchain.builder.debug.617630868" managedBuildOn="true" name="GNU make.Debug" superClass="xilinx.gnu.armv7.toolchain.builder.debug"/>
|
||||
<tool id="xilinx.gnu.armv7.c.toolchain.assembler.debug.1047573726" name="ARM v7 gcc assembler" superClass="xilinx.gnu.armv7.c.toolchain.assembler.debug">
|
||||
<inputType id="xilinx.gnu.assembler.input.555402685" superClass="xilinx.gnu.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.c.toolchain.compiler.debug.1774665460" name="ARM v7 gcc compiler" superClass="xilinx.gnu.armv7.c.toolchain.compiler.debug">
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1889061760" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.1005499451" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.76473003" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="../../dl814_dj_bsp/ps7_cortexa9_0/include"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.compiler.misc.other.625569201" superClass="xilinx.gnu.compiler.misc.other" value="-c -fmessage-length=0 -MT"$@" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard" valueType="string"/>
|
||||
<inputType id="xilinx.gnu.armv7.c.compiler.input.1183684244" name="C source files" superClass="xilinx.gnu.armv7.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.cxx.toolchain.compiler.debug.1957150055" name="ARM v7 g++ compiler" superClass="xilinx.gnu.armv7.cxx.toolchain.compiler.debug">
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1101262563" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.756558545" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.801214341" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="../../dl814_dj_bsp/ps7_cortexa9_0/include"/>
|
||||
</option>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.toolchain.archiver.692841941" name="ARM v7 archiver" superClass="xilinx.gnu.armv7.toolchain.archiver"/>
|
||||
<tool id="xilinx.gnu.armv7.c.toolchain.linker.debug.1639478517" name="ARM v7 gcc linker" superClass="xilinx.gnu.armv7.c.toolchain.linker.debug">
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.635713944" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="../../dl814_dj_bsp/ps7_cortexa9_0/lib"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.708197263" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.33483812" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
<option id="xilinx.gnu.c.link.option.ldflags.1327301694" superClass="xilinx.gnu.c.link.option.ldflags" value=" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -specs=Xilinx.spec" valueType="string"/>
|
||||
<inputType id="xilinx.gnu.linker.input.1952377222" superClass="xilinx.gnu.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
<inputType id="xilinx.gnu.linker.input.lscript.1725762801" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.cxx.toolchain.linker.debug.63577361" name="ARM v7 g++ linker" superClass="xilinx.gnu.armv7.cxx.toolchain.linker.debug">
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1722747438" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="../../dl814_dj_bsp/ps7_cortexa9_0/lib"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.2040713160" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.2141903682" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.size.debug.1606038399" name="ARM v7 Print Size" superClass="xilinx.gnu.armv7.size.debug"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
<cconfiguration id="xilinx.gnu.armv7.exe.release.826915070">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.armv7.exe.release.826915070" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.xilinx.sdk.managedbuilder.XELF.arm.a53.x32" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="xilinx.gnu.armv7.exe.release.826915070" name="Release" parent="xilinx.gnu.armv7.exe.release" prebuildStep="a9-linaro-pre-build-step">
|
||||
<folderInfo id="xilinx.gnu.armv7.exe.release.826915070." name="/" resourcePath="">
|
||||
<toolChain id="xilinx.gnu.armv7.exe.release.toolchain.784200307" name="Xilinx ARM v7 GNU Toolchain" superClass="xilinx.gnu.armv7.exe.release.toolchain">
|
||||
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.arm.a53.x32" id="xilinx.armv7.target.gnu.base.release.1991488237" isAbstract="false" name="Release Platform" superClass="xilinx.armv7.target.gnu.base.release"/>
|
||||
<builder buildPath="${workspace_loc:/dl814_dj}/Release" enableAutoBuild="true" id="xilinx.gnu.armv7.toolchain.builder.release.300475614" managedBuildOn="true" name="GNU make.Release" superClass="xilinx.gnu.armv7.toolchain.builder.release"/>
|
||||
<tool id="xilinx.gnu.armv7.c.toolchain.assembler.release.1074804308" name="ARM v7 gcc assembler" superClass="xilinx.gnu.armv7.c.toolchain.assembler.release">
|
||||
<inputType id="xilinx.gnu.assembler.input.417327707" superClass="xilinx.gnu.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.c.toolchain.compiler.release.2037367058" name="ARM v7 gcc compiler" superClass="xilinx.gnu.armv7.c.toolchain.compiler.release">
|
||||
<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.1784258409" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.2002775392" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.255521550" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="../../dl814_dj_bsp/ps7_cortexa9_0/include"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.compiler.misc.other.600390547" superClass="xilinx.gnu.compiler.misc.other" value="-c -fmessage-length=0 -MT"$@" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard" valueType="string"/>
|
||||
<inputType id="xilinx.gnu.armv7.c.compiler.input.202916131" name="C source files" superClass="xilinx.gnu.armv7.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.cxx.toolchain.compiler.release.1253527446" name="ARM v7 g++ compiler" superClass="xilinx.gnu.armv7.cxx.toolchain.compiler.release">
|
||||
<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.1143080105" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.1684314275" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.2005843440" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="../../dl814_dj_bsp/ps7_cortexa9_0/include"/>
|
||||
</option>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.toolchain.archiver.330623013" name="ARM v7 archiver" superClass="xilinx.gnu.armv7.toolchain.archiver"/>
|
||||
<tool id="xilinx.gnu.armv7.c.toolchain.linker.release.1960688979" name="ARM v7 gcc linker" superClass="xilinx.gnu.armv7.c.toolchain.linker.release">
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.977534768" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="../../dl814_dj_bsp/ps7_cortexa9_0/lib"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.1274160773" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.2023470860" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
<option id="xilinx.gnu.c.link.option.ldflags.383683029" superClass="xilinx.gnu.c.link.option.ldflags" value=" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -specs=Xilinx.spec" valueType="string"/>
|
||||
<inputType id="xilinx.gnu.linker.input.2143735860" superClass="xilinx.gnu.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
<inputType id="xilinx.gnu.linker.input.lscript.1852655964" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.cxx.toolchain.linker.release.1116062635" name="ARM v7 g++ linker" superClass="xilinx.gnu.armv7.cxx.toolchain.linker.release">
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.964429203" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="../../dl814_dj_bsp/ps7_cortexa9_0/lib"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.366568400" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.686046423" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.armv7.size.release.1079109590" name="ARM v7 Print Size" superClass="xilinx.gnu.armv7.size.release"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="dl814_dj.xilinx.gnu.armv7.exe.108039" name="Xilinx ARM v7 Executable" projectType="xilinx.gnu.armv7.exe"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.armv7.exe.release.826915070;xilinx.gnu.armv7.exe.release.826915070.">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMA53X32GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.armv7.exe.debug.456866805;xilinx.gnu.armv7.exe.debug.456866805.;xilinx.gnu.armv7.c.toolchain.compiler.debug.1774665460;xilinx.gnu.armv7.c.compiler.input.1183684244">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMA53X32GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.armv7.exe.release.826915070;xilinx.gnu.armv7.exe.release.826915070.;xilinx.gnu.armv7.c.toolchain.compiler.release.2037367058;xilinx.gnu.armv7.c.compiler.input.202916131">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMA53X32GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.armv7.exe.debug.456866805;xilinx.gnu.armv7.exe.debug.456866805.">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMA53X32GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
</cproject>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>dl814_dj</name>
|
||||
<comment>Created by SDK v2019.1. dl814_dj_bsp - ps7_cortexa9_0</comment>
|
||||
<projects>
|
||||
<project>dl814_dj_bsp</project>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
+1
@@ -0,0 +1 @@
|
||||
Empty application. Add your own sources.
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
*startfile:
|
||||
crti%O%s crtbegin%O%s
|
||||
+275
@@ -0,0 +1,275 @@
|
||||
/**
|
||||
* \file common.c
|
||||
* \brief Contains Mykonos API common wrapper functions for user hardware platform drivers
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "common.h"
|
||||
#include "platform_drivers.h"
|
||||
#include "parameters.h"
|
||||
|
||||
ADI_LOGLEVEL CMB_LOGLEVEL = ADIHAL_LOG_NONE;
|
||||
|
||||
static uint32_t _desired_time_to_elapse_us = 0;
|
||||
struct spi_desc *spi_ad_desc;
|
||||
struct gpio_desc *gpio_ad9371_resetb;
|
||||
struct gpio_desc *gpio_ad9528_resetb;
|
||||
struct gpio_desc *gpio_ad9528_sysref_req;
|
||||
|
||||
commonErr_t CMB_initPlatform(void)
|
||||
{
|
||||
struct spi_init_param spi_param;
|
||||
int32_t status = COMMONERR_OK;
|
||||
|
||||
status |= gpio_get(&gpio_ad9371_resetb, AD9371_RESET_B);
|
||||
status |= gpio_get(&gpio_ad9528_resetb, AD9528_RESET_B);
|
||||
status |= gpio_get(&gpio_ad9528_sysref_req, AD9528_SYSREF_REQ);
|
||||
|
||||
spi_param.id = 0;
|
||||
spi_param.mode = SPI_MODE_0;
|
||||
spi_param.chip_select = AD9371_CS;
|
||||
spi_param.max_speed_hz = 25000000u;
|
||||
|
||||
status |= spi_init(&spi_ad_desc, &spi_param);
|
||||
|
||||
if (status != SUCCESS) {
|
||||
return COMMONERR_FAILED;
|
||||
}
|
||||
|
||||
return COMMONERR_OK;
|
||||
}
|
||||
|
||||
commonErr_t CMB_closeHardware(void)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_setGPIO(uint32_t GPIO)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_hardReset(uint8_t spiChipSelectIndex)
|
||||
{
|
||||
struct gpio_desc *reset_gpio;
|
||||
|
||||
switch (spiChipSelectIndex) {
|
||||
case AD9371_CS:
|
||||
reset_gpio = gpio_ad9371_resetb;
|
||||
break;
|
||||
case AD9528_CS:
|
||||
reset_gpio = gpio_ad9528_resetb;
|
||||
break;
|
||||
default:
|
||||
return(COMMONERR_FAILED);
|
||||
}
|
||||
|
||||
gpio_direction_output(reset_gpio, 1);
|
||||
CMB_wait_ms(1);
|
||||
gpio_direction_output(reset_gpio, 0);
|
||||
CMB_wait_ms(1);
|
||||
gpio_direction_output(reset_gpio, 1);
|
||||
CMB_wait_ms(1);
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_setSPIOptions(spiSettings_t *spiSettings)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_setSPIChannel(uint16_t chipSelectIndex )
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_SPIWriteByte(spiSettings_t *spiSettings, uint16_t addr,
|
||||
uint8_t data)
|
||||
{
|
||||
uint8_t buf[3];
|
||||
|
||||
spi_ad_desc->chip_select = spiSettings->chipSelectIndex - 1;
|
||||
|
||||
buf[0] = (uint8_t) ((addr >> 8) & 0x7f);
|
||||
buf[1] = (uint8_t) (addr & 0xff);
|
||||
buf[2] = (uint8_t) data;
|
||||
|
||||
spi_write_and_read(spi_ad_desc, buf, 3);
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_SPIWriteBytes(spiSettings_t *spiSettings, uint16_t *addr,
|
||||
uint8_t *data, uint32_t count)
|
||||
{
|
||||
uint32_t index;
|
||||
|
||||
for (index = 0; index < count; index++)
|
||||
if (CMB_SPIWriteByte(spiSettings, *(addr + index),
|
||||
*(data + index)) != COMMONERR_OK)
|
||||
return(COMMONERR_FAILED);
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_SPIReadByte(spiSettings_t *spiSettings, uint16_t addr,
|
||||
uint8_t *readdata)
|
||||
{
|
||||
uint8_t buf[3];
|
||||
|
||||
spi_ad_desc->chip_select = spiSettings->chipSelectIndex - 1;
|
||||
|
||||
buf[0] = (uint8_t) ((addr >> 8) | 0x80);
|
||||
buf[1] = (uint8_t) (addr & 0xff);
|
||||
buf[2] = (uint8_t) 0x00;
|
||||
|
||||
spi_write_and_read(spi_ad_desc, buf, 3);
|
||||
*readdata = buf[2];
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_SPIWriteField(spiSettings_t *spiSettings, uint16_t addr,
|
||||
uint8_t field_val, uint8_t mask, uint8_t start_bit)
|
||||
{
|
||||
uint8_t data;
|
||||
|
||||
if (CMB_SPIReadByte(spiSettings, addr, &data) != COMMONERR_OK)
|
||||
return(COMMONERR_FAILED);
|
||||
|
||||
data = (data & ~mask) | ((field_val << start_bit) & mask);
|
||||
|
||||
if (CMB_SPIWriteByte(spiSettings, addr, data) != COMMONERR_OK)
|
||||
return(COMMONERR_FAILED);
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
/* read a field in a single register space (not multibyte fields) */
|
||||
commonErr_t CMB_SPIReadField(spiSettings_t *spiSettings, uint16_t addr,
|
||||
uint8_t *field_val, uint8_t mask, uint8_t start_bit)
|
||||
{
|
||||
uint8_t data;
|
||||
|
||||
if (CMB_SPIReadByte(spiSettings, addr, &data) != COMMONERR_OK)
|
||||
return(COMMONERR_FAILED);
|
||||
|
||||
data = (data & mask) >> start_bit;
|
||||
*field_val = data;
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
|
||||
commonErr_t CMB_writeToLog(ADI_LOGLEVEL level, uint8_t deviceIndex,
|
||||
uint32_t errorCode, const char *comment)
|
||||
{
|
||||
|
||||
if((CMB_LOGLEVEL & ADIHAL_LOG_ERROR) && (level == ADIHAL_LOG_ERROR)) {
|
||||
printf("ERROR: %d: %s", (int)errorCode, comment);
|
||||
} else if((CMB_LOGLEVEL & ADIHAL_LOG_WARNING)
|
||||
&& (level == ADIHAL_LOG_WARNING)) {
|
||||
printf("WARNING: %d: %s",(int)errorCode, comment);
|
||||
} else if((CMB_LOGLEVEL & ADIHAL_LOG_MESSAGE)
|
||||
&& (level == ADIHAL_LOG_MESSAGE)) {
|
||||
printf("MESSAGE: %d: %s",(int)errorCode, comment);
|
||||
} else if(CMB_LOGLEVEL == ADIHAL_LOG_NONE ) {
|
||||
//printf("MESSAGE: %d: %s",(int)errorCode, comment);
|
||||
} else {
|
||||
printf("Undefined Log Level: 0x%X", level);
|
||||
}
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
/* if filename null, a default path will be used in logging.c */
|
||||
commonErr_t CMB_openLog(const char *filename)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_closeLog(void)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_flushLog(void)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_wait_ms(uint32_t time_ms)
|
||||
{
|
||||
mdelay(time_ms);
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_wait_us(uint32_t time_us)
|
||||
{
|
||||
udelay(time_us);
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_setTimeout_ms(uint32_t timeOut_ms)
|
||||
{
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
_desired_time_to_elapse_us = timeOut_ms * 1000;
|
||||
#else
|
||||
_desired_time_to_elapse_us = timeOut_ms * 50; // FIXME
|
||||
#endif
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_setTimeout_us(uint32_t timeOut_us)
|
||||
{
|
||||
_desired_time_to_elapse_us = timeOut_us;
|
||||
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
|
||||
commonErr_t CMB_hasTimeoutExpired()
|
||||
{
|
||||
udelay(1);
|
||||
|
||||
_desired_time_to_elapse_us--;
|
||||
if (_desired_time_to_elapse_us > 0)
|
||||
return(COMMONERR_OK);
|
||||
|
||||
return(COMMONERR_FAILED);
|
||||
}
|
||||
|
||||
commonErr_t CMB_regRead(uint32_t offset, uint32_t *data)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_regWrite(uint32_t offset, uint32_t data)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_memRead(uint32_t offset, uint32_t *data, uint32_t len)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
|
||||
commonErr_t CMB_memWrite(uint32_t offset, uint32_t *data, uint32_t len)
|
||||
{
|
||||
return(COMMONERR_OK);
|
||||
}
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
/**
|
||||
* \file common.h
|
||||
* \brief Contains type definitions and prototype declarations for common.c
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _COMMON_H_
|
||||
#define _COMMON_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* build project settings include the path to the desired platform folder for correct includes */
|
||||
#include "stdint.h"
|
||||
|
||||
#define THROW_ERROR()
|
||||
|
||||
#define SPIARRAYSIZE 1024
|
||||
|
||||
/* assuming 3 byte SPI message - integer math enforces floor() */
|
||||
#define SPIARRAYTRIPSIZE ((SPIARRAYSIZE / 3) * 3)
|
||||
|
||||
/*========================================
|
||||
* Enums and structures
|
||||
*=======================================*/
|
||||
/* proposed to increase number of error return values to make unique for each return */
|
||||
typedef enum
|
||||
{
|
||||
ADIERR_OK=0,
|
||||
ADIERR_INV_PARM,
|
||||
ADIERR_FAILED
|
||||
} ADI_ERR;
|
||||
|
||||
/*!< \brief COMMON layer error reporting enumerated types */
|
||||
typedef enum
|
||||
{
|
||||
COMMONERR_OK=0,
|
||||
COMMONERR_FAILED
|
||||
} commonErr_t;
|
||||
|
||||
/* bit 0 is MESSAGE, bit 1 is WARNING, bit 2 is ERROR */
|
||||
typedef enum
|
||||
{
|
||||
ADIHAL_LOG_NONE = 0x0,
|
||||
ADIHAL_LOG_MESSAGE = 0x1,
|
||||
ADIHAL_LOG_WARNING = 0x2,
|
||||
ADIHAL_LOG_ERROR = 0x4,
|
||||
ADIHAL_LOG_SPI = 0x8,
|
||||
ADIHAL_LOG_AXI_REG = 0x10,
|
||||
ADIHAL_LOG_AXI_MEM = 0x20,
|
||||
ADIHAL_LOG_ALL = 0x3F
|
||||
} ADI_LOGLEVEL;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold SPI settings for all system device types
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t chipSelectIndex; ///< valid 1~8
|
||||
uint8_t writeBitPolarity; ///< the level of the write bit of a SPI write instruction word, value is inverted for SPI read operation
|
||||
uint8_t longInstructionWord; ///< 1 = 16bit instruction word, 0 = 8bit instruction word
|
||||
uint8_t MSBFirst; ///< 1 = MSBFirst, 0 = LSBFirst
|
||||
uint8_t CPHA; ///< clock phase, sets which clock edge the data updates (valid 0 or 1)
|
||||
uint8_t CPOL; ///< clock polarity 0 = clock starts low, 1 = clock starts high
|
||||
uint8_t enSpiStreaming; ///< Not implemented. SW feature to improve SPI throughput.
|
||||
uint8_t autoIncAddrUp; ///< Not implemented. For SPI Streaming, set address increment direction. 1= next addr = addr+1, 0:addr = addr-1
|
||||
uint8_t fourWireMode; ///< 1: Use 4-wire SPI, 0: 3-wire SPI (SDIO pin is bidirectional). NOTE: ADI's FPGA platform always uses 4-wire mode.
|
||||
uint32_t spiClkFreq_Hz; ///< SPI Clk frequency in Hz (default 25000000), platform will use next lowest frequency that it's baud rate generator can create */
|
||||
|
||||
} spiSettings_t;
|
||||
|
||||
/* global variable so application layer can set the log level */
|
||||
extern ADI_LOGLEVEL CMB_LOGLEVEL;
|
||||
extern struct spi_desc *spi_ad_desc;
|
||||
extern struct gpio_desc *gpio_ad9371_resetb;
|
||||
extern struct gpio_desc *gpio_ad9528_resetb;
|
||||
extern struct gpio_desc *gpio_ad9528_sysref_req;
|
||||
|
||||
/* initialize hardware platform */
|
||||
commonErr_t CMB_initPlatform(void);
|
||||
|
||||
/* close hardware pointers */
|
||||
commonErr_t CMB_closeHardware(void);
|
||||
|
||||
/* GPIO function */
|
||||
commonErr_t CMB_setGPIO(uint32_t GPIO);
|
||||
|
||||
/* hardware reset function */
|
||||
commonErr_t CMB_hardReset(uint8_t spiChipSelectIndex);
|
||||
|
||||
/* SPI read/write functions */
|
||||
commonErr_t CMB_setSPIOptions(spiSettings_t *spiSettings); /* allows the platform HAL to work with devices with various SPI settings */
|
||||
commonErr_t CMB_setSPIChannel(uint16_t chipSelectIndex ); /* value of 0 deasserts all chip selects */
|
||||
commonErr_t CMB_SPIWriteByte(spiSettings_t *spiSettings, uint16_t addr, uint8_t data); /* single SPI byte write function */
|
||||
commonErr_t CMB_SPIWriteBytes(spiSettings_t *spiSettings, uint16_t *addr, uint8_t *data, uint32_t count);
|
||||
commonErr_t CMB_SPIReadByte (spiSettings_t *spiSettings, uint16_t addr, uint8_t *readdata); /* single SPI byte read function */
|
||||
commonErr_t CMB_SPIWriteField(spiSettings_t *spiSettings, uint16_t addr, uint8_t field_val, uint8_t mask, uint8_t start_bit); /* write a field in a single register */
|
||||
commonErr_t CMB_SPIReadField (spiSettings_t *spiSettings, uint16_t addr, uint8_t *field_val, uint8_t mask, uint8_t start_bit); /* read a field in a single register */
|
||||
|
||||
/* platform timer functions */
|
||||
commonErr_t CMB_wait_ms(uint32_t time_ms);
|
||||
commonErr_t CMB_wait_us(uint32_t time_us);
|
||||
commonErr_t CMB_setTimeout_ms(uint32_t timeOut_ms);
|
||||
commonErr_t CMB_setTimeout_us(uint32_t timeOut_us);
|
||||
commonErr_t CMB_hasTimeoutExpired();
|
||||
|
||||
/* platform logging functions */
|
||||
commonErr_t CMB_openLog(const char *filename);
|
||||
commonErr_t CMB_closeLog(void);
|
||||
commonErr_t CMB_writeToLog(ADI_LOGLEVEL level, uint8_t deviceIndex, uint32_t errorCode, const char *comment);
|
||||
commonErr_t CMB_flushLog(void);
|
||||
|
||||
/* platform FPGA AXI register read/write functions */
|
||||
commonErr_t CMB_regRead(uint32_t offset, uint32_t *data);
|
||||
commonErr_t CMB_regWrite(uint32_t offset, uint32_t data);
|
||||
|
||||
/* platform DDR3 memory read/write functions */
|
||||
commonErr_t CMB_memRead(uint32_t offset, uint32_t *data, uint32_t len);
|
||||
commonErr_t CMB_memWrite(uint32_t offset, uint32_t *data, uint32_t len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
+1140
File diff suppressed because it is too large
Load Diff
+348
@@ -0,0 +1,348 @@
|
||||
/*
|
||||
* headless.h
|
||||
*
|
||||
* Created on: 2021Äê6ÔÂ8ÈÕ
|
||||
* Author: Josh
|
||||
*/
|
||||
|
||||
#ifndef SRC_HEADLESS_H_
|
||||
#define SRC_HEADLESS_H_
|
||||
|
||||
/***************************** Include Files ********************************/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "xil_cache.h"
|
||||
#include "xscugic.h"
|
||||
//#include "xgpio.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "./mykonos/ad9528.h"
|
||||
#include "./mykonos/mykonos.h"
|
||||
#include "./mykonos/Mykonos_M3.h"
|
||||
#include "./mykonos/mykonos_gpio.h"
|
||||
#include "myk_ad9528init.h"
|
||||
#include "myk_init.h"
|
||||
|
||||
#include "parameters.h"
|
||||
|
||||
/************************** Constant Definitions *****************************/
|
||||
|
||||
/**************************** Type Definitions *******************************/
|
||||
|
||||
/***************** Macros (Inline Functions) Definitions *********************/
|
||||
|
||||
/************************** Variable Definitions *****************************/
|
||||
|
||||
/************************** Function Prototypes ******************************/
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
*
|
||||
* This function setups ad9528 and ad9371 via spi.
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return
|
||||
* - ADIERR_FAILED if successful,
|
||||
* - ADIERR_OK if not succesful
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
******************************************************************************/
|
||||
int HARDWARE_initialize();
|
||||
|
||||
int HARDWARE_ad9371Config(void);
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
*
|
||||
* Setup up Axi Gpio, through which ad9371 can be reconfigured. Axi Gpio
|
||||
* instance and interrupt system initialization are included.
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return
|
||||
* - ADIERR_FAILED if successful,
|
||||
* - ADIERR_OK if not succesful
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
******************************************************************************/
|
||||
int HW_ad9371DynamicCfgInit(void);
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
*
|
||||
* Setup up interrupt system, initialize exception handlers.
|
||||
*
|
||||
* @param DeviceId is the unique identifier for a device.
|
||||
* @param GicPtr is a pointer to the XScuGic instance.
|
||||
*
|
||||
* @return
|
||||
* - XST_SUCCESS if successful,
|
||||
* - XST_FAILURE if not succesful
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
******************************************************************************/
|
||||
int HW_setupIntrSystem(u16 DeviceId, XScuGic * GicPtr);
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
*
|
||||
* Make the connection between the Int_Id of the interrupt source and the
|
||||
* associated handler. Set the interrupt priority and trigger type for the
|
||||
* specified IRQ source..
|
||||
*
|
||||
* @param GicPtr is a pointer to the XScuGic instance.
|
||||
* @param Int_Id contains the ID of the interrupt source and should be
|
||||
* in the range of 0 to XSCUGIC_MAX_NUM_INTR_INPUTS - 1
|
||||
* @param Handler to the handler for that interrupt.
|
||||
* @param CallBackRef is the callback reference, usually the instance
|
||||
* pointer of the connecting driver.
|
||||
* @param Priority is the new priority for the IRQ source. 0 is highest
|
||||
* priority, 0xF8(248) is lowest. There are 32 priority levels
|
||||
* supported with a step of 8. Hence the supported priorities are
|
||||
* 0, 8, 16, 32, 40 ..., 248.
|
||||
* @param Trigger is the new trigger type for the IRQ source.
|
||||
* Each bit pair describes the configuration for an INT_ID.
|
||||
* SFI Read Only b10 always
|
||||
* PPI Read Only depending on how the PPIs are configured.
|
||||
* b01 Active HIGH level sensitive
|
||||
* b11 Rising edge sensitive
|
||||
* SPI LSB is read only.
|
||||
* b01 Active HIGH level sensitive
|
||||
* b11 Rising edge sensitive/
|
||||
*
|
||||
* @return
|
||||
* - XST_SUCCESS if successful,
|
||||
* - XST_FAILURE if not succesful
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
******************************************************************************/
|
||||
int HW_connectIntr(XScuGic *GicPtr,u32 IntrId,Xil_InterruptHandler Handler,
|
||||
void *CallBackRef, u8 Priority, u8 Trigger);
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
*
|
||||
* Initialize Analog Device related configuration profile. This is a HARDWARE-
|
||||
* ASSOTIATED function, which may differ between different board.
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return
|
||||
* - ADIERR_OK if configuration profile exists,
|
||||
* - ADIERR_FAILED if onfiguration profile does not exist
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
******************************************************************************/
|
||||
int HW_adiCfgProfileInit(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* This function conducts AD9528 device configuration initializing procedure.
|
||||
*
|
||||
* @param clockAD9528_device is a pointer to the data structure holding
|
||||
* AD9528 settings, which contains basic AD9528 settings such as
|
||||
* spi and gpio.
|
||||
*
|
||||
* @return
|
||||
* - ADIERR_OK if successful.
|
||||
* - ADIERR_FAILED if not successful.
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
int HW_9528Config(ad9528Device_t *clockAD9528_device);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* This function read AD9528 reg508 status, to check whether ad9528 is locked or
|
||||
* not.
|
||||
*
|
||||
* @param clockAD9528_device is a pointer to the data structure holding
|
||||
* AD9528 settings, which contains basic AD9528 settings.
|
||||
*
|
||||
* @return
|
||||
* - ADIERR_OK if successful.
|
||||
* - ADIERR_FAILED if not successful.
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
int HW_9528GetLockStatus(ad9528Device_t *device, uint8_t *reg508);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* Conduct AD9371 device configuration initializing procedure.
|
||||
*
|
||||
* @param clockAD9528_device is a pointer to the data structure holding
|
||||
* AD9528 settings, which contains basic AD9528 settings.
|
||||
* @param mykDevice is ADI hardware layer settings pointer specific to
|
||||
* a Mykonos instance which contains basic settings such as spi,
|
||||
* gpio, tx/rx and jesd configurations.
|
||||
*
|
||||
* @return
|
||||
* - ADIERR_OK if successful.
|
||||
* - ADIERR_FAILED if not successful.
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* Read AD9371's RX framer, ORX framer and TX deframer status, to check jesd204b
|
||||
* sync status.
|
||||
*
|
||||
* @param mykDevice is ADI hardware layer settings pointer specific to
|
||||
* a Mykonos instance which contains basic settings such as spi,
|
||||
* gpio, tx/rx and jesd configurations.
|
||||
* @param framerStatus is the RX framer status byte read
|
||||
* framerStatus | Description
|
||||
* -------------|-----------------------------------------------------------------------------
|
||||
* [7] | SYSREF phase error ? a new SYSREF had different timing than the first that set the LMFC timing.
|
||||
* [6] | Framer lane FIFO read/write pointer delta has changed. Can help debug issues with deterministic latency.
|
||||
* [5] | Framer has received the SYSREF and has retimed its LMFC
|
||||
* [4:2] | Framer ILAS state: 0=CGS, 1= 1st Multframe, 2= 2nd Multiframe, 3= 3rd Multiframe, 4= 4th multiframe, 5= Last multiframe, 6=invalid, 7= ILAS complete
|
||||
* [1:0] | Framer Tx state: 0=CGS, 1= ILAS, 2 = ADC Data
|
||||
* @param obsFramerStatus is the ORX framer status byte read
|
||||
* obsFramerStatus | Description
|
||||
* ----------------|-----------------------------------------------------------------------------
|
||||
* [7] | SYSREF phase error ? a new SYSREF had different timing than the first that set the LMFC timing.
|
||||
* [6] | Framer lane FIFO read/write pointer delta has changed. Can help debug issues with deterministic latency.
|
||||
* [5] | Framer has received the SYSREF and has retimed its LMFC
|
||||
* [4:2] | Framer ILAS state: 0=CGS, 1= 1st Multframe, 2= 2nd Multiframe, 3= 3rd Multiframe, 4= 4th multiframe, 5= Last multiframe, 6=invalid, 7= ILAS complete
|
||||
* [1:0] | Framer Tx state: 0=CGS, 1= ILAS, 2 = ADC Data
|
||||
* @param deframerStatus is the TX deframer status byte read
|
||||
* deframerStatus | Bit Name | Description
|
||||
* ----------------|--------------------------|---------------------------------------------
|
||||
* [7] | Unused | Unused
|
||||
* [6] | Deframer IRQ | This bit indicates that the IRQ interrupt was asserted.
|
||||
* [5] | Deframer SYSREF Received | When this bit is set, it indicates that the SYSREF pulse was received by the deframer IP
|
||||
* [4] | Deframer Receiver Error | This bit is set when PRBS has received an error.
|
||||
* [3] | Valid Checksum | This bit is set when the received ILAS checksum is valid.
|
||||
* [2] | EOF Event | This bit captures the internal status of the framer End of Frame event. Value =1 if framing error during ILAS
|
||||
* [1] | EOMF Event | This bit captures the internal status of the framer End of Multi-Frame event. Value =1 if framing error during ILAS
|
||||
* [0] | FS Lost | This bit captures the internal status of the framer Frame Symbol event. Value =1 if framing error during ILAS or user data (invalid replacement characters)
|
||||
*
|
||||
* @return
|
||||
* - ADIERR_OK if successful.
|
||||
* - ADIERR_FAILED if not successful.
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
int HW_9371CheckJesdStatus(mykonosDevice_t *mykDevice, uint8_t *framerStatus,
|
||||
uint8_t *obsFramerStatus, uint8_t *deframerStatus);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* This function conducts AD9371/9375 samll RF PLL frequcny change procedure. The
|
||||
* procedure is performed as follows:
|
||||
* 1. Move the device into the radio off state.
|
||||
* 2. Program the new local oscillator (LO) frequency.
|
||||
* 3. Reset the external channel.(ignored)
|
||||
* 4. Move the device back into the radio on state.
|
||||
* 5. Reenable tracking calibrations.(ignored)
|
||||
*
|
||||
* @param mykDevice is ADI hardware layer settings pointer specific to
|
||||
* a Mykonos instance which contains basic settings such as spi,
|
||||
* gpio, tx/rx and jesd configurations.
|
||||
* @param freq_Hz is the target frequancy in Hz.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @note The procedure is used when a radio frequency (RF) phased-lock loop
|
||||
* (PLL) change is required with the following conditions:
|
||||
* - A desire to change the Rx, Tx, and ORx frequencies.
|
||||
* - The frequency step change is less than 100 MHz.
|
||||
* - The frequency step does not cross the divide by 2 boundaries outlined
|
||||
* in AD9371/9375-UG-992-Rev.B-Table 96.
|
||||
*
|
||||
*******************************************************************************/
|
||||
int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* This function conducts AD9371/9375 large RF PLL frequcny change procedure. The
|
||||
* procedure is performed as follows:
|
||||
* 1. Move the device into the radio off state.
|
||||
* 2. Program the new local oscillator (LO) frequency.
|
||||
* 3. Rerun the initialization calibrations.
|
||||
* 4. Move the device back into the radio on state.
|
||||
* 5. Reenable tracking calibrations.(ignored)
|
||||
*
|
||||
* @param mykDevice is ADI hardware layer settings pointer specific to
|
||||
* a Mykonos instance which contains basic settings such as spi,
|
||||
* gpio, tx/rx and jesd configurations.
|
||||
* @param freq_Hz is the target frequancy in Hz.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @note The procedure is used when a radio frequency (RF) phased-lock loop
|
||||
* (PLL) change is required with the following conditions:
|
||||
* - A desire to change the Rx, Tx, and ORx frequencies.
|
||||
* - The frequency step change is more than 100 MHz.
|
||||
* - The frequency step does cross the divide by 2 boundaries outlined
|
||||
* in AD9371/9375-UG-992-Rev.B-Table 96.
|
||||
*
|
||||
*******************************************************************************/
|
||||
int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* Handles AD9371 TX & RX frequency change axi gpio interruput.
|
||||
*
|
||||
* @param CallBackRef is the callback reference, usually the instance
|
||||
* pointer of the connecting driver.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
void FreqIntrHandler(void *CallbackRef);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* Handles AD9371 Rx gain index change axi gpio interruput.
|
||||
*
|
||||
* @param CallBackRef is the callback reference, usually the instance
|
||||
* pointer of the connecting driver.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
void GainIntrHandler(void *CallbackRef);
|
||||
|
||||
/******************************************************************************/
|
||||
/**
|
||||
*
|
||||
* Handles AD9371 Tx attenuation change axi gpio interruput.
|
||||
*
|
||||
* @param CallBackRef is the callback reference, usually the instance
|
||||
* pointer of the connecting driver.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
void AttnIntrHandler(void *CallbackRef);
|
||||
|
||||
#endif /* SRC_HEADLESS_H_ */
|
||||
+189
@@ -0,0 +1,189 @@
|
||||
///*
|
||||
// * myk_clock_init.c
|
||||
// *
|
||||
// */
|
||||
//
|
||||
///**
|
||||
//* \page Disclaimer Legal Disclaimer
|
||||
//* Copyright 2015-2017 Analog Devices Inc.
|
||||
//* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
//*
|
||||
//*/
|
||||
//
|
||||
//#ifndef MYK_CLOCK_INIT_C_
|
||||
//#define MYK_CLOCK_INIT_C_
|
||||
//#include <stdint.h>
|
||||
//#include <stdlib.h>
|
||||
//#include <stddef.h>
|
||||
//#include "common.h"
|
||||
//
|
||||
//#include "ad9528.h"
|
||||
//#include "t_ad9528.h"
|
||||
//#include "myk_ad9528init.h"
|
||||
//#include "parameters.h"
|
||||
//
|
||||
//static ad9528pll1Settings_t clockPll1Settings =
|
||||
//{
|
||||
// .refA_Frequency_Hz = 30720000,
|
||||
// .refA_Divider = 1,
|
||||
// .refA_bufferCtrl = DISABLED,
|
||||
// .refB_Frequency_Hz = 0,
|
||||
// .refB_Divider = 1,
|
||||
// .refB_bufferCtrl = DISABLED,
|
||||
// .vcxo_Frequency_Hz = 122880000,
|
||||
// .vcxoBufferCtrl = NEG_SINGLE_ENDED,
|
||||
// .nDivider = 4,
|
||||
// .bypassPll1 = 0
|
||||
//};
|
||||
//
|
||||
//static ad9528pll2Settings_t clockPll2Settings =
|
||||
//{
|
||||
// .rfDivider = 4,
|
||||
// .n2Divider = 10,
|
||||
// .totalNdiv = 30
|
||||
//};
|
||||
//
|
||||
//static ad9528outputSettings_t clockOutputSettings =
|
||||
//{
|
||||
// .outPowerDown = 53237, // 0xCFF5
|
||||
// .outSource = {
|
||||
// CHANNEL_DIV, CHANNEL_DIV, CHANNEL_DIV, SYSREF,
|
||||
// CHANNEL_DIV, CHANNEL_DIV, CHANNEL_DIV, CHANNEL_DIV,
|
||||
// CHANNEL_DIV, CHANNEL_DIV, CHANNEL_DIV, CHANNEL_DIV,
|
||||
// SYSREF, CHANNEL_DIV},
|
||||
// .outBufferCtrl = {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
|
||||
// .outAnalogDelay = {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
|
||||
// .outDigitalDelay = {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
|
||||
// .outChannelDiv = {10,10,10,10,10,10,10,10,10,10,10,10,10,10},
|
||||
// .outFrequency_Hz = {122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000}
|
||||
//};
|
||||
//
|
||||
//static ad9528sysrefSettings_t clockSysrefSettings =
|
||||
//{
|
||||
// .sysrefRequestMethod = PIN,
|
||||
// .sysrefSource = INTERNAL,
|
||||
// .sysrefPinEdgeMode = LEVEL_ACTIVE_HIGH,
|
||||
// .sysrefPinBufferMode = DISABLED,
|
||||
// .sysrefPatternMode = NSHOT,
|
||||
// .sysrefNshotMode = ONE_PULSE,
|
||||
// .sysrefDivide = 512
|
||||
//};
|
||||
//
|
||||
//static spiSettings_t clockSpiSettings =
|
||||
//{
|
||||
// .chipSelectIndex = AD9528_CS, //chip select Index
|
||||
// .writeBitPolarity = 0, //Write bit polarity
|
||||
// .longInstructionWord = 1, //16bit instruction word
|
||||
// .MSBFirst = 1, //MSB first
|
||||
// .CPHA = 0, //Clock phase
|
||||
// .CPOL = 0, //Clock polarity
|
||||
// .enSpiStreaming = 0, //uint8_t enSpiStreaming;
|
||||
// .autoIncAddrUp = 1, //uint8_t autoIncAddrUp;
|
||||
// .fourWireMode = 1 //uint8_t fourWireMode;
|
||||
//};
|
||||
//
|
||||
//ad9528Device_t clockAD9528_ =
|
||||
//{
|
||||
// &clockSpiSettings,
|
||||
// &clockPll1Settings,
|
||||
// &clockPll2Settings,
|
||||
// &clockOutputSettings,
|
||||
// &clockSysrefSettings
|
||||
//};
|
||||
//
|
||||
//ad9528Device_t *ad9528Init = &clockAD9528_;
|
||||
//
|
||||
//#endif /* MYK_CLOCK_INIT_C_ */
|
||||
|
||||
|
||||
/* AD9528 data structure initialization file */
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include "common.h"
|
||||
|
||||
#include "./mykonos/ad9528.h"
|
||||
#include "./mykonos/t_ad9528.h"
|
||||
#include "myk_ad9528init.h"
|
||||
#include "parameters.h"
|
||||
|
||||
static ad9528pll1Settings_t clockPll1Settings = {
|
||||
.refA_Frequency_Hz = 122880000,
|
||||
.refA_Divider = 1,
|
||||
.refA_bufferCtrl = SINGLE_ENDED,
|
||||
.refB_Frequency_Hz = 0,
|
||||
.refB_Divider = 1,
|
||||
.refB_bufferCtrl = DISABLED,
|
||||
.vcxo_Frequency_Hz = 122880000,
|
||||
.vcxoBufferCtrl = DIFFERENTIAL,
|
||||
.nDivider = 1,
|
||||
.bypassPll1 = 0
|
||||
};
|
||||
|
||||
static ad9528pll2Settings_t clockPll2Settings = {
|
||||
.rfDivider = 3,
|
||||
.n2Divider = 10,
|
||||
.totalNdiv = 30
|
||||
};
|
||||
|
||||
/*******************************************************************
|
||||
* Output Distribution Settings
|
||||
* 9369CE02A uses the following clock outputs
|
||||
* OUT 1: FPGA_REF_CLK
|
||||
* OUT 2: FPGA_AUX_CLK
|
||||
* OUT 3: FPGA_SYSREF
|
||||
* OUT 12: SYSREF_IN
|
||||
* OUT 13: DEV_CLK_IN
|
||||
*******************************************************************
|
||||
*/
|
||||
static ad9528outputSettings_t clockOutputSettings = {
|
||||
.outPowerDown = 0x0,
|
||||
.outSource = {
|
||||
SYSREF, SYSREF, CHANNEL_DIV, SYSREF,
|
||||
CHANNEL_DIV, CHANNEL_DIV, SYSREF, SYSREF,
|
||||
CHANNEL_DIV, CHANNEL_DIV, CHANNEL_DIV, CHANNEL_DIV,
|
||||
SYSREF , CHANNEL_DIV
|
||||
},
|
||||
.outBufferCtrl = {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
|
||||
.outAnalogDelay = {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
|
||||
.outDigitalDelay = {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
|
||||
.outChannelDiv = {10,10,10,10,10,10,10,10,10,10,10,10,10,10},
|
||||
.outFrequency_Hz = {
|
||||
122880000, 122880000, 122880000, 122880000,
|
||||
122880000, 122880000, 122880000, 122880000,
|
||||
122880000, 122880000, 122880000, 122880000,
|
||||
122880000, 122880000
|
||||
}
|
||||
};
|
||||
|
||||
static ad9528sysrefSettings_t clockSysrefSettings = {
|
||||
.sysrefRequestMethod = SPI,
|
||||
.sysrefSource = INTERNAL,
|
||||
.sysrefPinEdgeMode = LEVEL_ACTIVE_HIGH,
|
||||
.sysrefPinBufferMode = DISABLED,
|
||||
.sysrefPatternMode = CONTINUOUS,
|
||||
.sysrefNshotMode = FOUR_PULSES,
|
||||
.sysrefDivide = 512
|
||||
};
|
||||
|
||||
static spiSettings_t clockSpiSettings = {
|
||||
.chipSelectIndex = 2, //chip select Index
|
||||
.writeBitPolarity = 0, //Write bit polarity
|
||||
.longInstructionWord = 1, //16bit instruction word
|
||||
.MSBFirst = 1, //MSB first
|
||||
.CPHA = 0, //Clock phase
|
||||
.CPOL = 0, //Clock polarity
|
||||
.enSpiStreaming = 0, //uint8_t enSpiStreaming;
|
||||
.autoIncAddrUp = 1, //uint8_t autoIncAddrUp;
|
||||
.fourWireMode = 1 //uint8_t fourWireMode;
|
||||
};
|
||||
|
||||
ad9528Device_t clockAD9528_ = {
|
||||
&clockSpiSettings,
|
||||
&clockPll1Settings,
|
||||
&clockPll2Settings,
|
||||
&clockOutputSettings,
|
||||
&clockSysrefSettings
|
||||
};
|
||||
|
||||
ad9528Device_t *ad9528Init = &clockAD9528_;
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* myk_clock_init.h
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MYK_CLOCK_INIT_H_
|
||||
#define MYK_CLOCK_INIT_H_
|
||||
|
||||
#include "./mykonos/ad9528.h"
|
||||
|
||||
extern ad9528Device_t *ad9528Init;
|
||||
|
||||
#endif /* MYK_CLOCK_INIT_H_ */
|
||||
+558
@@ -0,0 +1,558 @@
|
||||
/**
|
||||
* \file myk_init.c
|
||||
*
|
||||
* \brief Contains init setting structure declarations for the _instance API
|
||||
*
|
||||
* The top level structure mykonosDevice_t mykDevice uses keyword
|
||||
* extern to allow the application layer main() to have visibility
|
||||
* to these settings.
|
||||
*
|
||||
* All data structures required for operation have been initialized with values which reflect
|
||||
* these settings:
|
||||
*
|
||||
* Device Clock = $122.88$ Mhz
|
||||
* Rx enabled channels = $2$
|
||||
* Tx enabled channels = $2$
|
||||
*
|
||||
* Mykonos Framer:
|
||||
* Lane Rate = $4915.2$ Mbs
|
||||
* L = $2$
|
||||
* K = $32$
|
||||
* M = $4$
|
||||
* F = $4$
|
||||
*
|
||||
* Mykonos Deframer:
|
||||
* Lane Rate = $4915.2$ Mbs
|
||||
* L = $2$
|
||||
* K = $32$
|
||||
* M = $4$
|
||||
* F = $4$
|
||||
*
|
||||
* Mykonos Observation framer:
|
||||
* Lane Rate = $4915.2$ Mbs
|
||||
* L = $2$
|
||||
* K = $32$
|
||||
* M = $4$
|
||||
* F = $4$
|
||||
*
|
||||
* Using these profiles:
|
||||
* $Rx 100Mhz, IQrate 122.88Mhz, Dec5$
|
||||
* $Tx 100/100Mhz, IQrate 122.88Mhz, Dec5$
|
||||
* $ORX 100Mhz, IQrate 122.88Mhz, Dec5$
|
||||
* $SRx 20Mhz, IQrate 30.72Mhz, Dec5$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
#include "./mykonos/t_mykonos.h"
|
||||
#include "myk_init.h"
|
||||
#include "parameters.h"
|
||||
#include "./mykonos/mykonos_gpio.h"
|
||||
|
||||
static int16_t txFirCoefs[] = {-94,-26,282,177,-438,-368,756,732,-1170,-1337,1758,2479,-2648,-5088,4064,16760,16759,4110,-4881,-2247,2888,1917,-1440,-1296,745,828,-358,-474,164,298,-16,-94};
|
||||
|
||||
static mykonosFir_t txFir =
|
||||
{
|
||||
6, /* Filter gain in dB*/
|
||||
32, /* Number of coefficients in the FIR filter*/
|
||||
&txFirCoefs[0] /* A pointer to an array of filter coefficients*/
|
||||
};
|
||||
|
||||
static int16_t rxFirCoefs[] = {-20,6,66,22,-128,-54,240,126,-402,-248,634,444,-956,-756,1400,1244,-2028,-2050,2978,3538,-4646,-7046,9536,30880,30880,9536,-7046,-4646,3538,2978,-2050,-2028,1244,1400,-756,-956,444,634,-248,-402,126,240,-54,-128,22,66,6,-20};
|
||||
|
||||
static mykonosFir_t rxFir =
|
||||
{
|
||||
-6, /* Filter gain in dB*/
|
||||
48, /* Number of coefficients in the FIR filter*/
|
||||
&rxFirCoefs[0] /* A pointer to an array of filter coefficients*/
|
||||
};
|
||||
|
||||
static int16_t obsrxFirCoefs[] = {-14,-19,44,41,-89,-95,175,178,-303,-317,499,527,-779,-843,1184,1317,-1781,-2059,2760,3350,-4962,-7433,9822,32154,32154,9822,-7433,-4962,3350,2760,-2059,-1781,1317,1184,-843,-779,527,499,-317,-303,178,175,-95,-89,41,44,-19,-14};
|
||||
static mykonosFir_t obsrxFir =
|
||||
{
|
||||
-6, /* Filter gain in dB*/
|
||||
48, /* Number of coefficients in the FIR filter*/
|
||||
&obsrxFirCoefs[0]/* A pointer to an array of filter coefficients*/
|
||||
};
|
||||
|
||||
static int16_t snifferFirCoefs[] = {-1,-5,-14,-23,-16,24,92,137,80,-120,-378,-471,-174,507,1174,1183,98,-1771,-3216,-2641,942,7027,13533,17738,17738,13533,7027,942,-2641,-3216,-1771,98,1183,1174,507,-174,-471,-378,-120,80,137,92,24,-16,-23,-14,-5,-1};
|
||||
static mykonosFir_t snifferRxFir=
|
||||
{
|
||||
-6, /* Filter gain in dB*/
|
||||
48, /* Number of coefficients in the FIR filter*/
|
||||
&snifferFirCoefs[0]/* A pointer to an array of filter coefficients*/
|
||||
};
|
||||
|
||||
static mykonosJesd204bFramerConfig_t rxFramer =
|
||||
{
|
||||
0, /* JESD204B Configuration Bank ID -extension to Device ID (Valid 0..15)*/
|
||||
0, /* JESD204B Configuration Device ID - link identification number. (Valid 0..255)*/
|
||||
0, /* JESD204B Configuration starting Lane ID. If more than one lane used, each lane will increment from the Lane0 ID. (Valid 0..31)*/
|
||||
4, /* number of ADCs (0, 2, or 4) - 2 ADCs per receive chain*/
|
||||
32, /* number of frames in a multiframe (default=32), F*K must be a multiple of 4. (F=2*M/numberOfLanes)*/
|
||||
0, /* scrambling off if framerScramble= 0, if framerScramble>0 scramble is enabled.*/
|
||||
1, /* 0=use internal SYSREF, 1= use external SYSREF*/
|
||||
0x03, /* serializerLanesEnabled - bit per lane, [0] = Lane0 enabled, [1] = Lane1 enabled*/
|
||||
0xE4, /* serializerLaneCrossbar*/
|
||||
22, /* serializerAmplitude - default 22 (valid (0-31)*/
|
||||
4, /* preEmphasis - < default 4 (valid 0 - 7)*/
|
||||
0, /* invertLanePolarity - default 0 ([0] will invert lane [0], bit1 will invert lane1)*/
|
||||
0, /* lmfcOffset - LMFC_Offset offset value for deterministic latency setting*/
|
||||
0, /* Flag for determining if SYSREF on relink should be set. Where, if > 0 = set, 0 = not set*/
|
||||
0, /* Flag for determining if auto channel select for the xbar should be set. Where, if > 0 = set, '0' = not set*/
|
||||
0, /* Selects SYNCb input source. Where, 0 = use RXSYNCB for this framer, 1 = use OBSRX_SYNCB for this framer*/
|
||||
0, /* Flag for determining if CMOS mode for RX Sync signal is used. Where, if > 0 = CMOS, '0' = LVDS*/
|
||||
0, /* Selects framer bit repeat or oversampling mode for lane rate matching. Where, 0 = bitRepeat mode (changes effective lanerate), 1 = overSample (maintains same lane rate between ObsRx framer and Rx framer and oversamples the ADC samples)*/
|
||||
0 /* Flag for determining if API will calculate the appropriate settings for framer lane outputs to physical lanes. Where, if '0' = API will set automatic lane crossbar, '1' = set to manual mode and the value in serializerLaneCrossbar will be used*/
|
||||
};
|
||||
|
||||
static mykonosJesd204bFramerConfig_t obsRxFramer =
|
||||
{
|
||||
0, /* JESD204B Configuration Bank ID -extension to Device ID (Valid 0..15)*/
|
||||
0, /* JESD204B Configuration Device ID - link identification number. (Valid 0..255)*/
|
||||
0, /* JESD204B Configuration starting Lane ID. If more than one lane used, each lane will increment from the Lane0 ID. (Valid 0..31)*/
|
||||
2, /* number of ADCs (0, 2, or 4) - 2 ADCs per receive chain*/
|
||||
32, /* number of frames in a multiframe (default=32), F*K must be a multiple of 4. (F=2*M/numberOfLanes)*/
|
||||
0, /* scrambling off if framerScramble= 0, if framerScramble>0 scramble is enabled.*/
|
||||
1, /* 0=use internal SYSREF, 1= use external SYSREF*/
|
||||
0x04, /* serializerLanesEnabled - bit per lane, [0] = Lane0 enabled, [1] = Lane1 enabled*/
|
||||
0xE4, /* Lane crossbar to map framer lane outputs to physical lanes*/
|
||||
22, /* serializerAmplitude - default 22 (valid (0-31)*/
|
||||
4, /* preEmphasis - < default 4 (valid 0 - 7)*/
|
||||
0, /* invertLanePolarity - default 0 ([0] will invert lane [0], bit1 will invert lane1)*/
|
||||
0, /* lmfcOffset - LMFC_Offset offset value for deterministic latency setting*/
|
||||
0, /* Flag for determining if SYSREF on relink should be set. Where, if > 0 = set, 0 = not set*/
|
||||
0, /* Flag for determining if auto channel select for the xbar should be set. Where, if > 0 = set, '0' = not set*/
|
||||
1, /* Selects SYNCb input source. Where, 0 = use RXSYNCB for this framer, 1 = use OBSRX_SYNCB for this framer*/
|
||||
0, /* Flag for determining if CMOS mode for RX Sync signal is used. Where, if > 0 = CMOS, '0' = LVDS*/
|
||||
0, /* Selects framer bit repeat or oversampling mode for lane rate matching. Where, 0 = bitRepeat mode (changes effective lanerate), 1 = overSample (maintains same lane rate between ObsRx framer and Rx framer and oversamples the ADC samples)*/
|
||||
0 /* Flag for determining if API will calculate the appropriate settings for framer lane outputs to physical lanes. Where, if '0' = API will set automatic lane crossbar, '1' = set to manual mode and the value in serializerLaneCrossbar will be used*/
|
||||
};
|
||||
|
||||
static mykonosJesd204bDeframerConfig_t deframer =
|
||||
{
|
||||
0, /* bankId extension to Device ID (Valid 0..15)*/
|
||||
0, /* deviceId link identification number. (Valid 0..255)*/
|
||||
0, /* lane0Id Lane0 ID. (Valid 0..31)*/
|
||||
4, /* M number of DACss (0, 2, or 4) - 2 DACs per transmit chain */
|
||||
32, /* K #frames in a multiframe (default=32), F*K=multiple of 4. (F=2*M/numberOfLanes)*/
|
||||
0, /* scramble scrambling off if scramble= 0.*/
|
||||
1, /* External SYSREF select. 0 = use internal SYSREF, 1 = external SYSREF*/
|
||||
0x03, /* Deserializer lane select bit field. Where, [0] = Lane0 enabled, [1] = Lane1 enabled, etc */
|
||||
0xE4, /* Lane crossbar to map physical lanes to deframer lane inputs [1:0] = Deframer Input 0 Lane section, [3:2] = Deframer Input 1 lane select, etc */
|
||||
1, /* Equalizer setting. Applied to all deserializer lanes. Range is 0..4*/
|
||||
0, /* PN inversion per each lane. bit[0] = 1 Invert PN of Lane 0, bit[1] = Invert PN of Lane 1, etc).*/
|
||||
0, /* LMFC_Offset offset value to adjust deterministic latency. Range is 0..31*/
|
||||
0, /* Flag for determining if SYSREF on relink should be set. Where, if > 0 = set, '0' = not set*/
|
||||
0, /* Flag for determining if auto channel select for the xbar should be set. Where, if > 0 = set, '0' = not set*/
|
||||
0, /* Flag for determining if CMOS mode for TX Sync signal is used. Where, if > 0 = CMOS, '0' = LVDS*/
|
||||
0 /* Flag for determining if API will calculate the appropriate settings for deframer lane in to physical lanes. Where, if '0' = API will set automatic lane crossbar, '1' = set to manual mode and the value in deserializerLaneCrossbar will be used*/
|
||||
};
|
||||
|
||||
static mykonosRxGainControl_t rxGainControl =
|
||||
{
|
||||
MGC, /* Current Rx gain control mode setting*/
|
||||
255, /* Rx1 Gain Index, can be used in different ways for manual and AGC gain control*/
|
||||
255, /* Rx2 Gain Index, can be used in different ways for manual and AGC gain control*/
|
||||
255, /* Max gain index for the currently loaded Rx1 Gain table*/
|
||||
195, /* Min gain index for the currently loaded Rx1 Gain table*/
|
||||
255, /* Max gain index for the currently loaded Rx2 Gain table*/
|
||||
195, /* Min gain index for the currently loaded Rx2 Gain table*/
|
||||
0, /* Stores Rx1 RSSI value read back from the Mykonos*/
|
||||
0 /* Stores Rx2 RSSI value read back from the Mykonos*/
|
||||
};
|
||||
|
||||
|
||||
static mykonosORxGainControl_t orxGainControl =
|
||||
{
|
||||
MGC, /* Current ORx gain control mode setting*/
|
||||
255, /* ORx1 Gain Index, can be used in different ways for manual and AGC gain control*/
|
||||
255, /* ORx2 Gain Index, can be used in different ways for manual and AGC gain control*/
|
||||
255, /* Max gain index for the currently loaded ORx Gain table*/
|
||||
237 /* Min gain index for the currently loaded ORx Gain table*/
|
||||
};
|
||||
|
||||
static mykonosSnifferGainControl_t snifferGainControl =
|
||||
{
|
||||
MGC, /* Current Sniffer gain control mode setting*/
|
||||
255, /* Current Sniffer gain index. Can be used differently for MANUAL Gain control/AGC*/
|
||||
255, /* Max gain index for the currently loaded Sniffer Gain table*/
|
||||
203 /* Min gain index for the currently loaded Sniffer Gain table*/
|
||||
};
|
||||
|
||||
static mykonosPeakDetAgcCfg_t rxPeakAgc =
|
||||
{
|
||||
0x0C, /* apdHighThresh: */
|
||||
0x08, /* apdLowThresh */
|
||||
0xB5, /* hb2HighThresh */
|
||||
0x80, /* hb2LowThresh */
|
||||
0x40, /* hb2VeryLowThresh */
|
||||
0x06, /* apdHighThreshExceededCnt */
|
||||
0x04, /* apdLowThreshExceededCnt */
|
||||
0x06, /* hb2HighThreshExceededCnt */
|
||||
0x04, /* hb2LowThreshExceededCnt */
|
||||
0x04, /* hb2VeryLowThreshExceededCnt */
|
||||
0x4, /* apdHighGainStepAttack */
|
||||
0x2, /* apdLowGainStepRecovery */
|
||||
0x4, /* hb2HighGainStepAttack */
|
||||
0x2, /* hb2LowGainStepRecovery */
|
||||
0x4, /* hb2VeryLowGainStepRecovery */
|
||||
0x1, /* apdFastAttack */
|
||||
0x1, /* hb2FastAttack */
|
||||
0x1, /* hb2OverloadDetectEnable */
|
||||
0x1, /* hb2OverloadDurationCnt */
|
||||
0x1 /* hb2OverloadThreshCnt */
|
||||
};
|
||||
|
||||
static mykonosPowerMeasAgcCfg_t rxPwrAgc =
|
||||
{
|
||||
0x01, /* pmdUpperHighThresh */
|
||||
0x03, /* pmdUpperLowThresh */
|
||||
0x0C, /* pmdLowerHighThresh */
|
||||
0x00, /* pmdLowerLowThresh */
|
||||
0x4, /* pmdUpperHighGainStepAttack */
|
||||
0x2, /* pmdUpperLowGainStepAttack */
|
||||
0x2, /* pmdLowerHighGainStepRecovery */
|
||||
0x4, /* pmdLowerLowGainStepRecovery */
|
||||
0x08, /* pmdMeasDuration */
|
||||
0x02 /* pmdMeasConfig */
|
||||
};
|
||||
|
||||
static mykonosAgcCfg_t rxAgcConfig =
|
||||
{
|
||||
255, /* agcRx1MaxGainIndex */
|
||||
195, /* agcRx1MinGainIndex */
|
||||
255, /* agcRx2MaxGainIndex */
|
||||
195, /* agcRx2MinGainIndex: */
|
||||
255, /* agcObsRxMaxGainIndex */
|
||||
203, /* agcObsRxMinGainIndex */
|
||||
1, /* agcObsRxSelect */
|
||||
1, /* agcPeakThresholdMode */
|
||||
1, /* agcLowThsPreventGainIncrease */
|
||||
30720, /* agcGainUpdateCounter */
|
||||
3, /* agcSlowLoopSettlingDelay */
|
||||
2, /* agcPeakWaitTime */
|
||||
1, /* agcResetOnRxEnable */
|
||||
0, /* agcEnableSyncPulseForGainCounter */
|
||||
&rxPeakAgc,
|
||||
&rxPwrAgc
|
||||
};
|
||||
|
||||
static mykonosPeakDetAgcCfg_t obsRxPeakAgc =
|
||||
{
|
||||
0x1F, /* apdHighThresh: */
|
||||
0x16, /* apdLowThresh */
|
||||
0xB5, /* hb2HighThresh */
|
||||
0x80, /* hb2LowThresh */
|
||||
0x40, /* hb2VeryLowThresh */
|
||||
0x06, /* apdHighThreshExceededCnt */
|
||||
0x04, /* apdLowThreshExceededCnt */
|
||||
0x06, /* hb2HighThreshExceededCnt */
|
||||
0x04, /* hb2LowThreshExceededCnt */
|
||||
0x04, /* hb2VeryLowThreshExceededCnt */
|
||||
0x4, /* apdHighGainStepAttack */
|
||||
0x2, /* apdLowGainStepRecovery */
|
||||
0x4, /* hb2HighGainStepAttack */
|
||||
0x2, /* hb2LowGainStepRecovery */
|
||||
0x4, /* hb2VeryLowGainStepRecovery */
|
||||
0x1, /* apdFastAttack */
|
||||
0x1, /* hb2FastAttack */
|
||||
0x1, /* hb2OverloadDetectEnable */
|
||||
0x1, /* hb2OverloadDurationCnt */
|
||||
0x1 /* hb2OverloadThreshCnt */
|
||||
};
|
||||
|
||||
static mykonosPowerMeasAgcCfg_t obsRxPwrAgc =
|
||||
{
|
||||
0x01, /* pmdUpperHighThresh */
|
||||
0x03, /* pmdUpperLowThresh */
|
||||
0x0C, /* pmdLowerHighThresh */
|
||||
0x00, /* pmdLowerLowThresh */
|
||||
0x4, /* pmdUpperHighGainStepAttack */
|
||||
0x2, /* pmdUpperLowGainStepAttack */
|
||||
0x2, /* pmdLowerHighGainStepRecovery */
|
||||
0x4, /* pmdLowerLowGainStepRecovery */
|
||||
0x08, /* pmdMeasDuration */
|
||||
0x02 /* pmdMeasConfig */
|
||||
};
|
||||
|
||||
static mykonosAgcCfg_t obsRxAgcConfig =
|
||||
{
|
||||
255, /* agcRx1MaxGainIndex */
|
||||
195, /* agcRx1MinGainIndex */
|
||||
255, /* agcRx2MaxGainIndex */
|
||||
195, /* agcRx2MinGainIndex: */
|
||||
255, /* agcObsRxMaxGainIndex */
|
||||
203, /* agcObsRxMinGainIndex */
|
||||
1, /* agcObsRxSelect */
|
||||
1, /* agcPeakThresholdMode */
|
||||
1, /* agcLowThsPreventGainIncrease */
|
||||
30720, /* agcGainUpdateCounter */
|
||||
3, /* agcSlowLoopSettlingDelay */
|
||||
2, /* agcPeakWaitTime */
|
||||
1, /* agcResetOnRxEnable */
|
||||
0, /* agcEnableSyncPulseForGainCounter */
|
||||
&obsRxPeakAgc,
|
||||
&obsRxPwrAgc
|
||||
};
|
||||
|
||||
|
||||
static mykonosRxProfile_t rxProfile =
|
||||
{/* Rx 100MHz, IQrate 122.88MSPS, Dec5 */
|
||||
1, /* The divider used to generate the ADC clock*/
|
||||
&rxFir, /* Pointer to Rx FIR filter structure*/
|
||||
2, /* Rx FIR decimation (1,2,4)*/
|
||||
5, /* Decimation of Dec5 or Dec4 filter (5,4)*/
|
||||
1, /* If set, and DEC5 filter used, will use a higher rejection DEC5 FIR filter (1=Enabled, 0=Disabled)*/
|
||||
1, /* RX Half band 1 decimation (1 or 2)*/
|
||||
122880, /* Rx IQ data rate in kHz*/
|
||||
100000000, /* The Rx RF passband bandwidth for the profile*/
|
||||
100000, /* Rx BBF 3dB corner in kHz*/
|
||||
NULL /* pointer to custom ADC profile*/
|
||||
};
|
||||
|
||||
static mykonosRxProfile_t orxProfile =
|
||||
{/* ORX 100MHz, IQrate 122.88MSPS, Dec5 */
|
||||
1, /* The divider used to generate the ADC clock*/
|
||||
&obsrxFir, /* Pointer to Rx FIR filter structure or NULL*/
|
||||
2, /* Rx FIR decimation (1,2,4)*/
|
||||
5, /* Decimation of Dec5 or Dec4 filter (5,4)*/
|
||||
0, /* If set, and DEC5 filter used, will use a higher rejection DEC5 FIR filter (1=Enabled, 0=Disabled)*/
|
||||
1, /* RX Half band 1 decimation (1 or 2)*/
|
||||
122880, /* Rx IQ data rate in kHz*/
|
||||
100000000, /* The Rx RF passband bandwidth for the profile*/
|
||||
100000, /* Rx BBF 3dB corner in kHz*/
|
||||
NULL /* pointer to custom ADC profile*/
|
||||
};
|
||||
|
||||
|
||||
static mykonosRxProfile_t snifferProfile =
|
||||
{ /* SRx 20MHz, IQrate 30.72MSPS, Dec5 */
|
||||
1, /* The divider used to generate the ADC clock*/
|
||||
&snifferRxFir, /* Pointer to Rx FIR filter structure or NULL*/
|
||||
4, /* Rx FIR decimation (1,2,4)*/
|
||||
5, /* Decimation of Dec5 or Dec4 filter (5,4)*/
|
||||
0, /* If set, and DEC5 filter used, will use a higher rejection DEC5 FIR filter (1=Enabled, 0=Disabled)*/
|
||||
2, /* RX Half band 1 decimation (1 or 2)*/
|
||||
30720, /* Rx IQ data rate in kHz*/
|
||||
10000000, /* The Rx RF passband bandwidth for the profile*/
|
||||
100000, /* Rx BBF 3dB corner in kHz*/
|
||||
NULL /* pointer to custom ADC profile*/
|
||||
};
|
||||
|
||||
|
||||
|
||||
static mykonosTxProfile_t txProfile =
|
||||
{ /* Tx 20/100MHz, IQrate 122.88MSPS, Dec5 */
|
||||
DACDIV_2p5, /* The divider used to generate the DAC clock*/
|
||||
&txFir, /* Pointer to Tx FIR filter structure*/
|
||||
2, /* The Tx digital FIR filter interpolation (1,2,4)*/
|
||||
2, /* Tx Halfband1 filter interpolation (1,2)*/
|
||||
1, /* Tx Halfband2 filter interpolation (1,2)*/
|
||||
1, /* TxInputHbInterpolation (1,2)*/
|
||||
122880, /* Tx IQ data rate in kHz*/
|
||||
100000000, /* Primary Signal BW*/
|
||||
100000000, /* The Tx RF passband bandwidth for the profile*/
|
||||
710539, /* The DAC filter 3dB corner in kHz*/
|
||||
50000, /* Tx BBF 3dB corner in kHz*/
|
||||
0 /* Enable DPD, only valid for AD9373*/
|
||||
};
|
||||
|
||||
static mykonosDigClocks_t mykonosClocks =
|
||||
{
|
||||
122880, /* CLKPLL and device reference clock frequency in kHz*/
|
||||
9830400, /* CLKPLL VCO frequency in kHz*/
|
||||
VCODIV_2, /* CLKPLL VCO divider*/
|
||||
4 /* CLKPLL high speed clock divider*/
|
||||
};
|
||||
|
||||
static mykonosRxSettings_t rxSettings =
|
||||
{
|
||||
&rxProfile, /* Rx datapath profile, 3dB corner frequencies, and digital filter enables*/
|
||||
&rxFramer, /* Rx JESD204b framer configuration structure*/
|
||||
&rxGainControl, /* Rx Gain control settings structure*/
|
||||
&rxAgcConfig, /* Rx AGC control settings structure*/
|
||||
RX1_RX2, /* The desired Rx Channels to enable during initialization*/
|
||||
0, /* Internal LO = 0, external LO*2 = 1*/
|
||||
2550000000U, /* Rx PLL LO Frequency (internal or external LO)*/
|
||||
0 /* Flag to choose if complex baseband or real IF data are selected for Rx and ObsRx paths. Where, if > 0 = real IF data, '0' = zero IF (IQ) data*/
|
||||
};
|
||||
|
||||
static mykonosDpdConfig_t dpdConfig =
|
||||
{
|
||||
5, /* 1/2^(damping + 8) fraction of power `forgotten' per sample (default: `1/8192' = 5, valid 0 to 15), 0 = infinite damping*/
|
||||
1, /* number of weights to use for int8_cpx weights weights member of this structure (default = 1)*/
|
||||
2, /* DPD model version: one of four different generalized polynomial models: 0 = same as R0 silicon, 1-3 are new and the best one depends on the PA (default: 2)*/
|
||||
1, /* 1 = Update saved model whenever peak Tx digital RMS is within 1dB of historical peak Tx RMS*/
|
||||
20, /* Determines how much weight the loaded prior model has on DPD modeling (Valid 0 - 32, default 20)*/
|
||||
0, /* Default off = 0, 1=enables automatic outlier removal during DPD modeling */
|
||||
512, /* Number of samples to capture (default: 512, valid 64-32768)*/
|
||||
4096, /* threshold for sample in AM-AM plot outside of 1:1 line to be thrown out. (default: 50% = 8192/2, valid 8192 to 1)*/
|
||||
0, /* 16th of an ORx sample (16=1sample), (default 0, valid -64 to 64)*/
|
||||
255, /* Default 255 (-30dBFs=(20Log10(value/8192)), (valid range 1 to 8191)*/
|
||||
{{64,0},{0,0},{0,0}}/* DPD model error weighting (real/imag valid from -128 to 127)*/
|
||||
};
|
||||
|
||||
static mykonosClgcConfig_t clgcConfig =
|
||||
{
|
||||
-2000, /* (value = 100 * dB (valid range -32768 to 32767) - total gain and attenuation from Mykonos Tx1 output to ORx1 input in (dB * 100)*/
|
||||
-2000, /* (value = 100 * dB (valid range -32768 to 32767) - total gain and attenuation from Mykonos Tx2 output to ORx2 input in (dB * 100)*/
|
||||
0, /* (valid range 0 - 40dB), no default, depends on PA, Protects PA by making sure Tx1Atten is not reduced below the limit*/
|
||||
0, /* (valid range 0 - 40dB), no default, depends on PA, Protects PA by making sure Tx2Atten is not reduced below the limit*/
|
||||
75, /* valid range 1-100, default 75*/
|
||||
75, /* valid range 1-100, default 45*/
|
||||
0, /* 0= allow CLGC to run, but Tx1Atten will not be updated. User can still read back power measurements. 1=CLGC runs, and Tx1Atten automatically updated*/
|
||||
0, /* 0= allow CLGC to run, but Tx2Atten will not be updated. User can still read back power measurements. 1=CLGC runs, and Tx2Atten automatically updated*/
|
||||
0, /* 16th of an ORx sample (16=1sample), (default 0, valid -64 to 64)*/
|
||||
255, /* Default 255 (-30dBFs=(20Log10(value/8192)), (valid range 1 to 8191)*/
|
||||
600, /* Threshold for Tx1 in order to stop tracking, value = 100 * dB, default 6db then value = 600*/
|
||||
600, /* Threshold for Tx2 in order to stop tracking, value = 100 * dB, default 6db then value = 600*/
|
||||
0, /* Threshold feature enable for Tx1, 0 = disable, 1 = enable, default = 0*/
|
||||
0 /* Threshold feature enable for Tx1, 0 = disable, 1 = enable, default = 0*/
|
||||
};
|
||||
|
||||
static mykonosVswrConfig_t vswrConfig =
|
||||
{
|
||||
0, /* 16th of an ORx sample (16=1sample), (default 0, valid -64 to 64)*/
|
||||
255, /* Default 255 (-30dBFs=(20Log10(value/8192)), (valid range 1 to 8191)*/
|
||||
0, /* 3p3V GPIO pin to use to control VSWR switch for Tx1 (valid 0-11) (output from Mykonos)*/
|
||||
1, /* 3p3V GPIO pin to use to control VSWR switch for Tx2 (valid 0-11) (output from Mykonos)*/
|
||||
0, /* 3p3v GPIO pin polarity for forward path of Tx1, opposite used for reflection path (1 = high level, 0 = low level)*/
|
||||
0, /* 3p3v GPIO pin polarity for forward path of Tx2, opposite used for reflection path (1 = high level, 0 = low level)*/
|
||||
50, /* Delay for Tx1 after flipping the VSWR switch until measurement is made. In us resolution*/
|
||||
50 /* Delay for Tx2 after flipping the VSWR switch until measurement is made. In us resolution*/
|
||||
};
|
||||
|
||||
static mykonosTxSettings_t txSettings =
|
||||
{
|
||||
&txProfile, /* Tx datapath profile, 3dB corner frequencies, and digital filter enables*/
|
||||
&deframer, /* Mykonos JESD204b deframer config for the Tx data path*/
|
||||
TX1_TX2, /* The desired Tx channels to enable during initialization*/
|
||||
0, /* Internal LO=0, external LO*2 if =1*/
|
||||
2500000000U, /* Tx PLL LO frequency (internal or external LO)*/
|
||||
TXATTEN_0P05_DB,/* Initial and current Tx1 Attenuation*/
|
||||
10000, /* Initial and current Tx1 Attenuation mdB*/
|
||||
10000, /* Initial and current Tx2 Attenuation mdB*/
|
||||
NULL, /* DPD,CLGC,VSWR settings. Only valid for AD9373 device, set pointer to NULL otherwise*/
|
||||
NULL, /* CLGC Config Structure. Only valid for AD9373 device, set pointer to NULL otherwise*/
|
||||
NULL /* VSWR Config Structure. Only valid for AD9373 device, set pointer to NULL otherwise*/
|
||||
};
|
||||
|
||||
|
||||
static mykonosObsRxSettings_t obsRxSettings =
|
||||
{
|
||||
&orxProfile, /* ORx datapath profile, 3dB corner frequencies, and digital filter enables*/
|
||||
&orxGainControl,/* ObsRx gain control settings structure*/
|
||||
&obsRxAgcConfig,/* ORx AGC control settings structure*/
|
||||
&snifferProfile,/* Sniffer datapath profile, 3dB corner frequencies, and digital filter enables*/
|
||||
&snifferGainControl,/* SnRx gain control settings structure*/
|
||||
&obsRxFramer, /* ObsRx JESD204b framer configuration structure */
|
||||
(MYK_ORX1_ORX2 | MYK_SNRXA_B_C),/* obsRxChannel */
|
||||
OBSLO_TX_PLL, /* (obsRxLoSource) The Obs Rx mixer can use the Tx Synth(TX_PLL) or Sniffer Synth (SNIFFER_PLL) */
|
||||
2600000000U, /* SnRx PLL LO frequency in Hz */
|
||||
0, /* Flag to choose if complex baseband or real IF data are selected for Rx and ObsRx paths. Where if > 0 = real IF data, '0' = complex data*/
|
||||
NULL, /* Custom Loopback ADC profile to set the bandwidth of the ADC response */
|
||||
OBS_RXOFF /* Default ObsRx channel to enter when radioOn called */
|
||||
};
|
||||
|
||||
static mykonosArmGpioConfig_t armGpio =
|
||||
{
|
||||
1, // useRx2EnablePin; /*!< 0= RX1_ENABLE controls RX1 and RX2, 1 = separate RX1_ENABLE/RX2_ENABLE pins */
|
||||
1, // useTx2EnablePin; /*!< 0= TX1_ENABLE controls TX1 and TX2, 1 = separate TX1_ENABLE/TX2_ENABLE pins */
|
||||
0, // txRxPinMode; /*!< 0= ARM command mode, 1 = Pin mode to power up Tx/Rx chains */
|
||||
0, // orxPinMode; /*!< 0= ARM command mode, 1 = Pin mode to power up ObsRx receiver*/
|
||||
|
||||
/*Mykonos ARM input GPIO pins -- Only valid if orxPinMode = 1 */
|
||||
0, // orxTriggerPin; /*!< Select desired GPIO pin (valid 4-15) */
|
||||
0, // orxMode2Pin; /*!< Select desired GPIO pin (valid 0-18) */
|
||||
0, // orxMode1Pin; /*!< Select desired GPIO pin (valid 0-18) */
|
||||
0, // orxMode0Pin; /*!< Select desired GPIO pin (valid 0-18) */
|
||||
|
||||
/* Mykonos ARM output GPIO pins -- always available, even when pin mode not enabled*/
|
||||
0, // rx1EnableAck; /*!< Select desired GPIO pin (0-15), [4] = Output Enable */
|
||||
0, // rx2EnableAck; /*!< Select desired GPIO pin (0-15), [4] = Output Enable */
|
||||
0, // tx1EnableAck; /*!< Select desired GPIO pin (0-15), [4] = Output Enable */
|
||||
0, // tx2EnableAck; /*!< Select desired GPIO pin (0-15), [4] = Output Enable */
|
||||
0, // orx1EnableAck; /*!< Select desired GPIO pin (0-15), [4] = Output Enable */
|
||||
0, // orx2EnableAck; /*!< Select desired GPIO pin (0-15), [4] = Output Enable */
|
||||
0, // srxEnableAck; /*!< Select desired GPIO pin (0-15), [4] = Output Enable */
|
||||
0 // txObsSelect; /*!< Select desired GPIO pin (0-15), [4] = Output Enable */
|
||||
/* When 2Tx are used with only 1 ORx input, this GPIO tells the BBIC which Tx channel is */
|
||||
/* active for calibrations, so BBIC can route correct RF Tx path into the single ORx input*/
|
||||
};
|
||||
|
||||
static mykonosGpio3v3_t gpio3v3 =
|
||||
{
|
||||
0, /*!< Oe per pin, 1=output, 0 = input */
|
||||
GPIO3V3_BITBANG_MODE, /*!< Mode for GPIO3V3[3:0] */
|
||||
GPIO3V3_BITBANG_MODE, /*!< Mode for GPIO3V3[7:4] */
|
||||
GPIO3V3_BITBANG_MODE, /*!< Mode for GPIO3V3[11:8] */
|
||||
};
|
||||
|
||||
static mykonosGpioLowVoltage_t gpio =
|
||||
{
|
||||
0,/* Oe per pin, 1=output, 0 = input */
|
||||
GPIO_MONITOR_MODE,/* Mode for GPIO[3:0] */
|
||||
GPIO_MONITOR_MODE,/* Mode for GPIO[7:4] */
|
||||
GPIO_MONITOR_MODE,/* Mode for GPIO[11:8] */
|
||||
GPIO_MONITOR_MODE,/* Mode for GPIO[15:12] */
|
||||
GPIO_MONITOR_MODE,/* Mode for GPIO[18:16] */
|
||||
};
|
||||
|
||||
static mykonosAuxIo_t mykonosAuxIo =
|
||||
{
|
||||
0, //auxDacEnableMask uint16_t
|
||||
{0,0,0,0,0,0,0,0,0,0}, //AuxDacValue uint16[10]
|
||||
{0,0,0,0,0,0,0,0,0,0}, //AuxDacSlope uint8[10]
|
||||
{0,0,0,0,0,0,0,0,0,0}, //AuxDacVref uint8[10]
|
||||
&gpio3v3, //pointer to gpio3v3 struct
|
||||
&gpio, //pointer to gpio1v8 struct
|
||||
&armGpio
|
||||
};
|
||||
|
||||
static spiSettings_t mykSpiSettings =
|
||||
{
|
||||
1, /* chip select index - valid 1~8 */
|
||||
0, /* the level of the write bit of a SPI write instruction word, value is inverted for SPI read operation */
|
||||
1, /* 1 = 16-bit instruction word, 0 = 8-bit instruction word */
|
||||
1, /* 1 = MSBFirst, 0 = LSBFirst */
|
||||
0, /* clock phase, sets which clock edge the data updates (valid 0 or 1) */
|
||||
0, /* clock polarity 0 = clock starts low, 1 = clock starts high */
|
||||
0, /* Not implemented in ADIs platform layer. SW feature to improve SPI throughput */
|
||||
1, /* Not implemented in ADIs platform layer. For SPI Streaming, set address increment direction. 1= next addr = addr+1, 0:addr=addr-1 */
|
||||
1 /* 1: Use 4-wire SPI, 0: 3-wire SPI (SDIO pin is bidirectional). NOTE: ADI's FPGA platform always uses 4-wire mode */
|
||||
};
|
||||
|
||||
static mykonosTempSensorConfig_t tempSensor =
|
||||
{
|
||||
7, /* 3-bit value that controls the AuxADC decimation factor when used for temp sensor calculations; AuxADC_decimation = 256 * 2^tempDecimation*/
|
||||
67, /* 8-bit offset that gets added to temp sensor code internally*/
|
||||
1, /* this bit overrides the factory-calibrated fuse offset and uses the value stored in the offset member*/
|
||||
15, /* 4-bit code with a resolution of 1°C/LSB, each time a temperature measurement is performed, the device compares the current temperature against the previous value.*/
|
||||
};
|
||||
|
||||
static mykonosTempSensorStatus_t tempStatus =
|
||||
{
|
||||
0, /* 16-bit signed temperature value (in deg C) that is read back*/
|
||||
0, /* If the absolute value of the difference is greater than the value in temperature configuration tempWindow, the windowExceeded flag is set.*/
|
||||
0, /* when windowExceeded member gets set, this bit is set to 1 if current value is greater than previous value, else reset*/
|
||||
0, /* when the reading is complete and a valid temperature value stored in tempCode.*/
|
||||
};
|
||||
|
||||
mykonosDevice_t mykDevice =
|
||||
{
|
||||
&mykSpiSettings, /* SPI settings data structure pointer */
|
||||
&rxSettings, /* Rx settings data structure pointer */
|
||||
&txSettings, /* Tx settings data structure pointer */
|
||||
&obsRxSettings, /* ObsRx settings data structure pointer */
|
||||
&mykonosAuxIo, /* Auxiliary IO settings data structure pointer */
|
||||
&mykonosClocks, /* Holds settings for CLKPLL and reference clock */
|
||||
0 /* Mykonos initialize function uses this as an output to remember which profile data structure pointers are valid */
|
||||
};
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* \file myk_init.h
|
||||
*
|
||||
* \brief Contains structure definitions for myk_init.c
|
||||
*
|
||||
* The top level structure mykonosDevice_t mykDevice uses keyword
|
||||
* extern to allow the application layer main() to have visibility
|
||||
* to these settings.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MYK_INIT_H_
|
||||
#define MYK_INIT_H_
|
||||
|
||||
|
||||
extern mykonosDevice_t mykDevice;
|
||||
|
||||
#endif
|
||||
+8518
File diff suppressed because it is too large
Load Diff
+13
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
SOFTWARE LICENSE AGREEMENT
|
||||
20180301-AD937X-CTSLA
|
||||
**/
|
||||
|
||||
// Version 5.2.2
|
||||
#ifndef SRC_MYKONOS_BIN_H_
|
||||
#define SRC_MYKONOS_BIN_H_
|
||||
|
||||
unsigned char firmware_Mykonos_M3_bin[];
|
||||
unsigned int firmware_Mykonos_M3_bin_len;
|
||||
|
||||
#endif
|
||||
+740
@@ -0,0 +1,740 @@
|
||||
/**
|
||||
* \file ad9528.c
|
||||
* \brief Contains source code for configuring and initializing AD9528 clock device
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "ad9528.h"
|
||||
|
||||
/**
|
||||
* \brief Performs a hard reset on the AD9528 DUT
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - device->spiSettings->chipSelectIndex
|
||||
*
|
||||
* \param device is structure pointer to the AD9528 data structure containing settings
|
||||
* \return Returns enum ADI_ERR, ADIERR_OK=pass, !ADIERR_OK=fail
|
||||
*/
|
||||
ADI_ERR AD9528_resetDevice(ad9528Device_t *device)
|
||||
{
|
||||
/* toggle RESETB on device with matching spi chip select index */
|
||||
CMB_hardReset(device->spiSettings->chipSelectIndex);
|
||||
return ADIERR_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Sets the AD9528 device SPI settings (3wire/4wire, MSBFirst, etc).
|
||||
*
|
||||
* This function will use the settings in the device->spiSettings structure
|
||||
* to set SPI stream mode, address auto increment direction, MSBFirst/LSBfirst,
|
||||
* and 3wire/4wire mode. The AD9528 device always uses SPI MODE 0 (CPHA=0, CPOL=0).
|
||||
* This function will update your device->spiSettings to set CHPA=0 and CPOL=0 and
|
||||
* longInstructionWord =1 to use a 16bit instruction word.
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - writes device->spiSettings->CPHA = 0
|
||||
* - writes device->spiSettings->CPOL = 0
|
||||
* - writes device->spiSettings->longInstructionWord = 1
|
||||
*
|
||||
* - device->spiSettings->MSBFirst
|
||||
* - device->spiSettings->enSpiStreaming
|
||||
* - device->spiSettings->autoIncAddrUp
|
||||
* - device->spiSettings->fourWireMode
|
||||
*
|
||||
* \param device is structure pointer to the AD9528 data structure containing settings
|
||||
*
|
||||
* \return Returns enum ADI_ERR, ADIERR_OK=pass, !ADIERR_OK=fail
|
||||
*/
|
||||
ADI_ERR AD9528_setSpiSettings(ad9528Device_t *device)
|
||||
{
|
||||
//device->spiSettings->enSpiStreaming
|
||||
uint8_t spiReg = 0;
|
||||
|
||||
device->spiSettings->CPHA = 0;
|
||||
device->spiSettings->CPOL = 0;
|
||||
device->spiSettings->longInstructionWord = 1;
|
||||
|
||||
if (device->spiSettings->MSBFirst == 0)
|
||||
{
|
||||
spiReg |= 0x42; /* SPI bit is 1=LSB first */
|
||||
}
|
||||
|
||||
if (device->spiSettings->autoIncAddrUp > 0)
|
||||
{
|
||||
spiReg |= 0x24;
|
||||
}
|
||||
|
||||
if (device->spiSettings->fourWireMode > 0)
|
||||
{
|
||||
spiReg |= 0x18;
|
||||
}
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_ADI_SPI_CONFIG_A, spiReg);
|
||||
|
||||
if (device->spiSettings->enSpiStreaming > 0)
|
||||
{
|
||||
/* Allow SPI streaming mode: SPI message ends when chip select deasserts */
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_ADI_SPI_CONFIG_B, 0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Force single instruction mode */
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_ADI_SPI_CONFIG_B, 0x80);
|
||||
}
|
||||
|
||||
return ADIERR_OK;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Helper function for ADI transceiver eval boards to init the AD9528 data structure
|
||||
*
|
||||
* This function inits the AD9528 device data structure with defaults that
|
||||
* are known to work with the ADI AD9369 and AD9371 evaluation boards. NOTE: This function will
|
||||
* modify the contents of the AD9528 device data structure.
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - spi->chipSelectIndex
|
||||
* - spi
|
||||
*
|
||||
* \param device Pointer to the AD9528 device data structure to initialize
|
||||
* \param vcxoFrequency_Hz The VCXO frequency that is connected to the AD9528
|
||||
* \param refAFrequency_Hz The reference clock frequency being input into the AD9528 REFCLK A input
|
||||
* \param outputDeviceClock_Hz Desired output clock frequency to the FPGA and transceiver device
|
||||
*
|
||||
* \return Returns enum ADI_ERR, 0=pass, >0 = fail
|
||||
*/
|
||||
ADI_ERR AD9528_initDeviceDataStruct(ad9528Device_t *device, uint32_t vcxoFrequency_Hz, uint32_t refAFrequency_Hz, uint32_t outputDeviceClock_Hz)
|
||||
{
|
||||
// uint16_t chDiv;
|
||||
// uint8_t i = 0;
|
||||
//
|
||||
// uint32_t pll1PfdFreq_Hz = 0;
|
||||
// uint8_t pll1Ndiv = 0;
|
||||
// uint8_t validPll1DivSetting = 0;
|
||||
// uint8_t refAdiv = 1;
|
||||
//
|
||||
//
|
||||
// uint8_t pll2RfDiv = 3; /* Valid values 3,4,5 */
|
||||
// uint16_t pll2Ndiv = 1; /* Valid values 1-256 */
|
||||
// uint32_t pll2InputFreq_Hz = 0;
|
||||
// uint64_t pll2VcoFreq_Hz = 0;
|
||||
// uint16_t pll2NdivStart = 0;
|
||||
// uint8_t validPll2DivSetting = 0;
|
||||
// uint64_t chDivU64 = 0;
|
||||
//
|
||||
// static const uint64_t PLL2_MIN_VCO_FREQ_HZ = 3450000000ULL;
|
||||
// static const uint64_t PLL2_MAX_VCO_FREQ_HZ = 4025000000ULL;
|
||||
// /*******************************************************************
|
||||
// * PLL1 Settings
|
||||
// *******************************************************************
|
||||
// */
|
||||
//
|
||||
// /* find valid PLL1 Ndiv and REFA div */
|
||||
// for (pll1Ndiv = 1; pll1Ndiv < 20; pll1Ndiv++)
|
||||
// {
|
||||
// pll1PfdFreq_Hz = vcxoFrequency_Hz / pll1Ndiv;
|
||||
//
|
||||
// if ((pll1PfdFreq_Hz <= 110000000) && (pll1PfdFreq_Hz >= 1000000) &&
|
||||
// (pll1PfdFreq_Hz <= refAFrequency_Hz) &&
|
||||
// (refAFrequency_Hz % pll1PfdFreq_Hz == 0)
|
||||
// )
|
||||
// {
|
||||
// validPll1DivSetting = 1;
|
||||
// refAdiv = refAFrequency_Hz / pll1PfdFreq_Hz ;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (validPll1DivSetting == 0)
|
||||
// {
|
||||
// return ADIERR_INV_PARM;
|
||||
// }
|
||||
//
|
||||
// device->pll1Settings->nDivider = pll1Ndiv; //This init function always runs PLL1 at 30.72MHz Pfd rate
|
||||
// device->pll1Settings->refA_bufferCtrl = DIFFERENTIAL; //DISABLED = 0, SINGLE_ENDED, NEG_SINGLE_ENDED, DIFFERENTIAL
|
||||
// device->pll1Settings->refA_Divider = refAdiv;
|
||||
// device->pll1Settings->refA_Frequency_Hz = refAFrequency_Hz;
|
||||
// device->pll1Settings->refB_bufferCtrl = DISABLED; //DISABLED = 0, SINGLE_ENDED, NEG_SINGLE_ENDED, DIFFERENTIAL
|
||||
// device->pll1Settings->refB_Divider = 1;
|
||||
// device->pll1Settings->refB_Frequency_Hz = 0;
|
||||
// device->pll1Settings->vcxoBufferCtrl = NEG_SINGLE_ENDED; //DISABLED = 0, SINGLE_ENDED, NEG_SINGLE_ENDED, DIFFERENTIAL
|
||||
// device->pll1Settings->vcxo_Frequency_Hz = vcxoFrequency_Hz;
|
||||
//
|
||||
// /*******************************************************************
|
||||
// * PLL2 Settings
|
||||
// *******************************************************************
|
||||
// */
|
||||
//
|
||||
// /*******************************************************************
|
||||
// * Output Distribution Settings
|
||||
// * 9369CE02A uses the following clock outputs
|
||||
// * OUT 1: FPGA REFCLK
|
||||
// * OUT 3: FPGA SYSREF
|
||||
// * OUT 12: DUT SYSREF
|
||||
// * OUT 13: DUT REFCLK
|
||||
// *******************************************************************
|
||||
// */
|
||||
//
|
||||
// /* PLL 2 input clock can be several different things. Currently hard coded by this init funciton to use
|
||||
// * PLL 1 output (VCXO Frequency) with no scaling
|
||||
// */
|
||||
// pll2InputFreq_Hz = device->pll1Settings->vcxo_Frequency_Hz;
|
||||
// validPll2DivSetting = 0;
|
||||
//
|
||||
// /* Sweep PLL2 Divider settings to find something that has a valid integer divide (3,4,5)*/
|
||||
// for (pll2RfDiv = 3; pll2RfDiv <= 5; pll2RfDiv++)
|
||||
// {
|
||||
//
|
||||
// pll2NdivStart = (PLL2_MIN_VCO_FREQ_HZ / pll2RfDiv / pll2InputFreq_Hz);
|
||||
// /* find valid PLL2 Ndiv (1-256) */
|
||||
// for (pll2Ndiv = pll2NdivStart; pll2Ndiv <= 256; pll2Ndiv++)
|
||||
// {
|
||||
// pll2VcoFreq_Hz = (pll2InputFreq_Hz * pll2RfDiv * pll2Ndiv);
|
||||
//
|
||||
// if (pll2VcoFreq_Hz < PLL2_MIN_VCO_FREQ_HZ)
|
||||
// {
|
||||
// /* Continue to next PLL2 N div */
|
||||
// continue;
|
||||
// }
|
||||
// else if (pll2VcoFreq_Hz > PLL2_MAX_VCO_FREQ_HZ)
|
||||
// {
|
||||
// /* Break to next PLL2 RF div */
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// if (((pll2VcoFreq_Hz / pll2RfDiv) % outputDeviceClock_Hz) == 0)
|
||||
// {
|
||||
//
|
||||
// device->pll2Settings->rfDivider = pll2RfDiv;
|
||||
// device->pll2Settings->n2Divider = pll2Ndiv;
|
||||
// device->pll2Settings->totalNdiv = pll2RfDiv * pll2Ndiv;
|
||||
// chDivU64 = ((pll2VcoFreq_Hz / pll2RfDiv) / outputDeviceClock_Hz);
|
||||
//
|
||||
// if ((chDivU64 < 1) || (chDivU64 > 256))
|
||||
// {
|
||||
// return ADIERR_INV_PARM;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// chDiv = (uint16_t)(chDivU64);
|
||||
// }
|
||||
//
|
||||
// validPll2DivSetting = 1;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (validPll2DivSetting == 1)
|
||||
// {
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (validPll2DivSetting == 0)
|
||||
// {
|
||||
// return ADIERR_INV_PARM;
|
||||
// }
|
||||
//
|
||||
// device->outputSettings->outPowerDown = (uint16_t)(~0x300A); //enable outputs 13,12,3 and 1
|
||||
//
|
||||
// for (i=0; i<14; i++){
|
||||
// device->outputSettings->outSource[i] = CHANNEL_DIV; //CHANNEL_DIV , PLL1_OUTPUT, SYSREF, INV_PLL1_OUTPUT
|
||||
// device->outputSettings->outBufferCtrl[i] = LVDS; //LVDS, LVDS_BOOST, HSTL
|
||||
// device->outputSettings->outChannelDiv[i] = chDiv;
|
||||
// device->outputSettings->outFrequency_Hz[i] = outputDeviceClock_Hz;
|
||||
// device->outputSettings->outAnalogDelay[i] = 0;
|
||||
// device->outputSettings->outDigitalDelay[i] = 0;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// device->outputSettings->outSource[3] = SYSREF;
|
||||
// device->outputSettings->outSource[12] = SYSREF;
|
||||
//
|
||||
//
|
||||
// device->sysrefSettings->sysrefDivide = 512; //SYSREF frequency = VCXO / 2 / sysrefDivde
|
||||
// device->sysrefSettings->sysrefNshotMode = ONE_PULSE; //ONE_PULSE=0, TWO_PULSES=2, FOUR_PULSES=3, SIX_PULSES=4, EIGHT_PULSES=5
|
||||
// device->sysrefSettings->sysrefPatternMode = NSHOT; //NSHOT=0, CONTINUOUS=1, PRBS=2, STOP=3
|
||||
// device->sysrefSettings->sysrefPinBufferMode = DISABLED; //DISABLED = 0, SINGLE_ENDED, NEG_SINGLE_ENDED, DIFFERENTIAL
|
||||
// device->sysrefSettings->sysrefPinEdgeMode = LEVEL_ACTIVE_HIGH; //LEVEL_ACTIVE_HIGH=0, LEVEL_ACTIVE_LOW=1, RISING_EDGE=2, FALLING_EDGE=3
|
||||
// device->sysrefSettings->sysrefRequestMethod = SPI; //SPI=0,PIN=1
|
||||
// device->sysrefSettings->sysrefSource = INTERNAL; //EXTERNAL=0, EXT_RESAMPLED=1, INTERNAL=2
|
||||
return ADIERR_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Debug function to print out summary of AD9528 setup
|
||||
*
|
||||
* \param device AD9528 Device data structure describing setup of device.
|
||||
*
|
||||
* \return Returns enum ADI_ERR, 0=pass, >0 = fail
|
||||
***********************************************************************************/
|
||||
ADI_ERR AD9528_reportClockRates(ad9528Device_t *device)
|
||||
{
|
||||
|
||||
return ADIERR_OK;
|
||||
} //debug function to help verify data structure is setup correctly.
|
||||
|
||||
/**
|
||||
* \brief Initializes the AD9528 by writing all SPI registers
|
||||
*
|
||||
* Initializes the AD9528 for use with the AD9369 transceiver. Designed to work with
|
||||
* a reference clock of 122.88MHz. Reference clock is expected to be 30.72MHz.
|
||||
* The output clocks from the AD9528 can run at 122.88M, 153.6M, 184.32M, 245.76M, or 307.2M.
|
||||
* Typical setup: REFA frequency = 30.72, VCXO = 122.88MHz
|
||||
* SYNC(SYSREF) pulses output at rate of 120kHz
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - All parameters in device structure
|
||||
*
|
||||
* \param device is structure pointer to AD9528 clock device structure
|
||||
*
|
||||
* \return Returns enum ADI_ERR, 0=pass, >0 = fail
|
||||
*/
|
||||
ADI_ERR AD9528_initialize(ad9528Device_t *device) { //writes all registers to desired values, leaves clock outputs off, SYSREF output disabled.
|
||||
uint8_t pll2_Adiv=0;
|
||||
uint8_t pll2_Bdiv=0;
|
||||
uint8_t reg108=0;
|
||||
uint8_t reg109=0;
|
||||
uint8_t i = 0;
|
||||
uint8_t j = 0;
|
||||
uint8_t reg508;
|
||||
ADI_ERR retval = ADIERR_OK;
|
||||
|
||||
CMB_writeToLog(ADIHAL_LOG_MESSAGE, device->spiSettings->chipSelectIndex, ADIERR_OK, "\n// AD9528_initialize\n");
|
||||
|
||||
//CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_ADI_SPI_CONFIG_A, 0x18); //[4] and [3] =1 enable 4 wire SPI
|
||||
//CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_ADI_SPI_CONFIG_B, 0x00);
|
||||
retval = AD9528_setSpiSettings(device);
|
||||
if (retval != ADIERR_OK)
|
||||
{
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* Configure PLL1
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_REF_A_DIVIDER_LSB,
|
||||
device->pll1Settings->refA_Divider & 0xFF); //REF A div[7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_REF_A_DIVIDER_MSB,
|
||||
(device->pll1Settings->refA_Divider >> 8) & 0x03); //REF A div[9:8]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_REF_B_DIVIDER_LSB,
|
||||
device->pll1Settings->refB_Divider & 0xFF); //REF B div[7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_REF_B_DIVIDER_MSB,
|
||||
(device->pll1Settings->refB_Divider >> 8) & 0x03); //REF B div[9:8]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL1_N_DIV_LSB,
|
||||
device->pll1Settings->nDivider & 0xFF); //PLL1 N div[7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL1_N_DIV_MSB,
|
||||
(device->pll1Settings->nDivider >> 8) & 0x03); //PLL1 N div[9:8]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL1_CHARGEPUMP,
|
||||
0x0A); //PLL1 Charge Pump control 1
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL1_CP_CTRL2,
|
||||
0x03); //PLL1 Charge Pump control 2
|
||||
|
||||
switch (device->pll1Settings->refA_bufferCtrl){
|
||||
case DISABLED:
|
||||
reg108 &= ~0x28;
|
||||
reg109 &= ~0x01;
|
||||
break; //clear all REFA enable bits
|
||||
case SINGLE_ENDED:
|
||||
reg108 |= 0x08;
|
||||
reg109 &= ~0x01;
|
||||
break; //Set REFA receiver enable, clear REFA SE negative input enable
|
||||
case NEG_SINGLE_ENDED:
|
||||
reg108 |= 0x08;
|
||||
reg108 &= ~0x10;
|
||||
reg109 |= 0x01;
|
||||
break; //Disable REFA diff receiver, enable REFA receiver and use negative REFA input
|
||||
case DIFFERENTIAL:
|
||||
reg108 |= 0x28;
|
||||
reg109 &= ~0x01;
|
||||
break;
|
||||
default:
|
||||
reg108 |= 0x08;
|
||||
reg109 &= ~0x01;
|
||||
break; //default to single ended case
|
||||
}
|
||||
switch (device->pll1Settings->refB_bufferCtrl){
|
||||
case DISABLED:
|
||||
reg108 &= ~0x50;
|
||||
reg109 &= ~0x02;
|
||||
break; //clear all REFB enable bits
|
||||
case SINGLE_ENDED:
|
||||
reg108 |= 0x10;
|
||||
reg109 &= ~0x02;
|
||||
break; //Set REFB receiver enable, clear REFB SE negative input enable
|
||||
case NEG_SINGLE_ENDED:
|
||||
reg108 |= 0x10;
|
||||
reg108 &= ~0x40;
|
||||
reg109 |= 0x02;
|
||||
break; //Disable REFB diff receiver, enable REFB receiver and use negative REFB input
|
||||
case DIFFERENTIAL:
|
||||
reg108 |= 0x50;
|
||||
reg109 &= ~0x02;
|
||||
break;
|
||||
default:
|
||||
reg108 |= 0x10;
|
||||
reg109 &= ~0x02;
|
||||
break; //default to single ended case
|
||||
}
|
||||
switch (device->pll1Settings->vcxoBufferCtrl){
|
||||
case DISABLED:
|
||||
reg108 &= ~0x03;
|
||||
reg108 |= 0x04;
|
||||
break; //power down VCXO input
|
||||
case SINGLE_ENDED:
|
||||
reg108 &= ~0x07;
|
||||
break; //Clear VCXO receiver power down, defaults to Single ended mode
|
||||
case NEG_SINGLE_ENDED:
|
||||
reg108 &= ~0x07;
|
||||
reg108 |= 0x02;
|
||||
break; //Clear VCXO power down, enable Negative single ended mode[1]
|
||||
case DIFFERENTIAL:
|
||||
reg108 &= ~0x07;
|
||||
reg108 |= 0x01;
|
||||
break; //Clear VCXO power down, enable differential input buffer[0]
|
||||
default:
|
||||
reg108 &= ~0x07;
|
||||
break; //default to positive single ended case
|
||||
}
|
||||
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_INPUT_RECEIVERS1,
|
||||
reg108); //Input receiver settings (single ended or differential clock inputs)
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_INPUT_RECEIVERS2,
|
||||
reg109); //Input receiver settings
|
||||
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_INPUT_RECEIVERS3,
|
||||
0x0A); //Reference selection mode
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL1_FASTLOCK,
|
||||
0x00); //Disable Fast lock
|
||||
|
||||
/**********************************************************************
|
||||
* Configure PLL2
|
||||
**********************************************************************
|
||||
*/
|
||||
pll2_Bdiv = device->pll2Settings->totalNdiv / 4;
|
||||
pll2_Adiv = device->pll2Settings->totalNdiv % 4;
|
||||
|
||||
if (pll2_Adiv > 3) { //A div valid range (0 to 3)
|
||||
CMB_writeToLog(ADIHAL_LOG_ERROR, device->spiSettings->chipSelectIndex, ADIERR_INV_PARM, "\n// AD9528 PLL2 A Divider out of range (0 to 3)\n");
|
||||
return ADIERR_INV_PARM;
|
||||
}
|
||||
if (pll2_Bdiv < 3 || pll2_Bdiv > 63) {
|
||||
CMB_writeToLog(ADIHAL_LOG_ERROR, device->spiSettings->chipSelectIndex, ADIERR_INV_PARM, "\n// AD9528 PLL2 B Divider out of range (3 to 63)\n");
|
||||
return ADIERR_INV_PARM;
|
||||
}
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_CHARGEPUMP,
|
||||
0xE6); //PLL2 Charge Pump[7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_N_DIV,
|
||||
((pll2_Adiv & 0x3) << 6) | (pll2_Bdiv & 0x3F)); //PLL2 A and B divider
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_CTRL, 0x03); //PLL2 control
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_VCO_CTRL, 0x01); //Manual VCO CAL
|
||||
|
||||
if (device->pll2Settings->rfDivider < 3 || device->pll2Settings->rfDivider > 5) {
|
||||
CMB_writeToLog(ADIHAL_LOG_ERROR, device->spiSettings->chipSelectIndex, ADIERR_INV_PARM, "\n// AD9528 PLL2 RF Divider out of range (3,4, or 5)\n");
|
||||
return ADIERR_INV_PARM;
|
||||
}
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_VCO_DIV,
|
||||
device->pll2Settings->rfDivider); //VCO divider
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_LF_CTRL1,
|
||||
0x3A); //PLL2 Loop filter [7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_LF_CTRL2,
|
||||
0x00); //PLL2 Loop filter [8]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_RDIV,
|
||||
0x00); //R divider
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_REPLICA_CHDIV,
|
||||
(device->pll2Settings->totalNdiv / device->pll2Settings->rfDivider)
|
||||
-1 ); //Replica channel divider: Ndivider = rfDivider * R divider
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_PLL2_REPLICA_DIV_PHASE,
|
||||
0x00); //Replica Channel Divider phase
|
||||
|
||||
/**********************************************************************
|
||||
* Configure Output Distribution
|
||||
**********************************************************************
|
||||
*/
|
||||
for (i=0; i<14; i=i+1){
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_CH_OUT0_CTRL1 + j,
|
||||
((device->outputSettings->outSource[i] & 0x7) << 5) |
|
||||
(device->outputSettings->outAnalogDelay[i] & 0x1F));
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_CH_OUT0_CTRL2 + j,
|
||||
((device->outputSettings->outBufferCtrl[i] & 0x3) << 6) |
|
||||
(device->outputSettings->outDigitalDelay[i] & 0x3F));
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_CH_OUT0_CHDIV + j,
|
||||
device->outputSettings->outChannelDiv[i]-1);
|
||||
j = j+3;
|
||||
}
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_OUTPUT_SYNC, 0x00); //Sync outputs
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_MASK_SYNC1, 0x00); //Mask SYNC[7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_MASK_SYNC2, 0x00); //Mask SYNC[13:8]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_EN_OUTPUT_PATH_SEL1,
|
||||
0x00); //Bypass SYSREF resample [6:0], bit0:Enable VCXO to feed output distrubution
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_EN_OUTPUT_PATH_SEL2,
|
||||
0x00); //Bypass SYSREF resample [13:7]
|
||||
|
||||
/**********************************************************************
|
||||
* Configure SYSREF operation
|
||||
**********************************************************************
|
||||
*/
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSERF_DIV_LSB,
|
||||
device->sysrefSettings->sysrefDivide & 0xFF); //SYSREF divider [7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSERF_DIV_MSB,
|
||||
(device->sysrefSettings->sysrefDivide >> 8) & 0xFF); //SYSREF divider [7:0]
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL3,
|
||||
((device->sysrefSettings->sysrefRequestMethod & 0x1) << 7) |
|
||||
((device->sysrefSettings->sysrefPinEdgeMode & 0x3) << 5) );
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL4,
|
||||
((device->sysrefSettings->sysrefSource & 0x03) << 6) |
|
||||
((device->sysrefSettings->sysrefPatternMode & 0x3) << 4 ) |
|
||||
((device->sysrefSettings->sysrefNshotMode & 0x7) << 1) );
|
||||
|
||||
if(device->sysrefSettings->sysrefPinBufferMode == DISABLED)
|
||||
{
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL5,
|
||||
0x04); //power down input buffer for external SYSREF
|
||||
}
|
||||
else if(device->sysrefSettings->sysrefPinBufferMode == SINGLE_ENDED)
|
||||
{
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL5,
|
||||
0x00); //enable positive singled ended input
|
||||
}
|
||||
else if(device->sysrefSettings->sysrefPinBufferMode == NEG_SINGLE_ENDED)
|
||||
{
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL5,
|
||||
0x02); //enable negative singled ended input
|
||||
}
|
||||
else if(device->sysrefSettings->sysrefPinBufferMode == DIFFERENTIAL)
|
||||
{
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL5,
|
||||
0x01); //enable differential input buffer
|
||||
}
|
||||
else
|
||||
{
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL5,
|
||||
0x04); //power down input buffer for external SYSREF
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* Power down control
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
if (device->pll1Settings->bypassPll1 > 0)
|
||||
{
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_POWERDOWN_CTRL,
|
||||
0x14);// power up PLL2 and output distribution, power down PLL1
|
||||
}
|
||||
else
|
||||
{
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_POWERDOWN_CTRL,
|
||||
0x10);// power up PLL1, PLL2 and output distribution
|
||||
}
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_CH_POWERDOWN1,
|
||||
device->outputSettings->outPowerDown & 0xFF); //power down out[7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_CH_POWERDOWN2,
|
||||
((device->outputSettings->outPowerDown >> 8) & 0x3F)); //power down out[13:8]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_LDO_ENABLES1,
|
||||
0xFF); //LDO enable per output channel [7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_LDO_ENABLES2,
|
||||
0xFF); //LDO enable per output channel [15:8]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_STATUS0_CTRL,
|
||||
0x07); //STATUS 0 outputs REFA present
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_STATUS1_CTRL,
|
||||
0x01); //STATUS 1 outputs PLL1 and PLL2 locked
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_STATUS_OE,
|
||||
0x0C);// Make Status0 and Status1 outputs after reset.
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_IO_UPDATE,
|
||||
0x01); //IO update to make all these settings valid in the 9528
|
||||
|
||||
CMB_setTimeout_ms(1000);
|
||||
do{
|
||||
CMB_SPIReadByte(device->spiSettings, AD9528_ADDR_STATUS_READBACK0, ®508);
|
||||
if(CMB_hasTimeoutExpired() > 0)
|
||||
{
|
||||
return ADIERR_FAILED;
|
||||
}
|
||||
}while((reg508 & 0xA2) != 0xA2);
|
||||
|
||||
return ADIERR_OK;
|
||||
}
|
||||
|
||||
/// Send a SPI message to request a SYSREF pulse or continuous SYSREF from the AD9528.
|
||||
/*******************************************************************************//**
|
||||
* Requests a SYSREF from the AD9528. It will use whatever settings for SYSREF
|
||||
* that are current configured in the AD9528. This could be a single pulse,
|
||||
* multiple pulses, or continuous pulses.
|
||||
* <B>Dependencies</B>
|
||||
* - device->spiSettings
|
||||
* - device->sysrefSettings->sysrefPatternMode
|
||||
*
|
||||
* \param device is structure pointer to AD9528 clock device structure
|
||||
* \param enableSYSREF If NSHOT SYSREF mode, this parameter is ignored. If PRBS/CONTINUOUS SYSREF mode, 1= enable SYSREF, 0= disable SYSREF.
|
||||
*
|
||||
* \return Returns enum ADI_ERR, 0=pass, >0 = fail
|
||||
***********************************************************************************/
|
||||
ADI_ERR AD9528_requestSysref(ad9528Device_t *device, uint8_t enableSYSREF){
|
||||
uint8_t _enableSYSREF=0;
|
||||
|
||||
if (device->sysrefSettings->sysrefPatternMode == NSHOT || enableSYSREF > 0)
|
||||
{
|
||||
_enableSYSREF = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_enableSYSREF = 0;
|
||||
}
|
||||
|
||||
CMB_SPIWriteField(device->spiSettings, AD9528_ADDR_SYSREF_CTRL4, _enableSYSREF, 0x01, 0x00); //Set SPI SYSREF request bit
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_IO_UPDATE, 0x01); //IO update to make all these settings valid in the 9528
|
||||
|
||||
return ADIERR_OK;
|
||||
}
|
||||
|
||||
/// Allow changing the 9528 SYSREF frequency and pattern mode(CONTINUOUS, PRBS vs NSHOT mode)
|
||||
/*******************************************************************************//**
|
||||
* NOTE: this function will update the device structure with the parameter values passed
|
||||
* into this function. The device->sysrefSettings->sysrefPatternMode, device->sysrefSettings->sysrefNshotMode,
|
||||
* and device->sysrefSettings->sysrefDivide values will be updated in the device structure.
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - device->spiSettings
|
||||
*
|
||||
* \param device is structure pointer to AD9528 clock device structure
|
||||
* \param divideFromPll1Out Sets the SYSREF pulse frequency. SYSREF frequency = PLL1_VCXO frequency/divideFromPll1Out
|
||||
* \param sysrefPatternMode Valid settings: NSHOT, CONTINUOUS, PRBS, STOP
|
||||
* \param nShotPulses Valid settings: ONE_PULSE=0, TWO_PULSES=2, FOUR_PULSES=3, SIX_PULSES=4, EIGHT_PULSES=5
|
||||
*
|
||||
* \return Returns enum ADI_ERR, 0=pass, >0 = fail
|
||||
***********************************************************************************/
|
||||
ADI_ERR AD9528_setupSYSREF(ad9528Device_t *device, uint16_t divideFromPll1Out, sysrefPatternMode_t sysrefPatternMode, sysrefNshotMode_t nShotPulses)
|
||||
{
|
||||
uint8_t reg403=0;
|
||||
|
||||
device->sysrefSettings->sysrefPatternMode = sysrefPatternMode;
|
||||
device->sysrefSettings->sysrefNshotMode = nShotPulses;
|
||||
device->sysrefSettings->sysrefDivide = divideFromPll1Out >> 1; //SYSREF frequency is (PLL1)VCXO frequency / 2 / device->sysrefSettings->sysrefDivide
|
||||
|
||||
CMB_SPIReadByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL4, ®403);
|
||||
|
||||
reg403 = reg403 & ~0x01; //clear bit 0 to stop a continuous sysref if it is on.
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL4, reg403);
|
||||
|
||||
reg403 = reg403 & ~0x3E; //clear bits for pattern mode and Nshot mode bitfields
|
||||
reg403 = reg403 | ((sysrefPatternMode & 0x3) << 4) | ((nShotPulses & 0x7) << 1);
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_SYSREF_CTRL4, reg403); //update internal sysref pattern mode and Nshot mode (number of pulses)
|
||||
|
||||
//SYSREF request bit x403[0] is left 0. The next call to AD9528_requestSysref will start the SYSREF
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_IO_UPDATE, 0x01); //IO update to make all these settings valid in the 9528
|
||||
|
||||
|
||||
return ADIERR_OK;
|
||||
}
|
||||
|
||||
/// Update the AD9528 clock outputs that are enabled.
|
||||
/*******************************************************************************//**
|
||||
* NOTE: this function will update the device structure with the parameter values passed
|
||||
* into this function. The device->sysrefSettings->sysrefPatternMode, device->sysrefSettings->sysrefNshotMode,
|
||||
* and device->sysrefSettings->sysrefDivide values will be updated in the device structure.
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - device->spiSettings
|
||||
*
|
||||
* \param device is structure pointer to AD9528 clock device structure
|
||||
* \param clkEnable Sets which clock outputs are enabled. Bit per clock output. bit0 = out0, etc.
|
||||
*
|
||||
* \return Returns enum ADI_ERR, 0=pass, >0 = fail
|
||||
***********************************************************************************/
|
||||
ADI_ERR AD9528_enableClockOutputs(ad9528Device_t *device, uint16_t clkEnable)
|
||||
{ //clkEnable: bit per clock output
|
||||
|
||||
device->outputSettings->outPowerDown = ~clkEnable;
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_CH_POWERDOWN1, device->outputSettings->outPowerDown & 0xFF); //power down out[7:0]
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_CH_POWERDOWN2, ((device->outputSettings->outPowerDown >> 8) & 0x3F)); //power down out[13:8]
|
||||
|
||||
CMB_SPIWriteByte(device->spiSettings, AD9528_ADDR_IO_UPDATE, 0x01); //IO update to make all these settings valid in the 9528
|
||||
return ADIERR_OK;
|
||||
}
|
||||
|
||||
/// Waits for PLL1 and PLL2 to lock and the REFA and VCXO clocks to be present
|
||||
/*******************************************************************************//**
|
||||
* Waits until Reference A clock and VCXO clock input to be detected (present),
|
||||
* and PLL1 and PLL2 to lock. Will timeout after 1 second and return ADIERR_FAILED.
|
||||
* If clock are detected and PLLs locked, returns ADIERR_OK.
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - device->spiSettings
|
||||
*
|
||||
* \param device is structure pointer to AD9528 clock device structure
|
||||
*
|
||||
* \return Returns enum ADI_ERR, 0=pass, >0 = fail
|
||||
***********************************************************************************/
|
||||
ADI_ERR AD9528_waitForPllLock(ad9528Device_t *device)
|
||||
{
|
||||
uint8_t reg508;
|
||||
|
||||
CMB_setTimeout_ms(1000);
|
||||
do{
|
||||
CMB_SPIReadByte(device->spiSettings, AD9528_ADDR_STATUS_READBACK0, ®508);
|
||||
if(CMB_hasTimeoutExpired() > 0)
|
||||
{
|
||||
return ADIERR_FAILED;
|
||||
}
|
||||
}while((reg508 & 0x27) != 0x27);
|
||||
|
||||
return ADIERR_OK;
|
||||
}
|
||||
|
||||
/// Reads the Lock Status of the PLLs and present detect of the reference clocks
|
||||
/*******************************************************************************//**
|
||||
* NOTE: This is a non blocking function that reads a register to see if PLL1
|
||||
* and PLL2 are locked and Reference clock A and the VCXO input clock are
|
||||
* detected (present). If the *status parameter is not NULL, the status will
|
||||
* be returned. If *status is NULL, the error return value will denote if
|
||||
* the PllStatus is locked or not with ADIERR_OK or ADIERR_FAILED.
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - device->spiSettings
|
||||
*
|
||||
* \param device is structure pointer to AD9528 clock device structure
|
||||
*
|
||||
* \return Returns enum ADI_ERR, 0=pass, >0 = fail
|
||||
***********************************************************************************/
|
||||
ADI_ERR AD9528_readPllStatus(ad9528Device_t *device, uint8_t *status)
|
||||
{
|
||||
uint8_t reg508;
|
||||
|
||||
//bit5 is VCXO clock detected
|
||||
//bit2 is REFCLK A detected
|
||||
//bit1 is PLL2 lock detect
|
||||
//bit0 is PLL1 lock detect
|
||||
|
||||
/* read twice to refresh status bits */
|
||||
CMB_SPIReadByte(device->spiSettings, AD9528_ADDR_STATUS_READBACK0, ®508);
|
||||
CMB_SPIReadByte(device->spiSettings, AD9528_ADDR_STATUS_READBACK0, ®508);
|
||||
/* if status is a valid pointer, return the PLL status */
|
||||
if (status > 0)
|
||||
{
|
||||
*status = reg508;
|
||||
}
|
||||
|
||||
/* PLLs 1 and 2 are locked and VCXO and REFA detected if reg508 has bits 5,2,1 and 0 set */
|
||||
if((reg508 & 0x27) == 0x27)
|
||||
return ADIERR_OK;
|
||||
else
|
||||
return ADIERR_FAILED;
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* \file ad9528.h
|
||||
* \brief Contains function declarations and ad9528Device_t structure typedef for ad9528.c
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _AD9528_LIB_H_
|
||||
#define _AD9528_LIB_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include "../common.h"
|
||||
#include "t_ad9528.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define CLEMENTE_TDD_AD9528_CLKOUT_INDEX 13
|
||||
|
||||
//Helper function to setup the 9528 device data structure specifically for the ADI transceiver evaluation cards
|
||||
ADI_ERR AD9528_initDeviceDataStruct(ad9528Device_t *device, uint32_t vcxoFrequency_Hz, uint32_t refAFrequency_Hz, uint32_t outputDeviceClock_Hz);
|
||||
ADI_ERR AD9528_reportClockRates(ad9528Device_t *device); //debug function to help verify data structure is setup correctly.
|
||||
|
||||
//AD9528 API functions
|
||||
ADI_ERR AD9528_resetDevice(ad9528Device_t *device);
|
||||
ADI_ERR AD9528_setSpiSettings(ad9528Device_t *device);
|
||||
ADI_ERR AD9528_initialize(ad9528Device_t *device); //writes all registers to desired values, leaves clock outputs off.
|
||||
ADI_ERR AD9528_waitForPllLock(ad9528Device_t *device);
|
||||
ADI_ERR AD9528_readPllStatus(ad9528Device_t *device, uint8_t *status);
|
||||
ADI_ERR AD9528_enableClockOutputs(ad9528Device_t *device, uint16_t clkEnable); //clkEnable: bit per clock output
|
||||
ADI_ERR AD9528_setupSYSREF(ad9528Device_t *device, uint16_t divideFromPll1Out, sysrefPatternMode_t sysrefPatternMode, sysrefNshotMode_t nShotPulses);
|
||||
ADI_ERR AD9528_requestSysref(ad9528Device_t *device, uint8_t enableSYSREF);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+18444
File diff suppressed because it is too large
Load Diff
+277
@@ -0,0 +1,277 @@
|
||||
/*!
|
||||
* \file mykonos.h
|
||||
* \brief Contains macro definitions and function prototypes for mykonos.c
|
||||
*
|
||||
* Mykonos API version: 1.5.2.3566
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MYKONOS_LIB_H_
|
||||
#define _MYKONOS_LIB_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "t_mykonos.h"
|
||||
#include "mykonos_version.h"
|
||||
|
||||
#define TX_PROFILE_VALID 0x01
|
||||
#define RX_PROFILE_VALID 0x02
|
||||
#define ORX_PROFILE_VALID 0x04
|
||||
#define SNIFF_PROFILE_VALID 0x08
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* General Initialization functions
|
||||
****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_resetDevice(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_getDeviceRev(mykonosDevice_t *device, uint8_t *revision);
|
||||
mykonosErr_t MYKONOS_getProductId(mykonosDevice_t *device, uint8_t *productId);
|
||||
mykonosErr_t MYKONOS_setSpiSettings(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_verifyDeviceDataStructure(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_verifyProfiles(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_initialize(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_waitForEvent(mykonosDevice_t *device, waitEvent_t waitEvent, uint32_t timeout_us);
|
||||
mykonosErr_t MYKONOS_readEventStatus(mykonosDevice_t *device, waitEvent_t waitEvent, uint8_t *eventDone);
|
||||
mykonosErr_t MYKONOS_getApiVersion (mykonosDevice_t *device, uint32_t *siVer, uint32_t *majorVer, uint32_t *minorVer, uint32_t *buildVer);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* PLL / Synthesizer functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_initDigitalClocks(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_setRfPllFrequency(mykonosDevice_t *device, mykonosRfPllName_t pllName, uint64_t rfPllLoFrequency_Hz);
|
||||
mykonosErr_t MYKONOS_getRfPllFrequency(mykonosDevice_t *device, mykonosRfPllName_t pllName, uint64_t *rfPllLoFrequency_Hz);
|
||||
mykonosErr_t MYKONOS_checkPllsLockStatus(mykonosDevice_t *device, uint8_t *pllLockStatus);
|
||||
mykonosErr_t MYKONOS_setRfPllLoopFilter(mykonosDevice_t *device, mykonosRfPllName_t pllName, uint16_t loopBandwidth_kHz, uint8_t stability);
|
||||
mykonosErr_t MYKONOS_getRfPllLoopFilter(mykonosDevice_t *device, mykonosRfPllName_t pllName, uint16_t *loopBandwidth_kHz, uint8_t *stability);
|
||||
/*
|
||||
*****************************************************************************
|
||||
* ARM Processor Control Functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_initArm(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_loadArmFromBinary(mykonosDevice_t *device, uint8_t *binary, uint32_t count);
|
||||
mykonosErr_t MYKONOS_loadArmConcurrent(mykonosDevice_t *device, uint8_t *binary, uint32_t count);
|
||||
mykonosErr_t MYKONOS_verifyArmChecksum(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_checkArmState(mykonosDevice_t *device, mykonosArmState_t armStateCheck);
|
||||
mykonosErr_t MYKONOS_getArmVersion(mykonosDevice_t *device, uint8_t *majorVer, uint8_t *minorVer, uint8_t *rcVer, mykonosBuild_t *buildType);
|
||||
|
||||
mykonosErr_t MYKONOS_configDpd(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_getDpdConfig(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_getDpdStatus(mykonosDevice_t *device, mykonosTxChannels_t txChannel, mykonosDpdStatus_t *dpdStatus);
|
||||
mykonosErr_t MYKONOS_restoreDpdModel(mykonosDevice_t *device, mykonosTxChannels_t txChannel, uint8_t *modelDataBuffer, uint32_t modelNumberBytes);
|
||||
mykonosErr_t MYKONOS_saveDpdModel(mykonosDevice_t *device, mykonosTxChannels_t txChannel, uint8_t *modelDataBuffer, uint32_t modelNumberBytes);
|
||||
mykonosErr_t MYKONOS_setDpdActState(mykonosDevice_t *device, mykonosTxChannels_t txChannel, uint8_t actState);
|
||||
mykonosErr_t MYKONOS_resetDpd(mykonosDevice_t *device, mykonosTxChannels_t txChannel, mykonosDpdResetMode_t reset);
|
||||
mykonosErr_t MYKONOS_setDpdBypassConfig(mykonosDevice_t *device, mykonosDpdBypassConfig_t *actConfig);
|
||||
mykonosErr_t MYKONOS_getDpdBypassConfig(mykonosDevice_t *device, mykonosDpdBypassConfig_t *actConfig);
|
||||
mykonosErr_t MYKONOS_setDpdActuatorCheck(mykonosDevice_t *device, mykonosDpdActuatorCheck_t *actCheck);
|
||||
mykonosErr_t MYKONOS_getDpdActuatorCheck(mykonosDevice_t *device, mykonosDpdActuatorCheck_t *actCheck);
|
||||
|
||||
mykonosErr_t MYKONOS_setClgcAttenTuningConfig(mykonosDevice_t *device, mykonosClgcAttenTuningConfig_t *attRangeCfg);
|
||||
mykonosErr_t MYKONOS_getClgcAttenTuningConfig(mykonosDevice_t *device, mykonosClgcAttenTuningConfig_t *attRangeCfg);
|
||||
|
||||
mykonosErr_t MYKONOS_configClgc(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_getClgcConfig(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_getClgcStatus(mykonosDevice_t *device, mykonosTxChannels_t txChannel, mykonosClgcStatus_t *clgcStatus);
|
||||
mykonosErr_t MYKONOS_setClgcGain(mykonosDevice_t *device, mykonosTxChannels_t txChannel, int16_t gain);
|
||||
|
||||
mykonosErr_t MYKONOS_configVswr(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_getVswrConfig(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_getVswrStatus(mykonosDevice_t *device, mykonosTxChannels_t txChannel, mykonosVswrStatus_t *vswrStatus);
|
||||
|
||||
mykonosErr_t MYKONOS_runInitCals(mykonosDevice_t *device, uint32_t calMask);
|
||||
mykonosErr_t MYKONOS_waitInitCals(mykonosDevice_t *device, uint32_t timeoutMs, uint8_t *errorFlag, uint8_t *errorCode);
|
||||
mykonosErr_t MYKONOS_abortInitCals(mykonosDevice_t *device, uint32_t *calsCompleted);
|
||||
mykonosErr_t MYKONOS_getInitCalStatus(mykonosDevice_t *device, mykonosInitCalStatus_t *initCalStatus);
|
||||
|
||||
mykonosErr_t MYKONOS_resetExtTxLolChannel(mykonosDevice_t *device, mykonosTxChannels_t channelSel);
|
||||
|
||||
mykonosErr_t MYKONOS_radioOn(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_radioOff(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_getRadioState(mykonosDevice_t *device, uint32_t *radioStatus);
|
||||
mykonosErr_t MYKONOS_enableTrackingCals(mykonosDevice_t *device, uint32_t enableMask);
|
||||
mykonosErr_t MYKONOS_rescheduleTrackingCal(mykonosDevice_t *device, mykonosTrackingCalibrations_t trackingCal);
|
||||
mykonosErr_t MYKONOS_setAllTrackCalState(mykonosDevice_t *device, uint32_t trackingCalMask);
|
||||
mykonosErr_t MYKONOS_getAllTrackCalState(mykonosDevice_t *device, uint32_t *trackCals);
|
||||
mykonosErr_t MYKONOS_setTrackingCalState(mykonosDevice_t *device, mykonosTrackingCalibrations_t trackingCal, uint8_t trackCalState);
|
||||
mykonosErr_t MYKONOS_getTrackingCalState(mykonosDevice_t *device, mykonosTrackingCalibrations_t trackingCal, uint8_t *trackCalState);
|
||||
mykonosErr_t MYKONOS_getEnabledTrackingCals(mykonosDevice_t *device, uint32_t *enableMask);
|
||||
mykonosErr_t MYKONOS_getPendingTrackingCals(mykonosDevice_t *device, uint32_t *pendingCalMask);
|
||||
mykonosErr_t MYKONOS_getTxLolStatus(mykonosDevice_t *device, mykonosTxChannels_t txChannel, mykonosTxLolStatus_t *txLolStatus);
|
||||
mykonosErr_t MYKONOS_getTxQecStatus(mykonosDevice_t *device, mykonosTxChannels_t txChannel, mykonosTxQecStatus_t *txQecStatus);
|
||||
|
||||
mykonosErr_t MYKONOS_getRxQecStatus(mykonosDevice_t *device, mykonosRxChannels_t rxChannel, mykonosRxQecStatus_t *rxQecStatus);
|
||||
mykonosErr_t MYKONOS_getOrxQecStatus(mykonosDevice_t *device, mykonosObsRxChannels_t orxChannel, mykonosOrxQecStatus_t *orxQecStatus);
|
||||
|
||||
mykonosErr_t MYKONOS_setSnifferChannel(mykonosDevice_t *device, mykonosSnifferChannel_t snifferChannel);
|
||||
mykonosErr_t MYKONOS_setRadioControlPinMode(mykonosDevice_t *device);
|
||||
|
||||
mykonosErr_t MYKONOS_setPathDelay(mykonosDevice_t *device, mykonosPathdelay_t *pathDelay);
|
||||
mykonosErr_t MYKONOS_getPathDelay(mykonosDevice_t *device, mykonosPathDelaySel_t select, mykonosPathdelay_t *pathDelay);
|
||||
|
||||
mykonosErr_t MYKONOS_getDpdErrorCounters(mykonosDevice_t *device, mykonosTxChannels_t txChannel, mykonosDpdErrorCounters_t *dpdErrCnt);
|
||||
|
||||
/* Low level ARM functions */
|
||||
mykonosErr_t MYKONOS_readArmMem(mykonosDevice_t *device, uint32_t address, uint8_t *returnData, uint32_t bytesToRead, uint8_t autoIncrement);
|
||||
mykonosErr_t MYKONOS_writeArmMem(mykonosDevice_t *device, uint32_t address, uint8_t *data, uint32_t byteCount);
|
||||
mykonosErr_t MYKONOS_writeArmConfig(mykonosDevice_t *device, uint8_t objectId, uint16_t offset, uint8_t *data, uint8_t byteCount);
|
||||
mykonosErr_t MYKONOS_readArmConfig(mykonosDevice_t *device, uint8_t objectId, uint16_t offset, uint8_t *data, uint8_t byteCount);
|
||||
mykonosErr_t MYKONOS_sendArmCommand(mykonosDevice_t *device, uint8_t opCode, uint8_t *extendedData, uint8_t extendedDataNumBytes);
|
||||
mykonosErr_t MYKONOS_readArmCmdStatus(mykonosDevice_t *device, uint16_t *errorWord, uint16_t *statusWord);
|
||||
mykonosErr_t MYKONOS_readArmCmdStatusByte(mykonosDevice_t *device, uint8_t opCode, uint8_t *cmdStatByte);
|
||||
mykonosErr_t MYKONOS_waitArmCmdStatus(mykonosDevice_t *device, uint8_t opCode, uint32_t timeoutMs, uint8_t *cmdStatByte);
|
||||
mykonosErr_t MYKONOS_writeArmProfile(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_loadAdcProfiles(mykonosDevice_t *device);
|
||||
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* JESD204B Datapath Functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
/* Functions to setup the JESD204B IP */
|
||||
mykonosErr_t MYKONOS_resetDeframer(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_setupSerializers(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_setupDeserializers(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_setupJesd204bFramer(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_setupJesd204bObsRxFramer(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_setupJesd204bDeframer(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_enableRxFramerLink(mykonosDevice_t *device, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_enableObsRxFramerLink(mykonosDevice_t *device, uint8_t enable);
|
||||
|
||||
/* Functions to initialize the JESD204B link */
|
||||
mykonosErr_t MYKONOS_enableMultichipSync(mykonosDevice_t *device, uint8_t enableMcs, uint8_t *mcsStatus);
|
||||
mykonosErr_t MYKONOS_enableSysrefToRxFramer(mykonosDevice_t *device, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_enableSysrefToObsRxFramer(mykonosDevice_t *device, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_enableSysrefToDeframer(mykonosDevice_t *device, uint8_t enable);
|
||||
|
||||
/* Functions to help debug the JESD204B link */
|
||||
mykonosErr_t MYKONOS_readRxFramerStatus(mykonosDevice_t *device, uint8_t *framerStatus);
|
||||
mykonosErr_t MYKONOS_readOrxFramerStatus(mykonosDevice_t *device, uint8_t *obsFramerStatus);
|
||||
mykonosErr_t MYKONOS_readDeframerStatus(mykonosDevice_t *device, uint8_t *deframerStatus);
|
||||
mykonosErr_t MYKONOS_getDeframerFifoDepth(mykonosDevice_t *device, uint8_t *fifoDepth, uint8_t *readEnLmfcCount);
|
||||
|
||||
/* PRBS debug functions */
|
||||
mykonosErr_t MYKONOS_enableRxFramerPrbs(mykonosDevice_t *device, mykonosPrbsOrder_t polyOrder, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_enableObsRxFramerPrbs(mykonosDevice_t *device, mykonosPrbsOrder_t polyOrder, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_rxInjectPrbsError(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_obsRxInjectPrbsError(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_enableDeframerPrbsChecker(mykonosDevice_t *device, uint8_t lanes, mykonosPrbsOrder_t polyOrder, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_clearDeframerPrbsCounters(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_readDeframerPrbsCounters(mykonosDevice_t *device, uint8_t counterSelect, uint32_t *prbsErrorCount);
|
||||
|
||||
/* Miscellaneous debug functions */
|
||||
mykonosErr_t MYKONOS_jesd204bIlasCheck(mykonosDevice_t *device, uint16_t *mismatch);
|
||||
mykonosErr_t MYKONOS_setRxFramerDataSource(mykonosDevice_t *device, uint8_t dataSource);
|
||||
mykonosErr_t MYKONOS_setObsRxFramerDataSource(mykonosDevice_t *device, uint8_t dataSource);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Shared Data path functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_programFir(mykonosDevice_t *device, mykonosfirName_t filterToProgram, mykonosFir_t *firFilter);
|
||||
mykonosErr_t MYKONOS_readFir(mykonosDevice_t *device, mykonosfirName_t filterToRead, mykonosFir_t *firFilter);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Rx Data path functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_programRxGainTable(mykonosDevice_t *device, uint8_t *gainTablePtr, uint8_t numGainIndexesInTable, mykonosGainTable_t rxChannel);
|
||||
mykonosErr_t MYKONOS_setRx1ManualGain(mykonosDevice_t *device, uint8_t gainIndex);
|
||||
mykonosErr_t MYKONOS_setRx2ManualGain(mykonosDevice_t *device, uint8_t gainIndex);
|
||||
mykonosErr_t MYKONOS_getRx1Gain(mykonosDevice_t *device, uint8_t *rx1GainIndex);
|
||||
mykonosErr_t MYKONOS_getRx2Gain(mykonosDevice_t *device, uint8_t *rx2GainIndex);
|
||||
mykonosErr_t MYKONOS_setupRxAgc(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_resetRxAgc(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_setRxAgcMinMaxGainIndex(mykonosDevice_t *device, mykonosRxChannels_t rxChannelSelect, uint8_t maxGainIndex, uint8_t minGainIndex);
|
||||
mykonosErr_t MYKONOS_setObsRxAgcMinMaxGainIndex(mykonosDevice_t *device, mykonosObsRxChannels_t obsRxChannelSelect, uint8_t maxGainIndex, uint8_t minGainIndex);
|
||||
mykonosErr_t MYKONOS_setRx1TempGainComp(mykonosDevice_t *device, int16_t rx1TempCompGain_mdB);
|
||||
mykonosErr_t MYKONOS_getRx1TempGainComp(mykonosDevice_t *device, int16_t *rx1TempCompGain_mdB);
|
||||
mykonosErr_t MYKONOS_setRx2TempGainComp(mykonosDevice_t *device, int16_t rx2TempCompGain_mdB);
|
||||
mykonosErr_t MYKONOS_getRx2TempGainComp(mykonosDevice_t *device, int16_t *rx2TempCompGain_mdB);
|
||||
mykonosErr_t MYKONOS_setObsRxTempGainComp(mykonosDevice_t *device, int16_t obsRxTempCompGain_mdB);
|
||||
mykonosErr_t MYKONOS_getObsRxTempGainComp(mykonosDevice_t *device, int16_t *obsRxTempCompGain_mdB);
|
||||
mykonosErr_t MYKONOS_enableRxGainCtrSyncPulse(mykonosDevice_t *device, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_setRxGainControlMode(mykonosDevice_t *device, mykonosGainMode_t mode);
|
||||
mykonosErr_t MYKONOS_getRx1DecPower(mykonosDevice_t *device, uint16_t *rx1DecPower_mdBFS);
|
||||
mykonosErr_t MYKONOS_getRx2DecPower(mykonosDevice_t *device, uint16_t *rx2DecPower_mdBFS);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Observation Rx Data path functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_setDefaultObsRxPath(mykonosDevice_t *device, mykonosObsRxChannels_t defaultObsRxCh);
|
||||
mykonosErr_t MYKONOS_setObsRxPathSource(mykonosDevice_t *device, mykonosObsRxChannels_t obsRxCh);
|
||||
mykonosErr_t MYKONOS_getObsRxPathSource(mykonosDevice_t *device, mykonosObsRxChannels_t *obsRxCh);
|
||||
mykonosErr_t MYKONOS_setObsRxManualGain(mykonosDevice_t *device, mykonosObsRxChannels_t obsRxCh, uint8_t gainIndex);
|
||||
mykonosErr_t MYKONOS_getObsRxGain(mykonosDevice_t *device, uint8_t *gainIndex);
|
||||
mykonosErr_t MYKONOS_setupObsRxAgc(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_enableObsRxGainCtrSyncPulse(mykonosDevice_t *device, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_setObsRxGainControlMode(mykonosDevice_t *device, mykonosGainMode_t mode);
|
||||
mykonosErr_t MYKONOS_getObsRxDecPower(mykonosDevice_t *device, uint16_t *obsRxDecPower_mdBFS);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Tx Data path functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_setTx1Attenuation(mykonosDevice_t *device, uint16_t tx1Attenuation_mdB);
|
||||
mykonosErr_t MYKONOS_setTx2Attenuation(mykonosDevice_t *device, uint16_t tx2Attenuation_mdB);
|
||||
mykonosErr_t MYKONOS_getTx1Attenuation(mykonosDevice_t *device, uint16_t *tx1Attenuation_mdB);
|
||||
mykonosErr_t MYKONOS_getTx2Attenuation(mykonosDevice_t *device, uint16_t *tx2Attenuation_mdB);
|
||||
mykonosErr_t MYKONOS_getTxFilterOverRangeStatus(mykonosDevice_t *device, uint8_t *txFilterStatus);
|
||||
mykonosErr_t MYKONOS_enableTxNco(mykonosDevice_t *device, uint8_t enable, int32_t tx1ToneFreq_kHz, int32_t tx2ToneFreq_kHz);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* PA Protection Functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_setupPaProtection(mykonosDevice_t *device, uint16_t powerThreshold, uint8_t attenStepSize, uint8_t avgDuration, uint8_t stickyFlagEnable, uint8_t txAttenControlEnable);
|
||||
mykonosErr_t MYKONOS_enablePaProtection(mykonosDevice_t *device, uint8_t enable);
|
||||
mykonosErr_t MYKONOS_getDacPower(mykonosDevice_t *device, mykonosTxChannels_t channel, uint16_t *channelPower);
|
||||
mykonosErr_t MYKONOS_getPaProtectErrorFlagStatus(mykonosDevice_t *device, uint8_t *errorFlagStatus);
|
||||
mykonosErr_t MYKONOS_clearPaErrorFlag(mykonosDevice_t *device);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Low level functions and helper functions. BBP should not need to call
|
||||
*****************************************************************************
|
||||
*/
|
||||
const char* getMykonosErrorMessage(mykonosErr_t errorCode);
|
||||
|
||||
mykonosErr_t MYKONOS_initSubRegisterTables(mykonosDevice_t *device);
|
||||
mykonosErr_t MYKONOS_setTxPfirSyncClk(mykonosDevice_t *device); /* Helper function */
|
||||
mykonosErr_t MYKONOS_setRxPfirSyncClk(mykonosDevice_t *device); /* Helper function */
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Functions to configure DC offsets
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosErr_t MYKONOS_setRfDcOffsetCnt(mykonosDevice_t *device, mykonosDcOffsetChannels_t channel, uint16_t measureCount);
|
||||
mykonosErr_t MYKONOS_getRfDcOffsetCnt(mykonosDevice_t *device, mykonosDcOffsetChannels_t channel, uint16_t *measureCount);
|
||||
mykonosErr_t MYKONOS_setDigDcOffsetMShift(mykonosDevice_t *device, mykonosDcOffsetChannels_t channel, uint8_t mShift);
|
||||
mykonosErr_t MYKONOS_getDigDcOffsetMShift(mykonosDevice_t *device, mykonosDcOffsetChannels_t channel, uint8_t *mShift);
|
||||
mykonosErr_t MYKONOS_setDigDcOffsetEn(mykonosDevice_t *device, uint8_t enableMask);
|
||||
mykonosErr_t MYKONOS_getDigDcOffsetEn(mykonosDevice_t *device, uint8_t *enableMask);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
/**
|
||||
* \file mykonosMmap.c
|
||||
* \brief Contains the Mykonos memory mapping
|
||||
*
|
||||
* Mykonos API version: 1.5.2.3566
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
uint8_t mykonosMmap [] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x13,0x03,0x03,0x13,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
|
||||
0x00,0xE4,0xE4,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x01,0x00,0xE4,0xE4,0x00,0x00,0x00,0x1F,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9F,0xE0,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF5,0x8F,0x0F,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
/*!< Mykonos memory map */
|
||||
+5357
File diff suppressed because it is too large
Load Diff
+172
@@ -0,0 +1,172 @@
|
||||
/*!
|
||||
* \file mykonos_gpio.h
|
||||
* \brief Contains macro definitions and function prototypes for mykonos_gpio.c
|
||||
*
|
||||
* Mykonos API version: 1.5.2.3566
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MYKONOSGPIO_H_
|
||||
#define MYKONOSGPIO_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "t_mykonos.h"
|
||||
#include "t_mykonos_gpio.h"
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* GPIO functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
|
||||
/* GPIO CMOS and SPI setting Functions */
|
||||
mykonosGpioErr_t MYKONOS_setGpioDrv(mykonosDevice_t *device, uint32_t gpioDrv);
|
||||
mykonosGpioErr_t MYKONOS_getGpioDrv(mykonosDevice_t *device, uint32_t *gpioDrv);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setGpioSlewRate(mykonosDevice_t *device, mykonosGpioSelect_t gpioSelect, mykonosGpioSlewRate_t slewRate);
|
||||
mykonosGpioErr_t MYKONOS_getGpioSlewRate(mykonosDevice_t *device, mykonosGpioSelect_t gpioSelect, mykonosGpioSlewRate_t *slewRate);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setCmosDrv(mykonosDevice_t *device, mykonosCmosPadDrvStr_t spiDrv);
|
||||
mykonosGpioErr_t MYKONOS_getCmosDrv(mykonosDevice_t *device, mykonosCmosPadDrvStr_t *spiDrv);
|
||||
|
||||
|
||||
/* Monitor output Functions */
|
||||
mykonosGpioErr_t MYKONOS_setGpioMonitorOut(mykonosDevice_t *device, uint8_t monitorIndex, uint8_t monitorMask);
|
||||
mykonosGpioErr_t MYKONOS_getGpioMonitorOut(mykonosDevice_t *device, uint8_t *monitorIndex, uint8_t *monitorMask);
|
||||
|
||||
/* RX GPIO Functions */
|
||||
mykonosGpioErr_t MYKONOS_setRx1GainCtrlPin(mykonosDevice_t *device, uint8_t incStep, uint8_t decStep, mykonosGpioSelect_t rx1GainIncPin, mykonosGpioSelect_t rx1GainDecPin, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_setRx2GainCtrlPin(mykonosDevice_t *device, uint8_t incStep, uint8_t decStep, mykonosGpioSelect_t rx2GainIncPin, mykonosGpioSelect_t rx2GainDecPin, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_getRx1GainCtrlPin(mykonosDevice_t *device, uint8_t *incStep, uint8_t *decStep, mykonosGpioSelect_t *rx1GainIncPin, mykonosGpioSelect_t *rx1GainDecPin, uint8_t *enable);
|
||||
mykonosGpioErr_t MYKONOS_getRx2GainCtrlPin(mykonosDevice_t *device, uint8_t *incStep, uint8_t *decStep, mykonosGpioSelect_t *rx2GainIncPin, mykonosGpioSelect_t *rx2GainDecPin, uint8_t *enable);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setRxHybridGainChangePin(mykonosDevice_t *device, mykonosGpioSelect_t rx1GainChangePin, mykonosGpioSelect_t rx2GainChangePin);
|
||||
mykonosGpioErr_t MYKONOS_getRxHybridGainChangePin(mykonosDevice_t *device, mykonosGpioSelect_t *rx1GainChangePin, mykonosGpioSelect_t *rx2GainChangePin);
|
||||
mykonosGpioErr_t MYKONOS_setObsRxHybridGainChangePin(mykonosDevice_t *device, mykonosGpioSelect_t obsRxGainChangePin);
|
||||
mykonosGpioErr_t MYKONOS_getObsRxHybridGainChangePin(mykonosDevice_t *device, mykonosGpioSelect_t *obsRxGainChangePin);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setRxAgcEnSyncPin(mykonosDevice_t *device, mykonosGpioSelect_t rx1AgcSyncPin, mykonosGpioSelect_t rx2AgcSyncPin);
|
||||
mykonosGpioErr_t MYKONOS_getRxAgcEnSyncPin(mykonosDevice_t *device, mykonosGpioSelect_t *rx1AgcSyncPin, mykonosGpioSelect_t *rx2AgcSyncPin);
|
||||
mykonosGpioErr_t MYKONOS_setObsRxAgcEnSyncPin(mykonosDevice_t *device, mykonosGpioSelect_t obsRxAgcSyncPin);
|
||||
mykonosGpioErr_t MYKONOS_getObsRxAgcEnSyncPin(mykonosDevice_t *device, mykonosGpioSelect_t *obsRxAgcSyncPin);
|
||||
|
||||
/* TX GPIO Functions */
|
||||
mykonosGpioErr_t MYKONOS_setTx1AttenCtrlPin(mykonosDevice_t *device, uint8_t stepSize, mykonosGpioSelect_t tx1AttenIncPin, mykonosGpioSelect_t tx1AttenDecPin, uint8_t enable, uint8_t useTx1ForTx2);
|
||||
mykonosGpioErr_t MYKONOS_setTx2AttenCtrlPin(mykonosDevice_t *device, uint8_t stepSize, mykonosGpioSelect_t tx2AttenIncPin, mykonosGpioSelect_t tx2AttenDecPin, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_getTx1AttenCtrlPin(mykonosDevice_t *device, uint8_t *stepSize, mykonosGpioSelect_t *tx1AttenIncPin, mykonosGpioSelect_t *tx1AttenDecPin, uint8_t *enable, uint8_t *useTx1ForTx2);
|
||||
mykonosGpioErr_t MYKONOS_getTx2AttenCtrlPin(mykonosDevice_t *device, uint8_t *stepSize, mykonosGpioSelect_t *tx2AttenIncPin, mykonosGpioSelect_t *tx2AttenDecPin, uint8_t *enable, uint8_t *useTx1ForTx2);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_spi2GpioSetup(mykonosDevice_t *device, uint8_t enable, uint8_t updateTxAttenPinSelect);
|
||||
|
||||
/* GPIO memory source Functions */
|
||||
mykonosGpioErr_t MYKONOS_setGpioPinLevel(mykonosDevice_t *device, uint32_t gpioPinLevel);
|
||||
mykonosGpioErr_t MYKONOS_getGpioPinLevel(mykonosDevice_t *device, uint32_t *gpioPinLevel);
|
||||
mykonosGpioErr_t MYKONOS_getGpioSetLevel(mykonosDevice_t *device, uint32_t *gpioPinSetLevel);
|
||||
|
||||
/* Gain Compensation Functions */
|
||||
mykonosGpioErr_t MYKONOS_setRxGainCompensation (mykonosDevice_t *device, mykonosGainComp_t *gainComp, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_getRxGainCompensation (mykonosDevice_t *device, mykonosGainComp_t *gainComp, uint8_t *enabled);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setObsRxGainCompensation (mykonosDevice_t *device, mykonosObsRxGainComp_t *gainComp, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_getObsRxGainCompensation (mykonosDevice_t *device, mykonosObsRxGainComp_t *gainComp, uint8_t *enabled);
|
||||
|
||||
/* SLICER Functions */
|
||||
mykonosGpioErr_t MYKONOS_setRxSlicerCtrl(mykonosDevice_t *device, uint8_t slicerStep, mykonosRxSlicer_t rx1Pins, mykonosRxSlicer_t rx2Pins, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_getRxSlicerCtrl(mykonosDevice_t *device, uint8_t *slicerStep, mykonosRxSlicer_t *rx1Pins, mykonosRxSlicer_t *rx2Pins, uint8_t *enable);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setObsRxSlicerCtrl(mykonosDevice_t *device, uint8_t slicerStep, mykonosObsRxSlicer_t obsRxPins, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_getObsRxSlicerCtrl(mykonosDevice_t *device, uint8_t *slicerStep, mykonosObsRxSlicer_t *obsRxPins, uint8_t *enable);
|
||||
|
||||
/* Floating Point Formatter Functions */
|
||||
mykonosGpioErr_t MYKONOS_setFloatPointFrmt (mykonosDevice_t *device, mykonosFloatPntFrmt_t *floatFrmt);
|
||||
mykonosGpioErr_t MYKONOS_getFloatPointFrmt (mykonosDevice_t *device, mykonosFloatPntFrmt_t *floatFrmt);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setRxEnFloatPntFrmt (mykonosDevice_t *device, uint8_t rx1Att, uint8_t rx2Att, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_getRxEnFloatPntFrmt (mykonosDevice_t *device, uint8_t *rx1Att, uint8_t *rx2Att, uint8_t *enable);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setOrxEnFloatPntFrmt (mykonosDevice_t *device, uint8_t orxAtt, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_getOrxEnFloatPntFrmt (mykonosDevice_t *device, uint8_t *orxAtt, uint8_t *enable);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* General Purpose Interrupt functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosGpioErr_t MYKONOS_configGpInterrupt(mykonosDevice_t *device, uint16_t gpMask);
|
||||
mykonosGpioErr_t MYKONOS_readGpInterruptStatus(mykonosDevice_t *device, uint16_t *status);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* ARM GPIO usage functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosGpioErr_t MYKONOS_setArmGpioPins(mykonosDevice_t *device);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* AuxADC/AuxDAC functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosGpioErr_t MYKONOS_setupAuxAdcs(mykonosDevice_t *device, uint8_t adcDecimation, uint8_t enable);
|
||||
mykonosGpioErr_t MYKONOS_setAuxAdcChannel(mykonosDevice_t *device, mykonosAuxAdcChannels_t auxAdcChannel);
|
||||
mykonosGpioErr_t MYKONOS_readAuxAdc(mykonosDevice_t *device, uint16_t *adcCode);
|
||||
mykonosGpioErr_t MYKONOS_setupAuxDacs(mykonosDevice_t *device);
|
||||
mykonosGpioErr_t MYKONOS_writeAuxDac(mykonosDevice_t *device, uint8_t auxDacIndex, uint16_t auxDacCode);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* GPIO3v3 functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosGpioErr_t MYKONOS_setupGpio3v3(mykonosDevice_t *device);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setGpio3v3PinLevel(mykonosDevice_t *device, uint16_t gpio3v3PinLevel);
|
||||
mykonosGpioErr_t MYKONOS_getGpio3v3SetLevel(mykonosDevice_t *device, uint16_t *gpio3v3SetLevel);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_getGpio3v3PinLevel(mykonosDevice_t *device, uint16_t *gpio3v3PinLevel);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setGpio3v3Oe(mykonosDevice_t *device, uint16_t gpio3v3OutEn);
|
||||
mykonosGpioErr_t MYKONOS_getGpio3v3Oe(mykonosDevice_t *device, uint16_t *gpio3v3OutEn);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setGpio3v3SourceCtrl(mykonosDevice_t *device, uint16_t gpio3v3SrcCtrl);
|
||||
mykonosGpioErr_t MYKONOS_getGpio3v3SourceCtrl(mykonosDevice_t *device, uint16_t *gpio3v3SrcCtrl);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* GPIO helper functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosGpioErr_t MYKONOS_setupGpio(mykonosDevice_t *device);
|
||||
mykonosGpioErr_t MYKONOS_setGpioOe(mykonosDevice_t *device, uint32_t gpioOutEn, uint32_t gpioUsedMask);
|
||||
mykonosGpioErr_t MYKONOS_getGpioOe(mykonosDevice_t *device, uint32_t *gpioOutEn);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_setGpioSourceCtrl(mykonosDevice_t *device, uint32_t gpioSrcCtrl);
|
||||
mykonosGpioErr_t MYKONOS_getGpioSourceCtrl(mykonosDevice_t *device, uint32_t *gpioSrcCtrl);
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Temperature Sensor functions
|
||||
*****************************************************************************
|
||||
*/
|
||||
mykonosGpioErr_t MYKONOS_setupTempSensor(mykonosDevice_t *device, mykonosTempSensorConfig_t *tempSensor);
|
||||
mykonosGpioErr_t MYKONOS_getTempSensorConfig(mykonosDevice_t *device, mykonosTempSensorConfig_t *tempSensor);
|
||||
|
||||
mykonosGpioErr_t MYKONOS_startTempMeasurement(mykonosDevice_t *device);
|
||||
mykonosGpioErr_t MYKONOS_readTempSensor(mykonosDevice_t *device, mykonosTempSensorStatus_t *tempStatus);
|
||||
|
||||
const char* getGpioMykonosErrorMessage(mykonosGpioErr_t errorCode);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* MYKONOSGPIO_H_ */
|
||||
+707
@@ -0,0 +1,707 @@
|
||||
/**
|
||||
* \file mykonos_macros.h
|
||||
* \brief Contains address and miscellaneous macro definitions for Mykonos API
|
||||
*
|
||||
* Mykonos API version: 1.5.2.3566
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CLEMENTE_TDD_MACROS_H
|
||||
#define CLEMENTE_TDD_MACROS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MYKONOS_ADDR_CONFIGURATION_CONTROL_0 0x000
|
||||
#define MYKONOS_ADDR_SPI_CONFIGURATION_CONTROL_1 0x001
|
||||
#define MYKONOS_ADDR_PRODUCT_ID 0x004
|
||||
#define MYKONOS_GPIO_DRV_CTL_0 0x020
|
||||
#define MYKONOS_GPIO_DRV_CTL_1 0x021
|
||||
#define MYKONOS_GPIO_SLEW_CTL_0 0x022
|
||||
#define MYKONOS_GPIO_SLEW_CTL_1 0x023
|
||||
#define MYKONOS_GPIO_SLEW_CTL_2 0x024
|
||||
#define MYKONOS_GPIO_SLEW_CTL_3 0x025
|
||||
|
||||
#define MYKONOS_ADDR_DIGITAL_IO_CONTROL 0x028
|
||||
|
||||
#define MYKONOS_ADDR_SYSREF_PAD_CONFIG 0x040
|
||||
#define MYKONOS_ADDR_TX1_SYNC_PAD_CONFIG 0x041
|
||||
#define MYKONOS_ADDR_TX2_SYNC_PAD_CONFIG 0x042
|
||||
#define MYKONOS_ADDR_RX1_SYNC_CONFIG 0x043
|
||||
#define MYKONOS_ADDR_RX2_SYNC_CONFIG 0x044
|
||||
|
||||
/* Mykonos Framer Registers */
|
||||
#define MYKONOS_ADDR_FRAMER_RESET 0x059
|
||||
#define MYKONOS_ADDR_FRAMER_CLK_EN 0x05A
|
||||
#define MYKONOS_ADDR_FRAMER_ADDR 0x05B
|
||||
#define MYKONOS_ADDR_FRAMER_DATA 0x05C
|
||||
#define MYKONOS_ADDR_FRAMER_WRITE_EN 0x05D
|
||||
#define MYKONOS_ADDR_FRAMER_SYSREF_FIFO_EN 0x05E
|
||||
#define MYKONOS_ADDR_FRAMER_CONFIG_F 0x05F
|
||||
#define MYKONOS_ADDR_FRAMER_LANE_CTL 0x060
|
||||
#define MYKONOS_ADDR_FRAMER_ADC_XBAR_SEL 0x061
|
||||
#define MYKONOS_ADDR_FRAMER_LANE_XBAR_SEL 0x062
|
||||
#define MYKONOS_ADDR_FRAMER_CONFIG_LOOPBACK_XBAR_REV 0x063
|
||||
#define MYKONOS_ADDR_FRAMER_SYNCN_FILT 0x064
|
||||
#define MYKONOS_ADDR_FRAMER_LMFC_F_OFFSET 0x065
|
||||
#define MYKONOS_ADDR_FRAMER_LMFC_K_OFFSET 0x066
|
||||
#define MYKONOS_ADDR_FRAMER_TEST_CNTR_CTL 0x067
|
||||
#define MYKONOS_ADDR_FRAMER_STATUS_STRB 0x068
|
||||
#define MYKONOS_ADDR_FRAMER_STATUS 0x069
|
||||
#define MYKONOS_ADDR_FRAMER_SYSREF_TO_LMFC_CNTR_STAT 0x06A
|
||||
#define MYKONOS_ADDR_FRAMER_SYSREF_TO_LMFC_ERR_MARGIN 0x06B
|
||||
#define MYKONOS_ADDR_FRAMER_LANE_FIFO_STRB 0x06C
|
||||
#define MYKONOS_ADDR_FRAMER_LANE0_FIFO_RDWR_ADDR 0x06D
|
||||
#define MYKONOS_ADDR_FRAMER_LANE1_FIFO_RDWR_ADDR 0x06E
|
||||
#define MYKONOS_ADDR_FRAMER_LANE2_FIFO_RDWR_ADDR 0x06F
|
||||
#define MYKONOS_ADDR_FRAMER_LANE3_FIFO_RDWR_ADDR 0x070
|
||||
#define MYKONOS_ADDR_FRAMER_PRBS10_CTL 0x071
|
||||
#define MYKONOS_ADDR_FRAMER_PRBS20_CTL 0x072
|
||||
#define MYKONOS_ADDR_FRAMER_PATTERN_GEN_EN 0x073
|
||||
#define MYKONOS_ADDR_FRAMER_PATTERN_GEN_7_TO_0 0x074
|
||||
#define MYKONOS_ADDR_FRAMER_PATTERN_GEN_15_TO_8 0x075
|
||||
#define MYKONOS_ADDR_FRAMER_PATTERN_GEN_19_TO_16 0x076
|
||||
#define MYKONOS_ADDR_FRAMER_CONFIG_JTX_GEN 0x077
|
||||
#define MYKONOS_ADDR_FRAMER_LANE_DATA_CTL 0x078
|
||||
#define MYKONOS_ADDR_FRAMER_DATA_SAMPLE_CTL 0x079
|
||||
|
||||
/* Mykonos Deframer Sub Address Map */
|
||||
#define MYKONOS_SUBADDR_DEFRAMER_LANE0_ILAS_RECVD 0x00
|
||||
#define MYKONOS_SUBADDR_DEFRAMER_LANE0_ILAS_CFG 0x50
|
||||
|
||||
/* Mykonos Deframer Registers */
|
||||
#define MYKONOS_ADDR_DEFRAMER_RESET 0x07A
|
||||
#define MYKONOS_ADDR_DEFRAMER_CLK_EN 0x07B
|
||||
#define MYKONOS_ADDR_DEFRAMER_ADDR 0x07C
|
||||
#define MYKONOS_ADDR_DEFRAMER_DATA 0x07D
|
||||
#define MYKONOS_ADDR_DEFRAMER_WR_EN 0x07E
|
||||
#define MYKONOS_ADDR_DEFRAMER_SYSREF_FIFO_EN 0x07F
|
||||
#define MYKONOS_ADDR_DEFRAMER_CONFIG_F 0x080
|
||||
#define MYKONOS_ADDR_DEFRAMER_LANE_FIFO_CTL 0x081
|
||||
#define MYKONOS_ADDR_DEFRAMER_DAC_XBAR_SEL 0x082
|
||||
#define MYKONOS_ADDR_DEFRAMER_LANE_XBAR_SEL 0x083
|
||||
#define MYKONOS_ADDR_DEFRAMER_LMFC_F_OFFSET 0x084
|
||||
#define MYKONOS_ADDR_DEFRAMER_LMFC_K_OFFSET 0x085
|
||||
#define MYKONOS_ADDR_DEFRAMER_CONFIG_SYNC_USER_DATA_CTL 0x086
|
||||
#define MYKONOS_ADDR_DEFRAMER_SYNC_REQ_RETIME 0x087
|
||||
#define MYKONOS_ADDR_DEFRAMER_TEST 0x088
|
||||
#define MYKONOS_ADDR_DEFRAMER_DET_FIFO_WR_STRT_DAC_XBAR_REV 0x089
|
||||
#define MYKONOS_ADDR_DEFRAMER_STAT_STRB 0x08A
|
||||
#define MYKONOS_ADDR_DEFRAMER_STAT 0x08B
|
||||
#define MYKONOS_ADDR_DEFRAMER_TEST_ERR_CNT_STAT 0x08C
|
||||
#define MYKONOS_ADDR_DEFRAMER_DET_FIFO_RD_ADDR 0x08D
|
||||
#define MYKONOS_ADDR_DEFRAMER_DET_FIFO_WR_ADDR 0x08E
|
||||
#define MYKONOS_ADDR_DEFRAMER_QBLMFC_VS_EXTLMFC_CNTR_STAT 0x08F
|
||||
#define MYKONOS_ADDR_DEFRAMER_DET_FIFO_STAT 0x090
|
||||
#define MYKONOS_ADDR_DEFRAMER_STRT_RD_DEL_STOP_WR 0x091
|
||||
#define MYKONOS_ADDR_DEFRAMER_FIFO_SAMPLE_SPI_ADDR_RD 0x092
|
||||
#define MYKONOS_ADDR_DEFRAMER_FIFO_BYTE_SPI_ADDR_RD 0x093
|
||||
#define MYKONOS_ADDR_DEFRAMER_FIFO_BYTE_SPI_DATA_RD 0x094
|
||||
#define MYKONOS_ADDR_DEFRAMER_SAMPLE0_7_TO_0 0x095
|
||||
#define MYKONOS_ADDR_DEFRAMER_SAMPLE0_15_TO_8 0x096
|
||||
#define MYKONOS_ADDR_DEFRAMER_SAMPLE1_7_TO_0 0x097
|
||||
#define MYKONOS_ADDR_DEFRAMER_SAMPLE1_15_TO_8 0x098
|
||||
#define MYKONOS_ADDR_DEFRAMER_SAMPLE2_7_TO_0 0x099
|
||||
#define MYKONOS_ADDR_DEFRAMER_SAMPLE2_15_TO_8 0x09A
|
||||
#define MYKONOS_ADDR_DEFRAMER_SAMPLE3_7_TO_0 0x09B
|
||||
#define MYKONOS_ADDR_DEFRAMER_SAMPLE3_15_TO_8 0x09C
|
||||
#define MYKONOS_ADDR_DEFRAMER_LANE_FIFO_STRB 0x09D
|
||||
#define MYKONOS_ADDR_DEFRAMER_LANE0_FIFO_RDWR_ADDR 0x09E
|
||||
#define MYKONOS_ADDR_DEFRAMER_LANE1_FIFO_RDWR_ADDR 0x09F
|
||||
#define MYKONOS_ADDR_DEFRAMER_LANE2_FIFO_RDWR_ADDR 0x0A0
|
||||
#define MYKONOS_ADDR_DEFRAMER_LANE3_FIFO_RDWR_ADDR 0x0A1
|
||||
#define MYKONOS_ADDR_DEFRAMER_SYSREF_TO_LMFC_CNTR_STAT 0x0A2
|
||||
#define MYKONOS_ADDR_DEFRAMER_SYSREF_TO_LMFC_ERR_MARGIN 0x0A3
|
||||
#define MYKONOS_ADDR_DEFRAMER_PRBS10_CTL 0x0A4
|
||||
#define MYKONOS_ADDR_DEFRAMER_PRBS20_CTL 0x0A5
|
||||
#define MYKONOS_ADDR_DEFRAMER_PRBS20_STRB_CHKSUM_TYPE 0x0A6
|
||||
#define MYKONOS_ADDR_DEFRAMER_PRBS20_ERR_CNTR_7_TO_0 0x0A7
|
||||
#define MYKONOS_ADDR_DEFRAMER_PRBS20_ERR_CNTR_15_TO_8 0x0A8
|
||||
#define MYKONOS_ADDR_DEFRAMER_PRBS20_ERR_CNTR_23_TO_16 0x0A9
|
||||
#define MYKONOS_ADDR_DEFRAMER_LANE_DATA_CTL 0x0AA
|
||||
#define MYKONOS_ADDR_DEFRAMER_STATUS_2 0x0AB
|
||||
#define MYKONOS_ADDR_DEFRAMER_DET_FIFO_PHASE 0x0AC
|
||||
|
||||
/* Mykonos Serializer Registers */
|
||||
#define MYKONOS_ADDR_SERIALIZER_CTL_0 0x0B0
|
||||
#define MYKONOS_ADDR_SERIALIZER_CTL_1 0x0B1
|
||||
#define MYKONOS_ADDR_SERIALIZER_CTL_2 0x0B2
|
||||
#define MYKONOS_ADDR_SERIALIZER_CTL_3 0x0B3
|
||||
#define MYKONOS_ADDR_SERIALIZER_HS_DIV_TXSER_CLK_EN 0x0B4
|
||||
#define MYKONOS_ADDR_SERIALIZER_SPECIAL 0x0B5
|
||||
|
||||
/* Mykonos Deserializer Registers */
|
||||
#define MYKONOS_ADDR_DESERIALIZER_PDET_CTL 0x0BC
|
||||
#define MYKONOS_ADDR_DESERIALIZER_CTL_0 0x0BD
|
||||
#define MYKONOS_ADDR_DESERIALIZER_SIN_SHAPE_0 0x0BE
|
||||
#define MYKONOS_ADDR_DESERIALIZER_SIN_SHAPE_1 0x0BF
|
||||
#define MYKONOS_ADDR_DESERIALIZER_EQ_CTL_0 0x0C1
|
||||
#define MYKONOS_ADDR_DESERIALIZER_EQ_CTL_1 0x0C2
|
||||
#define MYKONOS_ADDR_DESERIALIZER_MISC_CTL 0x0C3
|
||||
#define MYKONOS_ADDR_DESERIALIZER_EQ_HP_EN 0x0C4
|
||||
#define MYKONOS_ADDR_DESERIALIZER_EQ_CTL_1_TO_0 0x0C5
|
||||
#define MYKONOS_ADDR_DESERIALIZER_EQ_CTL_3_TO_2 0x0C6
|
||||
#define MYKONOS_ADDR_DESERIALIZER_HS_DIV_RXCDR_CLK_EN 0x0CD
|
||||
#define MYKONOS_ADDR_DESERIALIZER_SPECIAL 0x0CE
|
||||
#define MYKONOS_ADDR_DESERIALIZER_CDR_CAL_CTL 0x0D0
|
||||
|
||||
#define MYKONOS_ADDR_CONFIGURATION_CONTROL_1 0x100
|
||||
#define MYKONOS_ADDR_CONFIGURATION_CONTROL_2 0x101
|
||||
#define MYKONOS_ADDR_CONFIGURATION_CONTROL_4 0x102
|
||||
#define MYKONOS_ADDR_CONFIGURATION_CONTROL_5 0x103
|
||||
#define MYKONOS_ADDR_DPD_SNIFFER_CONFIGURATION_CONTROL_1 0x104
|
||||
#define MYKONOS_ADDR_DPD_SNIFFER_CONFIGURATION_CONTROL_2 0x105
|
||||
#define MYKONOS_ADDR_DPD_SNIFFER_GPIO_SELECT 0x106
|
||||
#define MYKONOS_ADDR_SNIFFER_CONFIGURATION_CONTROL 0x107
|
||||
#define MYKONOS_ADDR_DPD_CONFIGURATION_CONTROL 0x108
|
||||
#define MYKONOS_ADDR_LOOPBACK_CONFIGURATION_CONTROL 0x109
|
||||
|
||||
#define MYKONOS_ADDR_CLOCK_CONTROL_0 0x117
|
||||
#define MYKONOS_ADDR_CLOCK_CONTROL_1 0x118
|
||||
#define MYKONOS_ADDR_CLOCK_CONTROL_2 0x119
|
||||
#define MYKONOS_ADDR_CLOCK_CONTROL_3 0x11A
|
||||
#define MYKONOS_ADDR_CLOCK_CONTROL_4 0x11B
|
||||
#define MYKONOS_ADDR_CLOCK_CONTROL_5 0x11C
|
||||
|
||||
#define MYKONOS_ADDR_MCS_CONTROL 0x120
|
||||
#define MYKONOS_ADDR_MCS_STATUS 0x121
|
||||
|
||||
/* CLK PLL Registers */
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_DIVIDER_INT_BYTE0 0x141
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_DIVIDER_INT_BYTE1 0x142
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_DIVIDER_FRAC_BYTE0 0x143
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_DIVIDER_FRAC_BYTE1 0x144
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_DIVIDER_FRAC_BYTE2 0x145
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_F_VCOTN_BYTE1 0x148
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_BYTE1 0x149
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_BYTE2 0x14A
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_BYTE3 0x14B
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_BYTE5 0x14D
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_BYTE6 0x14E
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_BYTE7 0x14F
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_LF_R3 0x150
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_BYTE9 0x152
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_CAL_STAT 0x154
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_VCO_CAL_REF 0x155
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_VCO_BAND_BYTE1 0x157
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_CAL_CONTROL 0x159
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_VCO_VAR_CTL1 0x15E
|
||||
#define MYKONOS_ADDR_CLK_SYNTH_VCO_VAR_CTL2 0x15F
|
||||
|
||||
/* DPD Registers */
|
||||
#define MYKONOS_ADDR_TX1_DPD_MODEL_INDIRECT_PTR 0x178
|
||||
#define MYKONOS_ADDR_TX2_DPD_MODEL_INDIRECT_PTR 0x17C
|
||||
#define MYKONOS_ADDR_DPD_RMS_BUF_SIZE 0x180
|
||||
#define MYKONOS_ADDR_TX1_DPD_MODEL_WORKING_PTR 0x188
|
||||
#define MYKONOS_ADDR_TX2_DPD_MODEL_WORKING_PTR 0x18C
|
||||
|
||||
/* Rx NCO Control registers */
|
||||
#define MYKONOS_ADDR_CALPLL_SDM_CONTROL 0x17F
|
||||
#define MYKONOS_ADDR_RX_NCO_CONTROL 0x190
|
||||
#define MYKONOS_ADDR_RX_NCO_CH1_FTW_BYTE_3 0x191
|
||||
#define MYKONOS_ADDR_RX_NCO_CH1_FTW_BYTE_2 0x192
|
||||
#define MYKONOS_ADDR_RX_NCO_CH1_FTW_BYTE_1 0x193
|
||||
#define MYKONOS_ADDR_RX_NCO_CH2_FTW_BYTE_3 0x194
|
||||
#define MYKONOS_ADDR_RX_NCO_CH2_FTW_BYTE_2 0x195
|
||||
#define MYKONOS_ADDR_RX_NCO_CH2_FTW_BYTE_1 0x196
|
||||
#define MYKONOS_ADDR_RX_NCO_DPD_SNIFFER_FTW_BYTE_3 0x197
|
||||
#define MYKONOS_ADDR_RX_NCO_DPD_SNIFFER_FTW_BYTE_2 0x198
|
||||
#define MYKONOS_ADDR_RX_NCO_DPD_SNIFFER_FTW_BYTE_1 0x199
|
||||
|
||||
#define MYKONOS_ADDR_ENSM_CONFIG_7_0 0x1B0
|
||||
#define MYKONOS_ADDR_CALIBRATION_CONTROL 0x1B2
|
||||
#define MYKONOS_ADDR_ENSM_MANUAL_GAIN_LOCK_GPIO_SELECT 0x1B5
|
||||
#define MYKONOS_ADDR_REFERENCE_CLOCK_CYCLES 0x1C0
|
||||
#define MYKONOS_ADDR_TX_PD_OVERIDE_7_0 0x209
|
||||
#define MYKONOS_ADDR_RCAL_CONTROL 0x224
|
||||
#define MYKONOS_ADDR_REF_PAD_CONFIG1 0x230
|
||||
#define MYKONOS_ADDR_REF_PAD_CONFIG2 0x231
|
||||
|
||||
#define MYKONOS_ADDR_RXSYNTH_CP_CAL_STAT 0x254
|
||||
#define MYKONOS_ADDR_RXSYNTH_VCO_BAND_BYTE1 0x257
|
||||
#define MYKONOS_ADDR_TXSYNTH_CP_CAL_STAT 0x2C4
|
||||
#define MYKONOS_ADDR_TXSYNTH_VCO_BAND_BYTE1 0x2C7
|
||||
#define MYKONOS_ADDR_SNIFF_RXSYNTH_CP_CAL_STAT 0x354
|
||||
#define MYKONOS_ADDR_SNIFF_RXSYNTH_VCO_BAND_BYTE1 0x357
|
||||
#define MYKONOS_ADDR_SNIFF_RXLOGEN_BYTE1 0x380
|
||||
|
||||
#define MYKONOS_ADDR_RX_FILTER_CONFIGURATION 0x410
|
||||
#define MYKONOS_ADDR_RX_FILTER_GAIN 0x411
|
||||
#define MYKONOS_ADDR_DPD_SNIFFER_RX_FILTER_GAIN 0x412
|
||||
|
||||
/* Mykonos Temperature Gain Compensation Registers */
|
||||
#define MYKONOS_ADDR_RX1_TEMP_GAIN_COMP 0x420
|
||||
#define MYKONOS_ADDR_RX2_TEMP_GAIN_COMP 0x421
|
||||
#define MYKONOS_ADDR_OBS_TEMP_GAIN_COMP 0x422
|
||||
|
||||
/* Mykonos AGC General Registers */
|
||||
#define MYKONOS_ADDR_AGC_CFG_1 0x42E
|
||||
#define MYKONOS_ADDR_AGC_CFG_2 0x42F
|
||||
#define MYKONOS_ADDR_AGC_GAIN_CHANGE_GPIO_SEL 0x430
|
||||
#define MYKONOS_ADDR_AGC_RX1_MAX_GAIN_INDEX 0x431
|
||||
#define MYKONOS_ADDR_AGC_RX1_MIN_GAIN_INDEX 0x432
|
||||
#define MYKONOS_ADDR_AGC_MANUAL_GAIN_CFG 0x433
|
||||
#define MYKONOS_ADDR_AGC_MANUAL_GAIN_GPIO_SEL 0x434
|
||||
#define MYKONOS_ADDR_AGC_MANUAL_GAIN_INDEX_CH_1 0x435
|
||||
#define MYKONOS_ADDR_AGC_MANUAL_GAIN_INDEX_CH_2 0x436
|
||||
#define MYKONOS_ADDR_AGC_LOCK_LEVEL 0x437
|
||||
#define MYKONOS_ADDR_AGC_OVRG_GAIN_STEP_1 0x438
|
||||
#define MYKONOS_ADDR_AGC_OVRG_GAIN_STEP_2 0x439
|
||||
#define MYKONOS_ADDR_AGC_OVRG_GAIN_STEP_3 0x43A
|
||||
#define MYKONOS_ADDR_AGC_OVRG_GAIN_STEP_4 0x43B
|
||||
#define MYKONOS_ADDR_AGC_OVRG_GAIN_STEP_5 0x43C
|
||||
#define MYKONOS_ADDR_AGC_OVRG_GAIN_STEP_6 0x43D
|
||||
#define MYKONOS_ADDR_AGC_RX1_GAIN_LOCK_DELAY 0x43E
|
||||
#define MYKONOS_ADDR_AGC_RX2_GAIN_LOCK_DELAY 0x43F
|
||||
#define MYKONOS_ADDR_AGC_RX1_ATTACK_DELAY 0x440
|
||||
#define MYKONOS_ADDR_AGC_RX2_ATTACK_DELAY 0x441
|
||||
#define MYKONOS_ADDR_AGC_ULB_THRSH 0x442
|
||||
#define MYKONOS_ADDR_AGC_LLB_THRSH 0x443
|
||||
#define MYKONOS_ADDR_AGC_RX_BLOCK_DET_DECAY 0x444
|
||||
#define MYKONOS_ADDR_AGC_RESET_PD_HIGH_CNT 0x445
|
||||
#define MYKONOS_ADDR_AGC_RX2_MAX_GAIN_INDEX 0x446
|
||||
#define MYKONOS_ADDR_AGC_RX2_MIN_GAIN_INDEX 0x447
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_CFG_1 0x448
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_CFG_2 0x449
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_MAX_GAIN_INDEX 0x44A
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_MIN_GAIN_INDEX 0x44B
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_MANUAL_GAIN_CFG 0x44C
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_GPIO_SEL 0x44D
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_LOCK_LEVEL 0x44E
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_OVRG_GAIN_STEP_1 0x44F
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_OVRG_GAIN_STEP_2 0x450
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_OVRG_GAIN_STEP_3 0x451
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_OVRG_GAIN_STEP_4 0x452
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_OVRG_GAIN_STEP_5 0x453
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_OVRG_GAIN_STEP_6 0x454
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_GAIN_LOCK_DELAY 0x455
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_ATTACK_DELAY 0x456
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_ULB_THRSH 0x457
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_LLB_THRSH 0x458
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_BLOCK_DET_DECAY 0x459
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_RESET_PD_HIGH_CNT 0x45A
|
||||
#define MYKONOS_ADDR_AGC_ORX1_MANUAL_GAIN_INDEX 0x45B
|
||||
#define MYKONOS_ADDR_AGC_ORX2_MANUAL_GAIN_INDEX 0x45C
|
||||
#define MYKONOS_ADDR_AGC_SNRX_MANUAL_GAIN_INDEX 0x45D
|
||||
#define MYKONOS_ADDR_AGC_LOOPBACK1_MANUAL_GAIN_INDEX 0x45E
|
||||
#define MYKONOS_ADDR_AGC_LOOPBACK2_MANUAL_GAIN_INDEX 0x45F
|
||||
#define MYKONOS_ADDR_AGC_ORX_SNRX_ACTIVE 0x460
|
||||
|
||||
/* Mykonos Fast Attack AGC Registers */
|
||||
#define MYKONOS_ADDR_AGC_FAST_CFG_1 0x468
|
||||
#define MYKONOS_ADDR_AGC_FAST_CFG_2 0x469
|
||||
#define MYKONOS_ADDR_AGC_FAST_ENRGY_LOST_THRSH 0x46A
|
||||
#define MYKONOS_ADDR_AGC_FAST_STRONG_SIG_THRSH 0x46B
|
||||
#define MYKONOS_ADDR_AGC_FAST_SETTING_DELAY 0x46C
|
||||
#define MYKONOS_ADDR_AGC_FAST_OPT_MAX_GAIN 0x46D
|
||||
#define MYKONOS_ADDR_AGC_FAST_ENRGY_DET_CNT 0x46E
|
||||
#define MYKONOS_ADDR_AGC_FAST_AGCLL_UPPER_LIMIT 0x46F
|
||||
#define MYKONOS_ADDR_AGC_FAST_GAIN_LOCK_EXIT_CNT 0x470
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_CFG_1 0x471
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_CFG_2 0x472
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_ENRGY_LOST_THRSH 0x473
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_STRONG_SIG_THRSH 0x474
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_SET_DELAY 0x475
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_OPT_MAX_GAIN 0x476
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_ENRGY_DET_CNT 0x477
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_AGCLL_UPPER_LIMIT 0x478
|
||||
#define MYKONOS_ADDR_AGC_FAST_ORX_SNRX_GAIN_LOCK_EXIT_CNT 0x479
|
||||
|
||||
/* Mykonos Slow Loop - Hybrid AGC Registers */
|
||||
#define MYKONOS_ADDR_AGC_SLOW_LOCK_LEV_THRSH 0x480
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ULB_CNT_THRSH 0x481
|
||||
#define MYKONOS_ADDR_AGC_SLOW_LLB_CNT_THRSH 0x482
|
||||
#define MYKONOS_ADDR_AGC_SLOW_HIGH_OVRG_CNT_THRSH 0x483
|
||||
#define MYKONOS_ADDR_AGC_SLOW_LOW_OVRG_CNT_THRSH 0x484
|
||||
#define MYKONOS_ADDR_AGC_SLOW_VERYLOW_OVRG_CNT_THRSH 0x485
|
||||
#define MYKONOS_ADDR_AGC_SLOW_DIG_SAT_CNT_THRSH 0x486
|
||||
#define MYKONOS_ADDR_AGC_SLOW_UPPER0_THRSH_GAIN_STEP 0x487
|
||||
#define MYKONOS_ADDR_AGC_SLOW_LOWER0_THRSH_GAIN_STEP 0x488
|
||||
#define MYKONOS_ADDR_AGC_SLOW_UPPER1_THRSH_GAIN_STEP 0x489
|
||||
#define MYKONOS_ADDR_AGC_SLOW_LOWER1_THRSH_GAIN_STEP 0x48A
|
||||
#define MYKONOS_ADDR_AGC_SLOW_GAIN_UPDATE_CNT_1 0x48B
|
||||
#define MYKONOS_ADDR_AGC_SLOW_GAIN_UPDATE_CNT_2 0x48C
|
||||
#define MYKONOS_ADDR_AGC_SLOW_GAIN_UPDATE_CNT_3 0x48D
|
||||
#define MYKONOS_ADDR_AGC_SLOW_LOOP_CFG 0x48E
|
||||
#define MYKONOS_ADDR_AGC_SLOW_POWER_THRSH 0x48F
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_LOCK_LEV_THRSH 0x490
|
||||
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_ULB_CNT_THRSH 0x491
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_LLB_CNT_THRSH 0x492
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_ADC_HIGH_OVRG_CNT_THRSH 0x493
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_ADC_LOW_OVRG_CNT_THRSH 0x494
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_ADC_VERYLOW_OVRG_CNT_THRSH 0x495
|
||||
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_DIG_SAT_CNT_THRSH 0x496
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_UPPER0_THRSH_GAIN_STEP 0x497
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_LOWER0_THRSH_GAIN_STEP 0x498
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_UPPER1_THRSH_GAIN_STEP 0x499
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_LOWER1_THRSH_GAIN_STEP 0x49A
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_GAIN_UPDATE_CTR_1 0x49B
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_GAIN_UPDATE_CTR_2 0x49C
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_GAIN_UPDATE_CTR_3 0x49D
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_LOOP_CFG 0x49E
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_POWER_THRSH 0x49F
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_UL_SIG_POW_MEAS_DEL_1 0x4A0
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_UL_SIG_POW_MEAS_DEL_2 0x4A1
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_UL_SIG_POW_MEAS_DUR_1 0x4A2
|
||||
#define MYKONOS_ADDR_AGC_SLOW_ORX_SNRX_UL_SIG_POW_MEAS_DUR_2 0x4A3
|
||||
|
||||
/* Mykonos Gain Control Read Registers */
|
||||
#define MYKONOS_ADDR_GAIN_CTL_CHANNEL_1 0x4B0
|
||||
#define MYKONOS_ADDR_GAIN_CTL_FAST_ATTK_STATE 0x4B1
|
||||
#define MYKONOS_ADDR_GAIN_CTL_SLOW_LOOP_STATE 0x4B2
|
||||
#define MYKONOS_ADDR_GAIN_CTL_CHANNEL_2 0x4B3
|
||||
#define MYKONOS_ADDR_GAIN_CTL_OVRG_SIGS_CHANNEL_1 0x4B4
|
||||
#define MYKONOS_ADDR_GAIN_CTL_OVRG_SIGS_CHANNEL_2 0x4B5
|
||||
#define MYKONOS_ADDR_GAIN_CTL_ORX_SNRX_GAIN 0x4B6
|
||||
#define MYKONOS_ADDR_GAIN_CTL_ORX_SNRX_LOOP_STATE 0x4B7
|
||||
#define MYKONOS_ADDR_GAIN_CTL_ORX_SNRX_OVRG_SIGS 0x4B8
|
||||
|
||||
/* Mykonos Rx Data Path Overrange Registers */
|
||||
#define MYKONOS_ADDR_RX_OVRG_DATAPATH_OVRFLW 0x4B9
|
||||
#define MYKONOS_ADDR_RX_OVRG_ORX_SNRX_DATAPATH_OVRFLW 0x4BA
|
||||
|
||||
/* Mykonos RSSI Measurement Registers and Dec Power Measurement Registers*/
|
||||
#define MYKONOS_ADDR_RSSI_MEAS_DURATION_0_1 0x4C0
|
||||
#define MYKONOS_ADDR_RSSI_MEAS_DURATION_2_3 0x4C1
|
||||
#define MYKONOS_ADDR_RSSI_CFG 0x4C6
|
||||
#define MYKONOS_DEC_POWER_CONFIG_1 0x4C7
|
||||
#define MYKONOS_DEC_POWER_CONFIG_2 0x4C8
|
||||
#define MYKONOS_ADDR_DPD_SNF_RSSI_CFG 0x4CF
|
||||
#define MYKONOS_ADDR_DPD_RSSI_CFG 0x4D6
|
||||
#define MYKONOS_SNIFFER_DEC_POWER_CONFIG_1 0x4D7
|
||||
#define MYKONOS_SNIFFER_DEC_POWER_CONFIG_2 0x4D8
|
||||
#define MYKONOS_CH1_DECIMATED_PWR 0x4DE
|
||||
#define MYKONOS_CH2_DECIMATED_PWR 0x4DF
|
||||
#define MYKONOS_SNIFFER_DECIMATED_PWR 0x4E6
|
||||
|
||||
#define MYKONOS_ADDR_DIGITAL_GAIN_CONFIG 0x4F0
|
||||
#define MYKONOS_ADDR_DPD_SNIFFER_DIGITAL_GAIN_CONFIG 0x4F1
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_ADDR 0x500
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX1_FE_GAIN 0x501
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX1_EXT_CTL 0x502
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX1_DIG_GAIN 0x503
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX2_FE_GAIN 0x504
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX2_EXT_CTL 0x505
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX2_DIG_GAIN 0x506
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX3_FE_GAIN 0x507
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX3_LNA_ENAB 0x508
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_RX3_DIG_GAIN 0x509
|
||||
#define MYKONOS_ADDR_GAIN_TABLE_CONFIGURATION 0x516
|
||||
#define MYKONOS_ADDR_CH3_GAIN_TABLE_CONFIGURATION 0x517
|
||||
#define MYKONOS_ADDR_RXFE1_LOCM 0x520
|
||||
#define MYKONOS_ADDR_RXFE2_LOCM 0x521
|
||||
#define MYKONOS_ADDR_RXLOOPBACK1_CNTRL_1 0x540
|
||||
#define MYKONOS_ADDR_RXLOOPBACK2_CNTRL_1 0x541
|
||||
#define MYKONOS_ADDR_RX_LOOPBACK1_CNTRL_4 0x546
|
||||
#define MYKONOS_ADDR_RX_LOOPBACK2_CNTRL_4 0x547
|
||||
|
||||
/* Mykonos Overload/Peak Detection Registers */
|
||||
#define MYKONOS_ADDR_OVRLD_ADC_OVRLD_CFG 0x580
|
||||
#define MYKONOS_ADDR_OVRLD_ADC_OVRLD_UPPER_THRSH 0x581
|
||||
#define MYKONOS_ADDR_OVRLD_ADC_OVRLD_LOWER_THRSH 0x582
|
||||
|
||||
#define MYKONOS_ADDR_OVRLD_PD_DEC_OVRLD_CFG 0x583
|
||||
#define MYKONOS_ADDR_OVRLD_PD_DEC_OVRLD_UPPER_THRSH 0x584
|
||||
#define MYKONOS_ADDR_OVRLD_PD_DEC_OVRLD_LOWER_THRSH 0x585
|
||||
#define MYKONOS_ADDR_OVRLD_PD_DEC_VERYLOW_THRSH 0x586
|
||||
#define MYKONOS_ADDR_ORX_SNRX_OVRLD_ADC_OVRLD_CFG 0x587
|
||||
#define MYKONOS_ADDR_ORX_SNRX_OVRLD_PD_DEC_OVRLD_CFG 0x58A
|
||||
#define MYKONOS_ADDR_ORX_SNRX_OVRLD_PD_DEC_OVRLD_UPPER_THRSH 0x58B
|
||||
#define MYKONOS_ADDR_ORX_SNRX_OVRLD_PD_DEC_OVRLD_LOWER_THRSH 0x58C
|
||||
#define MYKONOS_ADDR_ORX_SNRX_OVRLD_PD_DEC_OVRLD_VERYLOW_THRSH 0x58D
|
||||
|
||||
#define MYKONOS_ADDR_RX_ADC_FLASH_DELAY 0x5B6
|
||||
#define MYKONOS_ADDR_RX_ADC_FLASH_CTRL 0x5B7
|
||||
#define MYKONOS_ADDR_RX_ADC1_PRFL 0x5DD
|
||||
#define MYKONOS_ADDR_RX_ADC2_PRFL 0x5DE
|
||||
#define MYKONOS_ADDR_ORX_ADC_PRFL 0x5DF
|
||||
|
||||
#define MYKONOS_ADDR_RFDC_MEASURE_COUNT_1 0x631
|
||||
#define MYKONOS_ADDR_RFDC_MEASURE_COUNT_2 0x632
|
||||
#define MYKONOS_ADDR_RFDC_PROGRAM_SHIFT 0x635
|
||||
#define MYKONOS_ADDR_RFDC_CONFIG2 0x636
|
||||
#define MYKONOS_DPD_Sniffer_RFDC_CAL_TRACK_EN 0x642
|
||||
#define MYKONOS_ADDR_RFDC_SNF_MEASURE_COUNT_1 0x644
|
||||
#define MYKONOS_ADDR_RFDC_SNF_MEASURE_COUNT_2 0x645
|
||||
#define MYKONOS_ADDR_RFDC_ORX_MEASURE_COUNT_1 0x650
|
||||
#define MYKONOS_ADDR_RFDC_ORX_MEASURE_COUNT_2 0x651
|
||||
#define MYKONOS_ADDR_DIGITAL_DC_MIN_CAL_IDX 0x63A
|
||||
#define MYKONOS_ADDR_DIGITAL_DC_OFFSET_SHIFT 0x674
|
||||
#define MYKONOS_ADDR_DIGITAL_DC_OFFSET_CONFIG 0x676
|
||||
#define MYKONOS_DIGITAL_DC_OFFSET_CH3_TRACKING 0x67A
|
||||
#define MYKONOS_ADDR_DIGITAL_DC_OFFSET_SNF 0x67C
|
||||
#define MYKONOS_ADDR_DIGITAL_DC_OFFSET_CH3_DPD_M_SHIFT 0x67D
|
||||
|
||||
#define MYKONOS_ADDR_RX_GAIN_COMP_DELAY 0x710
|
||||
#define MYKONOS_ADDR_RX1_GAIN_COMP_OFFSET 0x711
|
||||
#define MYKONOS_ADDR_RX2_GAIN_COMP_OFFSET 0x712
|
||||
#define MYKONOS_ADDR_RX_GAIN_COMP_CFG 0x713
|
||||
#define MYKONOS_ADDR_RX_SLCR_PIN_CFG 0x714
|
||||
#define MYKONOS_ADDR_DPD_SNF_RX_GAIN_COMP_DELAY 0x715
|
||||
#define MYKONOS_ADDR_DPD_SNF_RX_GAIN_COMP_OFFSET 0x716
|
||||
#define MYKONOS_ADDR_DPD_SNF_RX_GAIN_COMP_CFG 0x717
|
||||
#define MYKONOS_ADDR_DPD_SNF_RX_SLCR_PIN_CFG 0x718
|
||||
|
||||
#define MYKONOS_ADDR_FLOATING_POINT_CFG 0x750
|
||||
#define MYKONOS_ADDR_FLOATING_POINT_RX_CTRL 0x751
|
||||
#define MYKONOS_ADDR_FLOATING_POINT_ORX_CTRL 0x752
|
||||
|
||||
|
||||
#define MYKONOS_ADDR_SNRX_LNA_BIAS_C 0x81B
|
||||
|
||||
|
||||
#define MYKONOS_ADDR_ORX_ADC_FLASH_DELAY 0x846
|
||||
#define MYKONOS_ADDR_ORX_ADC_FLASH_CTRL 0x847
|
||||
|
||||
#define MYKONOS_ADDR_TX_FILTER_CONFIGURATION 0x910
|
||||
#define MYKONOS_ADDR_TX1_ATTENUATION_0_READBACK 0x940
|
||||
#define MYKONOS_ADDR_TX1_ATTENUATION_1_READBACK 0x941
|
||||
#define MYKONOS_ADDR_TX2_ATTENUATION_0_READBACK 0x942
|
||||
#define MYKONOS_ADDR_TX2_ATTENUATION_1_READBACK 0x943
|
||||
#define MYKONOS_ADDR_TX_FILTER_OVERFLOW 0x950
|
||||
|
||||
/* Mykonos PA Protection Block Registers */
|
||||
#define MYKONOS_ADDR_PA_PROTECTION_CONFIGURATION 0x955
|
||||
#define MYKONOS_ADDR_PA_PROTECTION_ATTEN_CONTROL 0x956
|
||||
#define MYKONOS_ADDR_PA_PROTECTION_THRESHOLD_LSB 0x957
|
||||
#define MYKONOS_ADDR_PA_PROTECTION_THRESHOLD_MSB 0x958
|
||||
#define MYKONOS_ADDR_PA_PROTECTION_POWER_READBACK_LSB 0x959
|
||||
#define MYKONOS_ADDR_PA_PROTECTION_POWER_READBACK_MSB 0x95A
|
||||
#define MYKONOS_ADDR_TX1_ATTENUATION_0 0x960
|
||||
#define MYKONOS_ADDR_TX1_ATTENUATION_1 0x961
|
||||
#define MYKONOS_ADDR_TX2_ATTENUATION_0 0x962
|
||||
#define MYKONOS_ADDR_TX2_ATTENUATION_1 0x963
|
||||
#define MYKONOS_ADDR_TX1_GAIN_0 0x967
|
||||
#define MYKONOS_ADDR_TX1_GAIN_1 0x968
|
||||
#define MYKONOS_ADDR_TX1_GAIN_2 0x969
|
||||
#define MYKONOS_ADDR_TX2_GAIN_0 0x96A
|
||||
#define MYKONOS_ADDR_TX2_GAIN_1 0x96B
|
||||
#define MYKONOS_ADDR_TX2_GAIN_2 0x96C
|
||||
#define MYKONOS_ADDR_TX_INCR_DECR_WORD 0x96D
|
||||
#define MYKONOS_ADDR_TX_TPC_CONFIG 0x96E
|
||||
#define MYKONOS_ADDR_TX_TPC_GPIO_CFG 0x96F
|
||||
|
||||
#define MYKONOS_ADDR_TX_ABBF_FREQ_CAL_NCO_I_MSB 0x9CB
|
||||
#define MYKONOS_ADDR_TX_ABBF_FREQ_CAL_NCO_I_LSB 0x9CC
|
||||
#define MYKONOS_ADDR_TX_ABBF_FREQ_CAL_NCO_Q_MSB 0x9CD
|
||||
#define MYKONOS_ADDR_TX_ABBF_FREQ_CAL_NCO_Q_LSB 0x9CE
|
||||
|
||||
/* Mykonos GPIO Registers */
|
||||
#define MYKONOS_ADDR_GPIO_3V3_DIR_CTL_7_0 0xB00
|
||||
#define MYKONOS_ADDR_GPIO_3V3_DIR_CTL_15_8 0xB01
|
||||
#define MYKONOS_ADDR_GPIO_3V3_SPI_SRC_7_0 0xB02
|
||||
#define MYKONOS_ADDR_GPIO_3V3_SPI_SRC_15_8 0xB03
|
||||
#define MYKONOS_ADDR_GPIO_3V3_SPI_READ_7_0 0xB04
|
||||
#define MYKONOS_ADDR_GPIO_3V3_SPI_READ_15_8 0xB05
|
||||
#define MYKONOS_ADDR_GPIO_3V3_LSB_SRC_CTL 0xB06
|
||||
#define MYKONOS_ADDR_GPIO_3V3_MSB_SRC_CTL 0xB07
|
||||
|
||||
#define MYKONOS_ADDR_GPIO_DIR_CTL_7_0 0xB20
|
||||
#define MYKONOS_ADDR_GPIO_DIR_CTL_15_8 0xB21
|
||||
#define MYKONOS_ADDR_GPIO_DIR_CTL_18_16 0xB22
|
||||
#define MYKONOS_ADDR_GPIO_SPI_SRC_7_0 0xB23
|
||||
#define MYKONOS_ADDR_GPIO_SPI_SRC_15_8 0xB24
|
||||
#define MYKONOS_ADDR_GPIO_SPI_SRC_18_16 0xB25
|
||||
#define MYKONOS_ADDR_GPIO_SPI_READ_7_0 0xB26
|
||||
#define MYKONOS_ADDR_GPIO_SPI_READ_15_8 0xB27
|
||||
#define MYKONOS_ADDR_GPIO_SPI_READ_18_16 0xB28
|
||||
#define MYKONOS_ADDR_SOURCE_CONTROL_LOWER_BYTE 0xB29
|
||||
#define MYKONOS_ADDR_SOURCE_CONTROL_UPPER_BYTE 0xB2A
|
||||
#define MYKONOS_ADDR_SOURCE_CONTROL_EXTRA_BITS 0xB2B
|
||||
|
||||
#define MYKONOS_ADDR_GPIO_MONITOR_INDEX 0xB40
|
||||
#define MYKONOS_ADDR_GPIO_MONITOR_ENABLE 0xB41
|
||||
|
||||
#define MYKONOS_ADDR_GP_INTERRUPT_MASK_1 0xB42
|
||||
#define MYKONOS_ADDR_GP_INTERRUPT_MASK_0 0xB43
|
||||
#define MYKONOS_ADDR_GP_INTERRUPT_READ_1 0xB44
|
||||
#define MYKONOS_ADDR_GP_INTERRUPT_READ_0 0xB45
|
||||
|
||||
#define MYKONOS_ADDR_PDAUXDAC_MANUAL_CONTROL_5_0 0xB73
|
||||
#define MYKONOS_ADDR_PDAUXDAC_MANUAL_CONTROL_9_6 0xB74
|
||||
#define MYKONOS_ADDR_PDAUXDAC_MANUAL_IN_5_0 0xB75
|
||||
#define MYKONOS_ADDR_PDAUXDAC_MANUAL_IN_9_6 0xB76
|
||||
#define MYKONOS_ADDR_AUX_DAC_LATCH_CONTROL 0xB9F
|
||||
#define MYKONOS_ADDR_AUXDAC_0_WORD_MSB 0xBA0
|
||||
|
||||
#define MYKONOS_ADR_AUX_ADC_CLOCK_DIVIDE 0xBC0
|
||||
#define MYKONOS_ADDR_AUX_ADC_CFG 0xBC1
|
||||
#define MYKONOS_ADDR_AUX_ADC_READ_MSB 0xBC2
|
||||
#define MYKONOS_ADDR_AUX_ADC_READ_LSB 0xBC3
|
||||
#define MYKONOS_ADDR_AUX_ADC_SEL 0xBC4
|
||||
#define MYKONOS_ADDR_AUX_ADC_BUFFER_CONFIG_0 0xBC5
|
||||
#define MYKONOS_ADDR_AUX_ADC_BUFFER_CONFIG_1 0xBC6
|
||||
|
||||
#define MYKONOS_ADDR_TEMP_SENSOR_OFFSET 0xBE0
|
||||
#define MYKONOS_ADDR_TEMP_SENSOR_CONTROL_LSB 0xBE1
|
||||
#define MYKONOS_ADDR_TEMP_SENSOR_CONTROL_MSB 0xBE2
|
||||
#define MYKONOS_ADDR_TEMP_SENSOR_READ 0xBE3
|
||||
#define MYKONOS_ADDR_TEMP_SENSOR_CONFIG 0xBE4
|
||||
|
||||
#define MYKONOS_ADDR_DIGITAL_TEST_BYTE_0 0xC40
|
||||
|
||||
/* ARM subsystem registers */
|
||||
#define MYKONOS_ADDR_ARM_CTL_1 0xD00
|
||||
#define MYKONOS_ADDR_ARM_CTL_2 0xD01
|
||||
#define MYKONOS_ADDR_ARM_ADDR_BYTE_0 0xD02
|
||||
#define MYKONOS_ADDR_ARM_ADDR_BYTE_1 0xD03
|
||||
#define MYKONOS_ADDR_ARM_DATA_BYTE_0 0xD04
|
||||
#define MYKONOS_ADDR_ARM_DATA_BYTE_1 0xD05
|
||||
#define MYKONOS_ADDR_ARM_DATA_BYTE_2 0xD06
|
||||
#define MYKONOS_ADDR_ARM_DATA_BYTE_3 0xD07
|
||||
#define MYKONOS_ADDR_ARM_CLK_CTL 0xD08
|
||||
#define MYKONOS_ADDR_AHB_SPI_BRIDGE 0xD09
|
||||
#define MYKONOS_ADDR_ARM_BOOT_ADDR_BYTE_0 0xD0A
|
||||
#define MYKONOS_ADDR_ARM_BOOT_ADDR_BYTE_1 0xD0B
|
||||
#define MYKONOS_ADDR_ARM_BOOT_ADDR_BYTE_2 0xD0C
|
||||
#define MYKONOS_ADDR_ARM_BOOT_ADDR_BYTE_3 0xD0D
|
||||
#define MYKONOS_ADDR_ARM_STACK_PTR_BYTE_0 0xD0E
|
||||
#define MYKONOS_ADDR_ARM_STACK_PTR_BYTE_1 0xD0F
|
||||
#define MYKONOS_ADDR_ARM_STACK_PTR_BYTE_2 0xD10
|
||||
#define MYKONOS_ADDR_ARM_STACK_PTR_BYTE_3 0xD11
|
||||
#define MYKONOS_ADDR_ARM_BRIDGE_CLK_CTL 0xD14
|
||||
|
||||
/* ARM mailbox registers */
|
||||
#define MYKONOS_ADDR_ARM_CMD 0xD30
|
||||
#define MYKONOS_ADDR_ARM_EXT_CMD_BYTE_1 0xD31
|
||||
#define MYKONOS_ADDR_ARM_EXT_CMD_BYTE_2 0xD32
|
||||
#define MYKONOS_ADDR_ARM_EXT_CMD_BYTE_3 0xD33
|
||||
#define MYKONOS_ADDR_ARM_EXT_CMD_BYTE_4 0xD34
|
||||
#define MYKONOS_ADDR_ARM_EXT_CMD_BYTE_5 0xD35
|
||||
#define MYKONOS_ADDR_ARM_EXT_CMD_BYTE_6 0xD36
|
||||
#define MYKONOS_ADDR_ARM_EXT_CMD_BYTE_7 0xD37
|
||||
#define MYKONOS_ADDR_ARM_CMD_STATUS_0 0xD38
|
||||
#define MYKONOS_ADDR_ARM_CMD_STATUS_1 0xD39
|
||||
#define MYKONOS_ADDR_ARM_CMD_STATUS_2 0xD3A
|
||||
#define MYKONOS_ADDR_ARM_CMD_STATUS_3 0xD3B
|
||||
#define MYKONOS_ADDR_ARM_CMD_STATUS_4 0xD3C
|
||||
#define MYKONOS_ADDR_ARM_CMD_STATUS_5 0xD3D
|
||||
#define MYKONOS_ADDR_ARM_CMD_STATUS_6 0xD3E
|
||||
#define MYKONOS_ADDR_ARM_CMD_STATUS_7 0xD3F
|
||||
|
||||
#define MYKONOS_ADDR_ARM_OPCODE_STATE_0 0xD40
|
||||
#define MYKONOS_ADDR_ARM_OPCODE_STATE_1 0xD41
|
||||
#define MYKONOS_ADDR_ARM_OPCODE_STATE_2 0xD42
|
||||
#define MYKONOS_ADDR_ARM_OPCODE_STATE_3 0xD43
|
||||
#define MYKONOS_ADDR_ARM_OPCODE_STATE_4 0xD44
|
||||
#define MYKONOS_ADDR_ARM_OPCODE_STATE_5 0xD45
|
||||
#define MYKONOS_ADDR_ARM_OPCODE_STATE_6 0xD46
|
||||
#define MYKONOS_ADDR_ARM_OPCODE_STATE_7 0xD47
|
||||
|
||||
/* Mykonos Power-Down Override Control Registers */
|
||||
#define MYKONOS_ADDR_TX_PD_OVERRIDE_CONTROL_7_0 0xD89
|
||||
|
||||
/* Mykonos Observation Framer Registers */
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_RESET 0xDC0
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_CLK_EN 0xDC1
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_ADDR 0xDC2
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_DATA 0xDC3
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_WRITE_EN 0xDC4
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_SYSREF_FIFO_EN 0xDC5
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_CONFIG_F 0xDC6
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LANE_CTL 0xDC7
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_ADC_XBAR_SEL 0xDC8
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LANE_XBAR_SEL 0xDC9
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_CONFIG_LOOPBACK_XBAR_REV 0xDCA
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_SYNCN_FILT 0xDCB
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LMFC_F_OFFSET 0xDCC
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LMFC_K_OFFSET 0xDCD
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_TEST_CNTR_CTL 0xDCE
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_STATUS_STRB 0xDCF
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_STATUS 0xDD0
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_SYSREF_TO_LMFC_CNTR_STAT 0xDD1
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_SYSREF_TO_LMFC_ERR_MARGIN 0xDD2
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LANE_FIFO_STRB 0xDD3
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LANE0_FIFO_RDWR_ADDR 0xDD4
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LANE1_FIFO_RDWR_ADDR 0xDD5
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LANE2_FIFO_RDWR_ADDR 0xDD6
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LANE3_FIFO_RDWR_ADDR 0xDD7
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_PRBS10_CTL 0xDD8
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_PRBS20_CTL 0xDD9
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_PATTERN_GEN_EN 0xDDA
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_PATTERN_GEN_7_TO_0 0xDDB
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_PATTERN_GEN_15_TO_8 0xDDC
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_PATTERN_GEN_19_TO_16 0xDDD
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_CONFIG_JTX_GEN 0xDDE
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_LANE_DATA_CTL 0xDDF
|
||||
#define MYKONOS_ADDR_OBS_FRAMER_DATA_SAMPLE_CTL 0xDE0
|
||||
|
||||
#define MYKONOS_ADDR_PFIR_COEFF_CTL 0xDFF
|
||||
#define MYKONOS_ADDR_PFIR_COEFF_DATA 0xE00
|
||||
#define MYKONOS_ADDR_PFIR_COEFF_ADDR 0xE01
|
||||
|
||||
/* ARM memory */
|
||||
#define MYKONOS_ADDR_ARM_START_PROG_ADDR 0x01000000
|
||||
#define MYKONOS_ADDR_ARM_END_PROG_ADDR 0x01017FFF
|
||||
#define MYKONOS_ADDR_ARM_START_DATA_ADDR 0x20000000
|
||||
#define MYKONOS_ADDR_ARM_END_DATA_ADDR 0x2000FFFF
|
||||
#define MYKONOS_ADDR_ARM_BUILD_CHKSUM_ADDR 0x01017FE0
|
||||
#define MYKONOS_ADDR_ARM_CALC_CHKSUM_ADDR 0x01017FE4
|
||||
#define MYKONOS_ADDR_ARM_VERSION 0x01000128
|
||||
#define MYKONOS_ARM_ABORT_OPCODE 0x00
|
||||
#define MYKONOS_ARM_RUNINIT_OPCODE 0x02
|
||||
#define MYKONOS_ARM_RADIOON_OPCODE 0x04
|
||||
#define MYKONOS_ARM_WRITECFG_OPCODE 0x06
|
||||
#define MYKONOS_ARM_READCFG_OPCODE 0x08
|
||||
#define MYKONOS_ARM_SET_OPCODE 0x0A
|
||||
#define MYKONOS_ARM_GET_OPCODE 0x0C
|
||||
|
||||
#define MYKONOS_ARM_OBJECTID_DPDINIT_CONFIG 0x0F
|
||||
#define MYKONOS_ARM_OBJECTID_CLGCINIT_CONFIG 0x10
|
||||
#define MYKONOS_ARM_OBJECTID_VSWRINIT_CONFIG 0x11
|
||||
#define MYKONOS_ARM_OBJECTID_DPDCONFIG 0x24
|
||||
#define MYKONOS_ARM_DPD_RESET 0x02
|
||||
#define MYKONOS_ARM_OBJECTID_GS_TRACKCALS 0x66
|
||||
#define MYKONOS_ARM_OBJECTID_RXQEC_TRACKING 0x20
|
||||
#define MYKONOS_ARM_OBJECTID_ORXQEC_TRACKING 0x21
|
||||
#define MYKONOS_ARM_OBJECTID_TXLOL_TRACKING 0x22
|
||||
#define MYKONOS_ARM_OBJECTID_TXQEC_TRACKING 0x23
|
||||
#define MYKONOS_ARM_OBJECTID_CLGCCONFIG 0x25
|
||||
#define MYKONOS_ARM_OBJECTID_VSWRCONFIG 0x26
|
||||
#define MYKONOS_ARM_OBJECTID_CAL_STATUS 0x42
|
||||
#define MYKONOS_ARM_OBJECTID_INIT_CAL_DONE 0x43
|
||||
#define MYKONOS_ARM_OBJECTID_ORX_MODE 0x61
|
||||
#define MYKONOS_ARM_OBJECTID_TRACKING_CAL_SUSPEND_RESUME 0x65
|
||||
#define MYKONOS_ARM_OBJECTID_TRACKING_CAL_CONTROL 0x66
|
||||
#define MYKONOS_ARM_OBJECTID_TRACKING_CAL_PENDING 0x67
|
||||
#define MYKONOS_ARM_OBJECTID_RADIO_CONTROL 0x81
|
||||
#define MYKONOS_ARM_OBJECTID_CALSCHEDULER 0x83
|
||||
|
||||
#define MYKONOS_ARM_SYSTEMSTATE_POWERUP 0x00
|
||||
#define MYKONOS_ARM_SYSTEMSTATE_READY 0x01
|
||||
#define MYKONOS_ARM_SYSTEMSTATE_IDLE 0x02
|
||||
#define MYKONOS_ARM_SYSTEMSTATE_RADIO_ON 0x03
|
||||
|
||||
#define ORX_TRIGGER_SIGNALID 0x00
|
||||
#define ORX_MODE_0_SIGNALID 0x01
|
||||
#define ORX_MODE_1_SIGNALID 0x02
|
||||
#define ORX_MODE_2_SIGNALID 0x03
|
||||
#define RX1_ENABLE_ACK_SIGNALID 0x04
|
||||
#define RX2_ENABLE_ACK_SIGNALID 0x05
|
||||
#define TX1_ENABLE_ACK_SIGNALID 0x06
|
||||
#define TX2_ENABLE_ACK_SIGNALID 0x07
|
||||
#define ORX1_ENABLE_ACK_SIGNALID 0x08
|
||||
#define ORX2_ENABLE_ACK_SIGNALID 0x09
|
||||
#define SRX_ENABLE_ACK_SIGNALID 0x0A
|
||||
#define TX_OBS_SELECT_SIGNALID 0x0B
|
||||
|
||||
#define DISABLE_DPD_ACTUATOR 0x03
|
||||
#define ENABLE_DPD_ACTUATOR 0x04
|
||||
#define SET_CLGC_DESIRED_GAIN_1 0x05
|
||||
#define SET_CLGC_DESIRED_GAIN_2 0x06
|
||||
#define SET_PATH_DELAY 0x08
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
/**
|
||||
* \file mykonos_user.c
|
||||
* \brief Contains Mykonos default gain table values for Rx, ObsRx, and SnRx
|
||||
*
|
||||
* Mykonos API version: 1.5.2.3566
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include "t_mykonos.h"
|
||||
#include "mykonos_user.h"
|
||||
|
||||
/**
|
||||
* \brief Default Rx gain table settings
|
||||
*/
|
||||
uint8_t RxGainTable [61][4] =
|
||||
{
|
||||
/* Order: {FE table, External Ctl, Digital Gain/Atten, Enable Atten} */
|
||||
{0, 0, 0, 0}, /* Gain index 255 */
|
||||
{3, 0, 2, 1}, /* Gain index 254 */
|
||||
{6, 0, 3, 1}, /* Gain index 253 */
|
||||
{10, 0, 0, 0}, /* Gain index 252 */
|
||||
{13, 0, 1, 1}, /* Gain index 251 */
|
||||
{16, 0, 0, 0}, /* Gain index 250 */
|
||||
{18, 0, 3, 1}, /* Gain index 249 */
|
||||
{21, 0, 1, 1}, /* Gain index 248 */
|
||||
{23, 0, 3, 1}, /* Gain index 247 */
|
||||
{25, 0, 4, 1}, /* Gain index 246 */
|
||||
{28, 0, 0, 0}, /* Gain index 245 */
|
||||
{30, 0, 0, 0}, /* Gain index 244 */
|
||||
{31, 0, 5, 1}, /* Gain index 243 */
|
||||
{33, 0, 4, 1}, /* Gain index 242 */
|
||||
{35, 0, 2, 1}, /* Gain index 241 */
|
||||
{37, 0, 0, 0}, /* Gain index 240 */
|
||||
{38, 0, 4, 1}, /* Gain index 239 */
|
||||
{39, 0, 7, 1}, /* Gain index 238 */
|
||||
{41, 0, 2, 1}, /* Gain index 237 */
|
||||
{42, 0, 4, 1}, /* Gain index 236 */
|
||||
{43, 0, 6, 1}, /* Gain index 235 */
|
||||
{44, 0, 8, 1}, /* Gain index 234 */
|
||||
{45, 0, 9, 1}, /* Gain index 233 */
|
||||
{46, 0, 10, 1}, /* Gain index 232 */
|
||||
{47, 0, 10, 1}, /* Gain index 231 */
|
||||
{48, 0, 9, 1}, /* Gain index 230 */
|
||||
{49, 0, 8, 1}, /* Gain index 229 */
|
||||
{50, 0, 6, 1}, /* Gain index 228 */
|
||||
{51, 0, 3, 1}, /* Gain index 227 */
|
||||
{51, 0, 13, 1}, /* Gain index 226 */
|
||||
{52, 0, 9, 1}, /* Gain index 225 */
|
||||
{53, 0, 5, 1}, /* Gain index 224 */
|
||||
{53, 0, 15, 1}, /* Gain index 223 */
|
||||
{54, 0, 9, 1}, /* Gain index 222 */
|
||||
{54, 0, 19, 1}, /* Gain index 221 */
|
||||
{55, 0, 11, 1}, /* Gain index 220 */
|
||||
{55, 0, 21, 1}, /* Gain index 219 */
|
||||
{56, 0, 11, 1}, /* Gain index 218 */
|
||||
{56, 0, 21, 1}, /* Gain index 217 */
|
||||
{57, 0, 9, 1}, /* Gain index 216 */
|
||||
{57, 0, 19, 1}, /* Gain index 215 */
|
||||
{57, 0, 29, 1}, /* Gain index 214 */
|
||||
{58, 0, 12, 1}, /* Gain index 213 */
|
||||
{58, 0, 22, 1}, /* Gain index 212 */
|
||||
{58, 0, 32, 1}, /* Gain index 211 */
|
||||
{59, 0, 11, 1}, /* Gain index 210 */
|
||||
{59, 0, 21, 1}, /* Gain index 209 */
|
||||
{59, 0, 31, 1}, /* Gain index 208 */
|
||||
{59, 0, 41, 1}, /* Gain index 207 */
|
||||
{60, 0, 13, 1}, /* Gain index 206 */
|
||||
{60, 0, 23, 1}, /* Gain index 205 */
|
||||
{60, 0, 33, 1}, /* Gain index 204 */
|
||||
{60, 0, 43, 1}, /* Gain index 203 */
|
||||
{60, 0, 53, 1}, /* Gain index 202 */
|
||||
{61, 0, 14, 1}, /* Gain index 201 */
|
||||
{61, 0, 24, 1}, /* Gain index 200 */
|
||||
{61, 0, 34, 1}, /* Gain index 199 */
|
||||
{61, 0, 44, 1}, /* Gain index 198 */
|
||||
{61, 0, 54, 1}, /* Gain index 197 */
|
||||
{61, 0, 64, 1}, /* Gain index 196 */
|
||||
{61, 0, 74, 1}, /* Gain index 195 */
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Default ORx gain table settings
|
||||
*/
|
||||
uint8_t ORxGainTable [19][4] =
|
||||
{
|
||||
/* Order: {FE table, External Ctl, Digital Gain/Atten, Enable Atten} */
|
||||
{0, 0, 0, 0}, /* Gain index 255 */
|
||||
{7, 0, 0, 0}, /* Gain index 254 */
|
||||
{13, 0, 1, 1}, /* Gain index 253 */
|
||||
{18, 0, 3, 1}, /* Gain index 252 */
|
||||
{23, 0, 3, 1}, /* Gain index 251 */
|
||||
{28, 0, 0, 0}, /* Gain index 250 */
|
||||
{32, 0, 0, 0}, /* Gain index 249 */
|
||||
{35, 0, 2, 1}, /* Gain index 248 */
|
||||
{38, 0, 4, 1}, /* Gain index 247 */
|
||||
{41, 0, 2, 1}, /* Gain index 246 */
|
||||
{43, 0, 6, 1}, /* Gain index 245 */
|
||||
{46, 0, 0, 0}, /* Gain index 244 */
|
||||
{47, 0, 10, 1}, /* Gain index 243 */
|
||||
{49, 0, 8, 1}, /* Gain index 242 */
|
||||
{51, 0, 3, 1}, /* Gain index 241 */
|
||||
{52, 0, 9, 1}, /* Gain index 240 */
|
||||
{53, 0, 14, 1}, /* Gain index 239 */
|
||||
{54, 0, 18, 1}, /* Gain index 238 */
|
||||
{56, 0, 0, 0} /* Gain index 237 */
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Default SnRx gain table settings
|
||||
*/
|
||||
uint8_t SnRxGainTable [53][4] =
|
||||
{
|
||||
/* Order: {FE table, LNA Bypass, Digital Gain/Atten, Enable Atten} */
|
||||
{0, 0, 0, 0}, /* Gain index 255 */
|
||||
{1, 0, 7, 1}, /* Gain index 254 */
|
||||
{3, 0, 1, 0}, /* Gain index 253 */
|
||||
{3, 0, 15, 1}, /* Gain index 252 */
|
||||
{5, 0, 0, 0}, /* Gain index 251 */
|
||||
{6, 0, 2, 1}, /* Gain index 250 */
|
||||
{7, 0, 2, 1}, /* Gain index 249 */
|
||||
{8, 0, 12, 1}, /* Gain index 248 */
|
||||
{9, 0, 7, 1}, /* Gain index 247 */
|
||||
{11, 0, 1, 0}, /* Gain index 246 */
|
||||
{11, 0, 15, 1},/* Gain index 245 */
|
||||
{13, 0, 1, 0}, /* Gain index 244 */
|
||||
{14, 0, 2, 0}, /* Gain index 243 */
|
||||
{14, 0, 10, 1},/* Gain index 242 */
|
||||
{15, 0, 0, 0}, /* Gain index 241 */
|
||||
{15, 0, 20, 1},/* Gain index 240 */
|
||||
{16, 0, 2, 1}, /* Gain index 239 */
|
||||
{16, 0, 22, 1},/* Gain index 238 */
|
||||
{17, 0, 1, 0}, /* Gain index 237 */
|
||||
{17, 0, 15, 1},/* Gain index 236 */
|
||||
{17, 0, 35, 1},/* Gain index 235 */
|
||||
{17, 0, 55, 1},/* Gain index 234 */
|
||||
{18, 0, 7, 1}, /* Gain index 233 */
|
||||
{18, 0, 27, 1},/* Gain index 232 */
|
||||
{ 6, 1, 7, 1}, /* Gain index 231 */
|
||||
{ 7, 1, 7, 1}, /* Gain index 230 */
|
||||
{ 8, 1, 17, 1}, /* Gain index 229 */
|
||||
{ 9, 1, 12, 1}, /* Gain index 228 */
|
||||
{11, 1, 0, 0}, /* Gain index 227 */
|
||||
{12, 1, 3, 1}, /* Gain index 226 */
|
||||
{13, 1, 0, 0}, /* Gain index 225 */
|
||||
{14, 1, 1, 0}, /* Gain index 224 */
|
||||
{14, 1, 15, 1},/* Gain index 223 */
|
||||
{15, 1, 5, 1}, /* Gain index 222 */
|
||||
{15, 1, 25, 1},/* Gain index 221 */
|
||||
{16, 1, 7, 1}, /* Gain index 220 */
|
||||
{16, 1, 27, 1},/* Gain index 219 */
|
||||
{17, 1, 0, 0}, /* Gain index 218 */
|
||||
{17, 1, 20, 1},/* Gain index 217 */
|
||||
{17, 1, 40, 1},/* Gain index 216 */
|
||||
{17, 1, 60, 1},/* Gain index 215 */
|
||||
{18, 1, 12, 1},/* Gain index 214 */
|
||||
{18, 1, 32, 1},/* Gain index 213 */
|
||||
{18, 1, 52, 1},/* Gain index 212 */
|
||||
{18, 1, 72, 1},/* Gain index 211 */
|
||||
{18, 1, 92, 1},/* Gain index 210 */
|
||||
{19, 1, 1, 0}, /* Gain index 209 */
|
||||
{19, 1, 15, 1},/* Gain index 208 */
|
||||
{19, 1, 35, 1},/* Gain index 207 */
|
||||
{19, 1, 55, 1},/* Gain index 206 */
|
||||
{19, 1, 75, 1},/* Gain index 205 */
|
||||
{19, 1, 95, 1},/* Gain index 204 */
|
||||
{19, 1, 115, 1}/* Gain index 203 */
|
||||
};
|
||||
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* \file mykonos_user.h
|
||||
*
|
||||
* \brief Contains macro definitions and global structure declarations for mykonos_user.c
|
||||
*
|
||||
* Mykonos API version: 1.5.2.3566
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MYKONOSPROFILES_H_
|
||||
#define _MYKONOSPROFILES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* turns verbose messaging on */
|
||||
#define MYKONOS_VERBOSE 1
|
||||
#define MYK_ENABLE_SPIWRITEARRAY 1
|
||||
|
||||
/* 3 Bytes per SPI transaction * 341 transactions = ~1024 byte buffer size */
|
||||
/* Minimum MYK_SPIWRITEARRAY_BUFFERSIZE = 27 */
|
||||
#define MYK_SPIWRITEARRAY_BUFFERSIZE 341
|
||||
/*
|
||||
*****************************************
|
||||
* Rx, ObsRx, and Sniffer gain tables
|
||||
******************************************
|
||||
*/
|
||||
#define MAX_GAIN_TABLE_INDEX 255
|
||||
|
||||
#define START_RX_GAIN_INDEX 255
|
||||
#define MAX_RX_GAIN_TABLE_NUMINDEXES (START_RX_GAIN_INDEX + 1)
|
||||
#define MIN_RX_GAIN_TABLE_INDEX 0
|
||||
|
||||
#define START_ORX_GAIN_INDEX 47
|
||||
#define MAX_ORX_GAIN_TABLE_NUMINDEXES (START_ORX_GAIN_INDEX + 1)
|
||||
#define MIN_ORX_GAIN_TABLE_INDEX (MAX_GAIN_TABLE_INDEX - START_ORX_GAIN_INDEX)
|
||||
|
||||
#define START_SNRX_GAIN_INDEX 127
|
||||
#define MAX_SNRX_GAIN_TABLE_NUMINDEXES (START_SNRX_GAIN_INDEX + 1)
|
||||
#define MIN_SNRX_GAIN_TABLE_INDEX (MAX_GAIN_TABLE_INDEX - START_SNRX_GAIN_INDEX)
|
||||
|
||||
#define START_LOOPBACK_GAIN_INDEX 47
|
||||
#define MAX_LOOPBACK_GAIN_TABLE_NUMINDEXES (START_LOOPBACK_GAIN_INDEX + 1)
|
||||
#define MIN_LOOPBACK_GAIN_TABLE_INDEX (MAX_GAIN_TABLE_INDEX - START_SNRX_GAIN_INDEX)
|
||||
|
||||
extern uint8_t RxGainTable [61][4];
|
||||
extern uint8_t ORxGainTable [19][4];
|
||||
extern uint8_t SnRxGainTable [53][4];
|
||||
|
||||
|
||||
/*
|
||||
********************************************
|
||||
* Rx, Sniffer, ObsRx and Tx Profiles limits
|
||||
********************************************
|
||||
*/
|
||||
#define MIN_RX_IQRATE_KHZ 15000 /*!< Mykonos minimum IQ rate for the Rx channel, expressed in KHz */
|
||||
#define MAX_RX_IQRATE_KHZ 320000 /*!< Mykonos maximum IQ rate for the Rx channel, expressed in KHz */
|
||||
|
||||
#define MIN_TX_IQRATE_KHZ 15000 /*!< Mykonos minimum IQ rate for the Tx channel, expressed in KHz */
|
||||
#define MAX_TX_IQRATE_KHZ 492000 /*!< Mykonos maximum IQ rate for the Tx channel, expressed in KHz */
|
||||
|
||||
#define MIN_SNIFFER_RFBW_HZ 5000000 /*!< Mykonos minimum Sniffer channel bandwidth expressed in Hz */
|
||||
#define MAX_SNIFFER_RFBW_HZ 20000000 /*!< Mykonos maximum Sniffer channel bandwidth expressed in Hz */
|
||||
|
||||
#define MIN_ORX_RFBW_HZ 5000000 /*!< Mykonos minimum Observation channel bandwidth expressed in Hz */
|
||||
#define MAX_ORX_RFBW_HZ 250000000 /*!< Mykonos maximum Observation channel bandwidth expressed in Hz */
|
||||
|
||||
#define MIN_RX_RFBW_HZ 5000000 /*!< Mykonos minimum Rx channel bandwidth expressed in Hz */
|
||||
#define MAX_RX_RFBW_HZ 100000000 /*!< Mykonos maximum Rx channel bandwidth expressed in Hz */
|
||||
|
||||
#define MIN_TX_RFBW_HZ 20000000 /*!< Mykonos minimum Tx channel bandwidth expressed in Hz */
|
||||
#define MAX_TX_RFBW_HZ 250000000 /*!< Mykonos maximum Tx channel bandwidth expressed in Hz */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* \file mykonos_version.h
|
||||
* \brief Contains the version number for the Mykonos API
|
||||
*
|
||||
* Mykonos API version: 1.5.2.3566
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in * this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MYKONOS_VERSION_H_
|
||||
#define MYKONOS_VERSION_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MYKONOS_CURRENT_SI_VERSION 1 /*!< Mykonos current silicon version */
|
||||
#define MYKONOS_CURRENT_MAJOR_VERSION 5 /*!< Mykonos current ARM major version */
|
||||
#define MYKONOS_CURRENT_MINOR_VERSION 2 /*!< Mykonos current ARM minor version */
|
||||
#define MYKONOS_CURRENT_BUILD_VERSION 3566 /*!< Mykonos current API build version */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* MYKONOS_VERSION_H_ */
|
||||
+194
@@ -0,0 +1,194 @@
|
||||
/**
|
||||
* \file t_ad9528.h
|
||||
* \brief Contains enum and structure data types for all AD9528 function calls
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _AD9528_TYPES_H_
|
||||
#define _AD9528_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "../common.h"
|
||||
|
||||
/* AD9528 SPI Address defines */
|
||||
#define AD9528_ADDR_ADI_SPI_CONFIG_A 0x000
|
||||
#define AD9528_ADDR_ADI_SPI_CONFIG_B 0x001
|
||||
#define AD9528_ADDR_IO_UPDATE 0x00F
|
||||
|
||||
#define AD9528_ADDR_REF_A_DIVIDER_LSB 0x100
|
||||
#define AD9528_ADDR_REF_A_DIVIDER_MSB 0x101
|
||||
#define AD9528_ADDR_REF_B_DIVIDER_LSB 0x102
|
||||
#define AD9528_ADDR_REF_B_DIVIDER_MSB 0x103
|
||||
#define AD9528_ADDR_PLL1_N_DIV_LSB 0x104
|
||||
#define AD9528_ADDR_PLL1_N_DIV_MSB 0x105
|
||||
#define AD9528_ADDR_PLL1_CHARGEPUMP 0x106
|
||||
#define AD9528_ADDR_PLL1_CP_CTRL2 0x107
|
||||
#define AD9528_ADDR_INPUT_RECEIVERS1 0x108
|
||||
#define AD9528_ADDR_INPUT_RECEIVERS2 0x109
|
||||
#define AD9528_ADDR_INPUT_RECEIVERS3 0x10A
|
||||
#define AD9528_ADDR_PLL1_FASTLOCK 0x10B
|
||||
|
||||
#define AD9528_ADDR_PLL2_CHARGEPUMP 0x200
|
||||
#define AD9528_ADDR_PLL2_N_DIV 0x201
|
||||
#define AD9528_ADDR_PLL2_CTRL 0x202
|
||||
#define AD9528_ADDR_PLL2_VCO_CTRL 0x203
|
||||
#define AD9528_ADDR_PLL2_VCO_DIV 0x204
|
||||
#define AD9528_ADDR_PLL2_LF_CTRL1 0x205
|
||||
#define AD9528_ADDR_PLL2_LF_CTRL2 0x206
|
||||
#define AD9528_ADDR_PLL2_RDIV 0x207
|
||||
#define AD9528_ADDR_PLL2_REPLICA_CHDIV 0x208
|
||||
#define AD9528_ADDR_PLL2_REPLICA_DIV_PHASE 0x209
|
||||
|
||||
#define AD9528_ADDR_CH_OUT0_CTRL1 0x300
|
||||
#define AD9528_ADDR_CH_OUT0_CTRL2 0x301
|
||||
#define AD9528_ADDR_CH_OUT0_CHDIV 0x302
|
||||
#define AD9528_ADDR_OUTPUT_SYNC 0x32A
|
||||
#define AD9528_ADDR_MASK_SYNC1 0x32B
|
||||
#define AD9528_ADDR_MASK_SYNC2 0x32C
|
||||
#define AD9528_ADDR_EN_OUTPUT_PATH_SEL1 0x32D
|
||||
#define AD9528_ADDR_EN_OUTPUT_PATH_SEL2 0x32E
|
||||
|
||||
#define AD9528_ADDR_SYSERF_DIV_LSB 0x400
|
||||
#define AD9528_ADDR_SYSERF_DIV_MSB 0x401
|
||||
#define AD9528_ADDR_SYSREF_CTRL3 0x402
|
||||
#define AD9528_ADDR_SYSREF_CTRL4 0x403
|
||||
#define AD9528_ADDR_SYSREF_CTRL5 0x404
|
||||
|
||||
#define AD9528_ADDR_POWERDOWN_CTRL 0x500
|
||||
#define AD9528_ADDR_CH_POWERDOWN1 0x501
|
||||
#define AD9528_ADDR_CH_POWERDOWN2 0x502
|
||||
#define AD9528_ADDR_LDO_ENABLES1 0x503
|
||||
#define AD9528_ADDR_LDO_ENABLES2 0x504
|
||||
#define AD9528_ADDR_STATUS0_CTRL 0x505
|
||||
#define AD9528_ADDR_STATUS1_CTRL 0x506
|
||||
#define AD9528_ADDR_STATUS_OE 0x507
|
||||
#define AD9528_ADDR_STATUS_READBACK0 0x508
|
||||
#define AD9528_ADDR_STATUS_READBACK1 0x509
|
||||
|
||||
|
||||
|
||||
///Enum to select what source outputs from each AD9528 output channel
|
||||
typedef enum
|
||||
{
|
||||
CHANNEL_DIV = 0, PLL1_OUTPUT = 1, //VCXO frequency
|
||||
SYSREF = 2,
|
||||
INV_PLL1_OUTPUT = 5 //VCXO inverted
|
||||
} ad9528outSourceSel_t;
|
||||
|
||||
///Enum to select what output buffer standard is used for the clock outputs
|
||||
typedef enum
|
||||
{
|
||||
LVDS = 0, LVDS_BOOST = 1, HSTL = 2
|
||||
} ad9528outBufferControl_t;
|
||||
|
||||
///Enum to select the clock input buffer mode.
|
||||
typedef enum
|
||||
{
|
||||
DISABLED = 0, SINGLE_ENDED, NEG_SINGLE_ENDED, DIFFERENTIAL
|
||||
} ad9528RefBuffer_t;
|
||||
|
||||
/// Structure to hold AD9528 PLL1 settings
|
||||
typedef struct
|
||||
{
|
||||
uint32_t refA_Frequency_Hz;
|
||||
uint16_t refA_Divider;
|
||||
ad9528RefBuffer_t refA_bufferCtrl;
|
||||
|
||||
uint32_t refB_Frequency_Hz;
|
||||
uint16_t refB_Divider;
|
||||
ad9528RefBuffer_t refB_bufferCtrl;
|
||||
|
||||
uint32_t vcxo_Frequency_Hz;
|
||||
ad9528RefBuffer_t vcxoBufferCtrl;
|
||||
|
||||
uint16_t nDivider;
|
||||
uint8_t bypassPll1;
|
||||
} ad9528pll1Settings_t;
|
||||
|
||||
/// Structure to hold AD9528 PLL2 settings
|
||||
typedef struct
|
||||
{
|
||||
uint8_t rfDivider; //VCO divider: Valid range (3,4,5)
|
||||
uint8_t n2Divider; //PLL2 N2 Divider
|
||||
uint8_t totalNdiv; //NDiv = 4*Bdiv + Adiv //Bdiv valid range (3 to 63), Adiv valid range (0-3)
|
||||
} ad9528pll2Settings_t;
|
||||
|
||||
/// Structure to hold AD9528 Output Clock settings
|
||||
typedef struct
|
||||
{
|
||||
uint16_t outPowerDown; //bit per output, if 1 power down that output.
|
||||
ad9528outSourceSel_t outSource[14]; //CHANNEL_DIV, PLL1_OUTPUT, SYSREF, INV_PLL1_OUTPUT
|
||||
ad9528outBufferControl_t outBufferCtrl[14]; //LVDS, LVDS_BOOST, HSTL
|
||||
uint8_t outAnalogDelay[14]; //5 bits
|
||||
uint8_t outDigitalDelay[14]; //6 bits, 1/2 clock resolution @ channel div input frequency
|
||||
uint8_t outChannelDiv[14]; //8 bit channel divider
|
||||
uint32_t outFrequency_Hz[14]; //output clock frequency per clock output
|
||||
} ad9528outputSettings_t;
|
||||
|
||||
///Enum to select the SYSREF output source
|
||||
typedef enum
|
||||
{
|
||||
EXTERNAL = 0, EXT_RESAMPLED = 1, INTERNAL = 2
|
||||
} sysrefSourceSelection_t;
|
||||
|
||||
///Enum to choose the SYSREF pattern mode.
|
||||
typedef enum
|
||||
{
|
||||
NSHOT = 0, CONTINUOUS = 1, PRBS = 2, STOP = 3
|
||||
} sysrefPatternMode_t;
|
||||
|
||||
///Enum to select the SYSREF input pin mode.
|
||||
typedef enum
|
||||
{
|
||||
LEVEL_ACTIVE_HIGH = 0, LEVEL_ACTIVE_LOW = 1, RISING_EDGE = 2, FALLING_EDGE = 3
|
||||
} sysrefPinEdgeMode_t;
|
||||
|
||||
///Enum to select the SYSREF output # of pulses for NSHOT mode.
|
||||
typedef enum
|
||||
{
|
||||
ONE_PULSE = 0, TWO_PULSES = 2, FOUR_PULSES = 3, SIX_PULSES = 4, EIGHT_PULSES = 5
|
||||
} sysrefNshotMode_t;
|
||||
|
||||
//Enum to select how a SYSREF is requested.
|
||||
typedef enum
|
||||
{
|
||||
SPI = 0, PIN = 1
|
||||
} sysrefRequestMethod_t;
|
||||
|
||||
/// Structure to hold AD9528 SYSREF output settings
|
||||
typedef struct
|
||||
{
|
||||
sysrefRequestMethod_t sysrefRequestMethod;
|
||||
sysrefSourceSelection_t sysrefSource;
|
||||
sysrefPinEdgeMode_t sysrefPinEdgeMode;
|
||||
ad9528RefBuffer_t sysrefPinBufferMode;
|
||||
sysrefPatternMode_t sysrefPatternMode;
|
||||
sysrefNshotMode_t sysrefNshotMode;
|
||||
uint16_t sysrefDivide;
|
||||
|
||||
} ad9528sysrefSettings_t;
|
||||
|
||||
/// Structure to hold AD9528 settings
|
||||
typedef struct
|
||||
{
|
||||
spiSettings_t *spiSettings;
|
||||
ad9528pll1Settings_t *pll1Settings;
|
||||
ad9528pll2Settings_t *pll2Settings;
|
||||
ad9528outputSettings_t *outputSettings;
|
||||
ad9528sysrefSettings_t *sysrefSettings;
|
||||
} ad9528Device_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+1710
File diff suppressed because it is too large
Load Diff
+375
@@ -0,0 +1,375 @@
|
||||
/*!
|
||||
* \file t_mykonos_gpio.h
|
||||
* \brief Mykonos GPIO error handling and type defines
|
||||
*
|
||||
* Mykonos API version: 1.5.2.3566
|
||||
*/
|
||||
|
||||
/**
|
||||
* \page Disclaimer Legal Disclaimer
|
||||
* Copyright 2015-2017 Analog Devices Inc.
|
||||
* Released under the AD9371 API license, for more information see the "LICENSE.txt" file in this zip file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef T_MYKONOSGPIO_H_
|
||||
#define T_MYKONOSGPIO_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include "../common.h"
|
||||
|
||||
/**
|
||||
* \brief Enum of unique error codes from the Mykonos GPIO API functions.
|
||||
* Each error condition in the library should get its own enum value to allow
|
||||
* easy debug of errors.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
MYKONOS_ERR_GPIO_OK = 0,
|
||||
MYKONOS_ERR_EN_MONITOR_OUT_NOT_ENABLED,
|
||||
MYKONOS_ERR_EN_MONITOR_OUT_SRC_CTRL,
|
||||
MYKONOS_ERR_MONITOR_OUT_INDEX_RANGE,
|
||||
MYKONOS_ERR_GETGPIOMON_INDEX_NULL_PARM,
|
||||
MYKONOS_ERR_GETGPIOMON_MONITORMASK_NULL_PARM,
|
||||
|
||||
MYKONOS_ERR_MGCRX2_GPIO_DECPIN_INV_PARAM,
|
||||
MYKONOS_ERR_MGCRX2_GPIO_INCPIN_INV_PARAM,
|
||||
MYKONOS_ERR_MGCRX2_SOURCE_CONFIG,
|
||||
MYKONOS_ERR_MGCRX2_STEP_INV_PARAM,
|
||||
MYKONOS_ERR_MGCRX1_GPIO_DECPIN_INV_PARAM,
|
||||
MYKONOS_ERR_MGCRX1_GPIO_INCPIN_INV_PARAM,
|
||||
MYKONOS_ERR_MGCRX1_STEP_INV_PARAM,
|
||||
MYKONOS_ERR_GETRX2PIN_INCSTEP_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX2PIN_DECSTEP_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX2PIN_INCPIN_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX2PIN_DECPIN_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX2PIN_EN_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX1PIN_INCSTEP_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX1PIN_DECSTEP_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX1PIN_INCPIN_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX1PIN_DECPIN_NULL_PARM,
|
||||
MYKONOS_ERR_GETRX1PIN_EN_NULL_PARM,
|
||||
|
||||
MYKONOS_ERR_TPCTX2_GPIO_DECPIN_INV_PARAM,
|
||||
MYKONOS_ERR_TPCTX2_GPIO_INCPIN_INV_PARAM,
|
||||
MYKONOS_ERR_TPCTX2_GPIO_STEP_INV_PARAM,
|
||||
MYKONOS_ERR_TPCTX1_GPIO_DECPIN_INV_PARAM,
|
||||
MYKONOS_ERR_TPCTX1_GPIO_INCPIN_INV_PARAM,
|
||||
MYKONOS_ERR_TPCTX1_GPIO_STEP_INV_PARAM,
|
||||
MYKONOS_ERR_GETTX2PIN_STEP_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX2PIN_INC_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX2PIN_DEC_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX2PIN_EN_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX2PIN_TX1TX2_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX1PIN_STEP_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX1PIN_INC_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX1PIN_DEC_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX1PIN_EN_NULL_PARM,
|
||||
MYKONOS_ERR_GETTX1PIN_TX1TX2_NULL_PARM,
|
||||
|
||||
MYKONOS_ERR_SPI2_INV_GPIO,
|
||||
MYKONOS_ERR_SPI2_INV_SETUP,
|
||||
|
||||
MYKONOS_ERR_SET_GPIO_1V8_INV_POINTER,
|
||||
|
||||
MYKONOS_ERR_GETGPIOSETLEVEL_NULL_PARM,
|
||||
MYKONOS_ERR_READGPIOSPI_NULL_PARM,
|
||||
MYKONOS_ERR_SET_GPIO_1V8_INV_MODE,
|
||||
MYKONOS_ERR_GETGPIO_OE_NULL_PARM,
|
||||
MYKONOS_ERR_GPIO_OE_INV_PARAM,
|
||||
MYKONOS_ERR_GPIO_SRC_PARAM_INV,
|
||||
MYKONOS_ERR_GET_GPIO_SOURCE_CONTROL_NULL_PARM,
|
||||
|
||||
MYKONOS_ERR_INV_GP_INT_MASK_PARM,
|
||||
MYKONOS_ERR_GP_INT_STATUS_NULL_PARAM,
|
||||
|
||||
MYKONOS_ERR_GETGPIO3V3OUT_NULL_PARM,
|
||||
MYKONOS_ERR_SET_GPIO_3V3_INV_POINTER,
|
||||
MYKONOS_ERR_GETGPIO3V3SPI_NULL_PARM,
|
||||
MYKONOS_ERR_GPIO3V3OUTEN_NULL_PARM,
|
||||
MYKONOS_ERR_SET_GPIO_3V3_INV_MODE,
|
||||
MYKONOS_ERR_SET_GPIO_3V3_INV_SRC_CTRL,
|
||||
|
||||
MYKONOS_ERR_SET_ARMGPIO_INV_POINTER,
|
||||
MYKONOS_ERR_SET_ARMGPIO_PINS_ARMERROR,
|
||||
MYKONOS_ERR_SET_ARMGPIO_PINS_INV_SIGNALID,
|
||||
MYKONOS_ERR_SET_ARMGPIO_PINS_INV_GPIOPIN,
|
||||
|
||||
MYKONOS_ERR_SETUPAUXDAC_NULL_PARAM,
|
||||
MYKONOS_ERR_WRITEAUXDAC_NULL_AUXIO,
|
||||
MYKONOS_ERR_READAUXADC_NULL_PARAM,
|
||||
MYKONOS_ERR_SETUPAUXDAC_INV_AUXDACCODE,
|
||||
MYKONOS_ERR_WRITEAUXDAC_INV_AUXDACCODE,
|
||||
MYKONOS_ERR_WRITEAUXDAC_INV_AUXDACINDEX,
|
||||
MYKONOS_ERR_INV_AUX_ADC_CHAN_PARM,
|
||||
MYKONOS_ERR_SETUPAUXADC_INV_VCODIV,
|
||||
MYKONOS_ERR_INV_AUX_ADC_DEC_PARM,
|
||||
|
||||
MYKONOS_ERR_GAINCOMP_NULL_STRUCT,
|
||||
MYKONOS_ERR_GAINCOMP_EN_NULL_PARM,
|
||||
MYKONOS_ERR_GAINCOMP_SET_NULL_STRUCT,
|
||||
MYKONOS_ERR_GAINCOMP_INV_RX1_OFFSET,
|
||||
MYKONOS_ERR_GAINCOMP_INV_RX2_OFFSET,
|
||||
MYKONOS_ERR_GAINCOMP_INV_STEP,
|
||||
MYKONOS_ERR_GAINCOMP_INV_EN,
|
||||
|
||||
MYKONOS_ERR_OBS_RX_GAINCOMP_SET_NULL_STRUCT,
|
||||
MYKONOS_ERR_OBS_RX_GAINCOMP_EN_NULL_PARAM,
|
||||
MYKONOS_ERR_OBS_RX_GAINCOMP_INV_EN,
|
||||
MYKONOS_ERR_OBS_RX_GAINCOMP_INV_OFFSET,
|
||||
MYKONOS_ERR_OBS_RX_GAINCOMP_INV_STEP,
|
||||
MYKONOS_ERR_OBS_RX_GAINCOMP_NULL_STRUCT,
|
||||
|
||||
MYKONOS_ERR_SLICER_STEP_OUT_OF_RANGE,
|
||||
MYKONOS_ERR_SLICER_INV_RX1_SEL,
|
||||
MYKONOS_ERR_SLICER_INV_RX2_SEL,
|
||||
MYKONOS_ERR_SLICER_EN_INV,
|
||||
|
||||
MYKONOS_ERR_SLICER_RX1PIN_NULL_PARM,
|
||||
MYKONOS_ERR_SLICER_RX2PIN_NULL_PARM,
|
||||
MYKONOS_ERR_SLICER_STEP_NULL_PARM,
|
||||
MYKONOS_ERR_SLICER_EN_NULL_PARM,
|
||||
|
||||
MYKONOS_ERR_SLICER_INV_OBS_RX_SEL,
|
||||
MYKONOS_ERR_SLICER_OBS_RX_STEP_OUT_OF_RANGE,
|
||||
MYKONOS_ERR_SLICER_OBS_RX_EN_INV,
|
||||
MYKONOS_ERR_SLICER_OBS_RX_EN_NULL_PARM,
|
||||
MYKONOS_ERR_SLICER_OBS_RX_STEP_NULL_PARM,
|
||||
MYKONOS_ERR_SLICER_OBS_RXPIN_NULL_PARM,
|
||||
|
||||
MYKONOS_ERR_FLOATFRMT_NULL_STRUCT,
|
||||
MYKONOS_ERR_FLOATFRMT_SET_NULL_STRUCT,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_ROUND_MODE,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_DATA_FORMAT,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_ENC_NAN,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_EXP_BITS,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_LEADING,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_RX1ATT,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_RX2ATT,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_EN,
|
||||
MYKONOS_ERR_FLOATFRMT_NULL_RX1ATT,
|
||||
MYKONOS_ERR_FLOATFRMT_NULL_RX2ATT,
|
||||
MYKONOS_ERR_FLOATFRMT_NULL_ENABLE,
|
||||
MYKONOS_ERR_FLOATFRMT_SET_INV_EN,
|
||||
MYKONOS_ERR_FLOATFRMT_SET_INV_RX1ATT,
|
||||
MYKONOS_ERR_FLOATFRMT_SET_INV_RX2ATT,
|
||||
|
||||
MYKONOS_ERR_FLOATFRMT_INV_ORXATT,
|
||||
MYKONOS_ERR_FLOATFRMT_INV_ORXEN,
|
||||
MYKONOS_ERR_FLOATFRMT_NULL_ORXATT,
|
||||
MYKONOS_ERR_FLOATFRMT_NULL_ORXENABLE,
|
||||
|
||||
MYKONOS_ERR_SETUPTEMPSENSOR_NULL_PARAM,
|
||||
MYKONOS_ERR_SETUPTEMPSENSOR_INV_TEMPDECIMATION,
|
||||
MYKONOS_ERR_SETUPTEMPSENSOR_INV_OFFSET,
|
||||
MYKONOS_ERR_SETUPTEMPSENSOR_INV_TEMPWINDOW,
|
||||
MYKONOS_ERR_GETTEMPSENSORCFG_NULL_PARAM,
|
||||
MYKONOS_ERR_READTEMPSENSOR_NULL_PARAM,
|
||||
MYKONOS_ERR_READTEMPSENSOR_NOT_LOCKED,
|
||||
|
||||
MYKONOS_ERR_GAIN_CONTROL_NOT_HYBRID,
|
||||
MYKONOS_ERR_GPIO_HYBRID_RX1_PIN,
|
||||
MYKONOS_ERR_GPIO_HYBRID_RX2_PIN,
|
||||
MYKONOS_ERR_GPIO_HYBRID_RX1_PIN_NULL_PARM,
|
||||
MYKONOS_ERR_GPIO_HYBRID_RX2_PIN_NULL_PARM,
|
||||
MYKONOS_ERR_GPIO_HYBRID_RX1_PIN_READ,
|
||||
MYKONOS_ERR_GPIO_HYBRID_RX2_PIN_READ,
|
||||
MYKONOS_ERR_AGC_OBS_NOT_IN_HYBRID,
|
||||
MYKONOS_ERR_GPIO_HYBRID_ORX_PIN,
|
||||
MYKONOS_ERR_GPIO_HYBRID_ORX_PIN_NULL_PARM,
|
||||
|
||||
MYKONOS_ERR_GAIN_CONTROL_NOT_AGC,
|
||||
MYKONOS_ERR_GPIO_AGC_SYNC_RX1_PIN,
|
||||
MYKONOS_ERR_GPIO_AGC_SYNC_RX2_PIN,
|
||||
MYKONOS_ERR_GPIO_AGC_SYNC_RX1_PIN_NULL_PARM,
|
||||
MYKONOS_ERR_GPIO_AGC_SYNC_RX2_PIN_NULL_PARM,
|
||||
MYKONOS_ERR_OBS_GAIN_CONTROL_NOT_AGC,
|
||||
MYKONOS_ERR_GPIO_AGC_SYNC_ORX_PIN,
|
||||
MYKONOS_ERR_GPIO_AGC_SYNC_ORX_PIN_NULL_PARM,
|
||||
|
||||
MYKONOS_ERR_GETGPIODRV_NULL_PARAM,
|
||||
MYKONOS_ERR_GPIO_DRV_INV_PARAM,
|
||||
|
||||
MYKONOS_ERR_GPIO_SLEW_RATE_INV_PARAM,
|
||||
MYKONOS_ERR_GPIO_GETSLEW_NULL_PARAM,
|
||||
|
||||
MYKONOS_ERR_CMOS_DRV_INV_PARAM,
|
||||
MYKONOS_ERR_CMOS_DRV_NULL_PARAM
|
||||
} mykonosGpioErr_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible Rx Slicer pin combinations
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GPIO_0_1_2 = 0, /*!< GPIO combination for RX1 */
|
||||
GPIO_5_6_7 = 1, /*!< GPIO combination for RX1 or RX2 */
|
||||
GPIO_8_9_10 = 2, /*!< GPIO combination for RX1 */
|
||||
GPIO_11_12_13 = 3 /*!< GPIO combination for RX2 */
|
||||
} mykonosRxSlicer_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible observation channel Slicer pin combinations
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GPIO_18_17_16 = 0, /*!< GPIO combination for observation channel */
|
||||
GPIO_16_15_14 = 1 /*!< GPIO combination for observation channel */
|
||||
} mykonosObsRxSlicer_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible GPIO slew rate settings
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
MYK_SLEWRATE_NONE = 0, /*!< Lower slew rate for the GPIO */
|
||||
MYK_SLEWRATE_LOW = 1, /*!< Low slew rate for the GPIO */
|
||||
MYK_SLEWRATE_MEDIUM = 2, /*!< Medium slew rate for the GPIO */
|
||||
MYK_SLEWRATE_HIGH = 3 /*!< High slew rate for the GPIO */
|
||||
} mykonosGpioSlewRate_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of CMOS pads drive strength options
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
MYK_CMOSPAD_DRV_1X = 0x00, /*!< 2.5pF load @ 65MHz */
|
||||
MYK_CMOSPAD_DRV_2X = 0x01, /*!< 5pF load @ 65MHz */
|
||||
MYK_CMOSPAD_DRV_3X = 0x03, /*!< 7.5pF load @ 65MHz */
|
||||
MYK_CMOSPAD_DRV_4X = 0x07, /*!< 10pF load @ 65MHz */
|
||||
MYK_CMOSPAD_DRV_5X = 0x0F /*!< 12.5pF load @ 65MHz */
|
||||
} mykonosCmosPadDrvStr_t;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Enumerated list for Aux ADCs
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
MYK_AUXADC_0 = 0x00, /*!< Aux ADC channel 0 */
|
||||
MYK_AUXADC_1 = 0x01, /*!< Aux ADC channel 1 */
|
||||
MYK_AUXADC_2 = 0x02, /*!< Aux ADC channel 2 */
|
||||
MYK_AUXADC_3 = 0x03, /*!< Aux ADC channel 3 */
|
||||
MYK_AUXADC_0_DIV2 = 0x04, /*!< Aux ADC channel 0 with the divider by 2 set */
|
||||
MYK_TEMPSENSOR = 0x10 /*!< Temperature sensor channel */
|
||||
} mykonosAuxAdcChannels_t;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Gain compensation settings for the main receive channels
|
||||
**/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t rx1Offset; /*!< These parameter contains the Rx1 offset word used for the gain compensation
|
||||
when the gain index is at its maximum setting.
|
||||
It has a range of 0 to 0x1F with a resolution is 0.5dB per LSB. */
|
||||
uint8_t rx2Offset; /*!< These parameter contains the Rx2 offset word used for the gain compensation
|
||||
when the gain index is at its maximum setting.
|
||||
It has a range of 0 to 0x1F with a resolution is 0.5dB per LSB. */
|
||||
uint8_t compStep; /*!< These bits contains the value in dB that the total Rx gain changes
|
||||
when there is an LSB change in the gain index according to the following settings:
|
||||
compStep | dB ramp
|
||||
---------|------------
|
||||
0 | 0.25dB
|
||||
1 | 0.5dB
|
||||
2 | 1.0dB
|
||||
3 | 2.0dB
|
||||
4 | 3.0dB
|
||||
5 | 4.0dB
|
||||
6 | 6.0dB
|
||||
7 | Not valid defaulted to 0.25dB */
|
||||
} mykonosGainComp_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Gain compensation settings for the observation channel
|
||||
**/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t obsRxOffset; /*!< These parameter contains the Rx1 offset word used for the gain compensation
|
||||
when the gain index is at its maximum setting.
|
||||
It has a range of 0 to 0x1F with a resolution is 0.5dB per LSB. */
|
||||
uint8_t compStep; /*!< These bits contains the value in dB that the total Rx gain changes
|
||||
when there is an LSB change in the gain index according to the following settings:
|
||||
compStep | dB ramp
|
||||
---------|------------
|
||||
0 | 0.25dB
|
||||
1 | 0.5dB
|
||||
2 | 1.0dB
|
||||
3 | 2.0dB
|
||||
4 | 3.0dB
|
||||
5 | 4.0dB
|
||||
6 | 6.0dB
|
||||
7 | Not valid defaulted to 0.25dB */
|
||||
} mykonosObsRxGainComp_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold floating point formatter settings for the floating point
|
||||
* number generation
|
||||
**/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t roundMode; /*!<These parameter set the round modes for the significand.
|
||||
The following settings are defined in the IEEE754 specification:
|
||||
roundMode | Round type
|
||||
----------|-----------------
|
||||
0 | RoundTiesToEven
|
||||
1 | RoundTowardsPositive
|
||||
2 | RoundTowardsNegative
|
||||
3 | RoundTowardsZero
|
||||
4 | RoundTiesToAway*/
|
||||
uint8_t dataFormat; /*!< These parameter sets the format of the 16-bit output on the JESD interface:
|
||||
Setting this to 1 then the format is from MSB to LSB to {sign, significand, exponent}.
|
||||
Clearing this bit sets the format to {sign, exponent, significand}.*/
|
||||
uint8_t encNan; /*!< if this parameter is set to 1 then the floating point formatter reserves the highest value
|
||||
of exponent for NaN to be compatible to the IEEE754 specification.
|
||||
Clearing this parameter increases the range of the exponent by one.*/
|
||||
uint8_t expBits; /*!<These parameter is used to indicate the number of exponent bits in the floating point number
|
||||
according to the following settings:
|
||||
expBits| Round type
|
||||
--------|------------------------------------------------
|
||||
0 | 2 bit exponent, 13 bit significand, 1 bit sign
|
||||
1 | 3 bit exponent, 12 bit significand, 1 bit sign
|
||||
2 | 4 bit exponent, 11 bit significand, 1 bit sign
|
||||
3 | 5 bit exponent, 10 bit significand, 1 bit sign */
|
||||
uint8_t leading; /*!< Setting this parameter hides the leading one in the the significand to be compatible to the IEEE754 specification.
|
||||
Clearing this parameter causes the leading one to be at the MSB of the significand.*/
|
||||
}mykonosFloatPntFrmt_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure used to configure the on-die Temperature Sensor
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t tempDecimation; /*!<3-bit value that controls the AuxADC decimation factor when used for temp sensor calculations;
|
||||
AuxADC_decimation = 256 * 2^tempDecimation */
|
||||
uint8_t offset; /*!< 8-bit offset that gets added to temp sensor code internally */
|
||||
uint8_t overrideFusedOffset; /*!< This bit overrides the factory-calibrated fuse offset
|
||||
and uses the value stored in the offset member */
|
||||
uint8_t tempWindow; /*!< 4-bit code with a resolution of 1?C/LSB, each time a temperature measurement is performed,
|
||||
the device compares the current temperature against the previous value.*/
|
||||
}mykonosTempSensorConfig_t;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Data structure used to store Temperature Sensor related values
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
int16_t tempCode; /*!< 16-bit signed temperature value (in deg C) that is read back */
|
||||
uint8_t windowExceeded; /*!< If the absolute value of the difference is greater than the value in temperature configuration
|
||||
tempWindow, the windowExceeded flag is set.*/
|
||||
uint8_t windowHiLo; /*!<when windowExceeded member gets set,
|
||||
this bit is set to 1 if current value is greater than previous value, else reset */
|
||||
uint8_t tempValid; /*!< When the reading is complete and a valid temperature value stored in tempCode*/
|
||||
}mykonosTempSensorStatus_t;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* T_MYKONOSGPIO_H_ */
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
/***************************************************************************//**
|
||||
* @file ad9371/src/devices/adi_hal/parameters.h
|
||||
* @brief Platform dependent parameters.
|
||||
* @author DBogdan ([email protected])
|
||||
********************************************************************************
|
||||
* Copyright 2019(c) Analog Devices, Inc.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* - The use of this software may or may not infringe the patent rights
|
||||
* of one or more patent holders. This license does not release you
|
||||
* from the requirement that you obtain separate licenses from these
|
||||
* patent holders to use this software.
|
||||
* - Use of the software either in source or binary form, must be run
|
||||
* on or directly connected to an Analog Devices Inc. component.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*******************************************************************************/
|
||||
#ifndef _PARAMETERS_H_
|
||||
#define _PARAMETERS_H_
|
||||
|
||||
/******************************************************************************/
|
||||
/***************************** Include Files **********************************/
|
||||
/******************************************************************************/
|
||||
#include "platform_drivers.h"
|
||||
#include "xparameters.h"
|
||||
|
||||
/******************************************************************************/
|
||||
/********************** Macros and Constants Definitions **********************/
|
||||
/******************************************************************************/
|
||||
#define DDR_MEM_BASEADDR XPAR_DDR_MEM_BASEADDR
|
||||
#define INTC_DEVICE_ID XPAR_SCUGIC_SINGLE_DEVICE_ID
|
||||
#define GPIO_0_DEVICE_ID XPAR_PS7_GPIO_0_DEVICE_ID
|
||||
|
||||
//#define FREQ_CTRL_DEVICE_ID XPAR_AXI_9731_FREQ_CTRL_DEVICE_ID
|
||||
//#define GAIN_CTRL_DEVICE_ID XPAR_AXI_9731_RX_GAIN_DEVICE_ID
|
||||
//#define ATTN_CTRL_DEVICE_ID XPAR_AXI_9731_TX_ATTN_DEVICE_ID
|
||||
//
|
||||
//#define FREQ_CTRL_INTR_ID XPAR_FABRIC_AXI_9731_FREQ_CTRL_IP2INTC_IRPT_INTR
|
||||
//#define GAIN_CTRL_INTR_ID XPAR_FABRIC_AXI_9731_RX_GAIN_IP2INTC_IRPT_INTR
|
||||
//#define ATTN_CTRL_INTR_ID XPAR_FABRIC_AXI_9731_TX_ATTN_IP2INTC_IRPT_INTR
|
||||
|
||||
#define GPIO_OFFSET 54
|
||||
#define AD9528_CS 1
|
||||
#define AD9371_CS 2
|
||||
|
||||
#define TX_FREQ_INTR_MASK XGPIO_IR_CH1_MASK
|
||||
#define RX_FREQ_INTR_MASK XGPIO_IR_CH2_MASK
|
||||
#define TX1_ATTN_INTR_MASK XGPIO_IR_CH1_MASK
|
||||
#define TX2_ATTN_INTR_MASK XGPIO_IR_CH2_MASK
|
||||
#define RX1_ATTN_INTR_MASK XGPIO_IR_CH1_MASK
|
||||
#define RX2_ATTN_INTR_MASK XGPIO_IR_CH2_MASK
|
||||
|
||||
#define AXI_GPIO_BANK_1 1
|
||||
#define AXI_GPIO_BANK_2 2
|
||||
|
||||
//#define DAC_GPIO_PLDDR_BYPASS GPIO_OFFSET + 60
|
||||
#define AD9528_RESET_B GPIO_OFFSET + 4
|
||||
#define AD9528_SYSREF_REQ GPIO_OFFSET + 3
|
||||
#define AD9371_RESET_B GPIO_OFFSET + 1
|
||||
|
||||
#endif
|
||||
+497
@@ -0,0 +1,497 @@
|
||||
/***************************************************************************//**
|
||||
* @file platform_drivers.c
|
||||
* @brief Implementation of Xilinx Platform Drivers.
|
||||
* @author DBogdan ([email protected])
|
||||
********************************************************************************
|
||||
* Copyright 2018(c) Analog Devices, Inc.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* - The use of this software may or may not infringe the patent rights
|
||||
* of one or more patent holders. This license does not release you
|
||||
* from the requirement that you obtain separate licenses from these
|
||||
* patent holders to use this software.
|
||||
* - Use of the software either in source or binary form, must be run
|
||||
* on or directly connected to an Analog Devices Inc. component.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*******************************************************************************/
|
||||
|
||||
/******************************************************************************/
|
||||
/***************************** Include Files **********************************/
|
||||
/******************************************************************************/
|
||||
#include <stdlib.h>
|
||||
#include <sleep.h>
|
||||
#include "platform_drivers.h"
|
||||
|
||||
/******************************************************************************/
|
||||
/************************ Functions Definitions *******************************/
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief Initialize the I2C communication peripheral.
|
||||
* @param desc - The I2C descriptor.
|
||||
* @param init_param - The structure that contains the I2C parameters.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t i2c_init(struct i2c_desc **desc,
|
||||
const struct i2c_init_param *param)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (param->type) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Free the resources allocated by i2c_init().
|
||||
* @param desc - The I2C descriptor.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t i2c_remove(struct i2c_desc *desc)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Write data to a slave device.
|
||||
* @param desc - The I2C descriptor.
|
||||
* @param data - Buffer that stores the transmission data.
|
||||
* @param bytes_number - Number of bytes to write.
|
||||
* @param stop_bit - Stop condition control.
|
||||
* Example: 0 - A stop condition will not be generated;
|
||||
* 1 - A stop condition will be generated.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t i2c_write(struct i2c_desc *desc,
|
||||
uint8_t *data,
|
||||
uint8_t bytes_number,
|
||||
uint8_t stop_bit)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (data) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (bytes_number) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (stop_bit) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Read data from a slave device.
|
||||
* @param desc - The I2C descriptor.
|
||||
* @param data - Buffer that will store the received data.
|
||||
* @param bytes_number - Number of bytes to read.
|
||||
* @param stop_bit - Stop condition control.
|
||||
* Example: 0 - A stop condition will not be generated;
|
||||
* 1 - A stop condition will be generated.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t i2c_read(struct i2c_desc *desc,
|
||||
uint8_t *data,
|
||||
uint8_t bytes_number,
|
||||
uint8_t stop_bit)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (data) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (bytes_number) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (stop_bit) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize the SPI communication peripheral.
|
||||
* @param desc - The SPI descriptor.
|
||||
* @param init_param - The structure that contains the SPI parameters.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t spi_init(struct spi_desc **desc,
|
||||
const struct spi_init_param *param)
|
||||
{
|
||||
spi_desc *descriptor;
|
||||
int32_t ret;
|
||||
|
||||
descriptor = (struct spi_desc *) calloc(1, sizeof(*descriptor));
|
||||
if (!descriptor)
|
||||
return FAILURE;
|
||||
|
||||
descriptor->mode = param->mode;
|
||||
descriptor->chip_select = param->chip_select;
|
||||
descriptor->flags = param->flags;
|
||||
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
descriptor->config = XSpiPs_LookupConfig(param->id);
|
||||
if (descriptor->config == NULL)
|
||||
goto error;
|
||||
|
||||
ret = XSpiPs_CfgInitialize(&descriptor->instance,
|
||||
descriptor->config, descriptor->config->BaseAddress);
|
||||
if (ret != 0)
|
||||
goto error;
|
||||
|
||||
XSpiPs_SetOptions(&descriptor->instance,
|
||||
XSPIPS_MASTER_OPTION |
|
||||
((descriptor->flags & SPI_CS_DECODE) ?
|
||||
XSPIPS_DECODE_SSELECT_OPTION : 0) |
|
||||
XSPIPS_FORCE_SSELECT_OPTION |
|
||||
((descriptor->mode & SPI_CPOL) ?
|
||||
XSPIPS_CLK_ACTIVE_LOW_OPTION : 0) |
|
||||
((descriptor->mode & SPI_CPHA) ?
|
||||
XSPIPS_CLK_PHASE_1_OPTION : 0));
|
||||
|
||||
XSpiPs_SetClkPrescaler(&descriptor->instance,
|
||||
XSPIPS_CLK_PRESCALE_64);
|
||||
|
||||
XSpiPs_SetSlaveSelect(&descriptor->instance, 0xf);
|
||||
#else
|
||||
ret = XSpi_Initialize(&descriptor->instance, param->id);
|
||||
if (ret != 0)
|
||||
goto error;
|
||||
|
||||
XSpi_SetOptions(&descriptor->instance,
|
||||
XSP_MASTER_OPTION |
|
||||
((descriptor->mode & SPI_CPOL) ?
|
||||
XSP_CLK_ACTIVE_LOW_OPTION : 0) |
|
||||
((descriptor->mode & SPI_CPHA) ?
|
||||
XSP_CLK_PHASE_1_OPTION : 0));
|
||||
|
||||
XSpi_Start(&descriptor->instance);
|
||||
|
||||
XSpi_IntrGlobalDisable(&descriptor->instance);
|
||||
#endif
|
||||
|
||||
*desc = descriptor;
|
||||
|
||||
return SUCCESS;
|
||||
|
||||
error:
|
||||
free(descriptor);
|
||||
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Free the resources allocated by spi_init().
|
||||
* @param desc - The SPI descriptor.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t spi_remove(struct spi_desc *desc)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Write and read data to/from SPI.
|
||||
* @param desc - The SPI descriptor.
|
||||
* @param data - The buffer with the transmitted/received data.
|
||||
* @param bytes_number - Number of bytes to write/read.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
|
||||
int32_t spi_write_and_read(struct spi_desc *desc,
|
||||
uint8_t *data,
|
||||
uint8_t bytes_number)
|
||||
{
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
XSpiPs_SetOptions(&desc->instance,
|
||||
XSPIPS_MASTER_OPTION |
|
||||
((desc->flags & SPI_CS_DECODE) ?
|
||||
XSPIPS_DECODE_SSELECT_OPTION : 0) |
|
||||
XSPIPS_FORCE_SSELECT_OPTION |
|
||||
((desc->mode & SPI_CPOL) ?
|
||||
XSPIPS_CLK_ACTIVE_LOW_OPTION : 0) |
|
||||
((desc->mode & SPI_CPHA) ?
|
||||
XSPIPS_CLK_PHASE_1_OPTION : 0));
|
||||
|
||||
XSpiPs_SetSlaveSelect(&desc->instance, desc->chip_select);
|
||||
// 0xf & ~desc->chip_select);
|
||||
XSpiPs_PolledTransfer(&desc->instance,
|
||||
data, data, bytes_number);
|
||||
#else
|
||||
XSpi_SetOptions(&desc->instance,
|
||||
XSP_MASTER_OPTION |
|
||||
((desc->mode & SPI_CPOL) ?
|
||||
XSP_CLK_ACTIVE_LOW_OPTION : 0) |
|
||||
((desc->mode & SPI_CPHA) ?
|
||||
XSP_CLK_PHASE_1_OPTION : 0));
|
||||
|
||||
XSpi_SetSlaveSelect(&desc->instance,
|
||||
desc->chip_select);
|
||||
|
||||
XSpi_Transfer(&desc->instance,
|
||||
data, data, bytes_number);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Obtain the GPIO decriptor.
|
||||
* @param desc - The GPIO descriptor.
|
||||
* @param gpio_number - The number of the GPIO.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t gpio_get(struct gpio_desc **desc,
|
||||
uint8_t gpio_number)
|
||||
{
|
||||
gpio_desc *descriptor;
|
||||
int32_t ret;
|
||||
|
||||
descriptor = (struct gpio_desc *) malloc(sizeof(*descriptor));
|
||||
if (!descriptor)
|
||||
return FAILURE;
|
||||
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
descriptor->config = XGpioPs_LookupConfig(0);
|
||||
if (descriptor->config == NULL)
|
||||
goto error;
|
||||
|
||||
ret = XGpioPs_CfgInitialize(&descriptor->instance,
|
||||
descriptor->config, descriptor->config->BaseAddr);
|
||||
if (ret != 0)
|
||||
goto error;
|
||||
#else
|
||||
ret = XGpio_Initialize(&descriptor->instance, 0);
|
||||
if (ret != 0)
|
||||
goto error;
|
||||
#endif
|
||||
|
||||
descriptor->number = gpio_number;
|
||||
|
||||
*desc = descriptor;
|
||||
|
||||
return SUCCESS;
|
||||
|
||||
error:
|
||||
free(descriptor);
|
||||
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Free the resources allocated by gpio_get().
|
||||
* @param desc - The SPI descriptor.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t gpio_remove(struct gpio_desc *desc)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enable the input direction of the specified GPIO.
|
||||
* @param desc - The GPIO descriptor.
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t gpio_direction_input(struct gpio_desc *desc)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enable the output direction of the specified GPIO.
|
||||
* @param desc - The GPIO descriptor.
|
||||
* @param value - The value.
|
||||
* Example: GPIO_HIGH
|
||||
* GPIO_LOW
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t gpio_direction_output(struct gpio_desc *desc,
|
||||
uint8_t value)
|
||||
{
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
XGpioPs_SetDirectionPin(&desc->instance, desc->number, 1);
|
||||
|
||||
XGpioPs_SetOutputEnablePin(&desc->instance, desc->number, 1);
|
||||
|
||||
XGpioPs_WritePin(&desc->instance, desc->number, value);
|
||||
#else
|
||||
uint8_t pin = desc->number;
|
||||
uint8_t channel;
|
||||
uint32_t reg_val;
|
||||
|
||||
if (pin >= 32) {
|
||||
channel = 2;
|
||||
pin -= 32;
|
||||
} else
|
||||
channel = 1;
|
||||
|
||||
reg_val = XGpio_GetDataDirection(&desc->instance, channel);
|
||||
reg_val &= ~(1 << pin);
|
||||
XGpio_SetDataDirection(&desc->instance, channel, reg_val);
|
||||
|
||||
reg_val = XGpio_DiscreteRead(&desc->instance, channel);
|
||||
if(value)
|
||||
reg_val |= (1 << pin);
|
||||
else
|
||||
reg_val &= ~(1 << pin);
|
||||
XGpio_DiscreteWrite(&desc->instance, channel, reg_val);
|
||||
#endif
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the direction of the specified GPIO.
|
||||
* @param desc - The GPIO descriptor.
|
||||
* @param direction - The direction.
|
||||
* Example: GPIO_OUT
|
||||
* GPIO_IN
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t gpio_get_direction(struct gpio_desc *desc,
|
||||
uint8_t *direction)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (direction) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the value of the specified GPIO.
|
||||
* @param desc - The GPIO descriptor.
|
||||
* @param value - The value.
|
||||
* Example: GPIO_HIGH
|
||||
* GPIO_LOW
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t gpio_set_value(struct gpio_desc *desc,
|
||||
uint8_t value)
|
||||
{
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
XGpioPs_WritePin(&desc->instance, desc->number, value);
|
||||
#else
|
||||
uint8_t pin = desc->number;
|
||||
uint8_t channel;
|
||||
uint32_t reg_val;
|
||||
|
||||
if (pin >= 32) {
|
||||
channel = 2;
|
||||
pin -= 32;
|
||||
} else
|
||||
channel = 1;
|
||||
|
||||
reg_val = XGpio_DiscreteRead(&desc->instance, channel);
|
||||
if(value)
|
||||
reg_val |= (1 << pin);
|
||||
else
|
||||
reg_val &= ~(1 << pin);
|
||||
XGpio_DiscreteWrite(&desc->instance, channel, reg_val);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the value of the specified GPIO.
|
||||
* @param desc - The GPIO descriptor.
|
||||
* @param value - The value.
|
||||
* Example: GPIO_HIGH
|
||||
* GPIO_LOW
|
||||
* @return SUCCESS in case of success, FAILURE otherwise.
|
||||
*/
|
||||
int32_t gpio_get_value(struct gpio_desc *desc,
|
||||
uint8_t *value)
|
||||
{
|
||||
if (desc) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
if (value) {
|
||||
// Unused variable - fix compiler warning
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Generate microseconds delay.
|
||||
* @param usecs - Delay in microseconds.
|
||||
* @return None.
|
||||
*/
|
||||
void udelay(uint32_t usecs)
|
||||
{
|
||||
usleep(usecs);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Generate miliseconds delay.
|
||||
* @param msecs - Delay in miliseconds.
|
||||
* @return None.
|
||||
*/
|
||||
void mdelay(uint32_t msecs)
|
||||
{
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
usleep(msecs * 1000);
|
||||
#else
|
||||
usleep(msecs * 50); // FIXME
|
||||
#endif
|
||||
}
|
||||
+223
@@ -0,0 +1,223 @@
|
||||
/***************************************************************************//**
|
||||
* @file platform_drivers.h
|
||||
* @brief Header file of Xilinx Platform Drivers.
|
||||
* @author DBogdan ([email protected])
|
||||
********************************************************************************
|
||||
* Copyright 2018(c) Analog Devices, Inc.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* - The use of this software may or may not infringe the patent rights
|
||||
* of one or more patent holders. This license does not release you
|
||||
* from the requirement that you obtain separate licenses from these
|
||||
* patent holders to use this software.
|
||||
* - Use of the software either in source or binary form, must be run
|
||||
* on or directly connected to an Analog Devices Inc. component.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef PLATFORM_DRIVERS_H_
|
||||
#define PLATFORM_DRIVERS_H_
|
||||
|
||||
/******************************************************************************/
|
||||
/***************************** Include Files **********************************/
|
||||
/******************************************************************************/
|
||||
#include <stdint.h>
|
||||
#include <xparameters.h>
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
#include <xspips.h>
|
||||
#include <xgpiops.h>
|
||||
#else
|
||||
#include <xspi.h>
|
||||
#include <xgpio.h>
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
/********************** Macros and Constants Definitions **********************/
|
||||
/******************************************************************************/
|
||||
|
||||
#define SUCCESS 0
|
||||
#define FAILURE -1
|
||||
|
||||
#define SPI_CPHA 0x01
|
||||
#define SPI_CPOL 0x02
|
||||
|
||||
#define SPI_CS_DECODE 0x01
|
||||
#define SPI_CS_DECODE_DISABLE 0x00
|
||||
|
||||
#define GPIO_OUT 0x01
|
||||
#define GPIO_IN 0x00
|
||||
|
||||
#define GPIO_HIGH 0x01
|
||||
#define GPIO_LOW 0x00
|
||||
|
||||
/******************************************************************************/
|
||||
/*************************** Types Declarations *******************************/
|
||||
/******************************************************************************/
|
||||
|
||||
typedef enum i2c_type {
|
||||
XILINX_I2C
|
||||
} i2c_type;
|
||||
|
||||
typedef struct i2c_init_param {
|
||||
enum i2c_type type;
|
||||
uint32_t id;
|
||||
uint32_t max_speed_hz;
|
||||
uint8_t slave_address;
|
||||
} i2c_init_param;
|
||||
|
||||
typedef struct i2c_desc {
|
||||
enum i2c_type type;
|
||||
uint32_t id;
|
||||
uint32_t max_speed_hz;
|
||||
uint8_t slave_address;
|
||||
} i2c_desc;
|
||||
|
||||
typedef enum spi_type {
|
||||
XILINX_SPI
|
||||
} spi_type;
|
||||
|
||||
/**
|
||||
* @enum spi_mode
|
||||
* @brief SPI configuration for clock phase and polarity.
|
||||
*/
|
||||
typedef enum spi_mode {
|
||||
/** Data on rising, shift out on falling */
|
||||
SPI_MODE_0 = (0 | 0),
|
||||
/** Data on falling, shift out on rising */
|
||||
SPI_MODE_1 = (0 | SPI_CPHA),
|
||||
/** Data on falling, shift out on rising */
|
||||
SPI_MODE_2 = (SPI_CPOL | 0),
|
||||
/** Data on rising, shift out on falling */
|
||||
SPI_MODE_3 = (SPI_CPOL | SPI_CPHA)
|
||||
} spi_mode;
|
||||
|
||||
typedef struct spi_init_param {
|
||||
enum spi_type type;
|
||||
uint32_t id;
|
||||
uint32_t max_speed_hz;
|
||||
enum spi_mode mode;
|
||||
uint8_t chip_select;
|
||||
uint32_t flags;
|
||||
} spi_init_param;
|
||||
|
||||
typedef struct spi_desc {
|
||||
enum spi_type type;
|
||||
uint32_t id;
|
||||
uint32_t max_speed_hz;
|
||||
enum spi_mode mode;
|
||||
uint8_t chip_select;
|
||||
uint32_t flags;
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
XSpiPs_Config *config;
|
||||
XSpiPs instance;
|
||||
#else
|
||||
XSpi instance;
|
||||
#endif
|
||||
} spi_desc;
|
||||
|
||||
typedef enum gpio_type {
|
||||
XILINX_GPIO
|
||||
} gpio_type;
|
||||
|
||||
typedef struct gpio_desc {
|
||||
enum gpio_type type;
|
||||
uint32_t id;
|
||||
uint8_t number;
|
||||
#ifdef _XPARAMETERS_PS_H_
|
||||
XGpioPs_Config *config;
|
||||
XGpioPs instance;
|
||||
#else
|
||||
XGpio instance;
|
||||
#endif
|
||||
} gpio_desc;
|
||||
|
||||
/******************************************************************************/
|
||||
/************************ Functions Declarations ******************************/
|
||||
/******************************************************************************/
|
||||
|
||||
/* Initialize the I2C communication peripheral. */
|
||||
int32_t i2c_init(struct i2c_desc **desc,
|
||||
const struct i2c_init_param *param);
|
||||
|
||||
/* Free the resources allocated by i2c_init(). */
|
||||
int32_t i2c_remove(struct i2c_desc *desc);
|
||||
|
||||
/* Write data to a slave device. */
|
||||
int32_t i2c_write(struct i2c_desc *desc,
|
||||
uint8_t *data,
|
||||
uint8_t bytes_number,
|
||||
uint8_t stop_bit);
|
||||
|
||||
/* Read data from a slave device. */
|
||||
int32_t i2c_read(struct i2c_desc *desc,
|
||||
uint8_t *data,
|
||||
uint8_t bytes_number,
|
||||
uint8_t stop_bit);
|
||||
|
||||
/* Initialize the SPI communication peripheral. */
|
||||
int32_t spi_init(struct spi_desc **desc,
|
||||
const struct spi_init_param *param);
|
||||
|
||||
/* Free the resources allocated by spi_init() */
|
||||
int32_t spi_remove(struct spi_desc *desc);
|
||||
|
||||
/* Write and read data to/from SPI. */
|
||||
int32_t spi_write_and_read(struct spi_desc *desc,
|
||||
uint8_t *data,
|
||||
uint8_t bytes_number);
|
||||
|
||||
/* Obtain the GPIO decriptor. */
|
||||
int32_t gpio_get(struct gpio_desc **desc,
|
||||
uint8_t gpio_number);
|
||||
|
||||
/* Free the resources allocated by gpio_get() */
|
||||
int32_t gpio_remove(struct gpio_desc *desc);
|
||||
|
||||
/* Enable the input direction of the specified GPIO. */
|
||||
int32_t gpio_direction_input(struct gpio_desc *desc);
|
||||
|
||||
/* Enable the output direction of the specified GPIO. */
|
||||
int32_t gpio_direction_output(struct gpio_desc *desc,
|
||||
uint8_t value);
|
||||
|
||||
/* Get the direction of the specified GPIO. */
|
||||
int32_t gpio_get_direction(struct gpio_desc *desc,
|
||||
uint8_t *direction);
|
||||
|
||||
/* Set the value of the specified GPIO. */
|
||||
int32_t gpio_set_value(struct gpio_desc *desc,
|
||||
uint8_t value);
|
||||
|
||||
/* Get the value of the specified GPIO. */
|
||||
int32_t gpio_get_value(struct gpio_desc *desc,
|
||||
uint8_t *value);
|
||||
|
||||
/* Generate microseconds delay. */
|
||||
void udelay(uint32_t usecs);
|
||||
|
||||
/* Generate miliseconds delay. */
|
||||
void mdelay(uint32_t msecs);
|
||||
|
||||
#endif // PLATFORM_DRIVERS_H_
|
||||
+288
@@ -0,0 +1,288 @@
|
||||
/*******************************************************************/
|
||||
/* */
|
||||
/* This file is automatically generated by linker script generator.*/
|
||||
/* */
|
||||
/* Version: 2019.1.3 */
|
||||
/* */
|
||||
/* Copyright (c) 2010-2016 Xilinx, Inc. All rights reserved. */
|
||||
/* */
|
||||
/* Description : Cortex-A9 Linker Script */
|
||||
/* */
|
||||
/*******************************************************************/
|
||||
|
||||
_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x2000;
|
||||
_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x2000;
|
||||
|
||||
_ABORT_STACK_SIZE = DEFINED(_ABORT_STACK_SIZE) ? _ABORT_STACK_SIZE : 1024;
|
||||
_SUPERVISOR_STACK_SIZE = DEFINED(_SUPERVISOR_STACK_SIZE) ? _SUPERVISOR_STACK_SIZE : 2048;
|
||||
_IRQ_STACK_SIZE = DEFINED(_IRQ_STACK_SIZE) ? _IRQ_STACK_SIZE : 1024;
|
||||
_FIQ_STACK_SIZE = DEFINED(_FIQ_STACK_SIZE) ? _FIQ_STACK_SIZE : 1024;
|
||||
_UNDEF_STACK_SIZE = DEFINED(_UNDEF_STACK_SIZE) ? _UNDEF_STACK_SIZE : 1024;
|
||||
|
||||
/* Define Memories in the system */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
ps7_ddr_0 : ORIGIN = 0x100000, LENGTH = 0x1FF00000
|
||||
ps7_qspi_linear_0 : ORIGIN = 0xFC000000, LENGTH = 0x1000000
|
||||
ps7_ram_0 : ORIGIN = 0x0, LENGTH = 0x30000
|
||||
ps7_ram_1 : ORIGIN = 0xFFFF0000, LENGTH = 0xFE00
|
||||
}
|
||||
|
||||
/* Specify the default entry point to the program */
|
||||
|
||||
ENTRY(_vector_table)
|
||||
|
||||
/* Define the sections, and where they are mapped in memory */
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
KEEP (*(.vectors))
|
||||
*(.boot)
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
*(.gnu.linkonce.t.*)
|
||||
*(.plt)
|
||||
*(.gnu_warning)
|
||||
*(.gcc_execpt_table)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
*(.vfp11_veneer)
|
||||
*(.ARM.extab)
|
||||
*(.gnu.linkonce.armextab.*)
|
||||
} > ps7_ddr_0
|
||||
|
||||
.init : {
|
||||
KEEP (*(.init))
|
||||
} > ps7_ddr_0
|
||||
|
||||
.fini : {
|
||||
KEEP (*(.fini))
|
||||
} > ps7_ddr_0
|
||||
|
||||
.rodata : {
|
||||
__rodata_start = .;
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
*(.gnu.linkonce.r.*)
|
||||
__rodata_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.rodata1 : {
|
||||
__rodata1_start = .;
|
||||
*(.rodata1)
|
||||
*(.rodata1.*)
|
||||
__rodata1_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.sdata2 : {
|
||||
__sdata2_start = .;
|
||||
*(.sdata2)
|
||||
*(.sdata2.*)
|
||||
*(.gnu.linkonce.s2.*)
|
||||
__sdata2_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.sbss2 : {
|
||||
__sbss2_start = .;
|
||||
*(.sbss2)
|
||||
*(.sbss2.*)
|
||||
*(.gnu.linkonce.sb2.*)
|
||||
__sbss2_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.data : {
|
||||
__data_start = .;
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
*(.jcr)
|
||||
*(.got)
|
||||
*(.got.plt)
|
||||
__data_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.data1 : {
|
||||
__data1_start = .;
|
||||
*(.data1)
|
||||
*(.data1.*)
|
||||
__data1_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.got : {
|
||||
*(.got)
|
||||
} > ps7_ddr_0
|
||||
|
||||
.ctors : {
|
||||
__CTOR_LIST__ = .;
|
||||
___CTORS_LIST___ = .;
|
||||
KEEP (*crtbegin.o(.ctors))
|
||||
KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
__CTOR_END__ = .;
|
||||
___CTORS_END___ = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.dtors : {
|
||||
__DTOR_LIST__ = .;
|
||||
___DTORS_LIST___ = .;
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
__DTOR_END__ = .;
|
||||
___DTORS_END___ = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.fixup : {
|
||||
__fixup_start = .;
|
||||
*(.fixup)
|
||||
__fixup_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.eh_frame : {
|
||||
*(.eh_frame)
|
||||
} > ps7_ddr_0
|
||||
|
||||
.eh_framehdr : {
|
||||
__eh_framehdr_start = .;
|
||||
*(.eh_framehdr)
|
||||
__eh_framehdr_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.gcc_except_table : {
|
||||
*(.gcc_except_table)
|
||||
} > ps7_ddr_0
|
||||
|
||||
.mmu_tbl (ALIGN(16384)) : {
|
||||
__mmu_tbl_start = .;
|
||||
*(.mmu_tbl)
|
||||
__mmu_tbl_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.ARM.exidx : {
|
||||
__exidx_start = .;
|
||||
*(.ARM.exidx*)
|
||||
*(.gnu.linkonce.armexidix.*.*)
|
||||
__exidx_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.preinit_array : {
|
||||
__preinit_array_start = .;
|
||||
KEEP (*(SORT(.preinit_array.*)))
|
||||
KEEP (*(.preinit_array))
|
||||
__preinit_array_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.init_array : {
|
||||
__init_array_start = .;
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
__init_array_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.fini_array : {
|
||||
__fini_array_start = .;
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
KEEP (*(.fini_array))
|
||||
__fini_array_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.ARM.attributes : {
|
||||
__ARM.attributes_start = .;
|
||||
*(.ARM.attributes)
|
||||
__ARM.attributes_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.sdata : {
|
||||
__sdata_start = .;
|
||||
*(.sdata)
|
||||
*(.sdata.*)
|
||||
*(.gnu.linkonce.s.*)
|
||||
__sdata_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.sbss (NOLOAD) : {
|
||||
__sbss_start = .;
|
||||
*(.sbss)
|
||||
*(.sbss.*)
|
||||
*(.gnu.linkonce.sb.*)
|
||||
__sbss_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.tdata : {
|
||||
__tdata_start = .;
|
||||
*(.tdata)
|
||||
*(.tdata.*)
|
||||
*(.gnu.linkonce.td.*)
|
||||
__tdata_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.tbss : {
|
||||
__tbss_start = .;
|
||||
*(.tbss)
|
||||
*(.tbss.*)
|
||||
*(.gnu.linkonce.tb.*)
|
||||
__tbss_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.bss (NOLOAD) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
__bss_end = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 );
|
||||
|
||||
_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );
|
||||
|
||||
/* Generate Stack and Heap definitions */
|
||||
|
||||
.heap (NOLOAD) : {
|
||||
. = ALIGN(16);
|
||||
_heap = .;
|
||||
HeapBase = .;
|
||||
_heap_start = .;
|
||||
. += _HEAP_SIZE;
|
||||
_heap_end = .;
|
||||
HeapLimit = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
.stack (NOLOAD) : {
|
||||
. = ALIGN(16);
|
||||
_stack_end = .;
|
||||
. += _STACK_SIZE;
|
||||
. = ALIGN(16);
|
||||
_stack = .;
|
||||
__stack = _stack;
|
||||
. = ALIGN(16);
|
||||
_irq_stack_end = .;
|
||||
. += _IRQ_STACK_SIZE;
|
||||
. = ALIGN(16);
|
||||
__irq_stack = .;
|
||||
_supervisor_stack_end = .;
|
||||
. += _SUPERVISOR_STACK_SIZE;
|
||||
. = ALIGN(16);
|
||||
__supervisor_stack = .;
|
||||
_abort_stack_end = .;
|
||||
. += _ABORT_STACK_SIZE;
|
||||
. = ALIGN(16);
|
||||
__abort_stack = .;
|
||||
_fiq_stack_end = .;
|
||||
. += _FIQ_STACK_SIZE;
|
||||
. = ALIGN(16);
|
||||
__fiq_stack = .;
|
||||
_undef_stack_end = .;
|
||||
. += _UNDEF_STACK_SIZE;
|
||||
. = ALIGN(16);
|
||||
__undef_stack = .;
|
||||
} > ps7_ddr_0
|
||||
|
||||
_end = .;
|
||||
}
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* Description: main.c
|
||||
*
|
||||
* Author: Fan Hao
|
||||
* Date: 2021-11-13 13:19
|
||||
* Last Editors: Fan Hao
|
||||
* Last Edit Time: [2022-03-28 20:32]
|
||||
*
|
||||
* Revisions: Rev 0.0
|
||||
* History:
|
||||
* [2021-11-13]: Initial edition.
|
||||
* [2022-03-28]: Add bit error test mode.
|
||||
*
|
||||
* Copyright(c) 2021 Beijing Institute of Technology.
|
||||
* Lab of Communication and Networking
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/***************************** Include Files *********************************/
|
||||
#include <stdint.h>
|
||||
#include "xscugic.h" // The generic interrupt controller driver component
|
||||
#include "xil_exception.h" // ARM Cortex A9 specific exception related APIs
|
||||
#include "sleep.h" // Sleep APIs for Cortex A9
|
||||
#include "xil_cache.h"
|
||||
#include "hardware/headless.h"
|
||||
|
||||
/************************** Constant Definitions *****************************/
|
||||
|
||||
/************************** Function Prototypes ******************************/
|
||||
|
||||
/*********************** Driver Instance Definitions **************************/
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* @brief Main function, initialize all the device needed, initialize
|
||||
* interrupt system, halt in while(1) wait for event interrupt.
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return
|
||||
*
|
||||
******************************************************************************/
|
||||
int main(void) {
|
||||
int Status;
|
||||
Xil_ICacheEnable();
|
||||
Xil_DCacheDisable();
|
||||
|
||||
Status = HARDWARE_initialize();
|
||||
|
||||
if (Status == SUCCESS) {
|
||||
xil_printf("Hardware Init SUCCESS! \r\n");
|
||||
}
|
||||
else {
|
||||
xil_printf("Hardware Init FAILED! \r\n");
|
||||
}
|
||||
|
||||
return Status;
|
||||
} // main
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="org.eclipse.cdt.core.default.config.764086390">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.core.defaultConfigDataProvider" id="org.eclipse.cdt.core.default.config.764086390" moduleId="org.eclipse.cdt.core.settings" name="Configuration">
|
||||
<externalSettings/>
|
||||
<extensions/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
</cproject>
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>dl814_dj_bsp</name>
|
||||
<comment>Created by SDK v2019.1</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.make.core.makeBuilder</name>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.core.errorOutputParser</key>
|
||||
<value>org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.MakeErrorParser;</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.build.arguments</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.build.command</key>
|
||||
<value>make</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.build.target.auto</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.build.target.clean</key>
|
||||
<value>clean</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.build.target.inc</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enabledIncrementalBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.environment</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||
<value>false</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.xilinx.sdk.sw.SwProjectNature</nature>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.make.core.makeNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
THIRPARTY=false
|
||||
HW_PROJECT_REFERENCE=system_top_hw_platform_0
|
||||
PROCESSOR=ps7_cortexa9_0
|
||||
MSS_FILE=system.mss
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
# Makefile generated by Xilinx.
|
||||
|
||||
PROCESSOR = ps7_cortexa9_0
|
||||
LIBRARIES = ${PROCESSOR}/lib/libxil.a
|
||||
BSP_MAKEFILES := $(wildcard $(PROCESSOR)/libsrc/*/src/Makefile)
|
||||
SUBDIRS := $(patsubst %/Makefile, %, $(BSP_MAKEFILES))
|
||||
|
||||
ifneq (,$(findstring win,$(RDI_PLATFORM)))
|
||||
SHELL = CMD
|
||||
endif
|
||||
|
||||
all: libs
|
||||
@echo 'Finished building libraries'
|
||||
|
||||
include: $(addsuffix /make.include,$(SUBDIRS))
|
||||
|
||||
libs: $(addsuffix /make.libs,$(SUBDIRS))
|
||||
|
||||
clean: $(addsuffix /make.clean,$(SUBDIRS))
|
||||
|
||||
$(PROCESSOR)/lib/libxil.a: $(PROCESSOR)/lib/libxil_init.a
|
||||
cp -f $< $@
|
||||
|
||||
%/make.include: $(if $(wildcard $(PROCESSOR)/lib/libxil_init.a),$(PROCESSOR)/lib/libxil.a,)
|
||||
@echo "Running Make include in $(subst /make.include,,$@)"
|
||||
$(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=arm-none-eabi-gcc" "ARCHIVER=arm-none-eabi-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -nostartfiles -g -Wall -Wextra"
|
||||
|
||||
%/make.libs: include
|
||||
@echo "Running Make libs in $(subst /make.libs,,$@)"
|
||||
$(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=arm-none-eabi-gcc" "ARCHIVER=arm-none-eabi-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -nostartfiles -g -Wall -Wextra"
|
||||
|
||||
%/make.clean:
|
||||
$(MAKE) -C $(subst /make.clean,,$@) -s clean
|
||||
clean:
|
||||
rm -f ${PROCESSOR}/lib/libxil.a
|
||||
+225
@@ -0,0 +1,225 @@
|
||||
|
||||
PARAMETER VERSION = 2.2.0
|
||||
|
||||
|
||||
BEGIN OS
|
||||
PARAMETER OS_NAME = standalone
|
||||
PARAMETER OS_VER = 7.0
|
||||
PARAMETER PROC_INSTANCE = ps7_cortexa9_0
|
||||
PARAMETER stdin = ps7_uart_1
|
||||
PARAMETER stdout = ps7_uart_1
|
||||
END
|
||||
|
||||
|
||||
BEGIN PROCESSOR
|
||||
PARAMETER DRIVER_NAME = cpu_cortexa9
|
||||
PARAMETER DRIVER_VER = 2.7
|
||||
PARAMETER HW_INSTANCE = ps7_cortexa9_0
|
||||
END
|
||||
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = jesd204b_jesd204_phy
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = jesd204b_jesd204_rx
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = jesd204b_jesd204_tx
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_afi_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_afi_1
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_afi_2
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_afi_3
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = coresightps_dcc
|
||||
PARAMETER DRIVER_VER = 1.5
|
||||
PARAMETER HW_INSTANCE = ps7_coresight_comp_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = ddrps
|
||||
PARAMETER DRIVER_VER = 1.0
|
||||
PARAMETER HW_INSTANCE = ps7_ddr_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_ddrc_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = devcfg
|
||||
PARAMETER DRIVER_VER = 3.5
|
||||
PARAMETER HW_INSTANCE = ps7_dev_cfg_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = dmaps
|
||||
PARAMETER DRIVER_VER = 2.4
|
||||
PARAMETER HW_INSTANCE = ps7_dma_ns
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = dmaps
|
||||
PARAMETER DRIVER_VER = 2.4
|
||||
PARAMETER HW_INSTANCE = ps7_dma_s
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_globaltimer_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = gpiops
|
||||
PARAMETER DRIVER_VER = 3.5
|
||||
PARAMETER HW_INSTANCE = ps7_gpio_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_gpv_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_intc_dist_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_iop_bus_config_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_l2cachec_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_ocmc_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_pl310_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_pmu_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = qspips
|
||||
PARAMETER DRIVER_VER = 3.6
|
||||
PARAMETER HW_INSTANCE = ps7_qspi_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_qspi_linear_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_ram_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_ram_1
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_scuc_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = scugic
|
||||
PARAMETER DRIVER_VER = 4.0
|
||||
PARAMETER HW_INSTANCE = ps7_scugic_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = scutimer
|
||||
PARAMETER DRIVER_VER = 2.1
|
||||
PARAMETER HW_INSTANCE = ps7_scutimer_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = scuwdt
|
||||
PARAMETER DRIVER_VER = 2.1
|
||||
PARAMETER HW_INSTANCE = ps7_scuwdt_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = generic
|
||||
PARAMETER DRIVER_VER = 2.0
|
||||
PARAMETER HW_INSTANCE = ps7_slcr_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = spips
|
||||
PARAMETER DRIVER_VER = 3.2
|
||||
PARAMETER HW_INSTANCE = ps7_spi_0
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = uartps
|
||||
PARAMETER DRIVER_VER = 3.7
|
||||
PARAMETER HW_INSTANCE = ps7_uart_1
|
||||
END
|
||||
|
||||
BEGIN DRIVER
|
||||
PARAMETER DRIVER_NAME = xadcps
|
||||
PARAMETER DRIVER_VER = 2.3
|
||||
PARAMETER HW_INSTANCE = ps7_xadc_0
|
||||
END
|
||||
|
||||
|
||||
BIN
Binary file not shown.
@@ -343,24 +343,22 @@ assign tx_2_q = tx_data_q;
|
||||
// <--------------------------------------------------------------------------->
|
||||
// <--------------------- insert transmitter logic below ---------------------->
|
||||
// <--------------------------------------------------------------------------->
|
||||
wire [ 1:0] waveform_sel;
|
||||
wire [ 2:0] waveform_sel;
|
||||
wire sweep_on ;
|
||||
wire [31:0] freq_set ;
|
||||
wire [ 1:0] iq_sel ;
|
||||
wire [ 3:0] bb_rshift ;
|
||||
|
||||
tx_qpsk #(
|
||||
.DATA_WIDTH (16 ),
|
||||
.CLK_FREQ (122880000 ),
|
||||
.SQUARE_INTERP (32 )
|
||||
) u_tx_qpsk
|
||||
tx_control u_tx_wave
|
||||
(
|
||||
.clk (sys_clk ), // input clk
|
||||
.rst (sys_rst ), // input rst
|
||||
.sys_clk (sys_clk ), // input sys_clk
|
||||
.sys_rst (sys_rst ), // input sys_rst
|
||||
.sig_clk (sig_clk ), // input sig_clk
|
||||
.sig_rst (sig_rst ), // input sig_rst
|
||||
.tx_data_i (tx_data_i ), // output [15:0] tx_data_i
|
||||
.tx_data_q (tx_data_q ), // output [15:0] tx_data_q
|
||||
// debug ports
|
||||
.waveform_sel (waveform_sel ), // input [ 1:0] waveform_sel
|
||||
.waveform_sel (waveform_sel ), // input [ 2:0] waveform_sel
|
||||
.sweep_on (sweep_on ), // input sweep_on
|
||||
.freq_set (freq_set ), // input [31:0] freq_set
|
||||
.iq_sel (iq_sel ), // input [ 1:0] iq_sel
|
||||
@@ -418,7 +416,7 @@ ila_ctrl_signal u_ila_ctrl_signal
|
||||
vio_manual_ctrl u_vio_manual_ctrl
|
||||
(
|
||||
.clk (sys_clk ), // input wire clk
|
||||
.probe_out0 (waveform_sel ), // output wire [1 : 0] probe_out0
|
||||
.probe_out0 (waveform_sel ), // output wire [2 : 0] probe_out0
|
||||
.probe_out1 (sweep_on ), // output wire [0 : 0] probe_out1
|
||||
.probe_out2 (freq_set ), // output wire [31 : 0] probe_out2
|
||||
.probe_out3 (iq_sel ), // output wire [1 : 0] probe_out3
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
`timescale 1ns / 1ps
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Company:
|
||||
// Engineer:
|
||||
//
|
||||
// Create Date: 2023/03/21 18:35:38
|
||||
// Design Name:
|
||||
// Module Name: tx_control
|
||||
// Project Name:
|
||||
// Target Devices:
|
||||
// Tool Versions:
|
||||
// Description:
|
||||
//
|
||||
// Dependencies:
|
||||
//
|
||||
// Revision:
|
||||
// Revision 0.01 - File Created
|
||||
// Additional Comments:
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
module tx_control
|
||||
(
|
||||
input sys_clk , // 122.88MHz
|
||||
input sys_rst ,
|
||||
input sig_clk , // 48MHz
|
||||
input sig_rst ,
|
||||
|
||||
output [15:0] tx_data_i ,
|
||||
output [15:0] tx_data_q ,
|
||||
// debug ports
|
||||
input [ 2:0] waveform_sel ,
|
||||
input sweep_on ,
|
||||
input [31:0] freq_set ,
|
||||
input [ 1:0] iq_sel ,
|
||||
input [ 3:0] bb_rshift
|
||||
);
|
||||
|
||||
// pn seq
|
||||
wire [15:0] tx_pn_seq_i;
|
||||
wire [15:0] tx_pn_seq_q;
|
||||
|
||||
tx_pn_seq_6mcps #(
|
||||
.DATA_WIDTH (16)
|
||||
) u_tx_pn_seq
|
||||
(
|
||||
.sys_clk (sys_clk ), // 122.88MHz
|
||||
.sys_rst (sys_rst ),
|
||||
.sig_clk (sig_clk ), // 48MHz
|
||||
.sig_rst (sig_rst ),
|
||||
|
||||
.tx_data_i (tx_pn_seq_i),
|
||||
.tx_data_q (tx_pn_seq_q)
|
||||
);
|
||||
|
||||
// qpsk
|
||||
wire [15:0] tx_qpsk_i;
|
||||
wire [15:0] tx_qpsk_q;
|
||||
|
||||
tx_qpsk #(
|
||||
.DATA_WIDTH (16 ),
|
||||
.SQUARE_INTERP (32 ),
|
||||
.CLK_FREQ (122880000 )
|
||||
) u_tx_qpsk
|
||||
(
|
||||
.clk (sys_clk ),
|
||||
.rst (sys_rst ),
|
||||
.tx_data_i (tx_qpsk_i ),
|
||||
.tx_data_q (tx_qpsk_q ),
|
||||
// debug ports
|
||||
.waveform_sel (waveform_sel[1:0] ),
|
||||
.sweep_on (sweep_on ),
|
||||
.freq_set (freq_set ),
|
||||
.iq_sel (iq_sel ),
|
||||
.bb_rshift (bb_rshift )
|
||||
);
|
||||
|
||||
// output
|
||||
reg [15:0] tx_data_buf_i = 'b0;
|
||||
reg [15:0] tx_data_buf_q = 'b0;
|
||||
|
||||
assign tx_data_i = tx_data_buf_i;
|
||||
assign tx_data_q = tx_data_buf_q;
|
||||
|
||||
always @(posedge sys_clk) begin
|
||||
if (sys_rst) begin
|
||||
tx_data_buf_i <= 'b0;
|
||||
tx_data_buf_q <= 'b0;
|
||||
end
|
||||
else if (waveform_sel) begin
|
||||
tx_data_buf_i <= tx_pn_seq_i;
|
||||
tx_data_buf_q <= tx_pn_seq_q;
|
||||
end
|
||||
else begin
|
||||
tx_data_buf_i <= tx_qpsk_i;
|
||||
tx_data_buf_q <= tx_qpsk_q;
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -93,7 +93,7 @@ always @(posedge sig_clk) begin
|
||||
end
|
||||
end
|
||||
else begin
|
||||
hsq_wave[0] <= hsq_data ? {1'b0,{(MAX_DATA_WIDTH-2){1'b1}},1'b1} : {1'b1,{(MAX_DATA_WIDTH-2){1'b0}},1'b0};
|
||||
hsq_wave[0] <= hsq_data ? {1'b0,{(MAX_DATA_WIDTH-2){1'b1}},1'b1} : {1'b1,{(MAX_DATA_WIDTH-2){1'b0}},1'b1};
|
||||
hsq_wave[1] <= hsq_data ? {1'b1,{(MAX_DATA_WIDTH-2){1'b0}},1'b1} : {1'b0,{(MAX_DATA_WIDTH-2){1'b1}},1'b1};
|
||||
end
|
||||
end
|
||||
@@ -122,8 +122,8 @@ fifo_48m_to_122p88m u_fifo_cdc
|
||||
(
|
||||
.wr_rst_busy ( ), // output wire wr_rst_busy
|
||||
.rd_rst_busy ( ), // output wire rd_rst_busy
|
||||
.m_aclk (sig_clk ), // input wire m_aclk
|
||||
.s_aclk (sys_clk ), // input wire s_aclk
|
||||
.m_aclk (sys_clk ), // input wire m_aclk
|
||||
.s_aclk (sig_clk ), // input wire s_aclk
|
||||
.s_aresetn (~sig_rst ), // input wire s_aresetn
|
||||
.s_axis_tvalid (cdc_fifo_s_axis_valid[m] ), // input wire s_axis_tvalid
|
||||
.s_axis_tready (cdc_fifo_s_axis_ready[m] ), // output wire s_axis_tready
|
||||
|
||||
+220
@@ -0,0 +1,220 @@
|
||||
# smq7k410t_b9361
|
||||
|
||||
## Timing Assertions Section
|
||||
|
||||
## Physical Constraints Section
|
||||
|
||||
# Clocks
|
||||
set_property -dict {PACKAGE_PIN L25 IOSTANDARD LVCMOS33} [get_ports clk_25m ] ;# CLK_25M
|
||||
set_property -dict {PACKAGE_PIN F20 IOSTANDARD LVDS_25 } [get_ports clk_250m_p ] ;# CLK_250M_P
|
||||
set_property -dict {PACKAGE_PIN D26 IOSTANDARD LVCMOS18} [get_ports ad9361_1_buffer_clk ] ;# B9361_1_CLK_OUT
|
||||
set_property -dict {PACKAGE_PIN H14 IOSTANDARD LVCMOS18} [get_ports ad9361_2_buffer_clk ] ;# B9361_2_CLK_OUT
|
||||
|
||||
# HMC7044-1 Interface
|
||||
set_property -dict {PACKAGE_PIN J23 IOSTANDARD LVCMOS33} [get_ports ad9516_spi_clk ] ;# GM4526C_SPI_SCLK
|
||||
set_property -dict {PACKAGE_PIN M19 IOSTANDARD LVCMOS33} [get_ports ad9516_spi_csn ] ;# GM4526C_SPI_CSB
|
||||
set_property -dict {PACKAGE_PIN L21 IOSTANDARD LVCMOS33} [get_ports ad9516_spi_mosi ] ;# GM4526C_SPI_SDIO
|
||||
set_property -dict {PACKAGE_PIN K23 IOSTANDARD LVCMOS33} [get_ports ad9516_spi_miso ] ;# GM4526C_SPI_SDO
|
||||
|
||||
set_property -dict {PACKAGE_PIN L23 IOSTANDARD LVCMOS33} [get_ports ad9516_refmon ] ;# GM4526C_REFMON
|
||||
set_property -dict {PACKAGE_PIN K24 IOSTANDARD LVCMOS33} [get_ports ad9516_ld ] ;# GM4526C_LD
|
||||
set_property -dict {PACKAGE_PIN J24 IOSTANDARD LVCMOS33} [get_ports ad9516_status ] ;# GM4526C_STATUS
|
||||
set_property -dict {PACKAGE_PIN K21 IOSTANDARD LVCMOS33} [get_ports ad9516_pd_b ] ;# GM4526C_PDB
|
||||
set_property -dict {PACKAGE_PIN L22 IOSTANDARD LVCMOS33} [get_ports ad9516_reset_b ] ;# GM4526C_RESETB
|
||||
set_property -dict {PACKAGE_PIN J21 IOSTANDARD LVCMOS33} [get_ports ad9516_sync_b ] ;# GM4526C_SYNCB
|
||||
|
||||
# AD9361-1 Interface
|
||||
set_property -dict {PACKAGE_PIN D27 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data_clk ] ;# B9361_1_DATA_CLK
|
||||
set_property -dict {PACKAGE_PIN B27 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_frame ] ;# B9361_1_RX_FRAME
|
||||
set_property -dict {PACKAGE_PIN A23 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[0] ] ;# B9361_1_P0_00_TX0_N
|
||||
set_property -dict {PACKAGE_PIN B23 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[1] ] ;# B9361_1_P0_01_TX0_P
|
||||
set_property -dict {PACKAGE_PIN D23 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[2] ] ;# B9361_1_P0_02_TX1_N
|
||||
set_property -dict {PACKAGE_PIN E23 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[3] ] ;# B9361_1_P0_03_TX1_P
|
||||
set_property -dict {PACKAGE_PIN D24 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[4] ] ;# B9361_1_P0_04_TX2_N
|
||||
set_property -dict {PACKAGE_PIN E24 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[5] ] ;# B9361_1_P0_05_TX2_P
|
||||
set_property -dict {PACKAGE_PIN E25 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[6] ] ;# B9361_1_P0_06_TX3_N
|
||||
set_property -dict {PACKAGE_PIN F25 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[7] ] ;# B9361_1_P0_07_TX3_P
|
||||
set_property -dict {PACKAGE_PIN E26 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[8] ] ;# B9361_1_P0_08_TX4_N
|
||||
set_property -dict {PACKAGE_PIN F26 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[9] ] ;# B9361_1_P0_09_TX4_P
|
||||
set_property -dict {PACKAGE_PIN G24 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[10] ] ;# B9361_1_P0_10_TX5_N
|
||||
set_property -dict {PACKAGE_PIN G23 IOSTANDARD LVCMOS18} [get_ports ad9361_1_rx_data[11] ] ;# B9361_1_P0_11_TX5_P
|
||||
|
||||
set_property -dict {PACKAGE_PIN E28 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_fb_clk ] ;# B9361_1_FB_CLK
|
||||
set_property -dict {PACKAGE_PIN G27 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_frame ] ;# B9361_1_TX_FRAME
|
||||
set_property -dict {PACKAGE_PIN E30 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[0] ] ;# B9361_1_P1_00_RX0_N
|
||||
set_property -dict {PACKAGE_PIN E29 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[1] ] ;# B9361_1_P1_01_RX0_P
|
||||
set_property -dict {PACKAGE_PIN C30 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[2] ] ;# B9361_1_P1_02_RX1_N
|
||||
set_property -dict {PACKAGE_PIN D29 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[3] ] ;# B9361_1_P1_03_RX1_P
|
||||
set_property -dict {PACKAGE_PIN A30 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[4] ] ;# B9361_1_P1_04_RX2_N
|
||||
set_property -dict {PACKAGE_PIN B30 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[5] ] ;# B9361_1_P1_05_RX2_P
|
||||
set_property -dict {PACKAGE_PIN B29 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[6] ] ;# B9361_1_P1_06_RX3_N
|
||||
set_property -dict {PACKAGE_PIN C29 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[7] ] ;# B9361_1_P1_07_RX3_P
|
||||
set_property -dict {PACKAGE_PIN F28 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[8] ] ;# B9361_1_P1_08_RX4_N
|
||||
set_property -dict {PACKAGE_PIN G28 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[9] ] ;# B9361_1_P1_09_RX4_P
|
||||
set_property -dict {PACKAGE_PIN H25 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[10] ] ;# B9361_1_P1_10_RX5_N
|
||||
set_property -dict {PACKAGE_PIN H24 IOSTANDARD LVCMOS18} [get_ports ad9361_1_tx_data[11] ] ;# B9361_1_P1_11_RX5_P
|
||||
|
||||
set_property -dict {PACKAGE_PIN H20 IOSTANDARD LVCMOS18} [get_ports ad9361_1_spi_clk ] ;# B9361_1_SPI_CLK
|
||||
set_property -dict {PACKAGE_PIN J18 IOSTANDARD LVCMOS18} [get_ports ad9361_1_spi_csn ] ;# B9361_1_SPI_ENB
|
||||
set_property -dict {PACKAGE_PIN G20 IOSTANDARD LVCMOS18} [get_ports ad9361_1_spi_mosi ] ;# B9361_1_SPI_DI
|
||||
set_property -dict {PACKAGE_PIN G19 IOSTANDARD LVCMOS18} [get_ports ad9361_1_spi_miso ] ;# B9361_1_SPI_DO
|
||||
|
||||
set_property -dict {PACKAGE_PIN K18 IOSTANDARD LVCMOS18} [get_ports ad9361_1_reset_b ] ;# B9361_1_RESETB
|
||||
set_property -dict {PACKAGE_PIN J17 IOSTANDARD LVCMOS18} [get_ports ad9361_1_en_agc ] ;# B9361_1_EN_AGC
|
||||
set_property -dict {PACKAGE_PIN H17 IOSTANDARD LVCMOS18} [get_ports ad9361_1_enable ] ;# B9361_1_ENABLE
|
||||
set_property -dict {PACKAGE_PIN A27 IOSTANDARD LVCMOS18} [get_ports ad9361_1_txnrx ] ;# B9361_1_TXNRX
|
||||
|
||||
set_property -dict {PACKAGE_PIN L18 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_in[0] ] ;# B9361_1_CTRL_IN0
|
||||
set_property -dict {PACKAGE_PIN H19 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_in[1] ] ;# B9361_1_CTRL_IN1
|
||||
set_property -dict {PACKAGE_PIN J19 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_in[2] ] ;# B9361_1_CTRL_IN2
|
||||
set_property -dict {PACKAGE_PIN L17 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_in[3] ] ;# B9361_1_CTRL_IN3
|
||||
|
||||
set_property -dict {PACKAGE_PIN H21 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[0] ] ;# B9361_1_CTRL_OUT0
|
||||
set_property -dict {PACKAGE_PIN K20 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[1] ] ;# B9361_1_CTRL_OUT1
|
||||
set_property -dict {PACKAGE_PIN H22 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[2] ] ;# B9361_1_CTRL_OUT2
|
||||
set_property -dict {PACKAGE_PIN G22 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[3] ] ;# B9361_1_CTRL_OUT3
|
||||
set_property -dict {PACKAGE_PIN C21 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[4] ] ;# B9361_1_CTRL_OUT4
|
||||
set_property -dict {PACKAGE_PIN F22 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[5] ] ;# B9361_1_CTRL_OUT5
|
||||
set_property -dict {PACKAGE_PIN K19 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[6] ] ;# B9361_1_CTRL_OUT6
|
||||
set_property -dict {PACKAGE_PIN D21 IOSTANDARD LVCMOS18} [get_ports ad9361_1_ctrl_out[7] ] ;# B9361_1_CTRL_OUT7
|
||||
set_property -dict {PACKAGE_PIN D22 IOSTANDARD LVCMOS18} [get_ports ad9361_sync ] ;# B9361_SYNC
|
||||
|
||||
# AD9361-2 Interface
|
||||
set_property -dict {PACKAGE_PIN D12 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data_clk ] ;# B9361_2_DATA_CLK
|
||||
set_property -dict {PACKAGE_PIN H15 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_frame ] ;# B9361_2_RX_FRAME
|
||||
set_property -dict {PACKAGE_PIN L13 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[0] ] ;# B9361_2_P0_00_TX0_N
|
||||
set_property -dict {PACKAGE_PIN L12 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[1] ] ;# B9361_2_P0_01_TX0_P
|
||||
set_property -dict {PACKAGE_PIN K11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[2] ] ;# B9361_2_P0_02_TX1_N
|
||||
set_property -dict {PACKAGE_PIN L11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[3] ] ;# B9361_2_P0_03_TX1_P
|
||||
set_property -dict {PACKAGE_PIN J13 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[4] ] ;# B9361_2_P0_04_TX2_N
|
||||
set_property -dict {PACKAGE_PIN K13 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[5] ] ;# B9361_2_P0_05_TX2_P
|
||||
set_property -dict {PACKAGE_PIN J14 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[6] ] ;# B9361_2_P0_06_TX3_N
|
||||
set_property -dict {PACKAGE_PIN K14 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[7] ] ;# B9361_2_P0_07_TX3_P
|
||||
set_property -dict {PACKAGE_PIN K15 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[8] ] ;# B9361_2_P0_08_TX4_N
|
||||
set_property -dict {PACKAGE_PIN L15 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[9] ] ;# B9361_2_P0_09_TX4_P
|
||||
set_property -dict {PACKAGE_PIN K16 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[10] ] ;# B9361_2_P0_10_TX5_N
|
||||
set_property -dict {PACKAGE_PIN L16 IOSTANDARD LVCMOS18} [get_ports ad9361_2_rx_data[11] ] ;# B9361_2_P0_11_TX5_P
|
||||
|
||||
set_property -dict {PACKAGE_PIN F12 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_fb_clk ] ;# B9361_2_FB_CLK
|
||||
set_property -dict {PACKAGE_PIN D14 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_frame ] ;# B9361_2_TX_FRAME
|
||||
set_property -dict {PACKAGE_PIN E16 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[0] ] ;# B9361_2_P1_00_RX0_N
|
||||
set_property -dict {PACKAGE_PIN F15 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[1] ] ;# B9361_2_P1_01_RX0_P
|
||||
set_property -dict {PACKAGE_PIN E15 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[2] ] ;# B9361_2_P1_02_RX1_N
|
||||
set_property -dict {PACKAGE_PIN E14 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[3] ] ;# B9361_2_P1_03_RX1_P
|
||||
set_property -dict {PACKAGE_PIN B12 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[4] ] ;# B9361_2_P1_04_RX2_N
|
||||
set_property -dict {PACKAGE_PIN C12 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[5] ] ;# B9361_2_P1_05_RX2_P
|
||||
set_property -dict {PACKAGE_PIN A12 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[6] ] ;# B9361_2_P1_06_RX3_N
|
||||
set_property -dict {PACKAGE_PIN A11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[7] ] ;# B9361_2_P1_07_RX3_P
|
||||
set_property -dict {PACKAGE_PIN C11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[8] ] ;# B9361_2_P1_08_RX4_N
|
||||
set_property -dict {PACKAGE_PIN D11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[9] ] ;# B9361_2_P1_09_RX4_P
|
||||
set_property -dict {PACKAGE_PIN E11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[10] ] ;# B9361_2_P1_10_RX5_N
|
||||
set_property -dict {PACKAGE_PIN F11 IOSTANDARD LVCMOS18} [get_ports ad9361_2_tx_data[11] ] ;# B9361_2_P1_11_RX5_P
|
||||
|
||||
set_property -dict {PACKAGE_PIN C16 IOSTANDARD LVCMOS18} [get_ports ad9361_2_spi_clk ] ;# B9361_2_SPI_CLK
|
||||
set_property -dict {PACKAGE_PIN D16 IOSTANDARD LVCMOS18} [get_ports ad9361_2_spi_csn ] ;# B9361_2_SPI_ENB
|
||||
set_property -dict {PACKAGE_PIN C17 IOSTANDARD LVCMOS18} [get_ports ad9361_2_spi_mosi ] ;# B9361_2_SPI_DI
|
||||
set_property -dict {PACKAGE_PIN F18 IOSTANDARD LVCMOS18} [get_ports ad9361_2_spi_miso ] ;# B9361_2_SPI_DO
|
||||
|
||||
set_property -dict {PACKAGE_PIN G18 IOSTANDARD LVCMOS18} [get_ports ad9361_2_reset_b ] ;# B9361_2_RESETB
|
||||
set_property -dict {PACKAGE_PIN D19 IOSTANDARD LVCMOS18} [get_ports ad9361_2_en_agc ] ;# B9361_2_EN_AGC
|
||||
set_property -dict {PACKAGE_PIN E19 IOSTANDARD LVCMOS18} [get_ports ad9361_2_enable ] ;# B9361_2_ENABLE
|
||||
set_property -dict {PACKAGE_PIN G15 IOSTANDARD LVCMOS18} [get_ports ad9361_2_txnrx ] ;# B9361_2_TXNRX
|
||||
|
||||
set_property -dict {PACKAGE_PIN C20 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_in[0] ] ;# B9361_2_CTRL_IN0
|
||||
set_property -dict {PACKAGE_PIN B17 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_in[1] ] ;# B9361_2_CTRL_IN1
|
||||
set_property -dict {PACKAGE_PIN G17 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_in[2] ] ;# B9361_2_CTRL_IN2
|
||||
set_property -dict {PACKAGE_PIN F17 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_in[3] ] ;# B9361_2_CTRL_IN3
|
||||
|
||||
set_property -dict {PACKAGE_PIN B20 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[0] ] ;# B9361_2_CTRL_OUT0
|
||||
set_property -dict {PACKAGE_PIN A20 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[1] ] ;# B9361_2_CTRL_OUT1
|
||||
set_property -dict {PACKAGE_PIN B18 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[2] ] ;# B9361_2_CTRL_OUT2
|
||||
set_property -dict {PACKAGE_PIN A17 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[3] ] ;# B9361_2_CTRL_OUT3
|
||||
set_property -dict {PACKAGE_PIN A16 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[4] ] ;# B9361_2_CTRL_OUT4
|
||||
set_property -dict {PACKAGE_PIN A18 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[5] ] ;# B9361_2_CTRL_OUT5
|
||||
set_property -dict {PACKAGE_PIN A21 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[6] ] ;# B9361_2_CTRL_OUT6
|
||||
set_property -dict {PACKAGE_PIN B22 IOSTANDARD LVCMOS18} [get_ports ad9361_2_ctrl_out[7] ] ;# B9361_2_CTRL_OUT7
|
||||
|
||||
# Phased-Array Control
|
||||
set_property -dict {PACKAGE_PIN T26 IOSTANDARD LVTTL } [get_ports ant_cin ] ;# ANT_CIN0
|
||||
set_property -dict {PACKAGE_PIN T25 IOSTANDARD LVTTL } [get_ports ant_din0 ] ;# ANT_DIN0
|
||||
set_property -dict {PACKAGE_PIN U25 IOSTANDARD LVTTL } [get_ports ant_din1 ] ;# ANT_DIN1
|
||||
set_property -dict {PACKAGE_PIN U27 IOSTANDARD LVTTL } [get_ports ant_cout ] ;# ANT_COUT0
|
||||
set_property -dict {PACKAGE_PIN U29 IOSTANDARD LVTTL } [get_ports ant_dout0 ] ;# ANT_DOUT0
|
||||
set_property -dict {PACKAGE_PIN U30 IOSTANDARD LVTTL } [get_ports ant_dout1 ] ;# ANT_DOUT1
|
||||
set_property -dict {PACKAGE_PIN V26 IOSTANDARD LVTTL } [get_ports ant_tr ] ;# ANT_TR_IN
|
||||
set_property -dict {PACKAGE_PIN V27 IOSTANDARD LVTTL } [get_ports ant_dary ] ;# ANT_DARY_IN
|
||||
|
||||
# RF Synthesizer Control
|
||||
set_property -dict {PACKAGE_PIN AK29 IOSTANDARD LVTTL } [get_ports rf_standby ] ;# RF_STANDBY
|
||||
set_property -dict {PACKAGE_PIN AJ28 IOSTANDARD LVTTL } [get_ports rf_sw_pll ] ;# RF_SW_PLL
|
||||
set_property -dict {PACKAGE_PIN AK30 IOSTANDARD LVTTL } [get_ports rf_t ] ;# RF_T
|
||||
set_property -dict {PACKAGE_PIN AG29 IOSTANDARD LVTTL } [get_ports rf_r ] ;# RF_R
|
||||
set_property -dict {PACKAGE_PIN AB25 IOSTANDARD LVTTL } [get_ports rf_sw_bpf ] ;# RF_SW_BPF
|
||||
set_property -dict {PACKAGE_PIN AE28 IOSTANDARD LVTTL } [get_ports rf_sclk1 ] ;# RF_SCLK1
|
||||
set_property -dict {PACKAGE_PIN AA26 IOSTANDARD LVTTL } [get_ports rf_sdio1 ] ;# RF_SDIO1
|
||||
set_property -dict {PACKAGE_PIN AE30 IOSTANDARD LVTTL } [get_ports rf_cs1 ] ;# RF_CS1
|
||||
set_property -dict {PACKAGE_PIN AH29 IOSTANDARD LVTTL } [get_ports rf_ld1 ] ;# RF_LD1
|
||||
set_property -dict {PACKAGE_PIN AD28 IOSTANDARD LVTTL } [get_ports rf_sclk2 ] ;# RF_SCLK2
|
||||
set_property -dict {PACKAGE_PIN AD27 IOSTANDARD LVTTL } [get_ports rf_sdio2 ] ;# RF_SDIO2
|
||||
set_property -dict {PACKAGE_PIN AB27 IOSTANDARD LVTTL } [get_ports rf_cs2 ] ;# RF_CS2
|
||||
set_property -dict {PACKAGE_PIN AC27 IOSTANDARD LVTTL } [get_ports rf_ld2 ] ;# RF_LD2
|
||||
set_property -dict {PACKAGE_PIN AC30 IOSTANDARD LVTTL } [get_ports rf_sclk3 ] ;# RF_SCLK3
|
||||
set_property -dict {PACKAGE_PIN AE29 IOSTANDARD LVTTL } [get_ports rf_sdio3 ] ;# RF_SDIO3
|
||||
set_property -dict {PACKAGE_PIN AB28 IOSTANDARD LVTTL } [get_ports rf_cs3 ] ;# RF_CS3
|
||||
set_property -dict {PACKAGE_PIN AD29 IOSTANDARD LVTTL } [get_ports rf_ld3 ] ;# RF_LD3
|
||||
set_property -dict {PACKAGE_PIN AB30 IOSTANDARD LVTTL } [get_ports rf_tmgc_16 ] ;# RF_TMGC_16
|
||||
set_property -dict {PACKAGE_PIN AC29 IOSTANDARD LVTTL } [get_ports rf_tmgc_8 ] ;# RF_TMGC_8
|
||||
set_property -dict {PACKAGE_PIN AA27 IOSTANDARD LVTTL } [get_ports rf_tmgc_4 ] ;# RF_TMGC_4
|
||||
set_property -dict {PACKAGE_PIN AB29 IOSTANDARD LVTTL } [get_ports rf_tmgc_2 ] ;# RF_TMGC_2
|
||||
set_property -dict {PACKAGE_PIN AA30 IOSTANDARD LVTTL } [get_ports rf_tmgc_1 ] ;# RF_TMGC_1
|
||||
set_property -dict {PACKAGE_PIN AA28 IOSTANDARD LVTTL } [get_ports rf_rmgc_16 ] ;# RF_RMGC_16
|
||||
set_property -dict {PACKAGE_PIN Y28 IOSTANDARD LVTTL } [get_ports rf_rmgc_8 ] ;# RF_RMGC_8
|
||||
set_property -dict {PACKAGE_PIN Y29 IOSTANDARD LVTTL } [get_ports rf_rmgc_4 ] ;# RF_RMGC_4
|
||||
set_property -dict {PACKAGE_PIN Y30 IOSTANDARD LVTTL } [get_ports rf_rmgc_2 ] ;# RF_RMGC_2
|
||||
set_property -dict {PACKAGE_PIN Y26 IOSTANDARD LVTTL } [get_ports rf_rmgc_1 ] ;# RF_RMGC_1
|
||||
set_property -dict {PACKAGE_PIN W28 IOSTANDARD LVTTL } [get_ports rf_enable ] ;# RF_ENABLE
|
||||
set_property -dict {PACKAGE_PIN AA25 IOSTANDARD LVTTL } [get_ports rf_sc ] ;# RF_SC
|
||||
set_property -dict {PACKAGE_PIN W29 IOSTANDARD LVTTL } [get_ports rf_sd ] ;# RF_SD
|
||||
set_property -dict {PACKAGE_PIN Y25 IOSTANDARD LVTTL } [get_ports rf_endsyn ] ;# RF_END_SYN
|
||||
set_property -dict {PACKAGE_PIN W27 IOSTANDARD LVTTL } [get_ports rf_sdout ] ;# RF_SDOUT
|
||||
set_property -dict {PACKAGE_PIN AF28 IOSTANDARD LVTTL } [get_ports rf_dq_wd ] ;# RF_DQ_WD
|
||||
set_property -dict {PACKAGE_PIN AF30 IOSTANDARD LVTTL } [get_ports rf_sw_rx ] ;# RF_SW_RX
|
||||
|
||||
# LVDS for Time Synchronization
|
||||
set_property -dict {PACKAGE_PIN J22 IOSTANDARD LVCMOS33} [get_ports lvds_in_1 ] ;# LVDS_IN1
|
||||
set_property -dict {PACKAGE_PIN L20 IOSTANDARD LVCMOS33} [get_ports lvds_out_1 ] ;# LVDS_OUT1
|
||||
|
||||
set_property -dict {PACKAGE_PIN M20 IOSTANDARD LVCMOS33} [get_ports lvds_in_2 ] ;# LVDS_IN2
|
||||
set_property -dict {PACKAGE_PIN J29 IOSTANDARD LVCMOS33} [get_ports lvds_out_2 ] ;# LVDS_OUT2
|
||||
|
||||
# Debug IO
|
||||
set_property -dict {PACKAGE_PIN U22 IOSTANDARD LVCMOS33} [get_ports uart1_txd ] ;# UART_1_TXD
|
||||
set_property -dict {PACKAGE_PIN V19 IOSTANDARD LVCMOS33} [get_ports uart1_rxd ] ;# UART_1_RXD
|
||||
set_property -dict {PACKAGE_PIN U23 IOSTANDARD LVCMOS33} [get_ports uart2_txd ] ;# UART_2_TXD
|
||||
set_property -dict {PACKAGE_PIN V20 IOSTANDARD LVCMOS33} [get_ports uart2_rxd ] ;# UART_2_RXD
|
||||
set_property -dict {PACKAGE_PIN U24 IOSTANDARD LVCMOS33} [get_ports uart3_txd ] ;# UART_3_TXD
|
||||
set_property -dict {PACKAGE_PIN V21 IOSTANDARD LVCMOS33} [get_ports uart3_rxd ] ;# UART_3_RXD
|
||||
|
||||
set_property -dict {PACKAGE_PIN V25 IOSTANDARD LVCMOS33} [get_ports debug_io_1 ] ;# DEBUG_IO_1
|
||||
set_property -dict {PACKAGE_PIN W21 IOSTANDARD LVCMOS33} [get_ports debug_io_2 ] ;# DEBUG_IO_2
|
||||
set_property -dict {PACKAGE_PIN W26 IOSTANDARD LVCMOS33} [get_ports debug_io_3 ] ;# DEBUG_IO_3
|
||||
set_property -dict {PACKAGE_PIN V22 IOSTANDARD LVCMOS33} [get_ports debug_io_4 ] ;# DEBUG_IO_4
|
||||
set_property -dict {PACKAGE_PIN V24 IOSTANDARD LVCMOS33} [get_ports debug_io_5 ] ;# DEBUG_IO_5
|
||||
set_property -dict {PACKAGE_PIN W22 IOSTANDARD LVCMOS33} [get_ports debug_io_6 ] ;# DEBUG_IO_6
|
||||
set_property -dict {PACKAGE_PIN W24 IOSTANDARD LVCMOS33} [get_ports debug_io_7 ] ;# DEBUG_IO_7
|
||||
set_property -dict {PACKAGE_PIN W23 IOSTANDARD LVCMOS33} [get_ports debug_io_8 ] ;# DEBUG_IO_8
|
||||
|
||||
set_property -dict {PACKAGE_PIN Y23 IOSTANDARD LVDS_25 } [get_ports debug_io_00_p ] ;# DEBUG_IO_00_P
|
||||
set_property -dict {PACKAGE_PIN Y21 IOSTANDARD LVDS_25 } [get_ports debug_io_01_p ] ;# DEBUG_IO_01_P
|
||||
set_property -dict {PACKAGE_PIN AA20 IOSTANDARD LVDS_25 } [get_ports debug_io_02_p ] ;# DEBUG_IO_02_P
|
||||
set_property -dict {PACKAGE_PIN AA22 IOSTANDARD LVDS_25 } [get_ports debug_io_03_p ] ;# DEBUG_IO_03_P
|
||||
set_property -dict {PACKAGE_PIN AC20 IOSTANDARD LVDS_25 } [get_ports debug_io_04_p ] ;# DEBUG_IO_04_P
|
||||
set_property -dict {PACKAGE_PIN AD21 IOSTANDARD LVDS_25 } [get_ports debug_io_05_p ] ;# DEBUG_IO_05_P
|
||||
set_property -dict {PACKAGE_PIN AC22 IOSTANDARD LVDS_25 } [get_ports debug_io_06_p ] ;# DEBUG_IO_06_P
|
||||
set_property -dict {PACKAGE_PIN AB22 IOSTANDARD LVDS_25 } [get_ports debug_io_07_p ] ;# DEBUG_IO_07_P
|
||||
set_property -dict {PACKAGE_PIN AC24 IOSTANDARD LVDS_25 } [get_ports debug_io_08_p ] ;# DEBUG_IO_08_P
|
||||
|
||||
# FLASH
|
||||
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
|
||||
set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design]
|
||||
set_property CONFIG_MODE SPIx4 [current_design]
|
||||
@@ -0,0 +1,4 @@
|
||||
set_false_path -from [get_pins {u_system_bd_wrapper/system_bd_i/axi_gpio/U0/gpio_core_1/Dual.gpio_Data_Out_reg[8]/C}] -to [get_pins u_rx_pre_process/u_ad9361_phase_cal/ad9361_recal_d1_reg/D]
|
||||
set_false_path -from [get_pins {u_system_bd_wrapper/system_bd_i/axi_gpio/U0/gpio_core_1/Dual.gpio_Data_Out_reg[10]/C}] -to [get_pins u_rx_pre_process/u_ad9361_phase_cal/ad9361_1_cal_start_d1_reg/D]
|
||||
set_false_path -from [get_pins {u_system_bd_wrapper/system_bd_i/axi_gpio/U0/gpio_core_1/Dual.gpio_Data_Out_reg[7]/C}] -to [get_pins u_tx_pre_process/ad9361_tx_switch_d1_reg/D]
|
||||
set_false_path -from [get_pins {u_system_bd_wrapper/system_bd_i/axi_gpio/U0/gpio_core_1/Dual.gpio_Data_Out_reg[9]/C}] -to [get_pins u_rx_pre_process/u_ad9361_phase_cal/ad9361_2_cal_start_d1_reg/D]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
The files in this directory structure are automatically generated and managed by Vivado. Editing these files is not recommended.
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
// DO NOT MODIFY THIS FILE.
|
||||
|
||||
// IP VLNV: xilinx.com:ip:blk_mem_gen:8.4
|
||||
// IP Revision: 3
|
||||
|
||||
// The following must be inserted into your Verilog file for this
|
||||
// core to be instantiated. Change the instance name and port connections
|
||||
// (in parentheses) to your own signal names.
|
||||
|
||||
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
|
||||
COSLUT_10_16bit your_instance_name (
|
||||
.clka(clka), // input wire clka
|
||||
.addra(addra), // input wire [12 : 0] addra
|
||||
.douta(douta), // output wire [17 : 0] douta
|
||||
.clkb(clkb), // input wire clkb
|
||||
.addrb(addrb), // input wire [12 : 0] addrb
|
||||
.doutb(doutb) // output wire [17 : 0] doutb
|
||||
);
|
||||
// INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
|
||||
// You must compile the wrapper file COSLUT_10_16bit.v when simulating
|
||||
// the core, COSLUT_10_16bit. When compiling the wrapper file, be sure to
|
||||
// reference the Verilog simulation library.
|
||||
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--
|
||||
-- DO NOT MODIFY THIS FILE.
|
||||
|
||||
-- IP VLNV: xilinx.com:ip:blk_mem_gen:8.4
|
||||
-- IP Revision: 3
|
||||
|
||||
-- The following code must appear in the VHDL architecture header.
|
||||
|
||||
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||
COMPONENT COSLUT_10_16bit
|
||||
PORT (
|
||||
clka : IN STD_LOGIC;
|
||||
addra : IN STD_LOGIC_VECTOR(12 DOWNTO 0);
|
||||
douta : OUT STD_LOGIC_VECTOR(17 DOWNTO 0);
|
||||
clkb : IN STD_LOGIC;
|
||||
addrb : IN STD_LOGIC_VECTOR(12 DOWNTO 0);
|
||||
doutb : OUT STD_LOGIC_VECTOR(17 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT;
|
||||
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||
|
||||
-- The following code must appear in the VHDL architecture
|
||||
-- body. Substitute your own instance name and net names.
|
||||
|
||||
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||
your_instance_name : COSLUT_10_16bit
|
||||
PORT MAP (
|
||||
clka => clka,
|
||||
addra => addra,
|
||||
douta => douta,
|
||||
clkb => clkb,
|
||||
addrb => addrb,
|
||||
doutb => doutb
|
||||
);
|
||||
-- INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
|
||||
-- You must compile the wrapper file COSLUT_10_16bit.vhd when simulating
|
||||
-- the core, COSLUT_10_16bit. When compiling the wrapper file, be sure to
|
||||
-- reference the VHDL simulation library.
|
||||
|
||||
+2445
File diff suppressed because it is too large
Load Diff
+2784
File diff suppressed because it is too large
Load Diff
+25
@@ -0,0 +1,25 @@
|
||||
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
// --------------------------------------------------------------------------------
|
||||
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
// Date : Sat Mar 18 23:34:22 2023
|
||||
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
// Command : write_verilog -force -mode synth_stub
|
||||
// D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/COSLUT_10_16bit_synth_1/COSLUT_10_16bit_stub.v
|
||||
// Design : COSLUT_10_16bit
|
||||
// Purpose : Stub declaration of top-level module interface
|
||||
// Device : xc7k410tffg900-2
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
|
||||
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
|
||||
// Please paste the declaration into a Verilog source file or add the file as an additional source.
|
||||
(* x_core_info = "blk_mem_gen_v8_4_3,Vivado 2019.1.3" *)
|
||||
module COSLUT_10_16bit(clka, addra, douta, clkb, addrb, doutb)
|
||||
/* synthesis syn_black_box black_box_pad_pin="clka,addra[12:0],douta[17:0],clkb,addrb[12:0],doutb[17:0]" */;
|
||||
input clka;
|
||||
input [12:0]addra;
|
||||
output [17:0]douta;
|
||||
input clkb;
|
||||
input [12:0]addrb;
|
||||
output [17:0]doutb;
|
||||
endmodule
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
-- --------------------------------------------------------------------------------
|
||||
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
-- Date : Sat Mar 18 23:34:22 2023
|
||||
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
-- Command : write_vhdl -force -mode synth_stub
|
||||
-- D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/COSLUT_10_16bit_synth_1/COSLUT_10_16bit_stub.vhdl
|
||||
-- Design : COSLUT_10_16bit
|
||||
-- Purpose : Stub declaration of top-level module interface
|
||||
-- Device : xc7k410tffg900-2
|
||||
-- --------------------------------------------------------------------------------
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
|
||||
entity COSLUT_10_16bit is
|
||||
Port (
|
||||
clka : in STD_LOGIC;
|
||||
addra : in STD_LOGIC_VECTOR ( 12 downto 0 );
|
||||
douta : out STD_LOGIC_VECTOR ( 17 downto 0 );
|
||||
clkb : in STD_LOGIC;
|
||||
addrb : in STD_LOGIC_VECTOR ( 12 downto 0 );
|
||||
doutb : out STD_LOGIC_VECTOR ( 17 downto 0 )
|
||||
);
|
||||
|
||||
end COSLUT_10_16bit;
|
||||
|
||||
architecture stub of COSLUT_10_16bit is
|
||||
attribute syn_black_box : boolean;
|
||||
attribute black_box_pad_pin : string;
|
||||
attribute syn_black_box of stub : architecture is true;
|
||||
attribute black_box_pad_pin of stub : architecture is "clka,addra[12:0],douta[17:0],clkb,addrb[12:0],doutb[17:0]";
|
||||
attribute x_core_info : string;
|
||||
attribute x_core_info of stub : architecture is "blk_mem_gen_v8_4_3,Vivado 2019.1.3";
|
||||
begin
|
||||
end;
|
||||
+221
@@ -0,0 +1,221 @@
|
||||
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
// DO NOT MODIFY THIS FILE.
|
||||
|
||||
|
||||
// IP VLNV: xilinx.com:ip:blk_mem_gen:8.4
|
||||
// IP Revision: 3
|
||||
|
||||
`timescale 1ns/1ps
|
||||
|
||||
(* DowngradeIPIdentifiedWarnings = "yes" *)
|
||||
module COSLUT_10_16bit (
|
||||
clka,
|
||||
addra,
|
||||
douta,
|
||||
clkb,
|
||||
addrb,
|
||||
doutb
|
||||
);
|
||||
|
||||
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTA CLK" *)
|
||||
input wire clka;
|
||||
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTA ADDR" *)
|
||||
input wire [12 : 0] addra;
|
||||
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME BRAM_PORTA, MEM_SIZE 8192, MEM_WIDTH 32, MEM_ECC NONE, MASTER_TYPE OTHER, READ_LATENCY 1" *)
|
||||
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTA DOUT" *)
|
||||
output wire [17 : 0] douta;
|
||||
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTB CLK" *)
|
||||
input wire clkb;
|
||||
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTB ADDR" *)
|
||||
input wire [12 : 0] addrb;
|
||||
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME BRAM_PORTB, MEM_SIZE 8192, MEM_WIDTH 32, MEM_ECC NONE, MASTER_TYPE OTHER, READ_LATENCY 1" *)
|
||||
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTB DOUT" *)
|
||||
output wire [17 : 0] doutb;
|
||||
|
||||
blk_mem_gen_v8_4_3 #(
|
||||
.C_FAMILY("kintex7"),
|
||||
.C_XDEVICEFAMILY("kintex7"),
|
||||
.C_ELABORATION_DIR("./"),
|
||||
.C_INTERFACE_TYPE(0),
|
||||
.C_AXI_TYPE(1),
|
||||
.C_AXI_SLAVE_TYPE(0),
|
||||
.C_USE_BRAM_BLOCK(0),
|
||||
.C_ENABLE_32BIT_ADDRESS(0),
|
||||
.C_CTRL_ECC_ALGO("NONE"),
|
||||
.C_HAS_AXI_ID(0),
|
||||
.C_AXI_ID_WIDTH(4),
|
||||
.C_MEM_TYPE(4),
|
||||
.C_BYTE_SIZE(9),
|
||||
.C_ALGORITHM(1),
|
||||
.C_PRIM_TYPE(1),
|
||||
.C_LOAD_INIT_FILE(1),
|
||||
.C_INIT_FILE_NAME("COSLUT_10_16bit.mif"),
|
||||
.C_INIT_FILE("COSLUT_10_16bit.mem"),
|
||||
.C_USE_DEFAULT_DATA(0),
|
||||
.C_DEFAULT_DATA("0"),
|
||||
.C_HAS_RSTA(0),
|
||||
.C_RST_PRIORITY_A("CE"),
|
||||
.C_RSTRAM_A(0),
|
||||
.C_INITA_VAL("0"),
|
||||
.C_HAS_ENA(0),
|
||||
.C_HAS_REGCEA(0),
|
||||
.C_USE_BYTE_WEA(0),
|
||||
.C_WEA_WIDTH(1),
|
||||
.C_WRITE_MODE_A("WRITE_FIRST"),
|
||||
.C_WRITE_WIDTH_A(18),
|
||||
.C_READ_WIDTH_A(18),
|
||||
.C_WRITE_DEPTH_A(8192),
|
||||
.C_READ_DEPTH_A(8192),
|
||||
.C_ADDRA_WIDTH(13),
|
||||
.C_HAS_RSTB(0),
|
||||
.C_RST_PRIORITY_B("CE"),
|
||||
.C_RSTRAM_B(0),
|
||||
.C_INITB_VAL("0"),
|
||||
.C_HAS_ENB(0),
|
||||
.C_HAS_REGCEB(0),
|
||||
.C_USE_BYTE_WEB(0),
|
||||
.C_WEB_WIDTH(1),
|
||||
.C_WRITE_MODE_B("WRITE_FIRST"),
|
||||
.C_WRITE_WIDTH_B(18),
|
||||
.C_READ_WIDTH_B(18),
|
||||
.C_WRITE_DEPTH_B(8192),
|
||||
.C_READ_DEPTH_B(8192),
|
||||
.C_ADDRB_WIDTH(13),
|
||||
.C_HAS_MEM_OUTPUT_REGS_A(1),
|
||||
.C_HAS_MEM_OUTPUT_REGS_B(1),
|
||||
.C_HAS_MUX_OUTPUT_REGS_A(1),
|
||||
.C_HAS_MUX_OUTPUT_REGS_B(1),
|
||||
.C_MUX_PIPELINE_STAGES(0),
|
||||
.C_HAS_SOFTECC_INPUT_REGS_A(0),
|
||||
.C_HAS_SOFTECC_OUTPUT_REGS_B(0),
|
||||
.C_USE_SOFTECC(0),
|
||||
.C_USE_ECC(0),
|
||||
.C_EN_ECC_PIPE(0),
|
||||
.C_READ_LATENCY_A(1),
|
||||
.C_READ_LATENCY_B(1),
|
||||
.C_HAS_INJECTERR(0),
|
||||
.C_SIM_COLLISION_CHECK("ALL"),
|
||||
.C_COMMON_CLK(0),
|
||||
.C_DISABLE_WARN_BHV_COLL(0),
|
||||
.C_EN_SLEEP_PIN(0),
|
||||
.C_USE_URAM(0),
|
||||
.C_EN_RDADDRA_CHG(0),
|
||||
.C_EN_RDADDRB_CHG(0),
|
||||
.C_EN_DEEPSLEEP_PIN(0),
|
||||
.C_EN_SHUTDOWN_PIN(0),
|
||||
.C_EN_SAFETY_CKT(0),
|
||||
.C_DISABLE_WARN_BHV_RANGE(0),
|
||||
.C_COUNT_36K_BRAM("4"),
|
||||
.C_COUNT_18K_BRAM("0"),
|
||||
.C_EST_POWER_SUMMARY("Estimated Power for IP : 9.414399 mW")
|
||||
) inst (
|
||||
.clka(clka),
|
||||
.rsta(1'D0),
|
||||
.ena(1'D0),
|
||||
.regcea(1'D0),
|
||||
.wea(1'B0),
|
||||
.addra(addra),
|
||||
.dina(18'B0),
|
||||
.douta(douta),
|
||||
.clkb(clkb),
|
||||
.rstb(1'D0),
|
||||
.enb(1'D0),
|
||||
.regceb(1'D0),
|
||||
.web(1'B0),
|
||||
.addrb(addrb),
|
||||
.dinb(18'B0),
|
||||
.doutb(doutb),
|
||||
.injectsbiterr(1'D0),
|
||||
.injectdbiterr(1'D0),
|
||||
.eccpipece(1'D0),
|
||||
.sbiterr(),
|
||||
.dbiterr(),
|
||||
.rdaddrecc(),
|
||||
.sleep(1'D0),
|
||||
.deepsleep(1'D0),
|
||||
.shutdown(1'D0),
|
||||
.rsta_busy(),
|
||||
.rstb_busy(),
|
||||
.s_aclk(1'H0),
|
||||
.s_aresetn(1'D0),
|
||||
.s_axi_awid(4'B0),
|
||||
.s_axi_awaddr(32'B0),
|
||||
.s_axi_awlen(8'B0),
|
||||
.s_axi_awsize(3'B0),
|
||||
.s_axi_awburst(2'B0),
|
||||
.s_axi_awvalid(1'D0),
|
||||
.s_axi_awready(),
|
||||
.s_axi_wdata(18'B0),
|
||||
.s_axi_wstrb(1'B0),
|
||||
.s_axi_wlast(1'D0),
|
||||
.s_axi_wvalid(1'D0),
|
||||
.s_axi_wready(),
|
||||
.s_axi_bid(),
|
||||
.s_axi_bresp(),
|
||||
.s_axi_bvalid(),
|
||||
.s_axi_bready(1'D0),
|
||||
.s_axi_arid(4'B0),
|
||||
.s_axi_araddr(32'B0),
|
||||
.s_axi_arlen(8'B0),
|
||||
.s_axi_arsize(3'B0),
|
||||
.s_axi_arburst(2'B0),
|
||||
.s_axi_arvalid(1'D0),
|
||||
.s_axi_arready(),
|
||||
.s_axi_rid(),
|
||||
.s_axi_rdata(),
|
||||
.s_axi_rresp(),
|
||||
.s_axi_rlast(),
|
||||
.s_axi_rvalid(),
|
||||
.s_axi_rready(1'D0),
|
||||
.s_axi_injectsbiterr(1'D0),
|
||||
.s_axi_injectdbiterr(1'D0),
|
||||
.s_axi_sbiterr(),
|
||||
.s_axi_dbiterr(),
|
||||
.s_axi_rdaddrecc()
|
||||
);
|
||||
endmodule
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
// DO NOT MODIFY THIS FILE.
|
||||
|
||||
// IP VLNV: xilinx.com:ip:fir_compiler:7.2
|
||||
// IP Revision: 12
|
||||
|
||||
// The following must be inserted into your Verilog file for this
|
||||
// core to be instantiated. Change the instance name and port connections
|
||||
// (in parentheses) to your own signal names.
|
||||
|
||||
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
|
||||
GaussFir_12m your_instance_name (
|
||||
.aclk(aclk), // input wire aclk
|
||||
.s_axis_data_tvalid(s_axis_data_tvalid), // input wire s_axis_data_tvalid
|
||||
.s_axis_data_tready(s_axis_data_tready), // output wire s_axis_data_tready
|
||||
.s_axis_data_tdata(s_axis_data_tdata), // input wire [7 : 0] s_axis_data_tdata
|
||||
.m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid
|
||||
.m_axis_data_tdata(m_axis_data_tdata) // output wire [15 : 0] m_axis_data_tdata
|
||||
);
|
||||
// INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
|
||||
// You must compile the wrapper file GaussFir_12m.v when simulating
|
||||
// the core, GaussFir_12m. When compiling the wrapper file, be sure to
|
||||
// reference the Verilog simulation library.
|
||||
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--
|
||||
-- DO NOT MODIFY THIS FILE.
|
||||
|
||||
-- IP VLNV: xilinx.com:ip:fir_compiler:7.2
|
||||
-- IP Revision: 12
|
||||
|
||||
-- The following code must appear in the VHDL architecture header.
|
||||
|
||||
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||
COMPONENT GaussFir_12m
|
||||
PORT (
|
||||
aclk : IN STD_LOGIC;
|
||||
s_axis_data_tvalid : IN STD_LOGIC;
|
||||
s_axis_data_tready : OUT STD_LOGIC;
|
||||
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
m_axis_data_tvalid : OUT STD_LOGIC;
|
||||
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT;
|
||||
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||
|
||||
-- The following code must appear in the VHDL architecture
|
||||
-- body. Substitute your own instance name and net names.
|
||||
|
||||
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||
your_instance_name : GaussFir_12m
|
||||
PORT MAP (
|
||||
aclk => aclk,
|
||||
s_axis_data_tvalid => s_axis_data_tvalid,
|
||||
s_axis_data_tready => s_axis_data_tready,
|
||||
s_axis_data_tdata => s_axis_data_tdata,
|
||||
m_axis_data_tvalid => m_axis_data_tvalid,
|
||||
m_axis_data_tdata => m_axis_data_tdata
|
||||
);
|
||||
-- INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
|
||||
-- You must compile the wrapper file GaussFir_12m.vhd when simulating
|
||||
-- the core, GaussFir_12m. When compiling the wrapper file, be sure to
|
||||
-- reference the VHDL simulation library.
|
||||
|
||||
+2400
File diff suppressed because it is too large
Load Diff
+3344
File diff suppressed because it is too large
Load Diff
+26
@@ -0,0 +1,26 @@
|
||||
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
// --------------------------------------------------------------------------------
|
||||
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
// Date : Sat Mar 18 23:33:48 2023
|
||||
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
// Command : write_verilog -force -mode synth_stub
|
||||
// D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/GaussFir_12m_synth_1/GaussFir_12m_stub.v
|
||||
// Design : GaussFir_12m
|
||||
// Purpose : Stub declaration of top-level module interface
|
||||
// Device : xc7k410tffg900-2
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
|
||||
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
|
||||
// Please paste the declaration into a Verilog source file or add the file as an additional source.
|
||||
(* x_core_info = "fir_compiler_v7_2_12,Vivado 2019.1.3" *)
|
||||
module GaussFir_12m(aclk, s_axis_data_tvalid, s_axis_data_tready,
|
||||
s_axis_data_tdata, m_axis_data_tvalid, m_axis_data_tdata)
|
||||
/* synthesis syn_black_box black_box_pad_pin="aclk,s_axis_data_tvalid,s_axis_data_tready,s_axis_data_tdata[7:0],m_axis_data_tvalid,m_axis_data_tdata[15:0]" */;
|
||||
input aclk;
|
||||
input s_axis_data_tvalid;
|
||||
output s_axis_data_tready;
|
||||
input [7:0]s_axis_data_tdata;
|
||||
output m_axis_data_tvalid;
|
||||
output [15:0]m_axis_data_tdata;
|
||||
endmodule
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
-- --------------------------------------------------------------------------------
|
||||
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
-- Date : Sat Mar 18 23:33:48 2023
|
||||
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
-- Command : write_vhdl -force -mode synth_stub
|
||||
-- D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/GaussFir_12m_synth_1/GaussFir_12m_stub.vhdl
|
||||
-- Design : GaussFir_12m
|
||||
-- Purpose : Stub declaration of top-level module interface
|
||||
-- Device : xc7k410tffg900-2
|
||||
-- --------------------------------------------------------------------------------
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
|
||||
entity GaussFir_12m is
|
||||
Port (
|
||||
aclk : in STD_LOGIC;
|
||||
s_axis_data_tvalid : in STD_LOGIC;
|
||||
s_axis_data_tready : out STD_LOGIC;
|
||||
s_axis_data_tdata : in STD_LOGIC_VECTOR ( 7 downto 0 );
|
||||
m_axis_data_tvalid : out STD_LOGIC;
|
||||
m_axis_data_tdata : out STD_LOGIC_VECTOR ( 15 downto 0 )
|
||||
);
|
||||
|
||||
end GaussFir_12m;
|
||||
|
||||
architecture stub of GaussFir_12m is
|
||||
attribute syn_black_box : boolean;
|
||||
attribute black_box_pad_pin : string;
|
||||
attribute syn_black_box of stub : architecture is true;
|
||||
attribute black_box_pad_pin of stub : architecture is "aclk,s_axis_data_tvalid,s_axis_data_tready,s_axis_data_tdata[7:0],m_axis_data_tvalid,m_axis_data_tdata[15:0]";
|
||||
attribute x_core_info : string;
|
||||
attribute x_core_info of stub : architecture is "fir_compiler_v7_2_12,Vivado 2019.1.3";
|
||||
begin
|
||||
end;
|
||||
+261
@@ -0,0 +1,261 @@
|
||||
--------------------------------------------------------------------------------
|
||||
-- (c) Copyright 2011 - 2013 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--------------------------------------------------------------------------------
|
||||
-- Description:
|
||||
-- This is an example testbench for the FIR Compiler IP core.
|
||||
-- The testbench has been generated by Vivado to accompany the IP core
|
||||
-- instance you have generated.
|
||||
--
|
||||
-- This testbench is for demonstration purposes only. See note below for
|
||||
-- instructions on how to use it with your core.
|
||||
--
|
||||
-- See the FIR Compiler product guide for further information
|
||||
-- about this core.
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
-- Using this testbench
|
||||
--
|
||||
-- This testbench instantiates your generated FIR Compiler core
|
||||
-- instance named "GaussFir_12m".
|
||||
--
|
||||
-- Use Vivado's Run Simulation flow to run this testbench. See the Vivado
|
||||
-- documentation for details.
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
entity tb_GaussFir_12m is
|
||||
end tb_GaussFir_12m;
|
||||
|
||||
architecture tb of tb_GaussFir_12m is
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Timing constants
|
||||
-----------------------------------------------------------------------
|
||||
constant CLOCK_PERIOD : time := 100 ns;
|
||||
constant T_HOLD : time := 10 ns;
|
||||
constant T_STROBE : time := CLOCK_PERIOD - (1 ns);
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- DUT signals
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
-- General signals
|
||||
signal aclk : std_logic := '0'; -- the master clock
|
||||
|
||||
-- Data slave channel signals
|
||||
signal s_axis_data_tvalid : std_logic := '0'; -- payload is valid
|
||||
signal s_axis_data_tready : std_logic := '1'; -- slave is ready
|
||||
signal s_axis_data_tdata : std_logic_vector(7 downto 0) := (others => '0'); -- data payload
|
||||
|
||||
-- Data master channel signals
|
||||
signal m_axis_data_tvalid : std_logic := '0'; -- payload is valid
|
||||
signal m_axis_data_tdata : std_logic_vector(15 downto 0) := (others => '0'); -- data payload
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Aliases for AXI channel TDATA and TUSER fields
|
||||
-- These are a convenience for viewing data in a simulator waveform viewer.
|
||||
-- If using ModelSim or Questa, add "-voptargs=+acc=n" to the vsim command
|
||||
-- to prevent the simulator optimizing away these signals.
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
-- Data slave channel alias signals
|
||||
signal s_axis_data_tdata_data : std_logic_vector(1 downto 0) := (others => '0');
|
||||
|
||||
-- Data master channel alias signals
|
||||
signal m_axis_data_tdata_data : std_logic_vector(14 downto 0) := (others => '0');
|
||||
|
||||
|
||||
begin
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Instantiate the DUT
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
dut : entity work.GaussFir_12m
|
||||
port map (
|
||||
aclk => aclk,
|
||||
s_axis_data_tvalid => s_axis_data_tvalid,
|
||||
s_axis_data_tready => s_axis_data_tready,
|
||||
s_axis_data_tdata => s_axis_data_tdata,
|
||||
m_axis_data_tvalid => m_axis_data_tvalid,
|
||||
m_axis_data_tdata => m_axis_data_tdata
|
||||
);
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Generate clock
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
clock_gen : process
|
||||
begin
|
||||
aclk <= '0';
|
||||
wait for CLOCK_PERIOD;
|
||||
loop
|
||||
aclk <= '0';
|
||||
wait for CLOCK_PERIOD/2;
|
||||
aclk <= '1';
|
||||
wait for CLOCK_PERIOD/2;
|
||||
end loop;
|
||||
end process clock_gen;
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Generate inputs
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
stimuli : process
|
||||
|
||||
-- Procedure to drive a number of input samples with specific data
|
||||
-- data is the data value to drive on the tdata signal
|
||||
-- samples is the number of zero-data input samples to drive
|
||||
procedure drive_data ( data : std_logic_vector(7 downto 0);
|
||||
samples : natural := 1 ) is
|
||||
variable ip_count : integer := 0;
|
||||
begin
|
||||
ip_count := 0;
|
||||
loop
|
||||
s_axis_data_tvalid <= '1';
|
||||
s_axis_data_tdata <= data;
|
||||
loop
|
||||
wait until rising_edge(aclk);
|
||||
exit when s_axis_data_tready = '1';
|
||||
end loop;
|
||||
ip_count := ip_count + 1;
|
||||
wait for T_HOLD;
|
||||
-- Input rate is 1 input each 4 clock cycles: drive valid inputs at this rate
|
||||
s_axis_data_tvalid <= '0';
|
||||
wait for CLOCK_PERIOD * 3;
|
||||
exit when ip_count >= samples;
|
||||
end loop;
|
||||
end procedure drive_data;
|
||||
|
||||
-- Procedure to drive a number of zero-data input samples
|
||||
-- samples is the number of zero-data input samples to drive
|
||||
procedure drive_zeros ( samples : natural := 1 ) is
|
||||
begin
|
||||
drive_data((others => '0'), samples);
|
||||
end procedure drive_zeros;
|
||||
|
||||
-- Procedure to drive an impulse and let the impulse response emerge on the data master channel
|
||||
-- samples is the number of input samples to drive; default is enough for impulse response output to emerge
|
||||
procedure drive_impulse ( samples : natural := 27 ) is
|
||||
variable impulse : std_logic_vector(7 downto 0);
|
||||
begin
|
||||
impulse := (others => '0'); -- initialize unused bits to zero
|
||||
impulse(1 downto 0) := "01";
|
||||
drive_data(impulse);
|
||||
if samples > 1 then
|
||||
drive_zeros(samples-1);
|
||||
end if;
|
||||
end procedure drive_impulse;
|
||||
|
||||
begin
|
||||
|
||||
-- Drive inputs T_HOLD time after rising edge of clock
|
||||
wait until rising_edge(aclk);
|
||||
wait for T_HOLD;
|
||||
|
||||
-- Drive a single impulse and let the impulse response emerge
|
||||
drive_impulse;
|
||||
|
||||
-- Drive another impulse, during which demonstrate use and effect of AXI handshaking signals
|
||||
drive_impulse(2); -- start of impulse; data is now zero
|
||||
s_axis_data_tvalid <= '0';
|
||||
wait for CLOCK_PERIOD * 20; -- provide no data for 5 input samples worth
|
||||
drive_zeros(2); -- 2 normal input samples
|
||||
s_axis_data_tvalid <= '1';
|
||||
wait for CLOCK_PERIOD * 20; -- provide data as fast as the core can accept it for 5 input samples worth
|
||||
drive_zeros(18); -- back to normal operation
|
||||
|
||||
-- End of test
|
||||
report "Not a real failure. Simulation finished successfully. Test completed successfully" severity failure;
|
||||
wait;
|
||||
|
||||
end process stimuli;
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Check outputs
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
check_outputs : process
|
||||
variable check_ok : boolean := true;
|
||||
begin
|
||||
|
||||
-- Check outputs T_STROBE time after rising edge of clock
|
||||
wait until rising_edge(aclk);
|
||||
wait for T_STROBE;
|
||||
|
||||
-- Do not check the output payload values, as this requires the behavioral model
|
||||
-- which would make this demonstration testbench unwieldy.
|
||||
-- Instead, check the protocol of the master DATA channel:
|
||||
-- check that the payload is valid (not X) when TVALID is high
|
||||
|
||||
if m_axis_data_tvalid = '1' then
|
||||
if is_x(m_axis_data_tdata) then
|
||||
report "ERROR: m_axis_data_tdata is invalid when m_axis_data_tvalid is high" severity error;
|
||||
check_ok := false;
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
assert check_ok
|
||||
report "ERROR: terminating test with failures." severity failure;
|
||||
|
||||
end process check_outputs;
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Assign TDATA / TUSER fields to aliases, for easy simulator waveform viewing
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
-- Data slave channel alias signals
|
||||
s_axis_data_tdata_data <= s_axis_data_tdata(1 downto 0);
|
||||
|
||||
-- Data master channel alias signals: update these only when they are valid
|
||||
m_axis_data_tdata_data <= m_axis_data_tdata(14 downto 0) when m_axis_data_tvalid = '1';
|
||||
|
||||
end tb;
|
||||
+281
@@ -0,0 +1,281 @@
|
||||
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--
|
||||
-- DO NOT MODIFY THIS FILE.
|
||||
|
||||
-- IP VLNV: xilinx.com:ip:fir_compiler:7.2
|
||||
-- IP Revision: 12
|
||||
|
||||
LIBRARY ieee;
|
||||
USE ieee.std_logic_1164.ALL;
|
||||
USE ieee.numeric_std.ALL;
|
||||
|
||||
LIBRARY fir_compiler_v7_2_12;
|
||||
USE fir_compiler_v7_2_12.fir_compiler_v7_2_12;
|
||||
|
||||
ENTITY GaussFir_12m IS
|
||||
PORT (
|
||||
aclk : IN STD_LOGIC;
|
||||
s_axis_data_tvalid : IN STD_LOGIC;
|
||||
s_axis_data_tready : OUT STD_LOGIC;
|
||||
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
m_axis_data_tvalid : OUT STD_LOGIC;
|
||||
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
|
||||
);
|
||||
END GaussFir_12m;
|
||||
|
||||
ARCHITECTURE GaussFir_12m_arch OF GaussFir_12m IS
|
||||
ATTRIBUTE DowngradeIPIdentifiedWarnings : STRING;
|
||||
ATTRIBUTE DowngradeIPIdentifiedWarnings OF GaussFir_12m_arch: ARCHITECTURE IS "yes";
|
||||
COMPONENT fir_compiler_v7_2_12 IS
|
||||
GENERIC (
|
||||
C_XDEVICEFAMILY : STRING;
|
||||
C_ELABORATION_DIR : STRING;
|
||||
C_COMPONENT_NAME : STRING;
|
||||
C_COEF_FILE : STRING;
|
||||
C_COEF_FILE_LINES : INTEGER;
|
||||
C_FILTER_TYPE : INTEGER;
|
||||
C_INTERP_RATE : INTEGER;
|
||||
C_DECIM_RATE : INTEGER;
|
||||
C_ZERO_PACKING_FACTOR : INTEGER;
|
||||
C_SYMMETRY : INTEGER;
|
||||
C_NUM_FILTS : INTEGER;
|
||||
C_NUM_TAPS : INTEGER;
|
||||
C_NUM_CHANNELS : INTEGER;
|
||||
C_CHANNEL_PATTERN : STRING;
|
||||
C_ROUND_MODE : INTEGER;
|
||||
C_COEF_RELOAD : INTEGER;
|
||||
C_NUM_RELOAD_SLOTS : INTEGER;
|
||||
C_COL_MODE : INTEGER;
|
||||
C_COL_PIPE_LEN : INTEGER;
|
||||
C_COL_CONFIG : STRING;
|
||||
C_OPTIMIZATION : INTEGER;
|
||||
C_DATA_PATH_WIDTHS : STRING;
|
||||
C_DATA_IP_PATH_WIDTHS : STRING;
|
||||
C_DATA_PX_PATH_WIDTHS : STRING;
|
||||
C_DATA_WIDTH : INTEGER;
|
||||
C_COEF_PATH_WIDTHS : STRING;
|
||||
C_COEF_WIDTH : INTEGER;
|
||||
C_DATA_PATH_SRC : STRING;
|
||||
C_COEF_PATH_SRC : STRING;
|
||||
C_PX_PATH_SRC : STRING;
|
||||
C_DATA_PATH_SIGN : STRING;
|
||||
C_COEF_PATH_SIGN : STRING;
|
||||
C_ACCUM_PATH_WIDTHS : STRING;
|
||||
C_OUTPUT_WIDTH : INTEGER;
|
||||
C_OUTPUT_PATH_WIDTHS : STRING;
|
||||
C_ACCUM_OP_PATH_WIDTHS : STRING;
|
||||
C_EXT_MULT_CNFG : STRING;
|
||||
C_DATA_PATH_PSAMP_SRC : STRING;
|
||||
C_OP_PATH_PSAMP_SRC : STRING;
|
||||
C_NUM_MADDS : INTEGER;
|
||||
C_OPT_MADDS : STRING;
|
||||
C_OVERSAMPLING_RATE : INTEGER;
|
||||
C_INPUT_RATE : INTEGER;
|
||||
C_OUTPUT_RATE : INTEGER;
|
||||
C_DATA_MEMTYPE : INTEGER;
|
||||
C_COEF_MEMTYPE : INTEGER;
|
||||
C_IPBUFF_MEMTYPE : INTEGER;
|
||||
C_OPBUFF_MEMTYPE : INTEGER;
|
||||
C_DATAPATH_MEMTYPE : INTEGER;
|
||||
C_MEM_ARRANGEMENT : INTEGER;
|
||||
C_DATA_MEM_PACKING : INTEGER;
|
||||
C_COEF_MEM_PACKING : INTEGER;
|
||||
C_FILTS_PACKED : INTEGER;
|
||||
C_LATENCY : INTEGER;
|
||||
C_HAS_ARESETn : INTEGER;
|
||||
C_HAS_ACLKEN : INTEGER;
|
||||
C_DATA_HAS_TLAST : INTEGER;
|
||||
C_S_DATA_HAS_FIFO : INTEGER;
|
||||
C_S_DATA_HAS_TUSER : INTEGER;
|
||||
C_S_DATA_TDATA_WIDTH : INTEGER;
|
||||
C_S_DATA_TUSER_WIDTH : INTEGER;
|
||||
C_M_DATA_HAS_TREADY : INTEGER;
|
||||
C_M_DATA_HAS_TUSER : INTEGER;
|
||||
C_M_DATA_TDATA_WIDTH : INTEGER;
|
||||
C_M_DATA_TUSER_WIDTH : INTEGER;
|
||||
C_HAS_CONFIG_CHANNEL : INTEGER;
|
||||
C_CONFIG_SYNC_MODE : INTEGER;
|
||||
C_CONFIG_PACKET_SIZE : INTEGER;
|
||||
C_CONFIG_TDATA_WIDTH : INTEGER;
|
||||
C_RELOAD_TDATA_WIDTH : INTEGER
|
||||
);
|
||||
PORT (
|
||||
aresetn : IN STD_LOGIC;
|
||||
aclk : IN STD_LOGIC;
|
||||
aclken : IN STD_LOGIC;
|
||||
s_axis_data_tvalid : IN STD_LOGIC;
|
||||
s_axis_data_tready : OUT STD_LOGIC;
|
||||
s_axis_data_tlast : IN STD_LOGIC;
|
||||
s_axis_data_tuser : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
|
||||
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
s_axis_config_tvalid : IN STD_LOGIC;
|
||||
s_axis_config_tready : OUT STD_LOGIC;
|
||||
s_axis_config_tlast : IN STD_LOGIC;
|
||||
s_axis_config_tdata : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
|
||||
s_axis_reload_tvalid : IN STD_LOGIC;
|
||||
s_axis_reload_tready : OUT STD_LOGIC;
|
||||
s_axis_reload_tlast : IN STD_LOGIC;
|
||||
s_axis_reload_tdata : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
|
||||
m_axis_data_tvalid : OUT STD_LOGIC;
|
||||
m_axis_data_tready : IN STD_LOGIC;
|
||||
m_axis_data_tlast : OUT STD_LOGIC;
|
||||
m_axis_data_tuser : OUT STD_LOGIC_VECTOR(0 DOWNTO 0);
|
||||
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
|
||||
event_s_data_tlast_missing : OUT STD_LOGIC;
|
||||
event_s_data_tlast_unexpected : OUT STD_LOGIC;
|
||||
event_s_data_chanid_incorrect : OUT STD_LOGIC;
|
||||
event_s_config_tlast_missing : OUT STD_LOGIC;
|
||||
event_s_config_tlast_unexpected : OUT STD_LOGIC;
|
||||
event_s_reload_tlast_missing : OUT STD_LOGIC;
|
||||
event_s_reload_tlast_unexpected : OUT STD_LOGIC
|
||||
);
|
||||
END COMPONENT fir_compiler_v7_2_12;
|
||||
ATTRIBUTE X_INTERFACE_INFO : STRING;
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER : STRING;
|
||||
ATTRIBUTE X_INTERFACE_INFO OF m_axis_data_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DATA TDATA";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF m_axis_data_tvalid: SIGNAL IS "XIL_INTERFACENAME M_AXIS_DATA, TDATA_NUM_BYTES 2, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 0, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF m_axis_data_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DATA TVALID";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TDATA";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tready: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TREADY";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF s_axis_data_tvalid: SIGNAL IS "XIL_INTERFACENAME S_AXIS_DATA, TDATA_NUM_BYTES 1, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TVALID";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF aclk: SIGNAL IS "XIL_INTERFACENAME aclk_intf, ASSOCIATED_BUSIF S_AXIS_CONFIG:M_AXIS_DATA:S_AXIS_DATA:S_AXIS_RELOAD, ASSOCIATED_RESET aresetn, ASSOCIATED_CLKEN aclken, FREQ_HZ 100000000, PHASE 0.000, INSERT_VIP 0";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF aclk: SIGNAL IS "xilinx.com:signal:clock:1.0 aclk_intf CLK";
|
||||
BEGIN
|
||||
U0 : fir_compiler_v7_2_12
|
||||
GENERIC MAP (
|
||||
C_XDEVICEFAMILY => "kintex7",
|
||||
C_ELABORATION_DIR => "./",
|
||||
C_COMPONENT_NAME => "GaussFir_12m",
|
||||
C_COEF_FILE => "GaussFir_12m.mif",
|
||||
C_COEF_FILE_LINES => 20,
|
||||
C_FILTER_TYPE => 2,
|
||||
C_INTERP_RATE => 4,
|
||||
C_DECIM_RATE => 1,
|
||||
C_ZERO_PACKING_FACTOR => 1,
|
||||
C_SYMMETRY => 0,
|
||||
C_NUM_FILTS => 1,
|
||||
C_NUM_TAPS => 17,
|
||||
C_NUM_CHANNELS => 1,
|
||||
C_CHANNEL_PATTERN => "fixed",
|
||||
C_ROUND_MODE => 0,
|
||||
C_COEF_RELOAD => 0,
|
||||
C_NUM_RELOAD_SLOTS => 1,
|
||||
C_COL_MODE => 1,
|
||||
C_COL_PIPE_LEN => 4,
|
||||
C_COL_CONFIG => "5",
|
||||
C_OPTIMIZATION => 0,
|
||||
C_DATA_PATH_WIDTHS => "2",
|
||||
C_DATA_IP_PATH_WIDTHS => "2",
|
||||
C_DATA_PX_PATH_WIDTHS => "2",
|
||||
C_DATA_WIDTH => 2,
|
||||
C_COEF_PATH_WIDTHS => "14",
|
||||
C_COEF_WIDTH => 14,
|
||||
C_DATA_PATH_SRC => "0",
|
||||
C_COEF_PATH_SRC => "0",
|
||||
C_PX_PATH_SRC => "0",
|
||||
C_DATA_PATH_SIGN => "0",
|
||||
C_COEF_PATH_SIGN => "1",
|
||||
C_ACCUM_PATH_WIDTHS => "15",
|
||||
C_OUTPUT_WIDTH => 15,
|
||||
C_OUTPUT_PATH_WIDTHS => "15",
|
||||
C_ACCUM_OP_PATH_WIDTHS => "15",
|
||||
C_EXT_MULT_CNFG => "none",
|
||||
C_DATA_PATH_PSAMP_SRC => "0",
|
||||
C_OP_PATH_PSAMP_SRC => "0",
|
||||
C_NUM_MADDS => 5,
|
||||
C_OPT_MADDS => "none",
|
||||
C_OVERSAMPLING_RATE => 1,
|
||||
C_INPUT_RATE => 4,
|
||||
C_OUTPUT_RATE => 1,
|
||||
C_DATA_MEMTYPE => 0,
|
||||
C_COEF_MEMTYPE => 2,
|
||||
C_IPBUFF_MEMTYPE => 0,
|
||||
C_OPBUFF_MEMTYPE => 0,
|
||||
C_DATAPATH_MEMTYPE => 0,
|
||||
C_MEM_ARRANGEMENT => 2,
|
||||
C_DATA_MEM_PACKING => 0,
|
||||
C_COEF_MEM_PACKING => 0,
|
||||
C_FILTS_PACKED => 0,
|
||||
C_LATENCY => 11,
|
||||
C_HAS_ARESETn => 0,
|
||||
C_HAS_ACLKEN => 0,
|
||||
C_DATA_HAS_TLAST => 0,
|
||||
C_S_DATA_HAS_FIFO => 0,
|
||||
C_S_DATA_HAS_TUSER => 0,
|
||||
C_S_DATA_TDATA_WIDTH => 8,
|
||||
C_S_DATA_TUSER_WIDTH => 1,
|
||||
C_M_DATA_HAS_TREADY => 0,
|
||||
C_M_DATA_HAS_TUSER => 0,
|
||||
C_M_DATA_TDATA_WIDTH => 16,
|
||||
C_M_DATA_TUSER_WIDTH => 1,
|
||||
C_HAS_CONFIG_CHANNEL => 0,
|
||||
C_CONFIG_SYNC_MODE => 0,
|
||||
C_CONFIG_PACKET_SIZE => 0,
|
||||
C_CONFIG_TDATA_WIDTH => 1,
|
||||
C_RELOAD_TDATA_WIDTH => 1
|
||||
)
|
||||
PORT MAP (
|
||||
aresetn => '1',
|
||||
aclk => aclk,
|
||||
aclken => '1',
|
||||
s_axis_data_tvalid => s_axis_data_tvalid,
|
||||
s_axis_data_tready => s_axis_data_tready,
|
||||
s_axis_data_tlast => '0',
|
||||
s_axis_data_tuser => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
|
||||
s_axis_data_tdata => s_axis_data_tdata,
|
||||
s_axis_config_tvalid => '0',
|
||||
s_axis_config_tlast => '0',
|
||||
s_axis_config_tdata => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
|
||||
s_axis_reload_tvalid => '0',
|
||||
s_axis_reload_tlast => '0',
|
||||
s_axis_reload_tdata => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
|
||||
m_axis_data_tvalid => m_axis_data_tvalid,
|
||||
m_axis_data_tready => '1',
|
||||
m_axis_data_tdata => m_axis_data_tdata
|
||||
);
|
||||
END GaussFir_12m_arch;
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
// DO NOT MODIFY THIS FILE.
|
||||
|
||||
// IP VLNV: xilinx.com:ip:fir_compiler:7.2
|
||||
// IP Revision: 12
|
||||
|
||||
// The following must be inserted into your Verilog file for this
|
||||
// core to be instantiated. Change the instance name and port connections
|
||||
// (in parentheses) to your own signal names.
|
||||
|
||||
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
|
||||
GaussFir_1mp5 your_instance_name (
|
||||
.aclk(aclk), // input wire aclk
|
||||
.s_axis_data_tvalid(s_axis_data_tvalid), // input wire s_axis_data_tvalid
|
||||
.s_axis_data_tready(s_axis_data_tready), // output wire s_axis_data_tready
|
||||
.s_axis_data_tdata(s_axis_data_tdata), // input wire [7 : 0] s_axis_data_tdata
|
||||
.m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid
|
||||
.m_axis_data_tdata(m_axis_data_tdata) // output wire [15 : 0] m_axis_data_tdata
|
||||
);
|
||||
// INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
|
||||
// You must compile the wrapper file GaussFir_1mp5.v when simulating
|
||||
// the core, GaussFir_1mp5. When compiling the wrapper file, be sure to
|
||||
// reference the Verilog simulation library.
|
||||
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--
|
||||
-- DO NOT MODIFY THIS FILE.
|
||||
|
||||
-- IP VLNV: xilinx.com:ip:fir_compiler:7.2
|
||||
-- IP Revision: 12
|
||||
|
||||
-- The following code must appear in the VHDL architecture header.
|
||||
|
||||
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||
COMPONENT GaussFir_1mp5
|
||||
PORT (
|
||||
aclk : IN STD_LOGIC;
|
||||
s_axis_data_tvalid : IN STD_LOGIC;
|
||||
s_axis_data_tready : OUT STD_LOGIC;
|
||||
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
m_axis_data_tvalid : OUT STD_LOGIC;
|
||||
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT;
|
||||
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||
|
||||
-- The following code must appear in the VHDL architecture
|
||||
-- body. Substitute your own instance name and net names.
|
||||
|
||||
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||
your_instance_name : GaussFir_1mp5
|
||||
PORT MAP (
|
||||
aclk => aclk,
|
||||
s_axis_data_tvalid => s_axis_data_tvalid,
|
||||
s_axis_data_tready => s_axis_data_tready,
|
||||
s_axis_data_tdata => s_axis_data_tdata,
|
||||
m_axis_data_tvalid => m_axis_data_tvalid,
|
||||
m_axis_data_tdata => m_axis_data_tdata
|
||||
);
|
||||
-- INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
|
||||
-- You must compile the wrapper file GaussFir_1mp5.vhd when simulating
|
||||
-- the core, GaussFir_1mp5. When compiling the wrapper file, be sure to
|
||||
-- reference the VHDL simulation library.
|
||||
|
||||
+2607
File diff suppressed because it is too large
Load Diff
+3562
File diff suppressed because it is too large
Load Diff
+26
@@ -0,0 +1,26 @@
|
||||
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
// --------------------------------------------------------------------------------
|
||||
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
// Date : Sat Mar 18 23:33:47 2023
|
||||
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
// Command : write_verilog -force -mode synth_stub
|
||||
// D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/GaussFir_1mp5_synth_1/GaussFir_1mp5_stub.v
|
||||
// Design : GaussFir_1mp5
|
||||
// Purpose : Stub declaration of top-level module interface
|
||||
// Device : xc7k410tffg900-2
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
|
||||
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
|
||||
// Please paste the declaration into a Verilog source file or add the file as an additional source.
|
||||
(* x_core_info = "fir_compiler_v7_2_12,Vivado 2019.1.3" *)
|
||||
module GaussFir_1mp5(aclk, s_axis_data_tvalid, s_axis_data_tready,
|
||||
s_axis_data_tdata, m_axis_data_tvalid, m_axis_data_tdata)
|
||||
/* synthesis syn_black_box black_box_pad_pin="aclk,s_axis_data_tvalid,s_axis_data_tready,s_axis_data_tdata[7:0],m_axis_data_tvalid,m_axis_data_tdata[15:0]" */;
|
||||
input aclk;
|
||||
input s_axis_data_tvalid;
|
||||
output s_axis_data_tready;
|
||||
input [7:0]s_axis_data_tdata;
|
||||
output m_axis_data_tvalid;
|
||||
output [15:0]m_axis_data_tdata;
|
||||
endmodule
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
-- --------------------------------------------------------------------------------
|
||||
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
-- Date : Sat Mar 18 23:33:47 2023
|
||||
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
-- Command : write_vhdl -force -mode synth_stub
|
||||
-- D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/GaussFir_1mp5_synth_1/GaussFir_1mp5_stub.vhdl
|
||||
-- Design : GaussFir_1mp5
|
||||
-- Purpose : Stub declaration of top-level module interface
|
||||
-- Device : xc7k410tffg900-2
|
||||
-- --------------------------------------------------------------------------------
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
|
||||
entity GaussFir_1mp5 is
|
||||
Port (
|
||||
aclk : in STD_LOGIC;
|
||||
s_axis_data_tvalid : in STD_LOGIC;
|
||||
s_axis_data_tready : out STD_LOGIC;
|
||||
s_axis_data_tdata : in STD_LOGIC_VECTOR ( 7 downto 0 );
|
||||
m_axis_data_tvalid : out STD_LOGIC;
|
||||
m_axis_data_tdata : out STD_LOGIC_VECTOR ( 15 downto 0 )
|
||||
);
|
||||
|
||||
end GaussFir_1mp5;
|
||||
|
||||
architecture stub of GaussFir_1mp5 is
|
||||
attribute syn_black_box : boolean;
|
||||
attribute black_box_pad_pin : string;
|
||||
attribute syn_black_box of stub : architecture is true;
|
||||
attribute black_box_pad_pin of stub : architecture is "aclk,s_axis_data_tvalid,s_axis_data_tready,s_axis_data_tdata[7:0],m_axis_data_tvalid,m_axis_data_tdata[15:0]";
|
||||
attribute x_core_info : string;
|
||||
attribute x_core_info of stub : architecture is "fir_compiler_v7_2_12,Vivado 2019.1.3";
|
||||
begin
|
||||
end;
|
||||
+261
@@ -0,0 +1,261 @@
|
||||
--------------------------------------------------------------------------------
|
||||
-- (c) Copyright 2011 - 2013 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--------------------------------------------------------------------------------
|
||||
-- Description:
|
||||
-- This is an example testbench for the FIR Compiler IP core.
|
||||
-- The testbench has been generated by Vivado to accompany the IP core
|
||||
-- instance you have generated.
|
||||
--
|
||||
-- This testbench is for demonstration purposes only. See note below for
|
||||
-- instructions on how to use it with your core.
|
||||
--
|
||||
-- See the FIR Compiler product guide for further information
|
||||
-- about this core.
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
-- Using this testbench
|
||||
--
|
||||
-- This testbench instantiates your generated FIR Compiler core
|
||||
-- instance named "GaussFir_1mp5".
|
||||
--
|
||||
-- Use Vivado's Run Simulation flow to run this testbench. See the Vivado
|
||||
-- documentation for details.
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
entity tb_GaussFir_1mp5 is
|
||||
end tb_GaussFir_1mp5;
|
||||
|
||||
architecture tb of tb_GaussFir_1mp5 is
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Timing constants
|
||||
-----------------------------------------------------------------------
|
||||
constant CLOCK_PERIOD : time := 100 ns;
|
||||
constant T_HOLD : time := 10 ns;
|
||||
constant T_STROBE : time := CLOCK_PERIOD - (1 ns);
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- DUT signals
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
-- General signals
|
||||
signal aclk : std_logic := '0'; -- the master clock
|
||||
|
||||
-- Data slave channel signals
|
||||
signal s_axis_data_tvalid : std_logic := '0'; -- payload is valid
|
||||
signal s_axis_data_tready : std_logic := '1'; -- slave is ready
|
||||
signal s_axis_data_tdata : std_logic_vector(7 downto 0) := (others => '0'); -- data payload
|
||||
|
||||
-- Data master channel signals
|
||||
signal m_axis_data_tvalid : std_logic := '0'; -- payload is valid
|
||||
signal m_axis_data_tdata : std_logic_vector(15 downto 0) := (others => '0'); -- data payload
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Aliases for AXI channel TDATA and TUSER fields
|
||||
-- These are a convenience for viewing data in a simulator waveform viewer.
|
||||
-- If using ModelSim or Questa, add "-voptargs=+acc=n" to the vsim command
|
||||
-- to prevent the simulator optimizing away these signals.
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
-- Data slave channel alias signals
|
||||
signal s_axis_data_tdata_data : std_logic_vector(1 downto 0) := (others => '0');
|
||||
|
||||
-- Data master channel alias signals
|
||||
signal m_axis_data_tdata_data : std_logic_vector(12 downto 0) := (others => '0');
|
||||
|
||||
|
||||
begin
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Instantiate the DUT
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
dut : entity work.GaussFir_1mp5
|
||||
port map (
|
||||
aclk => aclk,
|
||||
s_axis_data_tvalid => s_axis_data_tvalid,
|
||||
s_axis_data_tready => s_axis_data_tready,
|
||||
s_axis_data_tdata => s_axis_data_tdata,
|
||||
m_axis_data_tvalid => m_axis_data_tvalid,
|
||||
m_axis_data_tdata => m_axis_data_tdata
|
||||
);
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Generate clock
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
clock_gen : process
|
||||
begin
|
||||
aclk <= '0';
|
||||
wait for CLOCK_PERIOD;
|
||||
loop
|
||||
aclk <= '0';
|
||||
wait for CLOCK_PERIOD/2;
|
||||
aclk <= '1';
|
||||
wait for CLOCK_PERIOD/2;
|
||||
end loop;
|
||||
end process clock_gen;
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Generate inputs
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
stimuli : process
|
||||
|
||||
-- Procedure to drive a number of input samples with specific data
|
||||
-- data is the data value to drive on the tdata signal
|
||||
-- samples is the number of zero-data input samples to drive
|
||||
procedure drive_data ( data : std_logic_vector(7 downto 0);
|
||||
samples : natural := 1 ) is
|
||||
variable ip_count : integer := 0;
|
||||
begin
|
||||
ip_count := 0;
|
||||
loop
|
||||
s_axis_data_tvalid <= '1';
|
||||
s_axis_data_tdata <= data;
|
||||
loop
|
||||
wait until rising_edge(aclk);
|
||||
exit when s_axis_data_tready = '1';
|
||||
end loop;
|
||||
ip_count := ip_count + 1;
|
||||
wait for T_HOLD;
|
||||
-- Input rate is 1 input each 32 clock cycles: drive valid inputs at this rate
|
||||
s_axis_data_tvalid <= '0';
|
||||
wait for CLOCK_PERIOD * 31;
|
||||
exit when ip_count >= samples;
|
||||
end loop;
|
||||
end procedure drive_data;
|
||||
|
||||
-- Procedure to drive a number of zero-data input samples
|
||||
-- samples is the number of zero-data input samples to drive
|
||||
procedure drive_zeros ( samples : natural := 1 ) is
|
||||
begin
|
||||
drive_data((others => '0'), samples);
|
||||
end procedure drive_zeros;
|
||||
|
||||
-- Procedure to drive an impulse and let the impulse response emerge on the data master channel
|
||||
-- samples is the number of input samples to drive; default is enough for impulse response output to emerge
|
||||
procedure drive_impulse ( samples : natural := 165 ) is
|
||||
variable impulse : std_logic_vector(7 downto 0);
|
||||
begin
|
||||
impulse := (others => '0'); -- initialize unused bits to zero
|
||||
impulse(1 downto 0) := "01";
|
||||
drive_data(impulse);
|
||||
if samples > 1 then
|
||||
drive_zeros(samples-1);
|
||||
end if;
|
||||
end procedure drive_impulse;
|
||||
|
||||
begin
|
||||
|
||||
-- Drive inputs T_HOLD time after rising edge of clock
|
||||
wait until rising_edge(aclk);
|
||||
wait for T_HOLD;
|
||||
|
||||
-- Drive a single impulse and let the impulse response emerge
|
||||
drive_impulse;
|
||||
|
||||
-- Drive another impulse, during which demonstrate use and effect of AXI handshaking signals
|
||||
drive_impulse(2); -- start of impulse; data is now zero
|
||||
s_axis_data_tvalid <= '0';
|
||||
wait for CLOCK_PERIOD * 160; -- provide no data for 5 input samples worth
|
||||
drive_zeros(2); -- 2 normal input samples
|
||||
s_axis_data_tvalid <= '1';
|
||||
wait for CLOCK_PERIOD * 160; -- provide data as fast as the core can accept it for 5 input samples worth
|
||||
drive_zeros(156); -- back to normal operation
|
||||
|
||||
-- End of test
|
||||
report "Not a real failure. Simulation finished successfully. Test completed successfully" severity failure;
|
||||
wait;
|
||||
|
||||
end process stimuli;
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Check outputs
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
check_outputs : process
|
||||
variable check_ok : boolean := true;
|
||||
begin
|
||||
|
||||
-- Check outputs T_STROBE time after rising edge of clock
|
||||
wait until rising_edge(aclk);
|
||||
wait for T_STROBE;
|
||||
|
||||
-- Do not check the output payload values, as this requires the behavioral model
|
||||
-- which would make this demonstration testbench unwieldy.
|
||||
-- Instead, check the protocol of the master DATA channel:
|
||||
-- check that the payload is valid (not X) when TVALID is high
|
||||
|
||||
if m_axis_data_tvalid = '1' then
|
||||
if is_x(m_axis_data_tdata) then
|
||||
report "ERROR: m_axis_data_tdata is invalid when m_axis_data_tvalid is high" severity error;
|
||||
check_ok := false;
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
assert check_ok
|
||||
report "ERROR: terminating test with failures." severity failure;
|
||||
|
||||
end process check_outputs;
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
-- Assign TDATA / TUSER fields to aliases, for easy simulator waveform viewing
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
-- Data slave channel alias signals
|
||||
s_axis_data_tdata_data <= s_axis_data_tdata(1 downto 0);
|
||||
|
||||
-- Data master channel alias signals: update these only when they are valid
|
||||
m_axis_data_tdata_data <= m_axis_data_tdata(12 downto 0) when m_axis_data_tvalid = '1';
|
||||
|
||||
end tb;
|
||||
+281
@@ -0,0 +1,281 @@
|
||||
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--
|
||||
-- DO NOT MODIFY THIS FILE.
|
||||
|
||||
-- IP VLNV: xilinx.com:ip:fir_compiler:7.2
|
||||
-- IP Revision: 12
|
||||
|
||||
LIBRARY ieee;
|
||||
USE ieee.std_logic_1164.ALL;
|
||||
USE ieee.numeric_std.ALL;
|
||||
|
||||
LIBRARY fir_compiler_v7_2_12;
|
||||
USE fir_compiler_v7_2_12.fir_compiler_v7_2_12;
|
||||
|
||||
ENTITY GaussFir_1mp5 IS
|
||||
PORT (
|
||||
aclk : IN STD_LOGIC;
|
||||
s_axis_data_tvalid : IN STD_LOGIC;
|
||||
s_axis_data_tready : OUT STD_LOGIC;
|
||||
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
m_axis_data_tvalid : OUT STD_LOGIC;
|
||||
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
|
||||
);
|
||||
END GaussFir_1mp5;
|
||||
|
||||
ARCHITECTURE GaussFir_1mp5_arch OF GaussFir_1mp5 IS
|
||||
ATTRIBUTE DowngradeIPIdentifiedWarnings : STRING;
|
||||
ATTRIBUTE DowngradeIPIdentifiedWarnings OF GaussFir_1mp5_arch: ARCHITECTURE IS "yes";
|
||||
COMPONENT fir_compiler_v7_2_12 IS
|
||||
GENERIC (
|
||||
C_XDEVICEFAMILY : STRING;
|
||||
C_ELABORATION_DIR : STRING;
|
||||
C_COMPONENT_NAME : STRING;
|
||||
C_COEF_FILE : STRING;
|
||||
C_COEF_FILE_LINES : INTEGER;
|
||||
C_FILTER_TYPE : INTEGER;
|
||||
C_INTERP_RATE : INTEGER;
|
||||
C_DECIM_RATE : INTEGER;
|
||||
C_ZERO_PACKING_FACTOR : INTEGER;
|
||||
C_SYMMETRY : INTEGER;
|
||||
C_NUM_FILTS : INTEGER;
|
||||
C_NUM_TAPS : INTEGER;
|
||||
C_NUM_CHANNELS : INTEGER;
|
||||
C_CHANNEL_PATTERN : STRING;
|
||||
C_ROUND_MODE : INTEGER;
|
||||
C_COEF_RELOAD : INTEGER;
|
||||
C_NUM_RELOAD_SLOTS : INTEGER;
|
||||
C_COL_MODE : INTEGER;
|
||||
C_COL_PIPE_LEN : INTEGER;
|
||||
C_COL_CONFIG : STRING;
|
||||
C_OPTIMIZATION : INTEGER;
|
||||
C_DATA_PATH_WIDTHS : STRING;
|
||||
C_DATA_IP_PATH_WIDTHS : STRING;
|
||||
C_DATA_PX_PATH_WIDTHS : STRING;
|
||||
C_DATA_WIDTH : INTEGER;
|
||||
C_COEF_PATH_WIDTHS : STRING;
|
||||
C_COEF_WIDTH : INTEGER;
|
||||
C_DATA_PATH_SRC : STRING;
|
||||
C_COEF_PATH_SRC : STRING;
|
||||
C_PX_PATH_SRC : STRING;
|
||||
C_DATA_PATH_SIGN : STRING;
|
||||
C_COEF_PATH_SIGN : STRING;
|
||||
C_ACCUM_PATH_WIDTHS : STRING;
|
||||
C_OUTPUT_WIDTH : INTEGER;
|
||||
C_OUTPUT_PATH_WIDTHS : STRING;
|
||||
C_ACCUM_OP_PATH_WIDTHS : STRING;
|
||||
C_EXT_MULT_CNFG : STRING;
|
||||
C_DATA_PATH_PSAMP_SRC : STRING;
|
||||
C_OP_PATH_PSAMP_SRC : STRING;
|
||||
C_NUM_MADDS : INTEGER;
|
||||
C_OPT_MADDS : STRING;
|
||||
C_OVERSAMPLING_RATE : INTEGER;
|
||||
C_INPUT_RATE : INTEGER;
|
||||
C_OUTPUT_RATE : INTEGER;
|
||||
C_DATA_MEMTYPE : INTEGER;
|
||||
C_COEF_MEMTYPE : INTEGER;
|
||||
C_IPBUFF_MEMTYPE : INTEGER;
|
||||
C_OPBUFF_MEMTYPE : INTEGER;
|
||||
C_DATAPATH_MEMTYPE : INTEGER;
|
||||
C_MEM_ARRANGEMENT : INTEGER;
|
||||
C_DATA_MEM_PACKING : INTEGER;
|
||||
C_COEF_MEM_PACKING : INTEGER;
|
||||
C_FILTS_PACKED : INTEGER;
|
||||
C_LATENCY : INTEGER;
|
||||
C_HAS_ARESETn : INTEGER;
|
||||
C_HAS_ACLKEN : INTEGER;
|
||||
C_DATA_HAS_TLAST : INTEGER;
|
||||
C_S_DATA_HAS_FIFO : INTEGER;
|
||||
C_S_DATA_HAS_TUSER : INTEGER;
|
||||
C_S_DATA_TDATA_WIDTH : INTEGER;
|
||||
C_S_DATA_TUSER_WIDTH : INTEGER;
|
||||
C_M_DATA_HAS_TREADY : INTEGER;
|
||||
C_M_DATA_HAS_TUSER : INTEGER;
|
||||
C_M_DATA_TDATA_WIDTH : INTEGER;
|
||||
C_M_DATA_TUSER_WIDTH : INTEGER;
|
||||
C_HAS_CONFIG_CHANNEL : INTEGER;
|
||||
C_CONFIG_SYNC_MODE : INTEGER;
|
||||
C_CONFIG_PACKET_SIZE : INTEGER;
|
||||
C_CONFIG_TDATA_WIDTH : INTEGER;
|
||||
C_RELOAD_TDATA_WIDTH : INTEGER
|
||||
);
|
||||
PORT (
|
||||
aresetn : IN STD_LOGIC;
|
||||
aclk : IN STD_LOGIC;
|
||||
aclken : IN STD_LOGIC;
|
||||
s_axis_data_tvalid : IN STD_LOGIC;
|
||||
s_axis_data_tready : OUT STD_LOGIC;
|
||||
s_axis_data_tlast : IN STD_LOGIC;
|
||||
s_axis_data_tuser : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
|
||||
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
s_axis_config_tvalid : IN STD_LOGIC;
|
||||
s_axis_config_tready : OUT STD_LOGIC;
|
||||
s_axis_config_tlast : IN STD_LOGIC;
|
||||
s_axis_config_tdata : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
|
||||
s_axis_reload_tvalid : IN STD_LOGIC;
|
||||
s_axis_reload_tready : OUT STD_LOGIC;
|
||||
s_axis_reload_tlast : IN STD_LOGIC;
|
||||
s_axis_reload_tdata : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
|
||||
m_axis_data_tvalid : OUT STD_LOGIC;
|
||||
m_axis_data_tready : IN STD_LOGIC;
|
||||
m_axis_data_tlast : OUT STD_LOGIC;
|
||||
m_axis_data_tuser : OUT STD_LOGIC_VECTOR(0 DOWNTO 0);
|
||||
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
|
||||
event_s_data_tlast_missing : OUT STD_LOGIC;
|
||||
event_s_data_tlast_unexpected : OUT STD_LOGIC;
|
||||
event_s_data_chanid_incorrect : OUT STD_LOGIC;
|
||||
event_s_config_tlast_missing : OUT STD_LOGIC;
|
||||
event_s_config_tlast_unexpected : OUT STD_LOGIC;
|
||||
event_s_reload_tlast_missing : OUT STD_LOGIC;
|
||||
event_s_reload_tlast_unexpected : OUT STD_LOGIC
|
||||
);
|
||||
END COMPONENT fir_compiler_v7_2_12;
|
||||
ATTRIBUTE X_INTERFACE_INFO : STRING;
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER : STRING;
|
||||
ATTRIBUTE X_INTERFACE_INFO OF m_axis_data_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DATA TDATA";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF m_axis_data_tvalid: SIGNAL IS "XIL_INTERFACENAME M_AXIS_DATA, TDATA_NUM_BYTES 2, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 0, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF m_axis_data_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DATA TVALID";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TDATA";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tready: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TREADY";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF s_axis_data_tvalid: SIGNAL IS "XIL_INTERFACENAME S_AXIS_DATA, TDATA_NUM_BYTES 1, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TVALID";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF aclk: SIGNAL IS "XIL_INTERFACENAME aclk_intf, ASSOCIATED_BUSIF S_AXIS_CONFIG:M_AXIS_DATA:S_AXIS_DATA:S_AXIS_RELOAD, ASSOCIATED_RESET aresetn, ASSOCIATED_CLKEN aclken, FREQ_HZ 100000000, PHASE 0.000, INSERT_VIP 0";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF aclk: SIGNAL IS "xilinx.com:signal:clock:1.0 aclk_intf CLK";
|
||||
BEGIN
|
||||
U0 : fir_compiler_v7_2_12
|
||||
GENERIC MAP (
|
||||
C_XDEVICEFAMILY => "kintex7",
|
||||
C_ELABORATION_DIR => "./",
|
||||
C_COMPONENT_NAME => "GaussFir_1mp5",
|
||||
C_COEF_FILE => "GaussFir_1mp5.mif",
|
||||
C_COEF_FILE_LINES => 160,
|
||||
C_FILTER_TYPE => 2,
|
||||
C_INTERP_RATE => 32,
|
||||
C_DECIM_RATE => 1,
|
||||
C_ZERO_PACKING_FACTOR => 1,
|
||||
C_SYMMETRY => 0,
|
||||
C_NUM_FILTS => 1,
|
||||
C_NUM_TAPS => 129,
|
||||
C_NUM_CHANNELS => 1,
|
||||
C_CHANNEL_PATTERN => "fixed",
|
||||
C_ROUND_MODE => 0,
|
||||
C_COEF_RELOAD => 0,
|
||||
C_NUM_RELOAD_SLOTS => 1,
|
||||
C_COL_MODE => 1,
|
||||
C_COL_PIPE_LEN => 4,
|
||||
C_COL_CONFIG => "5",
|
||||
C_OPTIMIZATION => 0,
|
||||
C_DATA_PATH_WIDTHS => "2",
|
||||
C_DATA_IP_PATH_WIDTHS => "2",
|
||||
C_DATA_PX_PATH_WIDTHS => "2",
|
||||
C_DATA_WIDTH => 2,
|
||||
C_COEF_PATH_WIDTHS => "14",
|
||||
C_COEF_WIDTH => 14,
|
||||
C_DATA_PATH_SRC => "0",
|
||||
C_COEF_PATH_SRC => "0",
|
||||
C_PX_PATH_SRC => "0",
|
||||
C_DATA_PATH_SIGN => "0",
|
||||
C_COEF_PATH_SIGN => "1",
|
||||
C_ACCUM_PATH_WIDTHS => "13",
|
||||
C_OUTPUT_WIDTH => 13,
|
||||
C_OUTPUT_PATH_WIDTHS => "13",
|
||||
C_ACCUM_OP_PATH_WIDTHS => "13",
|
||||
C_EXT_MULT_CNFG => "none",
|
||||
C_DATA_PATH_PSAMP_SRC => "0",
|
||||
C_OP_PATH_PSAMP_SRC => "0",
|
||||
C_NUM_MADDS => 5,
|
||||
C_OPT_MADDS => "none",
|
||||
C_OVERSAMPLING_RATE => 1,
|
||||
C_INPUT_RATE => 32,
|
||||
C_OUTPUT_RATE => 1,
|
||||
C_DATA_MEMTYPE => 0,
|
||||
C_COEF_MEMTYPE => 2,
|
||||
C_IPBUFF_MEMTYPE => 0,
|
||||
C_OPBUFF_MEMTYPE => 0,
|
||||
C_DATAPATH_MEMTYPE => 0,
|
||||
C_MEM_ARRANGEMENT => 2,
|
||||
C_DATA_MEM_PACKING => 0,
|
||||
C_COEF_MEM_PACKING => 0,
|
||||
C_FILTS_PACKED => 0,
|
||||
C_LATENCY => 11,
|
||||
C_HAS_ARESETn => 0,
|
||||
C_HAS_ACLKEN => 0,
|
||||
C_DATA_HAS_TLAST => 0,
|
||||
C_S_DATA_HAS_FIFO => 0,
|
||||
C_S_DATA_HAS_TUSER => 0,
|
||||
C_S_DATA_TDATA_WIDTH => 8,
|
||||
C_S_DATA_TUSER_WIDTH => 1,
|
||||
C_M_DATA_HAS_TREADY => 0,
|
||||
C_M_DATA_HAS_TUSER => 0,
|
||||
C_M_DATA_TDATA_WIDTH => 16,
|
||||
C_M_DATA_TUSER_WIDTH => 1,
|
||||
C_HAS_CONFIG_CHANNEL => 0,
|
||||
C_CONFIG_SYNC_MODE => 0,
|
||||
C_CONFIG_PACKET_SIZE => 0,
|
||||
C_CONFIG_TDATA_WIDTH => 1,
|
||||
C_RELOAD_TDATA_WIDTH => 1
|
||||
)
|
||||
PORT MAP (
|
||||
aresetn => '1',
|
||||
aclk => aclk,
|
||||
aclken => '1',
|
||||
s_axis_data_tvalid => s_axis_data_tvalid,
|
||||
s_axis_data_tready => s_axis_data_tready,
|
||||
s_axis_data_tlast => '0',
|
||||
s_axis_data_tuser => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
|
||||
s_axis_data_tdata => s_axis_data_tdata,
|
||||
s_axis_config_tvalid => '0',
|
||||
s_axis_config_tlast => '0',
|
||||
s_axis_config_tdata => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
|
||||
s_axis_reload_tvalid => '0',
|
||||
s_axis_reload_tlast => '0',
|
||||
s_axis_reload_tdata => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
|
||||
m_axis_data_tvalid => m_axis_data_tvalid,
|
||||
m_axis_data_tready => '1',
|
||||
m_axis_data_tdata => m_axis_data_tdata
|
||||
);
|
||||
END GaussFir_1mp5_arch;
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
|
||||
// file: ad9361_clk_gen.v
|
||||
//
|
||||
// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// User entered comments
|
||||
//----------------------------------------------------------------------------
|
||||
// None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Output Output Phase Duty Cycle Pk-to-Pk Phase
|
||||
// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)
|
||||
//----------------------------------------------------------------------------
|
||||
// clk_out1____48.000______0.000______50.0______139.139_____89.958
|
||||
// clk_out2____96.000______0.000______50.0______120.859_____89.958
|
||||
// clk_out3___144.000______0.000______50.0______112.241_____89.958
|
||||
// clk_out4___192.000______0.000______50.0______106.524_____89.958
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Input Clock Freq (MHz) Input Jitter (UI)
|
||||
//----------------------------------------------------------------------------
|
||||
// __primary______________96____________0.010
|
||||
|
||||
`timescale 1ps/1ps
|
||||
|
||||
(* CORE_GENERATION_INFO = "ad9361_clk_gen,clk_wiz_v6_0_3_0_0,{component_name=ad9361_clk_gen,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=false,use_inclk_switchover=false,use_dyn_reconfig=false,enable_axi=0,feedback_source=FDBK_AUTO,PRIMITIVE=MMCM,num_out_clk=4,clkin1_period=10.417,clkin2_period=10.000,use_power_down=false,use_reset=false,use_locked=true,use_inclk_stopped=false,feedback_type=SINGLE,CLOCK_MGR_TYPE=NA,manual_override=false}" *)
|
||||
|
||||
module ad9361_clk_gen
|
||||
(
|
||||
// Clock out ports
|
||||
output clk_out1,
|
||||
output clk_out2,
|
||||
output clk_out3,
|
||||
output clk_out4,
|
||||
// Status and control signals
|
||||
output locked,
|
||||
// Clock in ports
|
||||
input clk_in1
|
||||
);
|
||||
|
||||
ad9361_clk_gen_clk_wiz inst
|
||||
(
|
||||
// Clock out ports
|
||||
.clk_out1(clk_out1),
|
||||
.clk_out2(clk_out2),
|
||||
.clk_out3(clk_out3),
|
||||
.clk_out4(clk_out4),
|
||||
// Status and control signals
|
||||
.locked(locked),
|
||||
// Clock in ports
|
||||
.clk_in1(clk_in1)
|
||||
);
|
||||
|
||||
endmodule
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
|
||||
//
|
||||
// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// User entered comments
|
||||
//----------------------------------------------------------------------------
|
||||
// None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Output Output Phase Duty Cycle Pk-to-Pk Phase
|
||||
// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)
|
||||
//----------------------------------------------------------------------------
|
||||
// clk_out1____48.000______0.000______50.0______139.139_____89.958
|
||||
// clk_out2____96.000______0.000______50.0______120.859_____89.958
|
||||
// clk_out3___144.000______0.000______50.0______112.241_____89.958
|
||||
// clk_out4___192.000______0.000______50.0______106.524_____89.958
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Input Clock Freq (MHz) Input Jitter (UI)
|
||||
//----------------------------------------------------------------------------
|
||||
// __primary______________96____________0.010
|
||||
|
||||
// The following must be inserted into your Verilog file for this
|
||||
// core to be instantiated. Change the instance name and port connections
|
||||
// (in parentheses) to your own signal names.
|
||||
|
||||
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
|
||||
|
||||
ad9361_clk_gen instance_name
|
||||
(
|
||||
// Clock out ports
|
||||
.clk_out1(clk_out1), // output clk_out1
|
||||
.clk_out2(clk_out2), // output clk_out2
|
||||
.clk_out3(clk_out3), // output clk_out3
|
||||
.clk_out4(clk_out4), // output clk_out4
|
||||
// Status and control signals
|
||||
.locked(locked), // output locked
|
||||
// Clock in ports
|
||||
.clk_in1(clk_in1)); // input clk_in1
|
||||
// INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
+228
@@ -0,0 +1,228 @@
|
||||
|
||||
// file: ad9361_clk_gen.v
|
||||
//
|
||||
// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// User entered comments
|
||||
//----------------------------------------------------------------------------
|
||||
// None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Output Output Phase Duty Cycle Pk-to-Pk Phase
|
||||
// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)
|
||||
//----------------------------------------------------------------------------
|
||||
// clk_out1____48.000______0.000______50.0______139.139_____89.958
|
||||
// clk_out2____96.000______0.000______50.0______120.859_____89.958
|
||||
// clk_out3___144.000______0.000______50.0______112.241_____89.958
|
||||
// clk_out4___192.000______0.000______50.0______106.524_____89.958
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Input Clock Freq (MHz) Input Jitter (UI)
|
||||
//----------------------------------------------------------------------------
|
||||
// __primary______________96____________0.010
|
||||
|
||||
`timescale 1ps/1ps
|
||||
|
||||
module ad9361_clk_gen_clk_wiz
|
||||
|
||||
(// Clock in ports
|
||||
// Clock out ports
|
||||
output clk_out1,
|
||||
output clk_out2,
|
||||
output clk_out3,
|
||||
output clk_out4,
|
||||
// Status and control signals
|
||||
output locked,
|
||||
input clk_in1
|
||||
);
|
||||
// Input buffering
|
||||
//------------------------------------
|
||||
wire clk_in1_ad9361_clk_gen;
|
||||
wire clk_in2_ad9361_clk_gen;
|
||||
IBUF clkin1_ibufg
|
||||
(.O (clk_in1_ad9361_clk_gen),
|
||||
.I (clk_in1));
|
||||
|
||||
|
||||
|
||||
|
||||
// Clocking PRIMITIVE
|
||||
//------------------------------------
|
||||
|
||||
// Instantiation of the MMCM PRIMITIVE
|
||||
// * Unused inputs are tied off
|
||||
// * Unused outputs are labeled unused
|
||||
|
||||
wire clk_out1_ad9361_clk_gen;
|
||||
wire clk_out2_ad9361_clk_gen;
|
||||
wire clk_out3_ad9361_clk_gen;
|
||||
wire clk_out4_ad9361_clk_gen;
|
||||
wire clk_out5_ad9361_clk_gen;
|
||||
wire clk_out6_ad9361_clk_gen;
|
||||
wire clk_out7_ad9361_clk_gen;
|
||||
|
||||
wire [15:0] do_unused;
|
||||
wire drdy_unused;
|
||||
wire psdone_unused;
|
||||
wire locked_int;
|
||||
wire clkfbout_ad9361_clk_gen;
|
||||
wire clkfbout_buf_ad9361_clk_gen;
|
||||
wire clkfboutb_unused;
|
||||
wire clkout0b_unused;
|
||||
wire clkout1b_unused;
|
||||
wire clkout2b_unused;
|
||||
wire clkout3b_unused;
|
||||
wire clkout4_unused;
|
||||
wire clkout5_unused;
|
||||
wire clkout6_unused;
|
||||
wire clkfbstopped_unused;
|
||||
wire clkinstopped_unused;
|
||||
|
||||
MMCME2_ADV
|
||||
#(.BANDWIDTH ("OPTIMIZED"),
|
||||
.CLKOUT4_CASCADE ("FALSE"),
|
||||
.COMPENSATION ("ZHOLD"),
|
||||
.STARTUP_WAIT ("FALSE"),
|
||||
.DIVCLK_DIVIDE (1),
|
||||
.CLKFBOUT_MULT_F (12.000),
|
||||
.CLKFBOUT_PHASE (0.000),
|
||||
.CLKFBOUT_USE_FINE_PS ("FALSE"),
|
||||
.CLKOUT0_DIVIDE_F (24.000),
|
||||
.CLKOUT0_PHASE (0.000),
|
||||
.CLKOUT0_DUTY_CYCLE (0.500),
|
||||
.CLKOUT0_USE_FINE_PS ("FALSE"),
|
||||
.CLKOUT1_DIVIDE (12),
|
||||
.CLKOUT1_PHASE (0.000),
|
||||
.CLKOUT1_DUTY_CYCLE (0.500),
|
||||
.CLKOUT1_USE_FINE_PS ("FALSE"),
|
||||
.CLKOUT2_DIVIDE (8),
|
||||
.CLKOUT2_PHASE (0.000),
|
||||
.CLKOUT2_DUTY_CYCLE (0.500),
|
||||
.CLKOUT2_USE_FINE_PS ("FALSE"),
|
||||
.CLKOUT3_DIVIDE (6),
|
||||
.CLKOUT3_PHASE (0.000),
|
||||
.CLKOUT3_DUTY_CYCLE (0.500),
|
||||
.CLKOUT3_USE_FINE_PS ("FALSE"),
|
||||
.CLKIN1_PERIOD (10.417))
|
||||
mmcm_adv_inst
|
||||
// Output clocks
|
||||
(
|
||||
.CLKFBOUT (clkfbout_ad9361_clk_gen),
|
||||
.CLKFBOUTB (clkfboutb_unused),
|
||||
.CLKOUT0 (clk_out1_ad9361_clk_gen),
|
||||
.CLKOUT0B (clkout0b_unused),
|
||||
.CLKOUT1 (clk_out2_ad9361_clk_gen),
|
||||
.CLKOUT1B (clkout1b_unused),
|
||||
.CLKOUT2 (clk_out3_ad9361_clk_gen),
|
||||
.CLKOUT2B (clkout2b_unused),
|
||||
.CLKOUT3 (clk_out4_ad9361_clk_gen),
|
||||
.CLKOUT3B (clkout3b_unused),
|
||||
.CLKOUT4 (clkout4_unused),
|
||||
.CLKOUT5 (clkout5_unused),
|
||||
.CLKOUT6 (clkout6_unused),
|
||||
// Input clock control
|
||||
.CLKFBIN (clkfbout_buf_ad9361_clk_gen),
|
||||
.CLKIN1 (clk_in1_ad9361_clk_gen),
|
||||
.CLKIN2 (1'b0),
|
||||
// Tied to always select the primary input clock
|
||||
.CLKINSEL (1'b1),
|
||||
// Ports for dynamic reconfiguration
|
||||
.DADDR (7'h0),
|
||||
.DCLK (1'b0),
|
||||
.DEN (1'b0),
|
||||
.DI (16'h0),
|
||||
.DO (do_unused),
|
||||
.DRDY (drdy_unused),
|
||||
.DWE (1'b0),
|
||||
// Ports for dynamic phase shift
|
||||
.PSCLK (1'b0),
|
||||
.PSEN (1'b0),
|
||||
.PSINCDEC (1'b0),
|
||||
.PSDONE (psdone_unused),
|
||||
// Other control and status signals
|
||||
.LOCKED (locked_int),
|
||||
.CLKINSTOPPED (clkinstopped_unused),
|
||||
.CLKFBSTOPPED (clkfbstopped_unused),
|
||||
.PWRDWN (1'b0),
|
||||
.RST (1'b0));
|
||||
|
||||
assign locked = locked_int;
|
||||
// Clock Monitor clock assigning
|
||||
//--------------------------------------
|
||||
// Output buffering
|
||||
//-----------------------------------
|
||||
|
||||
BUFG clkf_buf
|
||||
(.O (clkfbout_buf_ad9361_clk_gen),
|
||||
.I (clkfbout_ad9361_clk_gen));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BUFG clkout1_buf
|
||||
(.O (clk_out1),
|
||||
.I (clk_out1_ad9361_clk_gen));
|
||||
|
||||
|
||||
BUFG clkout2_buf
|
||||
(.O (clk_out2),
|
||||
.I (clk_out2_ad9361_clk_gen));
|
||||
|
||||
BUFG clkout3_buf
|
||||
(.O (clk_out3),
|
||||
.I (clk_out3_ad9361_clk_gen));
|
||||
|
||||
BUFG clkout4_buf
|
||||
(.O (clk_out4),
|
||||
.I (clk_out4_ad9361_clk_gen));
|
||||
|
||||
|
||||
|
||||
endmodule
|
||||
+271
@@ -0,0 +1,271 @@
|
||||
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
// --------------------------------------------------------------------------------
|
||||
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
// Date : Sat Mar 18 23:33:33 2023
|
||||
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
// Command : write_verilog -force -mode funcsim
|
||||
// D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/ad9361_clk_gen_synth_1/ad9361_clk_gen_sim_netlist.v
|
||||
// Design : ad9361_clk_gen
|
||||
// Purpose : This verilog netlist is a functional simulation representation of the design and should not be modified
|
||||
// or synthesized. This netlist cannot be used for SDF annotated simulation.
|
||||
// Device : xc7k410tffg900-2
|
||||
// --------------------------------------------------------------------------------
|
||||
`timescale 1 ps / 1 ps
|
||||
|
||||
(* NotValidForBitStream *)
|
||||
module ad9361_clk_gen
|
||||
(clk_out1,
|
||||
clk_out2,
|
||||
clk_out3,
|
||||
clk_out4,
|
||||
locked,
|
||||
clk_in1);
|
||||
output clk_out1;
|
||||
output clk_out2;
|
||||
output clk_out3;
|
||||
output clk_out4;
|
||||
output locked;
|
||||
input clk_in1;
|
||||
|
||||
(* IBUF_LOW_PWR *) wire clk_in1;
|
||||
wire clk_out1;
|
||||
wire clk_out2;
|
||||
wire clk_out3;
|
||||
wire clk_out4;
|
||||
wire locked;
|
||||
|
||||
ad9361_clk_gen_ad9361_clk_gen_clk_wiz inst
|
||||
(.clk_in1(clk_in1),
|
||||
.clk_out1(clk_out1),
|
||||
.clk_out2(clk_out2),
|
||||
.clk_out3(clk_out3),
|
||||
.clk_out4(clk_out4),
|
||||
.locked(locked));
|
||||
endmodule
|
||||
|
||||
(* ORIG_REF_NAME = "ad9361_clk_gen_clk_wiz" *)
|
||||
module ad9361_clk_gen_ad9361_clk_gen_clk_wiz
|
||||
(clk_out1,
|
||||
clk_out2,
|
||||
clk_out3,
|
||||
clk_out4,
|
||||
locked,
|
||||
clk_in1);
|
||||
output clk_out1;
|
||||
output clk_out2;
|
||||
output clk_out3;
|
||||
output clk_out4;
|
||||
output locked;
|
||||
input clk_in1;
|
||||
|
||||
wire clk_in1;
|
||||
wire clk_in1_ad9361_clk_gen;
|
||||
wire clk_out1;
|
||||
wire clk_out1_ad9361_clk_gen;
|
||||
wire clk_out2;
|
||||
wire clk_out2_ad9361_clk_gen;
|
||||
wire clk_out3;
|
||||
wire clk_out3_ad9361_clk_gen;
|
||||
wire clk_out4;
|
||||
wire clk_out4_ad9361_clk_gen;
|
||||
wire clkfbout_ad9361_clk_gen;
|
||||
wire clkfbout_buf_ad9361_clk_gen;
|
||||
wire locked;
|
||||
wire NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_DRDY_UNCONNECTED;
|
||||
wire NLW_mmcm_adv_inst_PSDONE_UNCONNECTED;
|
||||
wire [15:0]NLW_mmcm_adv_inst_DO_UNCONNECTED;
|
||||
|
||||
(* BOX_TYPE = "PRIMITIVE" *)
|
||||
BUFG clkf_buf
|
||||
(.I(clkfbout_ad9361_clk_gen),
|
||||
.O(clkfbout_buf_ad9361_clk_gen));
|
||||
(* BOX_TYPE = "PRIMITIVE" *)
|
||||
(* CAPACITANCE = "DONT_CARE" *)
|
||||
(* IBUF_DELAY_VALUE = "0" *)
|
||||
(* IFD_DELAY_VALUE = "AUTO" *)
|
||||
IBUF #(
|
||||
.IOSTANDARD("DEFAULT"))
|
||||
clkin1_ibufg
|
||||
(.I(clk_in1),
|
||||
.O(clk_in1_ad9361_clk_gen));
|
||||
(* BOX_TYPE = "PRIMITIVE" *)
|
||||
BUFG clkout1_buf
|
||||
(.I(clk_out1_ad9361_clk_gen),
|
||||
.O(clk_out1));
|
||||
(* BOX_TYPE = "PRIMITIVE" *)
|
||||
BUFG clkout2_buf
|
||||
(.I(clk_out2_ad9361_clk_gen),
|
||||
.O(clk_out2));
|
||||
(* BOX_TYPE = "PRIMITIVE" *)
|
||||
BUFG clkout3_buf
|
||||
(.I(clk_out3_ad9361_clk_gen),
|
||||
.O(clk_out3));
|
||||
(* BOX_TYPE = "PRIMITIVE" *)
|
||||
BUFG clkout4_buf
|
||||
(.I(clk_out4_ad9361_clk_gen),
|
||||
.O(clk_out4));
|
||||
(* BOX_TYPE = "PRIMITIVE" *)
|
||||
MMCME2_ADV #(
|
||||
.BANDWIDTH("OPTIMIZED"),
|
||||
.CLKFBOUT_MULT_F(12.000000),
|
||||
.CLKFBOUT_PHASE(0.000000),
|
||||
.CLKFBOUT_USE_FINE_PS("FALSE"),
|
||||
.CLKIN1_PERIOD(10.417000),
|
||||
.CLKIN2_PERIOD(0.000000),
|
||||
.CLKOUT0_DIVIDE_F(24.000000),
|
||||
.CLKOUT0_DUTY_CYCLE(0.500000),
|
||||
.CLKOUT0_PHASE(0.000000),
|
||||
.CLKOUT0_USE_FINE_PS("FALSE"),
|
||||
.CLKOUT1_DIVIDE(12),
|
||||
.CLKOUT1_DUTY_CYCLE(0.500000),
|
||||
.CLKOUT1_PHASE(0.000000),
|
||||
.CLKOUT1_USE_FINE_PS("FALSE"),
|
||||
.CLKOUT2_DIVIDE(8),
|
||||
.CLKOUT2_DUTY_CYCLE(0.500000),
|
||||
.CLKOUT2_PHASE(0.000000),
|
||||
.CLKOUT2_USE_FINE_PS("FALSE"),
|
||||
.CLKOUT3_DIVIDE(6),
|
||||
.CLKOUT3_DUTY_CYCLE(0.500000),
|
||||
.CLKOUT3_PHASE(0.000000),
|
||||
.CLKOUT3_USE_FINE_PS("FALSE"),
|
||||
.CLKOUT4_CASCADE("FALSE"),
|
||||
.CLKOUT4_DIVIDE(1),
|
||||
.CLKOUT4_DUTY_CYCLE(0.500000),
|
||||
.CLKOUT4_PHASE(0.000000),
|
||||
.CLKOUT4_USE_FINE_PS("FALSE"),
|
||||
.CLKOUT5_DIVIDE(1),
|
||||
.CLKOUT5_DUTY_CYCLE(0.500000),
|
||||
.CLKOUT5_PHASE(0.000000),
|
||||
.CLKOUT5_USE_FINE_PS("FALSE"),
|
||||
.CLKOUT6_DIVIDE(1),
|
||||
.CLKOUT6_DUTY_CYCLE(0.500000),
|
||||
.CLKOUT6_PHASE(0.000000),
|
||||
.CLKOUT6_USE_FINE_PS("FALSE"),
|
||||
.COMPENSATION("ZHOLD"),
|
||||
.DIVCLK_DIVIDE(1),
|
||||
.IS_CLKINSEL_INVERTED(1'b0),
|
||||
.IS_PSEN_INVERTED(1'b0),
|
||||
.IS_PSINCDEC_INVERTED(1'b0),
|
||||
.IS_PWRDWN_INVERTED(1'b0),
|
||||
.IS_RST_INVERTED(1'b0),
|
||||
.REF_JITTER1(0.010000),
|
||||
.REF_JITTER2(0.010000),
|
||||
.SS_EN("FALSE"),
|
||||
.SS_MODE("CENTER_HIGH"),
|
||||
.SS_MOD_PERIOD(10000),
|
||||
.STARTUP_WAIT("FALSE"))
|
||||
mmcm_adv_inst
|
||||
(.CLKFBIN(clkfbout_buf_ad9361_clk_gen),
|
||||
.CLKFBOUT(clkfbout_ad9361_clk_gen),
|
||||
.CLKFBOUTB(NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED),
|
||||
.CLKFBSTOPPED(NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED),
|
||||
.CLKIN1(clk_in1_ad9361_clk_gen),
|
||||
.CLKIN2(1'b0),
|
||||
.CLKINSEL(1'b1),
|
||||
.CLKINSTOPPED(NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED),
|
||||
.CLKOUT0(clk_out1_ad9361_clk_gen),
|
||||
.CLKOUT0B(NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED),
|
||||
.CLKOUT1(clk_out2_ad9361_clk_gen),
|
||||
.CLKOUT1B(NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED),
|
||||
.CLKOUT2(clk_out3_ad9361_clk_gen),
|
||||
.CLKOUT2B(NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED),
|
||||
.CLKOUT3(clk_out4_ad9361_clk_gen),
|
||||
.CLKOUT3B(NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED),
|
||||
.CLKOUT4(NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED),
|
||||
.CLKOUT5(NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED),
|
||||
.CLKOUT6(NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED),
|
||||
.DADDR({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
|
||||
.DCLK(1'b0),
|
||||
.DEN(1'b0),
|
||||
.DI({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
|
||||
.DO(NLW_mmcm_adv_inst_DO_UNCONNECTED[15:0]),
|
||||
.DRDY(NLW_mmcm_adv_inst_DRDY_UNCONNECTED),
|
||||
.DWE(1'b0),
|
||||
.LOCKED(locked),
|
||||
.PSCLK(1'b0),
|
||||
.PSDONE(NLW_mmcm_adv_inst_PSDONE_UNCONNECTED),
|
||||
.PSEN(1'b0),
|
||||
.PSINCDEC(1'b0),
|
||||
.PWRDWN(1'b0),
|
||||
.RST(1'b0));
|
||||
endmodule
|
||||
`ifndef GLBL
|
||||
`define GLBL
|
||||
`timescale 1 ps / 1 ps
|
||||
|
||||
module glbl ();
|
||||
|
||||
parameter ROC_WIDTH = 100000;
|
||||
parameter TOC_WIDTH = 0;
|
||||
|
||||
//-------- STARTUP Globals --------------
|
||||
wire GSR;
|
||||
wire GTS;
|
||||
wire GWE;
|
||||
wire PRLD;
|
||||
tri1 p_up_tmp;
|
||||
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
|
||||
|
||||
wire PROGB_GLBL;
|
||||
wire CCLKO_GLBL;
|
||||
wire FCSBO_GLBL;
|
||||
wire [3:0] DO_GLBL;
|
||||
wire [3:0] DI_GLBL;
|
||||
|
||||
reg GSR_int;
|
||||
reg GTS_int;
|
||||
reg PRLD_int;
|
||||
|
||||
//-------- JTAG Globals --------------
|
||||
wire JTAG_TDO_GLBL;
|
||||
wire JTAG_TCK_GLBL;
|
||||
wire JTAG_TDI_GLBL;
|
||||
wire JTAG_TMS_GLBL;
|
||||
wire JTAG_TRST_GLBL;
|
||||
|
||||
reg JTAG_CAPTURE_GLBL;
|
||||
reg JTAG_RESET_GLBL;
|
||||
reg JTAG_SHIFT_GLBL;
|
||||
reg JTAG_UPDATE_GLBL;
|
||||
reg JTAG_RUNTEST_GLBL;
|
||||
|
||||
reg JTAG_SEL1_GLBL = 0;
|
||||
reg JTAG_SEL2_GLBL = 0 ;
|
||||
reg JTAG_SEL3_GLBL = 0;
|
||||
reg JTAG_SEL4_GLBL = 0;
|
||||
|
||||
reg JTAG_USER_TDO1_GLBL = 1'bz;
|
||||
reg JTAG_USER_TDO2_GLBL = 1'bz;
|
||||
reg JTAG_USER_TDO3_GLBL = 1'bz;
|
||||
reg JTAG_USER_TDO4_GLBL = 1'bz;
|
||||
|
||||
assign (strong1, weak0) GSR = GSR_int;
|
||||
assign (strong1, weak0) GTS = GTS_int;
|
||||
assign (weak1, weak0) PRLD = PRLD_int;
|
||||
|
||||
initial begin
|
||||
GSR_int = 1'b1;
|
||||
PRLD_int = 1'b1;
|
||||
#(ROC_WIDTH)
|
||||
GSR_int = 1'b0;
|
||||
PRLD_int = 1'b0;
|
||||
end
|
||||
|
||||
initial begin
|
||||
GTS_int = 1'b1;
|
||||
#(TOC_WIDTH)
|
||||
GTS_int = 1'b0;
|
||||
end
|
||||
|
||||
endmodule
|
||||
`endif
|
||||
+214
@@ -0,0 +1,214 @@
|
||||
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
-- --------------------------------------------------------------------------------
|
||||
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
-- Date : Sat Mar 18 23:33:33 2023
|
||||
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
-- Command : write_vhdl -force -mode funcsim
|
||||
-- D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/ad9361_clk_gen_synth_1/ad9361_clk_gen_sim_netlist.vhdl
|
||||
-- Design : ad9361_clk_gen
|
||||
-- Purpose : This VHDL netlist is a functional simulation representation of the design and should not be modified or
|
||||
-- synthesized. This netlist cannot be used for SDF annotated simulation.
|
||||
-- Device : xc7k410tffg900-2
|
||||
-- --------------------------------------------------------------------------------
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
library UNISIM;
|
||||
use UNISIM.VCOMPONENTS.ALL;
|
||||
entity ad9361_clk_gen_ad9361_clk_gen_clk_wiz is
|
||||
port (
|
||||
clk_out1 : out STD_LOGIC;
|
||||
clk_out2 : out STD_LOGIC;
|
||||
clk_out3 : out STD_LOGIC;
|
||||
clk_out4 : out STD_LOGIC;
|
||||
locked : out STD_LOGIC;
|
||||
clk_in1 : in STD_LOGIC
|
||||
);
|
||||
attribute ORIG_REF_NAME : string;
|
||||
attribute ORIG_REF_NAME of ad9361_clk_gen_ad9361_clk_gen_clk_wiz : entity is "ad9361_clk_gen_clk_wiz";
|
||||
end ad9361_clk_gen_ad9361_clk_gen_clk_wiz;
|
||||
|
||||
architecture STRUCTURE of ad9361_clk_gen_ad9361_clk_gen_clk_wiz is
|
||||
signal clk_in1_ad9361_clk_gen : STD_LOGIC;
|
||||
signal clk_out1_ad9361_clk_gen : STD_LOGIC;
|
||||
signal clk_out2_ad9361_clk_gen : STD_LOGIC;
|
||||
signal clk_out3_ad9361_clk_gen : STD_LOGIC;
|
||||
signal clk_out4_ad9361_clk_gen : STD_LOGIC;
|
||||
signal clkfbout_ad9361_clk_gen : STD_LOGIC;
|
||||
signal clkfbout_buf_ad9361_clk_gen : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_DRDY_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_PSDONE_UNCONNECTED : STD_LOGIC;
|
||||
signal NLW_mmcm_adv_inst_DO_UNCONNECTED : STD_LOGIC_VECTOR ( 15 downto 0 );
|
||||
attribute BOX_TYPE : string;
|
||||
attribute BOX_TYPE of clkf_buf : label is "PRIMITIVE";
|
||||
attribute BOX_TYPE of clkin1_ibufg : label is "PRIMITIVE";
|
||||
attribute CAPACITANCE : string;
|
||||
attribute CAPACITANCE of clkin1_ibufg : label is "DONT_CARE";
|
||||
attribute IBUF_DELAY_VALUE : string;
|
||||
attribute IBUF_DELAY_VALUE of clkin1_ibufg : label is "0";
|
||||
attribute IFD_DELAY_VALUE : string;
|
||||
attribute IFD_DELAY_VALUE of clkin1_ibufg : label is "AUTO";
|
||||
attribute BOX_TYPE of clkout1_buf : label is "PRIMITIVE";
|
||||
attribute BOX_TYPE of clkout2_buf : label is "PRIMITIVE";
|
||||
attribute BOX_TYPE of clkout3_buf : label is "PRIMITIVE";
|
||||
attribute BOX_TYPE of clkout4_buf : label is "PRIMITIVE";
|
||||
attribute BOX_TYPE of mmcm_adv_inst : label is "PRIMITIVE";
|
||||
begin
|
||||
clkf_buf: unisim.vcomponents.BUFG
|
||||
port map (
|
||||
I => clkfbout_ad9361_clk_gen,
|
||||
O => clkfbout_buf_ad9361_clk_gen
|
||||
);
|
||||
clkin1_ibufg: unisim.vcomponents.IBUF
|
||||
generic map(
|
||||
IOSTANDARD => "DEFAULT"
|
||||
)
|
||||
port map (
|
||||
I => clk_in1,
|
||||
O => clk_in1_ad9361_clk_gen
|
||||
);
|
||||
clkout1_buf: unisim.vcomponents.BUFG
|
||||
port map (
|
||||
I => clk_out1_ad9361_clk_gen,
|
||||
O => clk_out1
|
||||
);
|
||||
clkout2_buf: unisim.vcomponents.BUFG
|
||||
port map (
|
||||
I => clk_out2_ad9361_clk_gen,
|
||||
O => clk_out2
|
||||
);
|
||||
clkout3_buf: unisim.vcomponents.BUFG
|
||||
port map (
|
||||
I => clk_out3_ad9361_clk_gen,
|
||||
O => clk_out3
|
||||
);
|
||||
clkout4_buf: unisim.vcomponents.BUFG
|
||||
port map (
|
||||
I => clk_out4_ad9361_clk_gen,
|
||||
O => clk_out4
|
||||
);
|
||||
mmcm_adv_inst: unisim.vcomponents.MMCME2_ADV
|
||||
generic map(
|
||||
BANDWIDTH => "OPTIMIZED",
|
||||
CLKFBOUT_MULT_F => 12.000000,
|
||||
CLKFBOUT_PHASE => 0.000000,
|
||||
CLKFBOUT_USE_FINE_PS => false,
|
||||
CLKIN1_PERIOD => 10.417000,
|
||||
CLKIN2_PERIOD => 0.000000,
|
||||
CLKOUT0_DIVIDE_F => 24.000000,
|
||||
CLKOUT0_DUTY_CYCLE => 0.500000,
|
||||
CLKOUT0_PHASE => 0.000000,
|
||||
CLKOUT0_USE_FINE_PS => false,
|
||||
CLKOUT1_DIVIDE => 12,
|
||||
CLKOUT1_DUTY_CYCLE => 0.500000,
|
||||
CLKOUT1_PHASE => 0.000000,
|
||||
CLKOUT1_USE_FINE_PS => false,
|
||||
CLKOUT2_DIVIDE => 8,
|
||||
CLKOUT2_DUTY_CYCLE => 0.500000,
|
||||
CLKOUT2_PHASE => 0.000000,
|
||||
CLKOUT2_USE_FINE_PS => false,
|
||||
CLKOUT3_DIVIDE => 6,
|
||||
CLKOUT3_DUTY_CYCLE => 0.500000,
|
||||
CLKOUT3_PHASE => 0.000000,
|
||||
CLKOUT3_USE_FINE_PS => false,
|
||||
CLKOUT4_CASCADE => false,
|
||||
CLKOUT4_DIVIDE => 1,
|
||||
CLKOUT4_DUTY_CYCLE => 0.500000,
|
||||
CLKOUT4_PHASE => 0.000000,
|
||||
CLKOUT4_USE_FINE_PS => false,
|
||||
CLKOUT5_DIVIDE => 1,
|
||||
CLKOUT5_DUTY_CYCLE => 0.500000,
|
||||
CLKOUT5_PHASE => 0.000000,
|
||||
CLKOUT5_USE_FINE_PS => false,
|
||||
CLKOUT6_DIVIDE => 1,
|
||||
CLKOUT6_DUTY_CYCLE => 0.500000,
|
||||
CLKOUT6_PHASE => 0.000000,
|
||||
CLKOUT6_USE_FINE_PS => false,
|
||||
COMPENSATION => "ZHOLD",
|
||||
DIVCLK_DIVIDE => 1,
|
||||
IS_CLKINSEL_INVERTED => '0',
|
||||
IS_PSEN_INVERTED => '0',
|
||||
IS_PSINCDEC_INVERTED => '0',
|
||||
IS_PWRDWN_INVERTED => '0',
|
||||
IS_RST_INVERTED => '0',
|
||||
REF_JITTER1 => 0.010000,
|
||||
REF_JITTER2 => 0.010000,
|
||||
SS_EN => "FALSE",
|
||||
SS_MODE => "CENTER_HIGH",
|
||||
SS_MOD_PERIOD => 10000,
|
||||
STARTUP_WAIT => false
|
||||
)
|
||||
port map (
|
||||
CLKFBIN => clkfbout_buf_ad9361_clk_gen,
|
||||
CLKFBOUT => clkfbout_ad9361_clk_gen,
|
||||
CLKFBOUTB => NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED,
|
||||
CLKFBSTOPPED => NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED,
|
||||
CLKIN1 => clk_in1_ad9361_clk_gen,
|
||||
CLKIN2 => '0',
|
||||
CLKINSEL => '1',
|
||||
CLKINSTOPPED => NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED,
|
||||
CLKOUT0 => clk_out1_ad9361_clk_gen,
|
||||
CLKOUT0B => NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED,
|
||||
CLKOUT1 => clk_out2_ad9361_clk_gen,
|
||||
CLKOUT1B => NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED,
|
||||
CLKOUT2 => clk_out3_ad9361_clk_gen,
|
||||
CLKOUT2B => NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED,
|
||||
CLKOUT3 => clk_out4_ad9361_clk_gen,
|
||||
CLKOUT3B => NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED,
|
||||
CLKOUT4 => NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED,
|
||||
CLKOUT5 => NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED,
|
||||
CLKOUT6 => NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED,
|
||||
DADDR(6 downto 0) => B"0000000",
|
||||
DCLK => '0',
|
||||
DEN => '0',
|
||||
DI(15 downto 0) => B"0000000000000000",
|
||||
DO(15 downto 0) => NLW_mmcm_adv_inst_DO_UNCONNECTED(15 downto 0),
|
||||
DRDY => NLW_mmcm_adv_inst_DRDY_UNCONNECTED,
|
||||
DWE => '0',
|
||||
LOCKED => locked,
|
||||
PSCLK => '0',
|
||||
PSDONE => NLW_mmcm_adv_inst_PSDONE_UNCONNECTED,
|
||||
PSEN => '0',
|
||||
PSINCDEC => '0',
|
||||
PWRDWN => '0',
|
||||
RST => '0'
|
||||
);
|
||||
end STRUCTURE;
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
library UNISIM;
|
||||
use UNISIM.VCOMPONENTS.ALL;
|
||||
entity ad9361_clk_gen is
|
||||
port (
|
||||
clk_out1 : out STD_LOGIC;
|
||||
clk_out2 : out STD_LOGIC;
|
||||
clk_out3 : out STD_LOGIC;
|
||||
clk_out4 : out STD_LOGIC;
|
||||
locked : out STD_LOGIC;
|
||||
clk_in1 : in STD_LOGIC
|
||||
);
|
||||
attribute NotValidForBitStream : boolean;
|
||||
attribute NotValidForBitStream of ad9361_clk_gen : entity is true;
|
||||
end ad9361_clk_gen;
|
||||
|
||||
architecture STRUCTURE of ad9361_clk_gen is
|
||||
begin
|
||||
inst: entity work.ad9361_clk_gen_ad9361_clk_gen_clk_wiz
|
||||
port map (
|
||||
clk_in1 => clk_in1,
|
||||
clk_out1 => clk_out1,
|
||||
clk_out2 => clk_out2,
|
||||
clk_out3 => clk_out3,
|
||||
clk_out4 => clk_out4,
|
||||
locked => locked
|
||||
);
|
||||
end STRUCTURE;
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
// --------------------------------------------------------------------------------
|
||||
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
// Date : Sat Mar 18 23:33:33 2023
|
||||
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
// Command : write_verilog -force -mode synth_stub
|
||||
// D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/ad9361_clk_gen_synth_1/ad9361_clk_gen_stub.v
|
||||
// Design : ad9361_clk_gen
|
||||
// Purpose : Stub declaration of top-level module interface
|
||||
// Device : xc7k410tffg900-2
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
|
||||
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
|
||||
// Please paste the declaration into a Verilog source file or add the file as an additional source.
|
||||
module ad9361_clk_gen(clk_out1, clk_out2, clk_out3, clk_out4, locked,
|
||||
clk_in1)
|
||||
/* synthesis syn_black_box black_box_pad_pin="clk_out1,clk_out2,clk_out3,clk_out4,locked,clk_in1" */;
|
||||
output clk_out1;
|
||||
output clk_out2;
|
||||
output clk_out3;
|
||||
output clk_out4;
|
||||
output locked;
|
||||
input clk_in1;
|
||||
endmodule
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
-- --------------------------------------------------------------------------------
|
||||
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
-- Date : Sat Mar 18 23:33:33 2023
|
||||
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
-- Command : write_vhdl -force -mode synth_stub
|
||||
-- D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/ad9361_clk_gen_synth_1/ad9361_clk_gen_stub.vhdl
|
||||
-- Design : ad9361_clk_gen
|
||||
-- Purpose : Stub declaration of top-level module interface
|
||||
-- Device : xc7k410tffg900-2
|
||||
-- --------------------------------------------------------------------------------
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
|
||||
entity ad9361_clk_gen is
|
||||
Port (
|
||||
clk_out1 : out STD_LOGIC;
|
||||
clk_out2 : out STD_LOGIC;
|
||||
clk_out3 : out STD_LOGIC;
|
||||
clk_out4 : out STD_LOGIC;
|
||||
locked : out STD_LOGIC;
|
||||
clk_in1 : in STD_LOGIC
|
||||
);
|
||||
|
||||
end ad9361_clk_gen;
|
||||
|
||||
architecture stub of ad9361_clk_gen is
|
||||
attribute syn_black_box : boolean;
|
||||
attribute black_box_pad_pin : string;
|
||||
attribute syn_black_box of stub : architecture is true;
|
||||
attribute black_box_pad_pin of stub : architecture is "clk_out1,clk_out2,clk_out3,clk_out4,locked,clk_in1";
|
||||
begin
|
||||
end;
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
// DO NOT MODIFY THIS FILE.
|
||||
|
||||
// IP VLNV: xilinx.com:ip:c_addsub:12.0
|
||||
// IP Revision: 13
|
||||
|
||||
// The following must be inserted into your Verilog file for this
|
||||
// core to be instantiated. Change the instance name and port connections
|
||||
// (in parentheses) to your own signal names.
|
||||
|
||||
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
|
||||
add_s24_s32_s32 your_instance_name (
|
||||
.A(A), // input wire [23 : 0] A
|
||||
.B(B), // input wire [31 : 0] B
|
||||
.CLK(CLK), // input wire CLK
|
||||
.CE(CE), // input wire CE
|
||||
.SCLR(SCLR), // input wire SCLR
|
||||
.S(S) // output wire [31 : 0] S
|
||||
);
|
||||
// INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
|
||||
// You must compile the wrapper file add_s24_s32_s32.v when simulating
|
||||
// the core, add_s24_s32_s32. When compiling the wrapper file, be sure to
|
||||
// reference the Verilog simulation library.
|
||||
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--
|
||||
-- DO NOT MODIFY THIS FILE.
|
||||
|
||||
-- IP VLNV: xilinx.com:ip:c_addsub:12.0
|
||||
-- IP Revision: 13
|
||||
|
||||
-- The following code must appear in the VHDL architecture header.
|
||||
|
||||
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||
COMPONENT add_s24_s32_s32
|
||||
PORT (
|
||||
A : IN STD_LOGIC_VECTOR(23 DOWNTO 0);
|
||||
B : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
|
||||
CLK : IN STD_LOGIC;
|
||||
CE : IN STD_LOGIC;
|
||||
SCLR : IN STD_LOGIC;
|
||||
S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT;
|
||||
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||
|
||||
-- The following code must appear in the VHDL architecture
|
||||
-- body. Substitute your own instance name and net names.
|
||||
|
||||
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||
your_instance_name : add_s24_s32_s32
|
||||
PORT MAP (
|
||||
A => A,
|
||||
B => B,
|
||||
CLK => CLK,
|
||||
CE => CE,
|
||||
SCLR => SCLR,
|
||||
S => S
|
||||
);
|
||||
-- INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||
|
||||
-- You must compile the wrapper file add_s24_s32_s32.vhd when simulating
|
||||
-- the core, add_s24_s32_s32. When compiling the wrapper file, be sure to
|
||||
-- reference the VHDL simulation library.
|
||||
|
||||
+737
@@ -0,0 +1,737 @@
|
||||
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
// --------------------------------------------------------------------------------
|
||||
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
// Date : Sat Mar 18 23:33:37 2023
|
||||
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
// Command : write_verilog -force -mode funcsim
|
||||
// D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/add_s24_s32_s32_synth_1/add_s24_s32_s32_sim_netlist.v
|
||||
// Design : add_s24_s32_s32
|
||||
// Purpose : This verilog netlist is a functional simulation representation of the design and should not be modified
|
||||
// or synthesized. This netlist cannot be used for SDF annotated simulation.
|
||||
// Device : xc7k410tffg900-2
|
||||
// --------------------------------------------------------------------------------
|
||||
`timescale 1 ps / 1 ps
|
||||
|
||||
(* CHECK_LICENSE_TYPE = "add_s24_s32_s32,c_addsub_v12_0_13,{}" *) (* downgradeipidentifiedwarnings = "yes" *) (* x_core_info = "c_addsub_v12_0_13,Vivado 2019.1.3" *)
|
||||
(* NotValidForBitStream *)
|
||||
module add_s24_s32_s32
|
||||
(A,
|
||||
B,
|
||||
CLK,
|
||||
CE,
|
||||
SCLR,
|
||||
S);
|
||||
(* x_interface_info = "xilinx.com:signal:data:1.0 a_intf DATA" *) (* x_interface_parameter = "XIL_INTERFACENAME a_intf, LAYERED_METADATA undef" *) input [23:0]A;
|
||||
(* x_interface_info = "xilinx.com:signal:data:1.0 b_intf DATA" *) (* x_interface_parameter = "XIL_INTERFACENAME b_intf, LAYERED_METADATA undef" *) input [31:0]B;
|
||||
(* x_interface_info = "xilinx.com:signal:clock:1.0 clk_intf CLK" *) (* x_interface_parameter = "XIL_INTERFACENAME clk_intf, ASSOCIATED_BUSIF s_intf:c_out_intf:sinit_intf:sset_intf:bypass_intf:c_in_intf:add_intf:b_intf:a_intf, ASSOCIATED_RESET SCLR, ASSOCIATED_CLKEN CE, FREQ_HZ 100000000, PHASE 0.000, INSERT_VIP 0" *) input CLK;
|
||||
(* x_interface_info = "xilinx.com:signal:clockenable:1.0 ce_intf CE" *) (* x_interface_parameter = "XIL_INTERFACENAME ce_intf, POLARITY ACTIVE_LOW" *) input CE;
|
||||
(* x_interface_info = "xilinx.com:signal:reset:1.0 sclr_intf RST" *) (* x_interface_parameter = "XIL_INTERFACENAME sclr_intf, POLARITY ACTIVE_HIGH, INSERT_VIP 0" *) input SCLR;
|
||||
(* x_interface_info = "xilinx.com:signal:data:1.0 s_intf DATA" *) (* x_interface_parameter = "XIL_INTERFACENAME s_intf, LAYERED_METADATA undef" *) output [31:0]S;
|
||||
|
||||
wire [23:0]A;
|
||||
wire [31:0]B;
|
||||
wire CE;
|
||||
wire CLK;
|
||||
wire [31:0]S;
|
||||
wire SCLR;
|
||||
wire NLW_U0_C_OUT_UNCONNECTED;
|
||||
|
||||
(* C_AINIT_VAL = "0" *)
|
||||
(* C_BORROW_LOW = "1" *)
|
||||
(* C_CE_OVERRIDES_BYPASS = "1" *)
|
||||
(* C_CE_OVERRIDES_SCLR = "0" *)
|
||||
(* C_HAS_CE = "1" *)
|
||||
(* C_HAS_SCLR = "1" *)
|
||||
(* C_HAS_SINIT = "0" *)
|
||||
(* C_HAS_SSET = "0" *)
|
||||
(* C_IMPLEMENTATION = "0" *)
|
||||
(* C_SCLR_OVERRIDES_SSET = "1" *)
|
||||
(* C_SINIT_VAL = "0" *)
|
||||
(* C_VERBOSITY = "0" *)
|
||||
(* C_XDEVICEFAMILY = "kintex7" *)
|
||||
(* c_a_type = "0" *)
|
||||
(* c_a_width = "24" *)
|
||||
(* c_add_mode = "0" *)
|
||||
(* c_b_constant = "0" *)
|
||||
(* c_b_type = "0" *)
|
||||
(* c_b_value = "00000000000000000000000000000000" *)
|
||||
(* c_b_width = "32" *)
|
||||
(* c_bypass_low = "0" *)
|
||||
(* c_has_bypass = "0" *)
|
||||
(* c_has_c_in = "0" *)
|
||||
(* c_has_c_out = "0" *)
|
||||
(* c_latency = "1" *)
|
||||
(* c_out_width = "32" *)
|
||||
(* downgradeipidentifiedwarnings = "yes" *)
|
||||
add_s24_s32_s32_c_addsub_v12_0_13 U0
|
||||
(.A(A),
|
||||
.ADD(1'b1),
|
||||
.B(B),
|
||||
.BYPASS(1'b0),
|
||||
.CE(CE),
|
||||
.CLK(CLK),
|
||||
.C_IN(1'b0),
|
||||
.C_OUT(NLW_U0_C_OUT_UNCONNECTED),
|
||||
.S(S),
|
||||
.SCLR(SCLR),
|
||||
.SINIT(1'b0),
|
||||
.SSET(1'b0));
|
||||
endmodule
|
||||
|
||||
(* C_ADD_MODE = "0" *) (* C_AINIT_VAL = "0" *) (* C_A_TYPE = "0" *)
|
||||
(* C_A_WIDTH = "24" *) (* C_BORROW_LOW = "1" *) (* C_BYPASS_LOW = "0" *)
|
||||
(* C_B_CONSTANT = "0" *) (* C_B_TYPE = "0" *) (* C_B_VALUE = "00000000000000000000000000000000" *)
|
||||
(* C_B_WIDTH = "32" *) (* C_CE_OVERRIDES_BYPASS = "1" *) (* C_CE_OVERRIDES_SCLR = "0" *)
|
||||
(* C_HAS_BYPASS = "0" *) (* C_HAS_CE = "1" *) (* C_HAS_C_IN = "0" *)
|
||||
(* C_HAS_C_OUT = "0" *) (* C_HAS_SCLR = "1" *) (* C_HAS_SINIT = "0" *)
|
||||
(* C_HAS_SSET = "0" *) (* C_IMPLEMENTATION = "0" *) (* C_LATENCY = "1" *)
|
||||
(* C_OUT_WIDTH = "32" *) (* C_SCLR_OVERRIDES_SSET = "1" *) (* C_SINIT_VAL = "0" *)
|
||||
(* C_VERBOSITY = "0" *) (* C_XDEVICEFAMILY = "kintex7" *) (* ORIG_REF_NAME = "c_addsub_v12_0_13" *)
|
||||
(* downgradeipidentifiedwarnings = "yes" *)
|
||||
module add_s24_s32_s32_c_addsub_v12_0_13
|
||||
(A,
|
||||
B,
|
||||
CLK,
|
||||
ADD,
|
||||
C_IN,
|
||||
CE,
|
||||
BYPASS,
|
||||
SCLR,
|
||||
SSET,
|
||||
SINIT,
|
||||
C_OUT,
|
||||
S);
|
||||
input [23:0]A;
|
||||
input [31:0]B;
|
||||
input CLK;
|
||||
input ADD;
|
||||
input C_IN;
|
||||
input CE;
|
||||
input BYPASS;
|
||||
input SCLR;
|
||||
input SSET;
|
||||
input SINIT;
|
||||
output C_OUT;
|
||||
output [31:0]S;
|
||||
|
||||
wire \<const0> ;
|
||||
wire [23:0]A;
|
||||
wire [31:0]B;
|
||||
wire CE;
|
||||
wire CLK;
|
||||
wire [31:0]S;
|
||||
wire SCLR;
|
||||
wire NLW_xst_addsub_C_OUT_UNCONNECTED;
|
||||
|
||||
assign C_OUT = \<const0> ;
|
||||
GND GND
|
||||
(.G(\<const0> ));
|
||||
(* C_AINIT_VAL = "0" *)
|
||||
(* C_BORROW_LOW = "1" *)
|
||||
(* C_CE_OVERRIDES_BYPASS = "1" *)
|
||||
(* C_CE_OVERRIDES_SCLR = "0" *)
|
||||
(* C_HAS_CE = "1" *)
|
||||
(* C_HAS_SCLR = "1" *)
|
||||
(* C_HAS_SINIT = "0" *)
|
||||
(* C_HAS_SSET = "0" *)
|
||||
(* C_IMPLEMENTATION = "0" *)
|
||||
(* C_SCLR_OVERRIDES_SSET = "1" *)
|
||||
(* C_SINIT_VAL = "0" *)
|
||||
(* C_VERBOSITY = "0" *)
|
||||
(* C_XDEVICEFAMILY = "kintex7" *)
|
||||
(* c_a_type = "0" *)
|
||||
(* c_a_width = "24" *)
|
||||
(* c_add_mode = "0" *)
|
||||
(* c_b_constant = "0" *)
|
||||
(* c_b_type = "0" *)
|
||||
(* c_b_value = "00000000000000000000000000000000" *)
|
||||
(* c_b_width = "32" *)
|
||||
(* c_bypass_low = "0" *)
|
||||
(* c_has_bypass = "0" *)
|
||||
(* c_has_c_in = "0" *)
|
||||
(* c_has_c_out = "0" *)
|
||||
(* c_latency = "1" *)
|
||||
(* c_out_width = "32" *)
|
||||
(* downgradeipidentifiedwarnings = "yes" *)
|
||||
add_s24_s32_s32_c_addsub_v12_0_13_viv xst_addsub
|
||||
(.A(A),
|
||||
.ADD(1'b0),
|
||||
.B(B),
|
||||
.BYPASS(1'b0),
|
||||
.CE(CE),
|
||||
.CLK(CLK),
|
||||
.C_IN(1'b0),
|
||||
.C_OUT(NLW_xst_addsub_C_OUT_UNCONNECTED),
|
||||
.S(S),
|
||||
.SCLR(SCLR),
|
||||
.SINIT(1'b0),
|
||||
.SSET(1'b0));
|
||||
endmodule
|
||||
`pragma protect begin_protected
|
||||
`pragma protect version = 1
|
||||
`pragma protect encrypt_agent = "XILINX"
|
||||
`pragma protect encrypt_agent_info = "Xilinx Encryption Tool 2019.1"
|
||||
`pragma protect key_keyowner="Cadence Design Systems.", key_keyname="cds_rsa_key", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=64)
|
||||
`pragma protect key_block
|
||||
EIXxeINTAO242euia8HdyXF7h6x0XAl8Xpk7diBjuD2e+Y0gB/lAcVBQITjsIwp+t4oM79vqoGzH
|
||||
+4vEzi5WLA==
|
||||
|
||||
`pragma protect key_keyowner="Synopsys", key_keyname="SNPS-VCS-RSA-2", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=128)
|
||||
`pragma protect key_block
|
||||
jaOvT2EV7VCvDB1JYt0rR5Zrk5hPgyaVkRnX0I/v7IJxLgDTVbuBV5u/1OpOfWNJyaUFf6hkqGag
|
||||
nHh32KPESYSixNGFIu/cwi8WznCjrYP2F2CTV0ho9Q305JZ2CYFosWIZfe0p+Lc2BPHFBpRJBfEl
|
||||
TA6I/ZwCg6ZdHqBwJX0=
|
||||
|
||||
`pragma protect key_keyowner="Aldec", key_keyname="ALDEC15_001", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`pragma protect key_block
|
||||
Vlrb/9UE65aOuMXkdu0+G5VZjNMmxg34yAXb3zM44FS9dZHuBcNcqiOqCYsXTyiiTc0heuoV2Tce
|
||||
efI8BQO9l7F3As+jp6Vv9VtuDmvSNblHxgDw+NTDjGLhE+u2MZZ6xfXTnOt99Kt+Pw7F4lPPGduA
|
||||
urDCk4kOt83YAc5uRL/FBt4fZYDTXdfJNlPl0Srv3LTGdZszWkNNMer4BcBtYplGy3cxaw6v1wtv
|
||||
LgMgGyAalg7Od2DUypqqFGQRfWLVEldRJyASyzGnf1aAfzqHjqLBUojM2a+AfmFuyxAy1FSsEzKM
|
||||
ikpGTUfiESifpz85jbR5iZ1BssBSKZF39meuIw==
|
||||
|
||||
`pragma protect key_keyowner="ATRENTA", key_keyname="ATR-SG-2015-RSA-3", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`pragma protect key_block
|
||||
uYAMxg2Cs3KhSCgysItwFzH3qx2qaPfA5LE/sWHsmIOlTmYaExuulptcJad5CI4stZxWhk6FAvQb
|
||||
ZnHIxupQ0Ag3Vw2B/xsw5H1yoh2MUujTwbJsk8rBqYMuJsUeHeMUgEJL6mrfL/idjcrIgrRse19X
|
||||
iV3hYdw7gtk6+fFdihG6QubBhXyTKXDfEU23nGOjeZs8gYqnsEglyjVOESakKj39G/BIR8u1nPY6
|
||||
/910C1NRicMuggEH2vzyo3YkxWPPtir2qaK6L6Z2xLn/tUuxIQK8zaLU1JLv5BqTBNQAyeMgLjTl
|
||||
ScR0d/CJ4QgN/9ODgtKNaUQNYxDcwcCPqC9ggQ==
|
||||
|
||||
`pragma protect key_keyowner="Xilinx", key_keyname="xilinxt_2019_02", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`pragma protect key_block
|
||||
YEPeVioKkA2EkBEZwWwPn6g+nksMcKAvKbMP8LEuwmLFLue5Ode6osEwclI8Idr2rzDierHxWQGv
|
||||
uuNBk65x3hIt7b8giktFTUc/ltFJWCMM8jLdvtAv8GRT4ANEnQalBaoD+FdfKgDM0s9/4BmNKq86
|
||||
euvAsqKDz1M1M6k5QMtpPRwBHua21mlHXhqzkU0Lhmao1re8eGVGWCeEHD1XKeifrENaioTL9Pzn
|
||||
+Iy9vcrYT26UHtd/WHkqoV2qe0uIkDP/IwBQVCGBQI432BrPpGMcp3tL9OA9hyba7NXYIdJVwDXI
|
||||
NcSTA1TOujYD9bEyHhnmpkcViWgpC+6UHFJ6/Q==
|
||||
|
||||
`pragma protect key_keyowner="Mentor Graphics Corporation", key_keyname="MGC-VELOCE-RSA", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=128)
|
||||
`pragma protect key_block
|
||||
cYsWihgUIpcU22w+HafMs8oiFyuLi8IsP6A8Q8Owr7KKlBEJLtx8pXDx7KB1GZ3TEvIBcKGukUjp
|
||||
u5nEg4azox+rnxIxZ6W8jWEk3gDQ3i+NHM9rZ0o57IXm4XEvAReSqFcMngCt1IsY3viFHgXnjI4L
|
||||
AT/YkscHhZRTi2nOuZA=
|
||||
|
||||
`pragma protect key_keyowner="Mentor Graphics Corporation", key_keyname="MGC-VERIF-SIM-RSA-2", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`pragma protect key_block
|
||||
KDuFAWZrwSGajY66mVpV3alSAH0w6lYQzM4+iM0lFIGeJdp8RHYmKUi1xMPaVr9Qh/V5FNZ63yt3
|
||||
jIjtxThSfBZWVm++Kfy2ku6/5WoQLFfHPZgz76D/9H/B/nWCru1ZP0NPKgdjE34sdMOOH4SmJ6SR
|
||||
8mjkRF8it6CsJF77iNMqWT2ydgJ9MF715+eBrFVbtFRSNvHmVmjXjlZ5s71cqay3f0fPbhTjB3pF
|
||||
wuuA6GlHZE4xrI00sLWIOwf897jT3fQphdU0Qh+E5EKOTH0yURDsipBUYRuz75jMo0yHrSWsR9XE
|
||||
gN81g4HBd2CIMuUXlqmL4G8cTsaXFyFCWz4ltA==
|
||||
|
||||
`pragma protect key_keyowner="Mentor Graphics Corporation", key_keyname="MGC-PREC-RSA", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`pragma protect key_block
|
||||
Q370dC8EM5NIsBKZFuI1MGKFBQylS/xHMr0qnOU0gfx3IBFVsjIshevttOFVTWX/oMUoaPsUI9LC
|
||||
ZIVQKkUPZ3xg23SBWrPXw8lOU7cpBArpTzi2GaNn4Zjy7vPFMUYH2/4zjF5nP11SFNczcYHMUCYK
|
||||
RCQl6p6ljdrnKdY+LezHQ2OJfxpVY0HT+l76WLfUK7bPATIrbsg54MPWSD+35WkoJQy4SN2LgWRM
|
||||
TUg3Uc/T/fPzf1l9XFnqgtaqjMLa6RuIRyRjRDyHKLW6/kzV7ukWkakInBU9iVCf7hpozJ6BcC1N
|
||||
wl7knbuBAuS8epfwLXRIWFYTJolyzMK7smRjeA==
|
||||
|
||||
`pragma protect key_keyowner="Synplicity", key_keyname="SYNP15_1", key_method="rsa"
|
||||
`pragma protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`pragma protect key_block
|
||||
M4FKlBLHda73Q4xIkTDf2Z6z/Po1N9frAsxTS8zBSV5BVn8V95w2o1jmPKaFO/nZBrA8vv71AiDi
|
||||
KA7DPIWBTjaRB6Mdq2WlQEMbEhmOKyrotYzyEcAttqstuRCrj9tF68ieDRV+GpcYsf6c56/Rgq+m
|
||||
XmQMaMp/cjNmM/iKYepy/sy6a44izQLauuF6wI4njyS2cMt52ovl8S5dIfjO9r4RzoSZgedW1b4F
|
||||
WvK3OCCF27E9XQp1p8a5Be85791sS0Mr+dNiNykW43UmD+2Eh4dlCQ1/ZZEGZbEglXU2KWsDuiGl
|
||||
J0FYIk+PXkkxoscMXzMeT9ARxp5f+kZPt/9wSA==
|
||||
|
||||
`pragma protect data_method = "AES128-CBC"
|
||||
`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 23664)
|
||||
`pragma protect data_block
|
||||
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
|
||||
hwnLLHEDX/iT
|
||||
`pragma protect end_protected
|
||||
`ifndef GLBL
|
||||
`define GLBL
|
||||
`timescale 1 ps / 1 ps
|
||||
|
||||
module glbl ();
|
||||
|
||||
parameter ROC_WIDTH = 100000;
|
||||
parameter TOC_WIDTH = 0;
|
||||
|
||||
//-------- STARTUP Globals --------------
|
||||
wire GSR;
|
||||
wire GTS;
|
||||
wire GWE;
|
||||
wire PRLD;
|
||||
tri1 p_up_tmp;
|
||||
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
|
||||
|
||||
wire PROGB_GLBL;
|
||||
wire CCLKO_GLBL;
|
||||
wire FCSBO_GLBL;
|
||||
wire [3:0] DO_GLBL;
|
||||
wire [3:0] DI_GLBL;
|
||||
|
||||
reg GSR_int;
|
||||
reg GTS_int;
|
||||
reg PRLD_int;
|
||||
|
||||
//-------- JTAG Globals --------------
|
||||
wire JTAG_TDO_GLBL;
|
||||
wire JTAG_TCK_GLBL;
|
||||
wire JTAG_TDI_GLBL;
|
||||
wire JTAG_TMS_GLBL;
|
||||
wire JTAG_TRST_GLBL;
|
||||
|
||||
reg JTAG_CAPTURE_GLBL;
|
||||
reg JTAG_RESET_GLBL;
|
||||
reg JTAG_SHIFT_GLBL;
|
||||
reg JTAG_UPDATE_GLBL;
|
||||
reg JTAG_RUNTEST_GLBL;
|
||||
|
||||
reg JTAG_SEL1_GLBL = 0;
|
||||
reg JTAG_SEL2_GLBL = 0 ;
|
||||
reg JTAG_SEL3_GLBL = 0;
|
||||
reg JTAG_SEL4_GLBL = 0;
|
||||
|
||||
reg JTAG_USER_TDO1_GLBL = 1'bz;
|
||||
reg JTAG_USER_TDO2_GLBL = 1'bz;
|
||||
reg JTAG_USER_TDO3_GLBL = 1'bz;
|
||||
reg JTAG_USER_TDO4_GLBL = 1'bz;
|
||||
|
||||
assign (strong1, weak0) GSR = GSR_int;
|
||||
assign (strong1, weak0) GTS = GTS_int;
|
||||
assign (weak1, weak0) PRLD = PRLD_int;
|
||||
|
||||
initial begin
|
||||
GSR_int = 1'b1;
|
||||
PRLD_int = 1'b1;
|
||||
#(ROC_WIDTH)
|
||||
GSR_int = 1'b0;
|
||||
PRLD_int = 1'b0;
|
||||
end
|
||||
|
||||
initial begin
|
||||
GTS_int = 1'b1;
|
||||
#(TOC_WIDTH)
|
||||
GTS_int = 1'b0;
|
||||
end
|
||||
|
||||
endmodule
|
||||
`endif
|
||||
+983
@@ -0,0 +1,983 @@
|
||||
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
-- --------------------------------------------------------------------------------
|
||||
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
-- Date : Sat Mar 18 23:33:37 2023
|
||||
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
-- Command : write_vhdl -force -mode funcsim
|
||||
-- D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/add_s24_s32_s32_synth_1/add_s24_s32_s32_sim_netlist.vhdl
|
||||
-- Design : add_s24_s32_s32
|
||||
-- Purpose : This VHDL netlist is a functional simulation representation of the design and should not be modified or
|
||||
-- synthesized. This netlist cannot be used for SDF annotated simulation.
|
||||
-- Device : xc7k410tffg900-2
|
||||
-- --------------------------------------------------------------------------------
|
||||
`protect begin_protected
|
||||
`protect version = 1
|
||||
`protect encrypt_agent = "XILINX"
|
||||
`protect encrypt_agent_info = "Xilinx Encryption Tool 2019.1"
|
||||
`protect key_keyowner="Cadence Design Systems.", key_keyname="cds_rsa_key", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=64)
|
||||
`protect key_block
|
||||
UujpFoYKoOQ7/Jw6owEbggI2AGOgzbHR6JXF4x/izP5Fh4WM0VoNKTT/CrUpcaxvPcEB3VSFIRdM
|
||||
zEjgl5GLbQ==
|
||||
|
||||
`protect key_keyowner="Synopsys", key_keyname="SNPS-VCS-RSA-2", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=128)
|
||||
`protect key_block
|
||||
f5RyCaHb5HYoLsPpSBrPYpBu75i3LvPQ71qIEa/aoXsNX59UTv8AuKxtAPmKJn2lGzU85o93pPUz
|
||||
6IUTdlLhcarMbqU68e5TlXbOXaga3KUj4uXh5FkcNdjPsjNT76FRa5yaah1J4szu7iiw3tPnuQJ4
|
||||
sJ7X6wRWQIJF6RZJQ7M=
|
||||
|
||||
`protect key_keyowner="Aldec", key_keyname="ALDEC15_001", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`protect key_block
|
||||
vzUpOnYACJ0VEPnozBdDHNmglN8CrKvVmd7FT58A6TVLlrgZoYwyIPQMIh+Wfc+wTlVynnNf5/KC
|
||||
BJOYRsHDGsi5eQBIqFs4IO2s0YluOIEcuhjI1NL49HG90oDLDYg5vQsfvfkgIfXdSUeO4CWL1STz
|
||||
dN+bN5lJol2g3oFIppEAT76jtuKAX3VW+ZQrlhdFxRe2XfR61bUfZTyxy1sxEjh6zx1lNk15Bh6G
|
||||
TvDbeQpS3X3IwQkda126umKLhxhuzVYI/Dj5ubjHn9iROohcwaJUKVYfiSpg7OvIQh0dIocm/Pr8
|
||||
Jnq8RYOlltOXK63GToRwOuvaEVsyYwXPCsJhYw==
|
||||
|
||||
`protect key_keyowner="ATRENTA", key_keyname="ATR-SG-2015-RSA-3", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`protect key_block
|
||||
IqsYPmYfJRgqWcpVxxx5JKL2K5lwiA3+TGmGkzXMe1mM6wTat1h3LqSohdSynrSese1HtJw7NjBS
|
||||
R4sEHDCJLtLiIBXUDNOxs3/aFcfwI2ggGKVL7gj8LerPTvjancZ3CPrFi7suJ8va4ScDXJ2+AZpv
|
||||
1HkaXhquWtX+ecTMvlBUJ0kGRmT3QvqsqdoJvLaUtWmOb/zcl/Nh7cyBWKwOJ6JJUCsg2Ny6n0Mi
|
||||
CPGTsfurek7+yGad+10NV+Jdn5hHQLBf66QBRg5ezreuYSEBodVOIKAo3y+OLqpGrkjVyZP2Jekj
|
||||
3gAE3AlS23WF2E2B8gWcKlRCe5mstjPwmciAjQ==
|
||||
|
||||
`protect key_keyowner="Xilinx", key_keyname="xilinxt_2019_02", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`protect key_block
|
||||
SDlGuJ8/IFDM5qipR8lmqUiiSg8fMligX7gsobHkQDqRLsLrXijbx23aj4mkUAgF+oPb9moRXMT+
|
||||
ZQitvA5/h3W0YwLdK0P5IZuLURPqDlMwqENJrGM7d3xQu4APt2TsYcIWzy69vwDhvpVhiU2guQ2w
|
||||
RmJXF7B1uLONLo7iKhljzh08U3MalnpvLRgTyF13HjlkISLQE5uevFCzYB2in3CEPm7UvLorqhnJ
|
||||
57vVjcU+wSz1mFigbG2ffzUXycQttuY0ZXalTnSornuILhiF6Dz1ntTVIkPAsSmCzM2pkya326bi
|
||||
VR6/Ww0KJSGjMc9QAcY1dzerdA/O/FHc0wHRqg==
|
||||
|
||||
`protect key_keyowner="Mentor Graphics Corporation", key_keyname="MGC-VELOCE-RSA", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=128)
|
||||
`protect key_block
|
||||
nv62qaAPOM1gKXHVylxNODJ0FORpIfmG0VU8DOE0VYy7QuPs1fSFKwqsmeCqLmk1iBF2iwzM4HaH
|
||||
n4NZzzSC9moQCnEWQQr7ujbbmsQhrn/tqwtWMSAdsDvskDzQxglQ6QGrybhxOmpv4ptOmwdiPiSh
|
||||
mzNT3tLbjqrWoFAIUD0=
|
||||
|
||||
`protect key_keyowner="Mentor Graphics Corporation", key_keyname="MGC-VERIF-SIM-RSA-2", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`protect key_block
|
||||
jF3d2E6CGZp/hS8coNep5TPowf3sa0SgNHwNmqsow9h+brgrP4csczpm7KBBcJ5v+YbOvx0z+gYy
|
||||
WBAxHAq2icNSvmrHAZTXOGdEJEE5hVch+yxypEclXFAnDShH7A6r+9IACIFI6vQ+UJJ84TGn2SDU
|
||||
MI/Rg/QIXumqkI7aPcOA1ytQg6cRR+iT/gU6b/7+TGQ21uUGNcdcFNGGw3MiCeeQAO453zksyf3f
|
||||
3q13lH5nspjdUO+EOyLip3iyWk1rVfZM5a6iueAPrsJM0H4hecXe3sh42f/VZjC7pKxZNTyNG0pY
|
||||
f73A6j6rB0cnGG9VyIOhkjLQ4APwBFMYDfhmYA==
|
||||
|
||||
`protect key_keyowner="Mentor Graphics Corporation", key_keyname="MGC-PREC-RSA", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`protect key_block
|
||||
i+cTmQ2lWnqIb9K6OCx9TlXou3JsVpooBRRuwiHaxgiNpA3mDai9uRswr5Fal8SJSOUkg5y8bXXC
|
||||
VFOFsl8PYc56xPn0YOnvMQneGRoa8BBddY58e1peVWhWtvJ9bwX3WIr0JX5r+YkCwelsNpCzeArT
|
||||
YDN3FTBCloBjNU5GpfFI6lV5O7QA7xIQqZ1w0ujnaloGX88uGyhxhFAz4vTOQyqj1RojMv/RGvI+
|
||||
47t+fHAAmrmlmaxWU9Q5LjXBzyRGktLCvg+AO+uQZmudXrABrGhVHbE24oBS+1VCJBcL+yOpcHXi
|
||||
iPgE75/WPS8e9ReWexpUcujwuSphIMjfNhQxeg==
|
||||
|
||||
`protect key_keyowner="Synplicity", key_keyname="SYNP15_1", key_method="rsa"
|
||||
`protect encoding = (enctype="BASE64", line_length=76, bytes=256)
|
||||
`protect key_block
|
||||
2P/Tjo2JUn8XTjq/1FOjTK7EF8R51b7HqBlrJlqAhgGdcFP4gyVkHHONuCdmHriuocnnlSldC+17
|
||||
WzVTNG8xKDIW0aRhuw6W3L1OjnKUDqklNkL13rr8ENFpNv8woU+rheqG8nqrCWLbZ5MIhOOO0OmI
|
||||
FSA3E5Dhi+ZffW45saWYOHu680c3rNDvLA1SoGFrdRdjTFCux9ZgyMOPb44lFsLa0JSRMMeSTPvD
|
||||
vIALSo4zdlLRIj+bG6Ta9Zgi6qafEKPN8QRumN+aJvnPBrKxe7rRa5W5mK7Xu/JFLVu6Q8HW76l3
|
||||
eEeKgh7WH46uqK+x0wkuQ5ddI2eBZgbdaqNZRQ==
|
||||
|
||||
`protect data_method = "AES128-CBC"
|
||||
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 37072)
|
||||
`protect data_block
|
||||
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
|
||||
GbxZxhG/OFq9gzNP5B2i4any8Edqug==
|
||||
`protect end_protected
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
library UNISIM;
|
||||
use UNISIM.VCOMPONENTS.ALL;
|
||||
entity add_s24_s32_s32_c_addsub_v12_0_13 is
|
||||
port (
|
||||
A : in STD_LOGIC_VECTOR ( 23 downto 0 );
|
||||
B : in STD_LOGIC_VECTOR ( 31 downto 0 );
|
||||
CLK : in STD_LOGIC;
|
||||
ADD : in STD_LOGIC;
|
||||
C_IN : in STD_LOGIC;
|
||||
CE : in STD_LOGIC;
|
||||
BYPASS : in STD_LOGIC;
|
||||
SCLR : in STD_LOGIC;
|
||||
SSET : in STD_LOGIC;
|
||||
SINIT : in STD_LOGIC;
|
||||
C_OUT : out STD_LOGIC;
|
||||
S : out STD_LOGIC_VECTOR ( 31 downto 0 )
|
||||
);
|
||||
attribute C_ADD_MODE : integer;
|
||||
attribute C_ADD_MODE of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_AINIT_VAL : string;
|
||||
attribute C_AINIT_VAL of add_s24_s32_s32_c_addsub_v12_0_13 : entity is "0";
|
||||
attribute C_A_TYPE : integer;
|
||||
attribute C_A_TYPE of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_A_WIDTH : integer;
|
||||
attribute C_A_WIDTH of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 24;
|
||||
attribute C_BORROW_LOW : integer;
|
||||
attribute C_BORROW_LOW of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 1;
|
||||
attribute C_BYPASS_LOW : integer;
|
||||
attribute C_BYPASS_LOW of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_B_CONSTANT : integer;
|
||||
attribute C_B_CONSTANT of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_B_TYPE : integer;
|
||||
attribute C_B_TYPE of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_B_VALUE : string;
|
||||
attribute C_B_VALUE of add_s24_s32_s32_c_addsub_v12_0_13 : entity is "00000000000000000000000000000000";
|
||||
attribute C_B_WIDTH : integer;
|
||||
attribute C_B_WIDTH of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 32;
|
||||
attribute C_CE_OVERRIDES_BYPASS : integer;
|
||||
attribute C_CE_OVERRIDES_BYPASS of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 1;
|
||||
attribute C_CE_OVERRIDES_SCLR : integer;
|
||||
attribute C_CE_OVERRIDES_SCLR of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_HAS_BYPASS : integer;
|
||||
attribute C_HAS_BYPASS of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_HAS_CE : integer;
|
||||
attribute C_HAS_CE of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 1;
|
||||
attribute C_HAS_C_IN : integer;
|
||||
attribute C_HAS_C_IN of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_HAS_C_OUT : integer;
|
||||
attribute C_HAS_C_OUT of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_HAS_SCLR : integer;
|
||||
attribute C_HAS_SCLR of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 1;
|
||||
attribute C_HAS_SINIT : integer;
|
||||
attribute C_HAS_SINIT of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_HAS_SSET : integer;
|
||||
attribute C_HAS_SSET of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_IMPLEMENTATION : integer;
|
||||
attribute C_IMPLEMENTATION of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_LATENCY : integer;
|
||||
attribute C_LATENCY of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 1;
|
||||
attribute C_OUT_WIDTH : integer;
|
||||
attribute C_OUT_WIDTH of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 32;
|
||||
attribute C_SCLR_OVERRIDES_SSET : integer;
|
||||
attribute C_SCLR_OVERRIDES_SSET of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 1;
|
||||
attribute C_SINIT_VAL : string;
|
||||
attribute C_SINIT_VAL of add_s24_s32_s32_c_addsub_v12_0_13 : entity is "0";
|
||||
attribute C_VERBOSITY : integer;
|
||||
attribute C_VERBOSITY of add_s24_s32_s32_c_addsub_v12_0_13 : entity is 0;
|
||||
attribute C_XDEVICEFAMILY : string;
|
||||
attribute C_XDEVICEFAMILY of add_s24_s32_s32_c_addsub_v12_0_13 : entity is "kintex7";
|
||||
attribute ORIG_REF_NAME : string;
|
||||
attribute ORIG_REF_NAME of add_s24_s32_s32_c_addsub_v12_0_13 : entity is "c_addsub_v12_0_13";
|
||||
attribute downgradeipidentifiedwarnings : string;
|
||||
attribute downgradeipidentifiedwarnings of add_s24_s32_s32_c_addsub_v12_0_13 : entity is "yes";
|
||||
end add_s24_s32_s32_c_addsub_v12_0_13;
|
||||
|
||||
architecture STRUCTURE of add_s24_s32_s32_c_addsub_v12_0_13 is
|
||||
signal \<const0>\ : STD_LOGIC;
|
||||
signal NLW_xst_addsub_C_OUT_UNCONNECTED : STD_LOGIC;
|
||||
attribute C_AINIT_VAL of xst_addsub : label is "0";
|
||||
attribute C_BORROW_LOW of xst_addsub : label is 1;
|
||||
attribute C_CE_OVERRIDES_BYPASS of xst_addsub : label is 1;
|
||||
attribute C_CE_OVERRIDES_SCLR of xst_addsub : label is 0;
|
||||
attribute C_HAS_CE of xst_addsub : label is 1;
|
||||
attribute C_HAS_SCLR of xst_addsub : label is 1;
|
||||
attribute C_HAS_SINIT of xst_addsub : label is 0;
|
||||
attribute C_HAS_SSET of xst_addsub : label is 0;
|
||||
attribute C_IMPLEMENTATION of xst_addsub : label is 0;
|
||||
attribute C_SCLR_OVERRIDES_SSET of xst_addsub : label is 1;
|
||||
attribute C_SINIT_VAL of xst_addsub : label is "0";
|
||||
attribute C_VERBOSITY of xst_addsub : label is 0;
|
||||
attribute C_XDEVICEFAMILY of xst_addsub : label is "kintex7";
|
||||
attribute c_a_type of xst_addsub : label is 0;
|
||||
attribute c_a_width of xst_addsub : label is 24;
|
||||
attribute c_add_mode of xst_addsub : label is 0;
|
||||
attribute c_b_constant of xst_addsub : label is 0;
|
||||
attribute c_b_type of xst_addsub : label is 0;
|
||||
attribute c_b_value of xst_addsub : label is "00000000000000000000000000000000";
|
||||
attribute c_b_width of xst_addsub : label is 32;
|
||||
attribute c_bypass_low of xst_addsub : label is 0;
|
||||
attribute c_has_bypass of xst_addsub : label is 0;
|
||||
attribute c_has_c_in of xst_addsub : label is 0;
|
||||
attribute c_has_c_out of xst_addsub : label is 0;
|
||||
attribute c_latency of xst_addsub : label is 1;
|
||||
attribute c_out_width of xst_addsub : label is 32;
|
||||
attribute downgradeipidentifiedwarnings of xst_addsub : label is "yes";
|
||||
begin
|
||||
C_OUT <= \<const0>\;
|
||||
GND: unisim.vcomponents.GND
|
||||
port map (
|
||||
G => \<const0>\
|
||||
);
|
||||
xst_addsub: entity work.add_s24_s32_s32_c_addsub_v12_0_13_viv
|
||||
port map (
|
||||
A(23 downto 0) => A(23 downto 0),
|
||||
ADD => '0',
|
||||
B(31 downto 0) => B(31 downto 0),
|
||||
BYPASS => '0',
|
||||
CE => CE,
|
||||
CLK => CLK,
|
||||
C_IN => '0',
|
||||
C_OUT => NLW_xst_addsub_C_OUT_UNCONNECTED,
|
||||
S(31 downto 0) => S(31 downto 0),
|
||||
SCLR => SCLR,
|
||||
SINIT => '0',
|
||||
SSET => '0'
|
||||
);
|
||||
end STRUCTURE;
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
library UNISIM;
|
||||
use UNISIM.VCOMPONENTS.ALL;
|
||||
entity add_s24_s32_s32 is
|
||||
port (
|
||||
A : in STD_LOGIC_VECTOR ( 23 downto 0 );
|
||||
B : in STD_LOGIC_VECTOR ( 31 downto 0 );
|
||||
CLK : in STD_LOGIC;
|
||||
CE : in STD_LOGIC;
|
||||
SCLR : in STD_LOGIC;
|
||||
S : out STD_LOGIC_VECTOR ( 31 downto 0 )
|
||||
);
|
||||
attribute NotValidForBitStream : boolean;
|
||||
attribute NotValidForBitStream of add_s24_s32_s32 : entity is true;
|
||||
attribute CHECK_LICENSE_TYPE : string;
|
||||
attribute CHECK_LICENSE_TYPE of add_s24_s32_s32 : entity is "add_s24_s32_s32,c_addsub_v12_0_13,{}";
|
||||
attribute downgradeipidentifiedwarnings : string;
|
||||
attribute downgradeipidentifiedwarnings of add_s24_s32_s32 : entity is "yes";
|
||||
attribute x_core_info : string;
|
||||
attribute x_core_info of add_s24_s32_s32 : entity is "c_addsub_v12_0_13,Vivado 2019.1.3";
|
||||
end add_s24_s32_s32;
|
||||
|
||||
architecture STRUCTURE of add_s24_s32_s32 is
|
||||
signal NLW_U0_C_OUT_UNCONNECTED : STD_LOGIC;
|
||||
attribute C_AINIT_VAL : string;
|
||||
attribute C_AINIT_VAL of U0 : label is "0";
|
||||
attribute C_BORROW_LOW : integer;
|
||||
attribute C_BORROW_LOW of U0 : label is 1;
|
||||
attribute C_CE_OVERRIDES_BYPASS : integer;
|
||||
attribute C_CE_OVERRIDES_BYPASS of U0 : label is 1;
|
||||
attribute C_CE_OVERRIDES_SCLR : integer;
|
||||
attribute C_CE_OVERRIDES_SCLR of U0 : label is 0;
|
||||
attribute C_HAS_CE : integer;
|
||||
attribute C_HAS_CE of U0 : label is 1;
|
||||
attribute C_HAS_SCLR : integer;
|
||||
attribute C_HAS_SCLR of U0 : label is 1;
|
||||
attribute C_HAS_SINIT : integer;
|
||||
attribute C_HAS_SINIT of U0 : label is 0;
|
||||
attribute C_HAS_SSET : integer;
|
||||
attribute C_HAS_SSET of U0 : label is 0;
|
||||
attribute C_IMPLEMENTATION : integer;
|
||||
attribute C_IMPLEMENTATION of U0 : label is 0;
|
||||
attribute C_SCLR_OVERRIDES_SSET : integer;
|
||||
attribute C_SCLR_OVERRIDES_SSET of U0 : label is 1;
|
||||
attribute C_SINIT_VAL : string;
|
||||
attribute C_SINIT_VAL of U0 : label is "0";
|
||||
attribute C_VERBOSITY : integer;
|
||||
attribute C_VERBOSITY of U0 : label is 0;
|
||||
attribute C_XDEVICEFAMILY : string;
|
||||
attribute C_XDEVICEFAMILY of U0 : label is "kintex7";
|
||||
attribute c_a_type : integer;
|
||||
attribute c_a_type of U0 : label is 0;
|
||||
attribute c_a_width : integer;
|
||||
attribute c_a_width of U0 : label is 24;
|
||||
attribute c_add_mode : integer;
|
||||
attribute c_add_mode of U0 : label is 0;
|
||||
attribute c_b_constant : integer;
|
||||
attribute c_b_constant of U0 : label is 0;
|
||||
attribute c_b_type : integer;
|
||||
attribute c_b_type of U0 : label is 0;
|
||||
attribute c_b_value : string;
|
||||
attribute c_b_value of U0 : label is "00000000000000000000000000000000";
|
||||
attribute c_b_width : integer;
|
||||
attribute c_b_width of U0 : label is 32;
|
||||
attribute c_bypass_low : integer;
|
||||
attribute c_bypass_low of U0 : label is 0;
|
||||
attribute c_has_bypass : integer;
|
||||
attribute c_has_bypass of U0 : label is 0;
|
||||
attribute c_has_c_in : integer;
|
||||
attribute c_has_c_in of U0 : label is 0;
|
||||
attribute c_has_c_out : integer;
|
||||
attribute c_has_c_out of U0 : label is 0;
|
||||
attribute c_latency : integer;
|
||||
attribute c_latency of U0 : label is 1;
|
||||
attribute c_out_width : integer;
|
||||
attribute c_out_width of U0 : label is 32;
|
||||
attribute downgradeipidentifiedwarnings of U0 : label is "yes";
|
||||
attribute x_interface_info : string;
|
||||
attribute x_interface_info of CE : signal is "xilinx.com:signal:clockenable:1.0 ce_intf CE";
|
||||
attribute x_interface_parameter : string;
|
||||
attribute x_interface_parameter of CE : signal is "XIL_INTERFACENAME ce_intf, POLARITY ACTIVE_LOW";
|
||||
attribute x_interface_info of CLK : signal is "xilinx.com:signal:clock:1.0 clk_intf CLK";
|
||||
attribute x_interface_parameter of CLK : signal is "XIL_INTERFACENAME clk_intf, ASSOCIATED_BUSIF s_intf:c_out_intf:sinit_intf:sset_intf:bypass_intf:c_in_intf:add_intf:b_intf:a_intf, ASSOCIATED_RESET SCLR, ASSOCIATED_CLKEN CE, FREQ_HZ 100000000, PHASE 0.000, INSERT_VIP 0";
|
||||
attribute x_interface_info of SCLR : signal is "xilinx.com:signal:reset:1.0 sclr_intf RST";
|
||||
attribute x_interface_parameter of SCLR : signal is "XIL_INTERFACENAME sclr_intf, POLARITY ACTIVE_HIGH, INSERT_VIP 0";
|
||||
attribute x_interface_info of A : signal is "xilinx.com:signal:data:1.0 a_intf DATA";
|
||||
attribute x_interface_parameter of A : signal is "XIL_INTERFACENAME a_intf, LAYERED_METADATA undef";
|
||||
attribute x_interface_info of B : signal is "xilinx.com:signal:data:1.0 b_intf DATA";
|
||||
attribute x_interface_parameter of B : signal is "XIL_INTERFACENAME b_intf, LAYERED_METADATA undef";
|
||||
attribute x_interface_info of S : signal is "xilinx.com:signal:data:1.0 s_intf DATA";
|
||||
attribute x_interface_parameter of S : signal is "XIL_INTERFACENAME s_intf, LAYERED_METADATA undef";
|
||||
begin
|
||||
U0: entity work.add_s24_s32_s32_c_addsub_v12_0_13
|
||||
port map (
|
||||
A(23 downto 0) => A(23 downto 0),
|
||||
ADD => '1',
|
||||
B(31 downto 0) => B(31 downto 0),
|
||||
BYPASS => '0',
|
||||
CE => CE,
|
||||
CLK => CLK,
|
||||
C_IN => '0',
|
||||
C_OUT => NLW_U0_C_OUT_UNCONNECTED,
|
||||
S(31 downto 0) => S(31 downto 0),
|
||||
SCLR => SCLR,
|
||||
SINIT => '0',
|
||||
SSET => '0'
|
||||
);
|
||||
end STRUCTURE;
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
// --------------------------------------------------------------------------------
|
||||
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
// Date : Sat Mar 18 23:33:37 2023
|
||||
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
// Command : write_verilog -force -mode synth_stub
|
||||
// D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/add_s24_s32_s32_synth_1/add_s24_s32_s32_stub.v
|
||||
// Design : add_s24_s32_s32
|
||||
// Purpose : Stub declaration of top-level module interface
|
||||
// Device : xc7k410tffg900-2
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
|
||||
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
|
||||
// Please paste the declaration into a Verilog source file or add the file as an additional source.
|
||||
(* x_core_info = "c_addsub_v12_0_13,Vivado 2019.1.3" *)
|
||||
module add_s24_s32_s32(A, B, CLK, CE, SCLR, S)
|
||||
/* synthesis syn_black_box black_box_pad_pin="A[23:0],B[31:0],CLK,CE,SCLR,S[31:0]" */;
|
||||
input [23:0]A;
|
||||
input [31:0]B;
|
||||
input CLK;
|
||||
input CE;
|
||||
input SCLR;
|
||||
output [31:0]S;
|
||||
endmodule
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
|
||||
-- --------------------------------------------------------------------------------
|
||||
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
|
||||
-- Date : Sat Mar 18 23:33:37 2023
|
||||
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
|
||||
-- Command : write_vhdl -force -mode synth_stub
|
||||
-- D:/vivado-git/projects/datalink_814/dl814_cmos/ip/managed_ip_project/managed_ip_project.runs/add_s24_s32_s32_synth_1/add_s24_s32_s32_stub.vhdl
|
||||
-- Design : add_s24_s32_s32
|
||||
-- Purpose : Stub declaration of top-level module interface
|
||||
-- Device : xc7k410tffg900-2
|
||||
-- --------------------------------------------------------------------------------
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
|
||||
entity add_s24_s32_s32 is
|
||||
Port (
|
||||
A : in STD_LOGIC_VECTOR ( 23 downto 0 );
|
||||
B : in STD_LOGIC_VECTOR ( 31 downto 0 );
|
||||
CLK : in STD_LOGIC;
|
||||
CE : in STD_LOGIC;
|
||||
SCLR : in STD_LOGIC;
|
||||
S : out STD_LOGIC_VECTOR ( 31 downto 0 )
|
||||
);
|
||||
|
||||
end add_s24_s32_s32;
|
||||
|
||||
architecture stub of add_s24_s32_s32 is
|
||||
attribute syn_black_box : boolean;
|
||||
attribute black_box_pad_pin : string;
|
||||
attribute syn_black_box of stub : architecture is true;
|
||||
attribute black_box_pad_pin of stub : architecture is "A[23:0],B[31:0],CLK,CE,SCLR,S[31:0]";
|
||||
attribute x_core_info : string;
|
||||
attribute x_core_info of stub : architecture is "c_addsub_v12_0_13,Vivado 2019.1.3";
|
||||
begin
|
||||
end;
|
||||
+174
@@ -0,0 +1,174 @@
|
||||
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
|
||||
--
|
||||
-- This file contains confidential and proprietary information
|
||||
-- of Xilinx, Inc. and is protected under U.S. and
|
||||
-- international copyright and other intellectual property
|
||||
-- laws.
|
||||
--
|
||||
-- DISCLAIMER
|
||||
-- This disclaimer is not a license and does not grant any
|
||||
-- rights to the materials distributed herewith. Except as
|
||||
-- otherwise provided in a valid license issued to you by
|
||||
-- Xilinx, and to the maximum extent permitted by applicable
|
||||
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
-- (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
-- including negligence, or under any other theory of
|
||||
-- liability) for any loss or damage of any kind or nature
|
||||
-- related to, arising under or in connection with these
|
||||
-- materials, including for any direct, or any indirect,
|
||||
-- special, incidental, or consequential loss or damage
|
||||
-- (including loss of data, profits, goodwill, or any type of
|
||||
-- loss or damage suffered as a result of any action brought
|
||||
-- by a third party) even if such damage or loss was
|
||||
-- reasonably foreseeable or Xilinx had been advised of the
|
||||
-- possibility of the same.
|
||||
--
|
||||
-- CRITICAL APPLICATIONS
|
||||
-- Xilinx products are not designed or intended to be fail-
|
||||
-- safe, or for use in any application requiring fail-safe
|
||||
-- performance, such as life-support or safety devices or
|
||||
-- systems, Class III medical devices, nuclear facilities,
|
||||
-- applications related to the deployment of airbags, or any
|
||||
-- other applications that could lead to death, personal
|
||||
-- injury, or severe property or environmental damage
|
||||
-- (individually and collectively, "Critical
|
||||
-- Applications"). Customer assumes the sole risk and
|
||||
-- liability of any use of Xilinx products in Critical
|
||||
-- Applications, subject only to applicable laws and
|
||||
-- regulations governing limitations on product liability.
|
||||
--
|
||||
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
-- PART OF THIS FILE AT ALL TIMES.
|
||||
--
|
||||
-- DO NOT MODIFY THIS FILE.
|
||||
|
||||
-- IP VLNV: xilinx.com:ip:c_addsub:12.0
|
||||
-- IP Revision: 13
|
||||
|
||||
LIBRARY ieee;
|
||||
USE ieee.std_logic_1164.ALL;
|
||||
USE ieee.numeric_std.ALL;
|
||||
|
||||
LIBRARY c_addsub_v12_0_13;
|
||||
USE c_addsub_v12_0_13.c_addsub_v12_0_13;
|
||||
|
||||
ENTITY add_s24_s32_s32 IS
|
||||
PORT (
|
||||
A : IN STD_LOGIC_VECTOR(23 DOWNTO 0);
|
||||
B : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
|
||||
CLK : IN STD_LOGIC;
|
||||
CE : IN STD_LOGIC;
|
||||
SCLR : IN STD_LOGIC;
|
||||
S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
|
||||
);
|
||||
END add_s24_s32_s32;
|
||||
|
||||
ARCHITECTURE add_s24_s32_s32_arch OF add_s24_s32_s32 IS
|
||||
ATTRIBUTE DowngradeIPIdentifiedWarnings : STRING;
|
||||
ATTRIBUTE DowngradeIPIdentifiedWarnings OF add_s24_s32_s32_arch: ARCHITECTURE IS "yes";
|
||||
COMPONENT c_addsub_v12_0_13 IS
|
||||
GENERIC (
|
||||
C_VERBOSITY : INTEGER;
|
||||
C_XDEVICEFAMILY : STRING;
|
||||
C_IMPLEMENTATION : INTEGER;
|
||||
C_A_WIDTH : INTEGER;
|
||||
C_B_WIDTH : INTEGER;
|
||||
C_OUT_WIDTH : INTEGER;
|
||||
C_CE_OVERRIDES_SCLR : INTEGER;
|
||||
C_A_TYPE : INTEGER;
|
||||
C_B_TYPE : INTEGER;
|
||||
C_LATENCY : INTEGER;
|
||||
C_ADD_MODE : INTEGER;
|
||||
C_B_CONSTANT : INTEGER;
|
||||
C_B_VALUE : STRING;
|
||||
C_AINIT_VAL : STRING;
|
||||
C_SINIT_VAL : STRING;
|
||||
C_CE_OVERRIDES_BYPASS : INTEGER;
|
||||
C_BYPASS_LOW : INTEGER;
|
||||
C_SCLR_OVERRIDES_SSET : INTEGER;
|
||||
C_HAS_C_IN : INTEGER;
|
||||
C_HAS_C_OUT : INTEGER;
|
||||
C_BORROW_LOW : INTEGER;
|
||||
C_HAS_CE : INTEGER;
|
||||
C_HAS_BYPASS : INTEGER;
|
||||
C_HAS_SCLR : INTEGER;
|
||||
C_HAS_SSET : INTEGER;
|
||||
C_HAS_SINIT : INTEGER
|
||||
);
|
||||
PORT (
|
||||
A : IN STD_LOGIC_VECTOR(23 DOWNTO 0);
|
||||
B : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
|
||||
CLK : IN STD_LOGIC;
|
||||
ADD : IN STD_LOGIC;
|
||||
C_IN : IN STD_LOGIC;
|
||||
CE : IN STD_LOGIC;
|
||||
BYPASS : IN STD_LOGIC;
|
||||
SCLR : IN STD_LOGIC;
|
||||
SSET : IN STD_LOGIC;
|
||||
SINIT : IN STD_LOGIC;
|
||||
C_OUT : OUT STD_LOGIC;
|
||||
S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT c_addsub_v12_0_13;
|
||||
ATTRIBUTE X_INTERFACE_INFO : STRING;
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER : STRING;
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF S: SIGNAL IS "XIL_INTERFACENAME s_intf, LAYERED_METADATA undef";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF S: SIGNAL IS "xilinx.com:signal:data:1.0 s_intf DATA";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF SCLR: SIGNAL IS "XIL_INTERFACENAME sclr_intf, POLARITY ACTIVE_HIGH, INSERT_VIP 0";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF SCLR: SIGNAL IS "xilinx.com:signal:reset:1.0 sclr_intf RST";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF CE: SIGNAL IS "XIL_INTERFACENAME ce_intf, POLARITY ACTIVE_LOW";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF CE: SIGNAL IS "xilinx.com:signal:clockenable:1.0 ce_intf CE";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF CLK: SIGNAL IS "XIL_INTERFACENAME clk_intf, ASSOCIATED_BUSIF s_intf:c_out_intf:sinit_intf:sset_intf:bypass_intf:c_in_intf:add_intf:b_intf:a_intf, ASSOCIATED_RESET SCLR, ASSOCIATED_CLKEN CE, FREQ_HZ 100000000, PHASE 0.000, INSERT_VIP 0";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF CLK: SIGNAL IS "xilinx.com:signal:clock:1.0 clk_intf CLK";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF B: SIGNAL IS "XIL_INTERFACENAME b_intf, LAYERED_METADATA undef";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF B: SIGNAL IS "xilinx.com:signal:data:1.0 b_intf DATA";
|
||||
ATTRIBUTE X_INTERFACE_PARAMETER OF A: SIGNAL IS "XIL_INTERFACENAME a_intf, LAYERED_METADATA undef";
|
||||
ATTRIBUTE X_INTERFACE_INFO OF A: SIGNAL IS "xilinx.com:signal:data:1.0 a_intf DATA";
|
||||
BEGIN
|
||||
U0 : c_addsub_v12_0_13
|
||||
GENERIC MAP (
|
||||
C_VERBOSITY => 0,
|
||||
C_XDEVICEFAMILY => "kintex7",
|
||||
C_IMPLEMENTATION => 0,
|
||||
C_A_WIDTH => 24,
|
||||
C_B_WIDTH => 32,
|
||||
C_OUT_WIDTH => 32,
|
||||
C_CE_OVERRIDES_SCLR => 0,
|
||||
C_A_TYPE => 0,
|
||||
C_B_TYPE => 0,
|
||||
C_LATENCY => 1,
|
||||
C_ADD_MODE => 0,
|
||||
C_B_CONSTANT => 0,
|
||||
C_B_VALUE => "00000000000000000000000000000000",
|
||||
C_AINIT_VAL => "0",
|
||||
C_SINIT_VAL => "0",
|
||||
C_CE_OVERRIDES_BYPASS => 1,
|
||||
C_BYPASS_LOW => 0,
|
||||
C_SCLR_OVERRIDES_SSET => 1,
|
||||
C_HAS_C_IN => 0,
|
||||
C_HAS_C_OUT => 0,
|
||||
C_BORROW_LOW => 1,
|
||||
C_HAS_CE => 1,
|
||||
C_HAS_BYPASS => 0,
|
||||
C_HAS_SCLR => 1,
|
||||
C_HAS_SSET => 0,
|
||||
C_HAS_SINIT => 0
|
||||
)
|
||||
PORT MAP (
|
||||
A => A,
|
||||
B => B,
|
||||
CLK => CLK,
|
||||
ADD => '1',
|
||||
C_IN => '0',
|
||||
CE => CE,
|
||||
BYPASS => '0',
|
||||
SCLR => SCLR,
|
||||
SSET => '0',
|
||||
SINIT => '0',
|
||||
S => S
|
||||
);
|
||||
END add_s24_s32_s32_arch;
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
|
||||
// file: ant_clk_gen_stg1.v
|
||||
//
|
||||
// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.
|
||||
//
|
||||
// This file contains confidential and proprietary information
|
||||
// of Xilinx, Inc. and is protected under U.S. and
|
||||
// international copyright and other intellectual property
|
||||
// laws.
|
||||
//
|
||||
// DISCLAIMER
|
||||
// This disclaimer is not a license and does not grant any
|
||||
// rights to the materials distributed herewith. Except as
|
||||
// otherwise provided in a valid license issued to you by
|
||||
// Xilinx, and to the maximum extent permitted by applicable
|
||||
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
|
||||
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
|
||||
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
|
||||
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
|
||||
// (2) Xilinx shall not be liable (whether in contract or tort,
|
||||
// including negligence, or under any other theory of
|
||||
// liability) for any loss or damage of any kind or nature
|
||||
// related to, arising under or in connection with these
|
||||
// materials, including for any direct, or any indirect,
|
||||
// special, incidental, or consequential loss or damage
|
||||
// (including loss of data, profits, goodwill, or any type of
|
||||
// loss or damage suffered as a result of any action brought
|
||||
// by a third party) even if such damage or loss was
|
||||
// reasonably foreseeable or Xilinx had been advised of the
|
||||
// possibility of the same.
|
||||
//
|
||||
// CRITICAL APPLICATIONS
|
||||
// Xilinx products are not designed or intended to be fail-
|
||||
// safe, or for use in any application requiring fail-safe
|
||||
// performance, such as life-support or safety devices or
|
||||
// systems, Class III medical devices, nuclear facilities,
|
||||
// applications related to the deployment of airbags, or any
|
||||
// other applications that could lead to death, personal
|
||||
// injury, or severe property or environmental damage
|
||||
// (individually and collectively, "Critical
|
||||
// Applications"). Customer assumes the sole risk and
|
||||
// liability of any use of Xilinx products in Critical
|
||||
// Applications, subject only to applicable laws and
|
||||
// regulations governing limitations on product liability.
|
||||
//
|
||||
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
|
||||
// PART OF THIS FILE AT ALL TIMES.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// User entered comments
|
||||
//----------------------------------------------------------------------------
|
||||
// None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Output Output Phase Duty Cycle Pk-to-Pk Phase
|
||||
// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)
|
||||
//----------------------------------------------------------------------------
|
||||
// clk_out1____96.000______0.000______50.0______168.397____161.614
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Input Clock Freq (MHz) Input Jitter (UI)
|
||||
//----------------------------------------------------------------------------
|
||||
// __primary_____________250____________0.010
|
||||
|
||||
`timescale 1ps/1ps
|
||||
|
||||
(* CORE_GENERATION_INFO = "ant_clk_gen_stg1,clk_wiz_v6_0_3_0_0,{component_name=ant_clk_gen_stg1,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=false,use_inclk_switchover=false,use_dyn_reconfig=false,enable_axi=0,feedback_source=FDBK_AUTO,PRIMITIVE=MMCM,num_out_clk=1,clkin1_period=4.000,clkin2_period=10.0,use_power_down=false,use_reset=false,use_locked=true,use_inclk_stopped=false,feedback_type=SINGLE,CLOCK_MGR_TYPE=NA,manual_override=false}" *)
|
||||
|
||||
module ant_clk_gen_stg1
|
||||
(
|
||||
// Clock out ports
|
||||
output clk_out1,
|
||||
// Status and control signals
|
||||
output locked,
|
||||
// Clock in ports
|
||||
input clk_in1_p,
|
||||
input clk_in1_n
|
||||
);
|
||||
|
||||
ant_clk_gen_stg1_clk_wiz inst
|
||||
(
|
||||
// Clock out ports
|
||||
.clk_out1(clk_out1),
|
||||
// Status and control signals
|
||||
.locked(locked),
|
||||
// Clock in ports
|
||||
.clk_in1_p(clk_in1_p),
|
||||
.clk_in1_n(clk_in1_n)
|
||||
);
|
||||
|
||||
endmodule
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user