Commit Graph

5494 Commits (a39fa831d075f07f549fc481351da94567e4a118)

Author SHA1 Message Date
Istvan Csomortani 103cbe73dc intel/adi_jesd204: Add support for external core clock
In Subclass 1 mode, we need to use a separate clock (device clock) to
drive the link and transport layer of the interface. Implement the
required infrastructure for this scenario.

The clock domain crossing will be done in by the TX|RX_FIFO in the PCS.
2019-10-02 15:32:17 +03:00
Istvan Csomortani aeaefd2c1c intel/jesd204_phy: Add support for external coreclkin
In Subclass 1 mode an external device clock (core clock) is used,
instead of the PCS output clock, to drive the link and transport layer.

Define an additional parameter, which can be used to enable clock input
port for the PHY module, which can be used as rx|tx_coreclkin source.
2019-10-02 15:32:17 +03:00
Istvan Csomortani 20dd17aa07 util_cpack2: Update hw.tcl file 2019-10-02 15:32:17 +03:00
Istvan Csomortani bc2f916dfc a10soc: Synchronize resets to the reset source
Resets de-assertion should be synchronized to its associated clock.
2019-10-02 15:32:17 +03:00
StancaPop 9c9ce928d8
Merge pull request #346 from analogdevicesinc/spi_engine_trigger_update
spi_engine: Update pulse generation
2019-10-02 14:42:41 +03:00
AndreiGrozav e45f014138 intel/axi_adxcvr_up: Add device spec register 2019-10-02 08:39:01 +03:00
Istvan Csomortani 75d263afc5 adi_project_xilinx: Add constraint files to constr_1 file set 2019-09-27 18:21:25 +03:00
Laszlo Nagy 83d3bded63 axi_ad9361:xilinx:axi_ad9361_lvds_if: fix Rx latency
This commit reverts part of the changes done in the following commit:

- ff50963c7f -
"axi_ad9361- altera/xilinx reconcile- may be broken- do not use"

The above mentioned commit introduced latency variations on the Rx path
at different sample rates, or within the same sample rate after sample
rate changes. The variation is caused by multiple positions of the frame
detection combined with a free running toggle (rx_valid) that is not synchronized
with the actual samples.

Having a single frame detection position eliminates the latency
variation.
2019-09-27 17:52:10 +03:00
Laszlo Nagy 64e54fda8d fmcomms5: remove clock skew handling
Use SSI clock from master as SSI clock of slave.
2019-09-27 17:52:10 +03:00
Laszlo Nagy 1d7a621567 axi_ad9361: make the use of Rx SSI clock optional
When having multiple 936x in parallel, this change enables the use of source
synchronous received clock from the master as sampling clock for other slaves.
This will eliminate skew between the interfaces since the data delays
are going to be tuned against the master clock after a multi-chip
synchronization (MCS) is done. This eliminates the clock crossing from
the slave to master domain inside the FPGA.
2019-09-27 17:52:10 +03:00
Laszlo Nagy cdaaa49a2a axi_ad9361: sync dac_valid to adc_valid
Sync the two valid signals to keep a fixed phase relationship between
the Rx ant Tx channels, this way avoiding +/- 1 sample differences
on the Tx-Rx latency between consecutive transfers.
2019-09-27 17:52:10 +03:00
Stanca Pop 994bb6d0cf adaq7980: Software configurable trigger 2019-09-27 17:02:52 +03:00
Stanca Pop 164aa97ec3 spi_engine: Update pulse generation
The pulse period had a fixed value. Therefore, in order to be able
to configure it from the software, a 32b register pulse_period_reg
was added in axi_spi_engine. Also, to generate the pulse, the
output register pulse_gen_loadc was added.
2019-09-27 17:02:37 +03:00
Istvan Csomortani b174333fa2 project-xilinx.mk: Clean generated file by sysid 2019-09-27 13:16:19 +03:00
AndreiGrozav 7a685dd443 cn0506_rgmii/zcu102: Fix README typo 2019-09-26 16:33:45 +03:00
sarpadi 442b38033a sys_id: added catch to git status check
made error checking more general
2019-09-26 16:26:02 +03:00
AndreiGrozav 447434ace0 cn0506_rgmii: Add support for a10soc 2019-09-20 18:03:27 +03:00
AndreiGrozav 1138c48270 cn0506_rgmii: Add support for zcu102 2019-09-20 18:03:27 +03:00
AndreiGrozav f4f547715e cn0506_rgmii: Add support for zc706 2019-09-20 18:03:27 +03:00
AndreiGrozav 98fba87d8f cn0506_rgmii: Add support for zed 2019-09-20 18:03:27 +03:00
AndreiGrozav afd9420dab cn0506_rgmii: base design initial commit 2019-09-20 18:03:27 +03:00
Laszlo Nagy 7c3b4a5c73 ad9208_dual_ebz: Cleanup workarounds
Cleanup placement constraints and let the tool have more freedom to
place and route the design. This is possible only after balancing the
memory and system clocks.
2019-09-16 10:00:14 +03:00
Laszlo Nagy b7d48b8c74 common/vcu118: Balance clocks
Minimize skew on synchronous CDC timing paths between clocks originating
from the same MMCM source. (sys_mem_clk and sys_cpu_clk)
This is required mostly by the smart interconnect.
The CLOCK_DELAY_GROUP property must be applied directly to the output net of BUFGs.
2019-09-16 10:00:14 +03:00
AndreiGrozav cfc8ff51e1 axi_adc_trigger: equalize delay paths
- Change the trigger delay path to match between the internal and
external(axi_logic_analyzer delays).
2019-09-13 11:55:11 +03:00
AndreiGrozav 9f112640f3 m2k: Change constraint to match the new LA path 2019-09-13 11:55:11 +03:00
AndreiGrozav f5ac0f7019 axi_logic_analyzer: equalize delay paths
- Add parameter for input data delay time to easily match the one of the
adc_trigger.
- Change the trigger delay path to match between the internal and
external(adc_trigger delays).
2019-09-13 11:55:11 +03:00
AndreiGrozav 5e08e2d548 project-xilinx.mk: Fix build condition
"prepare_incremental_compile" is defined as a phony target, but is also a
prerequisite of a real target. This will lead to a complete project build
every time make is called.
To fix the issue the functionality of prepare_incremental_compile target
was included in the generic project build target.
2019-09-12 13:23:09 +03:00
StancaPop abb5e7d94d
Merge pull request #345 from analogdevicesinc/axi_spi_engine_fix
axi_spi_engine: Fix the SYNC interface
2019-09-11 17:21:11 +03:00
Stanca Pop 5ec87615b0 axi_spi_engine: Fix the SYNC interface
The ready signal of the SYNC interface should be always 1'b1,
regardless of ASYNC_SPI_VALUE.

Drive the ready with one in both branches of the ASYNC_SPI_CLK
generate block.
2019-09-11 16:45:30 +03:00
István Csomortáni 953b70480d template: Add a bug report and feature request template 2019-09-04 16:22:14 +03:00
AndreiGrozav a69863609b axi_adc_trigger: Fix trigger out glitches
Currently trigger out pin is hold for 1ms in the next translation(t+1)
state(0 or 1). But not in the state that follows (t+2). This commit
fixes this issue and simplifies the logic.
2019-08-30 14:00:43 +03:00
Istvan Csomortani 97dfb938b6 axi_laser_driver: Fix the up_axi instance 2019-08-29 08:59:56 +03:00
Istvan Csomortani 16a797198f ad_fmclidar1_ebz/common: Fix m_dest_axi_aresetn source 2019-08-29 08:59:56 +03:00
Istvan Csomortani 78815435d2 ad_fmclidar1_ebz/common: Connect adc_dovf to GND 2019-08-29 08:59:56 +03:00
Istvan Csomortani f14bea2b7e ad_fmclidar1_ebz/zc706: Add sys_id support 2019-08-29 08:59:56 +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
Arpadi 63942a6b9b talise_fan_control: updated ip with new fan parameters 2019-08-26 19:01:48 +03:00
Istvan Csomortani aa5fdf903e Makefile: Update makefiles 2019-08-26 16:58:01 +03:00
Istvan Csomortani aa070ef940 README.md: State the main purpose of the repository 2019-08-26 16:32:23 +03:00
AndreiGrozav e7cca7c5f7 m2k: Update for axi_dac_interpolate start sync 2019-08-22 18:07:45 +03:00
AndreiGrozav 245f3f9704 axi_dac_interpolate: Fix channel sync mechanism
The previous channel sync mechanism was simply holding the transmission by
pulling down the dma_rd_en of the two DMAs for each channel(set reg 0x50). After a
period of time (that will take the two DMAs to have the data ready to move)
the dma_rd_en was set for both channels, resulting in a synchronized start.
  This mechanism is valid when the two channels are streaming the same
type of data (constant, waveform, buffer or math) at close frequencies.
Streaming 10MHz on a channel and 100KHz on the second one will result
in different interpolation factors being used for the two channels.
  The interpolation counter runs only when the dma_transfer_suspended(reg 0x50)
is cleared. Because of this, different delays are added by the interpolation
counter one DMA with continuous dma_rd_en will have data earlier than the
one with dma_rd_en controlled by the interpolation counter. Furthermore,
because the interpolation counter value is not reset at each
dma_transfer_suspended, the phase shift between the 2 channels will
differ at each start of transmission.

  To make the transfer start synced immune to the above irregularities a
sync_transfer_start register was added (bit 1 of the 0x50 reg).
When this bit is set and the bit 0(dma_transfer_suspended) is toggled,
the interpolation counters are reset. Each channel enables it's DMA until
valid data is received, then it waits for the adjacent channel to get valid data.
This mechanism will be simplified in a future update by using a streaming
interface between the axi_dac_interpolate and the DMAs that does not require
the probing of the DMA.
2019-08-22 18:07:45 +03:00
AndreiGrozav 53f466a93e axi_adc_trigger: Fix low sampling rate external trigger acknoladge
The decimation module controls the valid signal. The whole triggering mechanism
is active only when the valid signal is active.
In the case of low sampling rates, the valid signal is active once every
n clock cycles. If an external trigger condition is fulfilled and the data valid
signal is low at the time, that trigger will be ignored by the DMA.

To solve this issue, the trigger is held high until the valid is asserted.
And it stays high for at least one clock cycle.
2019-08-22 18:06:10 +03:00
AndreiGrozav 6f540b0ef2 m2k: Add cascading support
-remove util_extract
-instrument triggering logic_analyzer <-> adc_trigger using dedicated latency paths
-move logic_analyzer on adc clock domain (100MHz -> 100MHz)
2019-08-22 18:06:10 +03:00
AndreiGrozav 3b02a2a6c1 axi_logic_analyzer: Add module cascade support
The trigger signal that goes to the DMA(fifo_wr_sync) does not pass through
the variable fifo, for this reason, a 3 clock cycles delay is required, to
keep in sync the data with the trigger.
On the other hand, to be able to cascade the axi_logic_analyzer with
axi_adc_trigger, there should be small delays on the trigger path, for this
reason the trigger_out_adc was created.

Remove the extra delays on the trigger_i(external trigger pins).
2019-08-22 18:06:10 +03:00
AndreiGrozav 30bdb67994 util_extract: Use less delays in axi_adc_trigger 2019-08-22 18:06:10 +03:00
AndreiGrozav b5dfdcfb84 axi_adc_trigger: Add cascade support.
- Add embedded trigger as an option. The use of the embedded trigger as an
option in the data stream is done for further processing, keeping the data
synchronized with the trigger.
When instrument (module) trigger is desired (logic_analyzer - adc_trigger),
a small propagation time is required, hence the need to remove the
util_extract(trigger extract) module from the data path.

- Add more options for the IO triggering. This will open the door for multiple
M2k synchronization(triggering).
trigger_o mux:
1 - trigger flag (from regmap)
2 - external pin trigger (Ti)
3 - external pin trigger (To)
4 - internal adc trigger
5 - logic analyzer trigger

The signal passed to trigger_o must not be delayed, but the new value has to be
kept for a short period, 1ms (100000 clock cycles), to reduce switch noises in
the system.

The axi_adc_trigger handles 3 output triggers:
- trigger_o - external trigger (1 clock cycle delay)
- trigger_out - signals on dmac/fifo_wr_sync the start of a new transfer.
A variable fifo depth is present in the data path, which delays the data
arriving at the DMA with 3 clock cycles. By coincidence, the external trigger
is synchronized and detected on 3 clock cycles. To get a maximum optimization
the trigger_out will be delayed with 3 clock cycles for internal triggers and
directly forwarded in the case of an external trigger.
- trigger_out_la (cascade trigger for logic_analyzer - m2k example)

Because the trigger_out_la must have a small delay, to get a realible
instrument triggering mechanism, a 1 delay clock cycle must be added on the
trigger paths, to avoid creating a closed combinatorial loop.

Increase pcore version. The major version 3 is used to describe the instrument
trigger updates.
2019-08-22 18:06:10 +03:00
Arpadi baacc906a6 ad7616_bugfix: read data multiplexation 2019-08-22 17:59:00 +03:00
Nick Pillitteri b77f922de0 axi_generic_adc: infer clock for input adc_clk 2019-08-22 10:39:59 +03:00
AndreiGrozav 78afe38a3f adrv9009: Add decimation and interpolation filters 2019-08-20 16:24:47 +03:00
AndreiGrozav 44deaadb4a adrv9371: Add decimation and interpolation filters 2019-08-20 16:24:47 +03:00