Commit Graph

2645 Commits (93897b4cb5546fe925e80ae55900b38c8c65a929)

Author SHA1 Message Date
sergiu arpadi b44df7a1e9 util_sigma_delta_spi: Fix syntax 2020-10-19 10:45:36 +03:00
Laszlo Nagy f2f599ec60 axi_ad6676: Set data format to twos complement
Set data format to twos complement to reflect the format defined in the
part data sheet.
2020-10-13 12:55:17 +03:00
Laszlo Nagy c3983d779c ad_ip_jesd204_tpl_adc: Fix PN check for twos complement data format
For devices which have twos complement as data format the MSB of the raw
input must not be toggled.
2020-10-13 12:55:17 +03:00
Josh Blum 6da4f61786 ad_ip_jesd204_tpl_dac_framer: fix localparam ordering
The parameters were not in the order of invocation and this causes an
error in the vivado simulator (xsim).
2020-10-10 08:27:00 +03:00
Sergiu Arpadi 681ddc2e25 axi_gpreg: Add ttcl for clock_mon constraints
fixed critical warnings generated when the NUM_OF_CLK_MONS parameter
is set to 0 and the constraints written in up_clock_mon_constr.xdc
cannot be applied; removed up_clock_mon_constr.xdc from ip core.
2020-10-01 16:10:55 +03:00
Laszlo Nagy e759c1855b jesd204: Clean-up combinatorial logic
To correctly model combinatorial logic in always blocks
blocking assignments must be used.
2020-09-29 17:27:42 +03:00
Laszlo Nagy 7c523fbf02 jesd204_rx: Reset frame alignment monitor event generator
If the link is not enabled no event should be generated.
2020-09-29 17:27:42 +03:00
Laszlo Nagy 0ecf4254ec axi_jesd204_rx: Ignore events if link not enabled
When the link is disabled the events can be ignored.
This is required by the free running event counter that can catch
invalid events during startup cased for example by an invalid link clock.
2020-09-29 17:27:42 +03:00
Laszlo Nagy aa4de79045 jesd204/jesd204_rx: Ignore frame alignment errors if lane is not in DATA phase
If the lane looses synchronization due invalid characters or disparity
error the lane alignment monitor checks random input which results in
irrelevant reporting of frame alignment error.
2020-09-29 17:27:42 +03:00
Laszlo Nagy d825fffd62 jesd204/jesd204_rx: Reset error counter once all lanes synced
If all lanes are synchronized (CGS state machine is in DATA phase) for long
enough therefore the link is also synchronized/DATA phase reset the error
counter since the accumulated values during INIT/CHECK are irrelevant.
These errors are handled by the per-lane CGS state machine.

All errors accumulated during INIT/CHECK phase of CGS are relevant only
if the link is unable to reach the DATA phase.
The link stays in DATA phase unless software resets it,
so all errors accumulated during the DATA phase are relevant.
2020-09-29 17:27:42 +03:00
Laszlo Nagy ee143d80d6 jesd204_rx/jesd204_rx_ctrl: Fix de-glitch mechanism
The previous implementation of the de-glitch only delayed the assertion
of the SYNC phase by 64 clock cycles with the DEGLITCH state but if meanwhile
one of the lanes got into a bad state cgs_ready de-asserted the state machine
continued to go SYNCHRONIZED (DATA) state.
This change extends the required number of consecutive cycles while all lanes
must stay in data phase before moving the link to SYNCHRONIZED state from 8 to 256;
This increases the reliability of link bring-up without needing extra
link restarts from software side.
2020-09-29 17:27:42 +03:00
Laszlo Nagy 5edc798b6b axi_jesd204_common/jesd204_up_common: Add event stats
Add statistics for :
 - number of link enable events
 - number of interrupt events (regardless of mask)

0x0B0 0x2C0 Stats Control Register
  [0] - Write 1 to clear stat registers

0x0B1 0x2C4 Link Enable Stat Register
  [15:0] Number of times the link was enabled from power-on or from last
         stat clear

0x0B4 0x2D0 IRQ Stat Register 0
  [31:16] IRQ 1 counter
  [15:0]  IRQ 0 counter

0x0B5 0x2D4 IRQ Stat Register 1
  [31:16] IRQ 3 counter
  [15:0]  IRQ 2 counter

0x0B6 0x2D8 IRQ Stat Register 2
  [31:16] IRQ 5 counter
  [15:0]  IRQ 4 counter

0x0B7 0x2DC IRQ Stat Register 3
  [31:16] IRQ 7 counter
  [15:0]  IRQ 6 counter
2020-09-29 17:27:42 +03:00
Sergiu Arpadi 33f612091b spi_engine: Add spi_engine.tcl 2020-09-25 16:41:33 +03:00
Istvan Csomortani 1b713d8265 axi_hdmi_tx: Update register initialization
Quartus Standard 19.1 throw a critical warning for registers that have
different reset and initial power-up level.

Do not initialize those registers so we can get rid of the warning.
2020-09-25 12:56:53 +03:00
stefan.raus d2ef1bcef5 library/commmon: Fix data width warnings
ad_tdd_control.v: Set ON and OFF local parameters on just one bit.
up_dac_common.v: Set CLK_EDGE_SEL parameter on just one bit.
2020-09-23 09:16:48 +03:00
Istvan Csomortani cba3c0f4f1 spi_engine_offload: Define status_sync interface 2020-09-15 18:14:23 +03:00
Istvan Csomortani 780579f3e9 spi_engine_offload: Delete trailing whitespaces 2020-09-15 18:14:23 +03:00
Istvan Csomortani b827322917 spi_engine_execution: Add missing parameter definition into hw.tcl script 2020-09-15 18:14:23 +03:00
Istvan Csomortani f67209e125 axi_spi_engine: Fix the hw.tcl script
Define both AXI4 Memory Mapped and microprocessor interface for the
reigster map, then activate/deactive one of it in fucntion of the memory
interface type parameter.

Define the missing status_sync interface, which should be connected to
the offload.
2020-09-15 18:14:23 +03:00
Istvan Csomortani f934ff7e4e axi_spi_engine: Add missing ports to every sub-module instance 2020-09-15 18:14:23 +03:00
Istvan Csomortani a5326cb3d2 axi_spi_engine: Refactoring sdi_fifo read outs
Context switching with a parameter is not a good idea. The simulator
may evaluate both branch of the IF statement, even though the inactive
branch may not be valid.

Use if..generate to make the code more robust for both synthesizers and
simulators.
2020-09-15 18:14:23 +03:00
AndreiGrozav 422d7c949c axi_hdmi_tx_vdma: Use only synchronous reset 2020-09-15 18:14:23 +03:00
AndreiGrozav 520a7ea972 axi_hdmi_tx: Update IP to latest HDL flow
Conflicts:
	library/axi_hdmi_tx/axi_hdmi_tx_hw.tcl
2020-09-15 18:14:23 +03:00
AndreiGrozav 585ed44983 Add 'SE Base' family to the supported FPGAs 2020-09-15 18:14:23 +03:00
Istvan Csomortani 85aeb915b4 spi_engine_offload: Start offload when DMA is ready 2020-09-15 12:03:48 +03:00
Istvan Csomortani 121ac2e97a spi_engine_interconnect: always construct must not contains mixed assignment types 2020-09-15 12:01:58 +03:00
Arpadi 4a28a4e856 sysid_intel: Added hw.tcl for sysid IP cores 2020-09-11 15:46:06 +03:00
AndreiGrozav 1e537b1083 axi_ad9963: Fix warnings
-fix missing connection warnings
-fix wrong bus width warning
2020-09-11 10:24:22 +03:00
AndreiGrozav 3d407a3ba5 axi_ad9467: Fix missing connection warnings 2020-09-11 10:24:22 +03:00
AndreiGrozav 5f0abc5099 axi_ad9361: Fix missing connection warnings 2020-09-11 10:24:22 +03:00
AndreiGrozav f2422080de axi_hdmi_tx: Fix warning on imageon
Remove an extra assignment to hdmi_vs register.
2020-09-11 10:23:53 +03:00
AndreiGrozav 498e07e640 ad_csc: Fix warning for axi_hdmi_tx
Converting from RGB to YCbCr takes one less stage than converting
from YCbCr to RGB color space.
Moving extra delay stage(5), of the sync signals to a particular
YCbCr to RGB color space conversion case.
2020-09-11 10:23:53 +03:00
AndreiGrozav f0a29a682f common/ad_ss_422to444.v: Fix warning
Using a localparam in a port declaration, causes the following warning:
"identifier 'DW' is used before its declaration".
2020-09-11 10:23:53 +03:00
AndreiGrozav 8d80b0f85f axi_logic_analyzer: Fix data width warning 2020-09-11 10:23:26 +03:00
Istvan Csomortani 1e5e859222 intel/axi_adxcvr: Use ad_ip_files process for source definition 2020-09-09 14:15:37 +03:00
Istvan Csomortani 256593623c intel/adi_jesd204: Add an additional pipeline stage to RX soft PCS 2020-09-09 14:15:37 +03:00
Istvan Csomortani 0e98527bad intel/adi_jesd204: Expose REGISTER_INPUTS parameter
Define INPUT_PIPELINE parameter, which can be used to activate the
REGISTER_INPUTS parameter of the PHY. This parameter will add an
additional register stage into the incoming parallel data stream.
It can be used to relax the timing margin between the PHY and Link modules.
2020-09-09 14:15:37 +03:00
Istvan Csomortani 72a4d54b76 jesd204_rx: Fix SDC constraint 2020-09-09 14:15:37 +03:00
Istvan Csomortani edbd9f7b8f jesd204_framework: Add Stratix10 support
This patch contains an initial effort to support the Stratix 10
architecture in our JESD204 framework.

Several instances were updated, doing simple context switching using the
DEVICE_FAMILY system parameter:

  - xcvr_reset_control
  - lane PLL (ATX PLL)
  - link PLL (fPLL)
  - native XCVR instance

Apart from the slightly different parameters of the instances above,
there were small differences at the reconfiguration Avalon_MM interface.

The link_pll_reset_control is required just for Arria10, so in case of
Stratix10 it isn't instantiated.

In Stratix 10 architecture there are several additional ports of the
xcvr_reset_control module that must be connected to the native XCVR
instance or tied to GND.

The following xcvr_reset_control ports were defined and connected to the
XCVR:

  - rx|tx_analogreset_stat
  - rx|tx_digitalreset_stat
  - pll_select
2020-09-09 14:15:37 +03:00
Stanca Pop 9c2cfb8c34 axi_generic_adc: Declare parameters before use 2020-08-31 15:58:35 +03:00
Laszlo Nagy 5599fda3b6 library/common/ad_dds: Fix indentation 2020-08-27 13:37:53 +03:00
Laszlo Nagy 5d803d6b6e library/common/ad_dds: Fix initialization when 'valid' not constant
If dac_valid is not a constant '1' it gets synchronized with the
dac_data_sync signal. This causes that dac_valid never asserts while
dac_data_sync is high, this way skipping the phase initialization.
2020-08-27 13:37:53 +03:00
Rodrigo Alencar 99fec4fab3 axi_i2s_adi: create friendly xgui files
Signed-off-by: Rodrigo Alencar <455.rodrigo.alencar@gmail.com>
2020-08-25 09:55:31 +03:00
Laszlo Nagy 64f6762a05 library:axi_adrv9001: Initial version
ADRV9001 interfacing IP supports the following modes on Xilinx devices:

A              B  C       D       E       F      G        H
CSSI__1-lane   1  32      80      80      2.5    SDR      8
CSSI__1-lane   1  32      160     80      5      DDR      4
CSSI__4-lane   4  8       80      80      10     SDR      2
CSSI__4-lane   4  8       160     80      20     DDR      1
LSSI__1-lane   1  32      983.04  491.52  30.72  DDR      4
LSSI__2-lane   2  16      983.04  491.52  61.44  DDR      2

Columns description:
A - SSI Modes
B - Data Lanes Per Channel
C - Serialization factor Per data lane
D - Max data lane rate(MHz)
E - Max Clock rate (MHz)
F - Max Sample Rate for I/Q (MHz)
G - Data Type
H - DDS Rate

CSSI - CMOS Source Synchronous Interface
LSSI - LVDS Source Synchronous Interface

Intel devices supports only CSSI modes.
2020-08-24 17:49:12 +03:00
Laszlo Nagy 8e243b6d32 up_adc_common: Expose up version of r1_mode 2020-08-24 17:49:12 +03:00
Laszlo Nagy 7023639b8f library/common/up_dac_common: Sync dac_rst to control set
De-assert dac_rst together with an updated control set.
This allows writing the control registers before releasing the reset.
This is important at start-up when stable set of controls is required.
2020-08-24 17:49:12 +03:00
Laszlo Nagy f886c246cd library/common/up_dac_common: Add registers to control interface
DDR/SDR - selectable input rate
 number of lanes - number of active lanes that transport data
                  (2 LVDS diff lanes counts as one)
2020-08-24 17:49:12 +03:00
Laszlo Nagy 32be451b98 library/common/up_adc_common: Sync adc_rst to control set
De-assert adc_rst together with an updated control set.
This allows writing the control registers before releasing the reset.
This is important at start-up when stable set of controls is required.
2020-08-24 17:49:12 +03:00
Laszlo Nagy 75c037fcca library/common/up_adc_common: Add registers to control interface
DDR/SDR - selectable input rate
number of lanes - number of active lanes that transport data
                  (2 LVDS diff lanes counts as one)
2020-08-24 17:49:12 +03:00
Laszlo Nagy 05167e2c2b ad_pnmon: Allow patterns with zero as valid data
Allow monitoring of non-PN patterns which have zeros in it.
e.g. nible-ramp, full range ramp.

Singular zeros got ignored if not out of sync, while OOS_THRESHOLD
consecutive zeros or non-matching data asserts the out of sync line.
2020-08-24 17:49:12 +03:00
Laszlo Nagy bf06a5c08f ad_pngen: Generic PN generator
Parametrizable PN generator, can generate any polynomial with the help of a mask.
2020-08-24 17:49:12 +03:00
Istvan Csomortani 3bd8b73028 axi_spi_engine: Fix value range for ID parameter 2020-08-24 16:45:02 +03:00
Istvan Csomortani 46419f8d09 spi_engine: Fix ip scripts for regmap, offload and execution
Fix the *_ip.tcl scripts for axi_spi_engine and spi_engine_offload
module.

In case of a bool parameters the value_format and value properties must
be set for both user and hdl paramters. If not, in the generated verilog
code the tool will use "true" or "false" strings, instead of 0 or 1.
2020-08-24 16:45:02 +03:00
Istvan Csomortani 1c7043c707 axi_spi_engine: Update IPXACT GUI layout 2020-08-19 10:46:46 +03:00
Istvan Csomortani c8fb3a1846 spi_engine_execution: Update IPXACT GUI layout 2020-08-18 08:53:32 +03:00
Istvan Csomortani d1a6f87adb spi_engine_interconnect: Update IPXACT GUI layout 2020-08-18 08:53:14 +03:00
Istvan Csomortani eaf3e97450 spi_engine_offload: Update IPXACT GUI layout 2020-08-18 08:52:58 +03:00
Stanca Pop 5d4d34477c spi_engine: Add Intel Support 2020-08-17 16:37:21 +03:00
Istvan Csomortani 11947f2e7e spi_engine_execution: code refactoring
The added modification do not chnage the functionality of the module.
2020-08-13 10:01:16 +03:00
Istvan Csomortani 45d806ff11 spi_engine_execution: Fix sdi_shift_reg reset and command latching 2020-08-13 10:01:16 +03:00
AndreiGrozav 26224186c1 ad_dds: Fix typo
Fix for Intel projects
2020-08-13 09:40:46 +03:00
AndreiGrozav 47fa86cfd6 axi_logic_analyzer: Optimize the input data path
The input data path has a delay section that compensates for the ADC path delay.
By using a Dynamic Shift Registers coding style we can improve/change the
resource utilization on m2k:
          Before     After    Resources
LUT       10097      10048     48 (0.28%)
LUTRAM    516        540      -24 (-0.4%)
FF        15285      14803    482 (1.37%)
2020-08-13 07:01:19 +03:00
AndreiGrozav 58e0044643 axi_adc_trigger: Use valid in data delay stage
This is required to match the delays in the data path to internal/external
trigger path.
2020-08-13 07:01:19 +03:00
AndreiGrozav c797a2e14f axi_adc_decimate: Export signals indicating the rate
- oversampling_en signal
- filter mask value

Those signals will be used by the axi_adc_trigger.
2020-08-13 07:01:19 +03:00
AndreiGrozav 2e0ba5bffd axi_logic_analyzer: Auto sync to ADC path
The number of delay taps in the LA data path can be controlled manually, from
the regmap or automatically, according to the axi_adc_decimate's rate.

Moreover, because the rate is configure by software, and the time of
initialization, is different for the ADC path and LA path. There is an
uncertainty of plus/minus one sample between the two. Because ADC and LA
paths share the same clock we can easily synchronize the two paths. We
can't use reset, because the rate generation mechanism is different
between the two. So the ADC path is used as master valid generator and we
can use it to drive the LA path.
The synchronization is done by setting the rate source bit. This
mechanism can only be used if the desired rate for both path is equal,
including oversampling fom ADC decimation.
2020-08-13 07:01:19 +03:00
Laszlo Nagy d2b1164567 axi_dmac: Add interface description register
Adds information on:
  - Log 2 of interface data widths in bits
  - Interface type (0 - Axi MemoryMap, 1 -  AXI Stream, 2 - FIFO ) .
Lets the driver discover interface widths and interface type settings,
this will deprecate the corresponding device tree properties.

This is useful in case of parametrized projects where the width of
the datapath is changing. This change will allow the use of a generic
device tree node.

Updated version to 4.3.a
2020-08-12 17:50:16 +03:00
Laszlo Nagy 04fed45e54 util_cpack2: support for 64 channels 2020-08-11 10:37:59 +03:00
Laszlo Nagy b49928fca6 ad_ip_jesd204_tpl_adc: add support for 64 channels 2020-08-11 10:37:59 +03:00
Laszlo Nagy 2ca09adaf7 ad_ip_jesd204_tpl_dac: expand address space to accomodate 64 channels 2020-08-11 10:37:59 +03:00
Laszlo Nagy 59c2e581a2 util_upack2: support for 64 channels 2020-08-11 10:37:59 +03:00
Laszlo Nagy e698b286e5 jesd204: DAC TPL to support 64 channels 2020-08-11 10:37:59 +03:00
Istvan Csomortani fe90fc7e57 axi_ad9361: add_instance command must have a version attribute 2020-08-11 10:14:18 +03:00
Istvan Csomortani 0c7d85ac87 axi_laser_driver: Fix IP paramtere editor error
The parameter property 'type' cannot be modified after
adding the parameter.
2020-08-11 10:14:18 +03:00
Istvan Csomortani f38b9d44b9 util_adcfifo: Update the interfaces for the asymetric memory 2020-08-11 10:14:18 +03:00
Istvan Csomortani f624d5df40 intel_mem_asym: Update the interface definitions
The ram_2port IP has different interface names in Quartus PRO and
Quartus Standard.

Update the interface names for the support Quartus PRO.
2020-08-11 10:14:18 +03:00
Istvan Csomortani 2198320981 intel_mem_asym: add_instance command must have a version attribute 2020-08-11 10:14:18 +03:00
Istvan Csomortani 0de5039b96 avl_dacfifo: add_intance command must have a version attribute 2020-08-11 10:14:18 +03:00
Istvan Csomortani 3e6d9ee019 adi_jesd204: Delete redundant connections 2020-08-11 10:14:18 +03:00
Istvan Csomortani e856a99e49 adi_jesd204: add_instance command must have a version attribute 2020-08-11 10:14:18 +03:00
Istvan Csomortani 53e07c5d29 quartus_pro: Parameter property TYPE is not supported 2020-08-11 10:14:18 +03:00
AndreiGrozav 9122d98132 adi_intel_device_info_enc.tcl: Fix typo 2020-08-10 18:30:46 +03:00
Laszlo Nagy 4e438261aa ad_serdes_out: Add CMOS support 2020-08-07 08:31:19 +03:00
Laszlo Nagy 837475db0d ad_serdes_in: Add CMOS support 2020-08-07 08:31:19 +03:00
Laszlo Nagy e6b9e21ad1 ad_serdes_out: Add tristate option 2020-08-07 08:31:19 +03:00
Laszlo Nagy c5c772127d up_delay_cntrl:ad_serdes_in: Make delay value width parametrizable
US/US+ devices have IDELAY/ODELAY with 512 taps. This requires wider
control value for delay selection. 9 bits contrary to 5 on 7series.
2020-08-07 08:31:19 +03:00
Laszlo Nagy 37d378c753 common/ad_serdes_out.v: Add US/US+ support 2020-08-07 08:31:19 +03:00
Laszlo Nagy 65d39b9164 common/ad_serdes_in.v: Add US/US+ support 2020-08-07 08:31:19 +03:00
AndreiGrozav 4972e5c42d axi_dac_interpolate: oversampling optimization
Optimize the oversampling mechanism.
The behavior of the axi_dac_interpolate was changing if a debug module was
added to the core.
The current code has a better utilization and reliability.
2020-08-05 13:01:05 +03:00
AndreiGrozav d39ed3d4db axi_dac_interpolate: Fix oversampling by 2
When using an oversampling of 2 for axi_dac_interpolate the rate was
the same as with oversampling by 1(bypassing).

This commit removes the bypass for the ratio of 2.
2020-08-05 13:01:05 +03:00
AndreiGrozav a7a131cb36 ad_dds: Fix noise caused by dac_data_sync
For projects where the clock ratio between the sampling clock and core clock
is higher than 2, the ad_dds generates a number of samples equal with
the clock ratio. There is a phase offset between the samples, proportional
with the requested DDS frequency.
In scenarios where the DDS out frequency is closer to the upper
limit(Nyquist) and/or the clock ratio is also greater than 2 and the
dac_data_sync reminds low for an extended period of time, the DAC will
receive at each core clock period, a number of samples equal with the
clock ratio and with an amplitude influenced by the DDS out frequency.
In most cases similar with a sawtooth signal.

With this commit we ensures that samples received by the DAC are 0 for
the period where dac_data_sync signal is high. Only when the signal
transitions to low, the phase accumulator is initialized and the phase
information is passed to the phase to amplitude converter.

Another issue can appear when the sync signal is too short; less then
CLK_RATIO * clock cycles. Because the phase accumulator will not
synchronize at all stages, the final result will be a random combination of
sine-waves. Added a minimum sync pulse after the dac_data_sync is set
low.
2020-08-04 13:08:07 +03:00
Laszlo Nagy 6ca6257341 jesd204_rx: Increment version to 1.04.a
- support for frame alignment check
- support for interrupt on frame alignment error
- support for interrupt on unexpected lane status error
2020-07-31 11:43:41 +03:00
Laszlo Nagy 87b67ced17 jesd204_rx: Interrupt for unexpected lane status error 2020-07-31 11:43:41 +03:00
Laszlo Nagy 5e16eb85bb jesd204_rx: Generate interrupt on frame alignment error
When frame alignment error monitoring is enabled and error threshold is met
at least for one lane, generate an interrupt so software can reset the link and
do further bring-up steps.
2020-07-31 11:43:41 +03:00
Laszlo Nagy cf145ca961 axi_adxcvr: Reset status if PLL lock is lost
In case something happens with the reference clock of the CPLL or QPLL,
they might lose the locking. The status should reflect that.
2020-07-31 11:43:41 +03:00
Laszlo Nagy 15e14c76b9 jesd204_rx: Don't auto reset on frame alignment error by default
Let software handle the error case by default. Other steps might be
required to bring-up properly the link if one shot SYSREF is used.
2020-07-31 11:43:41 +03:00
Matt Blanton 1e04b2e2f2 jesd204_rx: Add RX frame alignment character check
Add support for RX frame alignment character checking when scrambling is enabled and
for link reset on misalignment.
Add support for xcelium simulator to jesd204/tb
2020-07-31 11:43:41 +03:00
AndreiGrozav ef5f29e66b m2k: Pattern Generator add instrument triggering
The Pattern generator is part of the axi_logic_analyzer core.
The trigger signal can be internal (Oscilloscope or Logic Analyzer) or
external(TI or TO pins).
2020-07-23 18:22:38 +03:00
AndreiGrozav ad4439433d axi_logic_analyzer: Add trigger disable condition
The trigger disable condition will be used as default
or last available option in the trigger out source selection.
2020-06-26 10:47:15 +03:00
AndreiGrozav 3e91078af0 axi_adc_trigger: Add trigger disable condition
Add trigger disable condition.
Set the trigger blocking/disable condition as the default condition in
the trigger selection multiplexer.
2020-06-26 10:47:15 +03:00
Laszlo Nagy 2e5a4eb684 jesd204: update README to reflect rev C 2020-06-23 13:52:35 +03:00