Commit Graph

396 Commits (69bb9df515bbba8a20fec767aea730114b39d135)

Author SHA1 Message Date
Laszlo Nagy e909962fb0 common/ad_upack: Generic unpacker core and testbench
Unpacker:
   - unpack O_W number of data units from I_W number of data units
   - data unit defined in bits by UNIT_W e.g 8 is a byte
2021-02-05 15:24:15 +02:00
Laszlo Nagy b4ebd4357f common/ad_pack: Generic packer core and testbench
Packer:
   - pack I_W number of data units into O_W number of data units
   - data unit defined in bits by UNIT_W e.g 8 is a byte
2021-02-05 15:24:15 +02:00
Laszlo Nagy 8476993c1b ad_pnmon: Fix zero checking when valid not constant 2021-01-26 15:22:41 +02:00
Laszlo Nagy 669217db8b ad_tdd_control: Avoid single pulses if tx_only or rx_only 2021-01-20 13:00:01 +02:00
Laszlo Nagy 843c2565f7 up_tdd_cntrl: Split large synchronizer in smaller ones
This will help placement.
2021-01-20 13:00:01 +02:00
Laszlo Nagy 54c2cf7d12 ad_tdd_control: Fix rx/tx only behavior
When tx_only disable rx_enable and vice-versa
2021-01-20 13:00:01 +02:00
Laszlo Nagy a47cc59c67 common/up_tdd_cntrl: Fix read data when read is idle 2021-01-20 13:00:01 +02:00
Laszlo Nagy 7e63113734 library/common/up_tdd_cntrl: Make address generic 2021-01-20 13:00:01 +02:00
Laszlo Nagy 5df2961624 ad_mux: another fix cases where channel number is not power of mux size 2020-11-27 09:45:11 +02:00
Laszlo Nagy 0badfdfa31 ad_mux: fix cases where channel number is not power of mux size 2020-11-27 09:45:11 +02:00
Laszlo Nagy 5c561665b0 common/ad_mux: Pipelined mux, rtl and TB
Build a large mux from smaller ones defined by the REQ_MUX_SZ parameter
 Use EN_REG to add a register at the output of the small muxes to help
 timing closure.
2020-11-27 09:45:11 +02:00
Laszlo Nagy 1c71815bd7 up_dac_channel: add register for dma data xbar
This commit adds two fields:
1. source channel selection -  Sets the channel number the for the source data.
2. DMA enable mask - When this bit is set do not drive the enable line
   towards the DMA interface.
2020-11-27 09:45:11 +02:00
Adrian Costina c3465789b8 up_dac_common: Move the sync status to register 0x1a to mirror adc path 2020-11-05 17:42:41 +02:00
Adrian Costina 9093a8c428 library: Move ad_iobuf to the common library, as it's not Xilinx specific
Updated all system_project and Makefiles
2020-11-02 16:13:35 +02:00
sergiu arpadi d6f5c40e8b ad_edge_detect: Change port names
Fix critical warning for using reserved keyword as port name
2020-10-28 11:31:50 +02: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
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
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
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
AndreiGrozav 26224186c1 ad_dds: Fix typo
Fix for Intel projects
2020-08-13 09:40:46 +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
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
Adrian Costina 10c9f7a70d ad_ip_jesd204_tpl_dac: Add option for an external synchronization pin
The external synchronization signal should be synchronous with the
dac clock. Synchronization will be done on the rising edge of the signal.
The control bit is self clearing. Status bit shows that the synchronization
is armed but the synchronization signal has not yet been received

Added EXT_SYNC parameter to be able to keep the dac_sync original
behavior
2020-05-13 10:09:43 +03:00
Laszlo Nagy a32102b81c common/ad_iqcor: Fix for sample width smaller than 16
For converter resolution smaller than 16 when the core is disabled the
bypassed data was truncated. This patch should fix that.
2020-04-24 16:38:54 +03:00
Laszlo Nagy 9450ddc66e library/common/ad_iqcor: fix for intel compilations 2020-04-06 20:28:11 +03:00
Laszlo Nagy ff2be680b3 library/common/ad_iqcor: fix whitespaces 2020-04-06 20:28:11 +03:00
Laszlo Nagy 78aa56f9d2 common/ad_iqcor: fix alignment 2020-04-03 11:16:37 +03:00
Laszlo Nagy 007d03c034 common/ad_iqcor: process multiple samples per clock cycle 2020-04-03 11:16:37 +03:00
Istvan Csomortani 9caaba54d3 ad_mem_asym: Force the Xilinx synthesizer to infer Block RAMs 2020-01-13 12:25:23 +02:00
Istvan Csomortani 5bcaf05355 ad_ss_444to422: localparam can not be used in port definition 2019-10-16 15:18:29 +03:00
Istvan Csomortani b62aab985d ad_csc_RGB2CrYCb: localparam can not be used in port definition 2019-10-16 15:18:29 +03:00
Istvan Csomortani 1b2405a454 ad_csc_CrYCb2RGB: localparam can not be used in port definition 2019-10-16 15:18:29 +03:00
Istvan Csomortani 3cd82c989c ad_3w_spi: Add a 4-wire to 3-wire SPI converter
The module is compliant with the SPI interface specified in ADI-SPI
technical specification.
(https://wiki.analog.com/_media/resources/technical-guides/adispi_rev_1p0_customer.pdf)
2019-08-28 16:13:12 +03:00
AndreiGrozav 36a1767329 Add generic fir filters processes for RF projects 2019-08-20 16:24:47 +03:00
Istvan Csomortani d096b8f6f4 ad_fmclidar1_ebz: Move the util_axis_syncgen into common direcotry 2019-08-08 14:26:07 +03:00
Istvan Csomortani 9422da7908 util_axis_syncgen: Initial commit
The module can receive a synchronous or asynchronous pulse with an arbitrary
width and generate a SYNC signal for the DMA Source AXI Streaming interface.

This way we can synchronize the DMA transfers to an external
pulse/signal.
2019-08-08 14:26:07 +03:00
Istvan Csomortani 723f5cddfc util_pulse_gen: Expose the internal counter
Expose the internal counter so we can synchronize external signals to,
or relative to, the generated pulse.
2019-08-08 14:26:07 +03:00
Istvan Csomortani 544e2b8ad0 util_pulse_gen: Pulse should not be generated if module is in reset 2019-08-08 14:26:07 +03:00
Istvan Csomortani 75e4c844ba util_pulse_gen: Optimise design in order to improve timing 2019-08-08 14:26:07 +03:00
Arpadi ab3d43be71 up_axi.v: fixed bus width definition
fixed axi_dma_regmap.v bus width missmatch
2019-08-06 13:45:54 +03:00
Arpadi fe09acaa2f up_axi_update: ADDRESS_WIDTH parameter is now a localparam
ADDRESS_WIDTH is now AXI_ADDRESS_WIDTH - 2;
up_axi instantiations will set AXI_ADDRESS_WIDTH instead of ADDRESS_WIDTH;
2019-07-26 11:58:58 +03:00