Commit Graph

2942 Commits (f41391fa937aa9ea2b36dde2b40dd5dbb3bcb4f1)

Author SHA1 Message Date
Ionut Podgoreanu f41391fa93 axi_dmac: Add support for DMA Scatter-Gather
This commit introduces a different interface to submit transfers, using
DMA descriptors.

The structure of the DMA descriptor is as follows:

struct dma_desc {
    u32 flags,
    u32 id,
    u64 dest_addr,
    u64 src_addr,
    u64 next_sg_addr,
    u32 y_len,
    u32 x_len,
    u32 src_stride,
    u32 dst_stride,
};

The 'flags' field currently offers two control bits:
- bit 0: if set, the transfer will complete after this last descriptor
  is processed, and the DMA core will go back to idle state; if cleared,
  the next DMA descriptor pointed to by 'next_sg_addr' will be loaded.
- bit 1: if set, an end-of-transfer interrupt will be raised after the
  memory segment pointed to by this descriptor has been transferred.

The 'id' field corresponds to an identifier of the descriptor.

The 'dest_addr' and 'src_addr' contain the destination and source
addresses to use for the transfer, respectively.

The 'x_len' field contains the number of bytes to transfer,
minus one.

The 'y_len', 'src_stride' and 'dst_stride' fields are only useful for
2D transfers, and should be set to zero if 2D transfers are not
required.

To start a transfer, the address of the first DMA descriptor must be
written to register 0x47c and the HWDESC bit of CONTROL register must
be set. The Scatter-Gather transfer is queued similarly to the simple
transfers, by writing 1 in TRANSFER_SUBMIT.

The Scatter-Gather interface has a dedicated AXI-MM bus configured for
read transfers, with its own dedicated clock, which can be asynchronous.

The Scatter-Gather reset is generated by the reset manager to reset the
logic after completing any pending transactions on the bus.

When the Scatter-Gather is enabled during runtime, the legacy cyclic
functionality of the DMA is disabled.

Signed-off-by: Ionut Podgoreanu <ionut.podgoreanu@analog.com>
2023-12-04 14:34:33 +02:00
Stanca Pop 9ba84cf7c0 axi_ad7616: Remove serial dependencies 2023-11-09 14:43:20 +02:00
Alin-Tudor Sferle 03c4276a2b axi_ad7606x: Add the correct IP's name
Signed-off-by: Alin-Tudor Sferle <Alin-Tudor.Sferle@analog.com>
2023-11-07 15:00:06 +02:00
LBFFilho becc035ba9
SPI Engine: Fixed delay behaviour on Chip-Select and Sleep instructions (#1200)
Fixed wrong behaviour on chip select instruction:
- previously, a sleep time happened before the chip select change
- the intended behaviour was for another sleep time, of equal amount, to happen after the chip select change as well
- additionally, the counter logic implementation was creating an additional factor of 2 on the sleep time

All of the above points were fixed. The changes introduced also fix another issue where the sleep instruction was likewise happening with a duration larger than intended by a factor of 2


Signed-off-by: Laez Barbosa <laez.barbosa@analog.com>
2023-10-30 09:52:04 -03:00
AndreiGrozav f8ee407f34 axi_ad4858: Initial commit
The axi_ad4858 IP core is design as the HDL interface for the AD4858 ADC.
Features:
 - AXI based configuration
 - LVDS and CMOS support
 - Configurable number of active data lines (CMOS - build-time configurable)
 - Oversampling support
 - Supports packet formats 0,1,2 or 3
 - CRC check support
 - Real-time data header access
 - Channel based raw data access(0x0408)
 - Xilinx devices compatible

Documentation at https://wiki.analog.com/resources/fpga/docs/axi_ad4858
2023-10-05 10:19:03 +03:00
AndreiGrozav 6128dd1ab5 up_dac_channel: Cosmetics - fix indentation 2023-10-02 11:14:57 +03:00
PopPaul2021 cd33c99b94 library/axi_ad3552r: Added interface IP for Xilinx projects.
The custom interface IP for AD3552R DAC has more operation capabilities:
  - 8b register read/write SDR/DDR
  - 16b register read/write SDR/DDR
  - data stream SDR/DDR ( clk_in/8 or clk_in/4 update rate)
  - selectable input source : DMA/ADC/TEST_RAMP
  - data out clock(SCLK) has clk_in/8 frequency when the converter is configured and clk_in/2 when the converter is in stream mode
  - the IP reference clock (clk_in) can have a maximum frequency of 132MHz
  - the IP has multiple device synchronization capability when the DMA is set as an input data source

Signed-off-by: PopPaul2021 <Paul.Pop@analog.com>
2023-10-02 11:07:08 +03:00
PopPaul2021 86836f5a40 library/common: Added DAC custom read/write interface in up_dac_common.
The DAC common regmap was updated with 3 registers(rd/wr/ctrl) and 1 interface status flag for converters with custom control interface.
2023-10-02 11:07:08 +03:00
Jem Geronimo 4abb8b3b97 dc2677a: add initial design
Signed-off-by: Jem Geronimo <Johnerasmusmari.Geronimo@analog.com>
2023-10-02 15:10:04 +08:00
Jem Geronimo 32e29ad753 axi_ltc235x: Add initial design
Signed-off-by: Jem Geronimo <Johnerasmusmari.Geronimo@analog.com>
2023-10-02 15:10:04 +08:00
Iulia Moldovan c3aa014105 data_offload: Fix error regarding invalid value for param MEM_TYPE
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-09-29 14:57:03 +03:00
AndreiGrozav 385e135561 axi_adrv9001: Change the DDS sync structure
The DDS for each channel was synchronized by the main channel.
One problem with this aporoach is that when a user sets a DDS that
is not from the main channel the sinchronization does not happend.
This behavior is not user friendly in IIO-Oscilloscope or within other
configuration methods.

This commit keeps all channels in sync by triggering the sync on all
channels from each individual channel.
2023-09-29 10:11:49 +03:00
AndreiGrozav 9f824554aa up_dac_channel: Cosmetic additions 2023-09-26 18:39:28 +03:00
AndreiGrozav a4add963d4 ad9361: Add support for config DDS phase resolution 2023-09-26 18:39:28 +03:00
AndreiGrozav 92be583369 ad_ip_jesd204_tpl_dac: Increase DDS phase DW support
Allow upto 32 bit phase data width support.
2023-09-26 18:39:28 +03:00
AndreiGrozav 782b27e894 DAC DDS: Add support for DDS phase width > 16
Add support for DDS phase width greather than 16.
The software should read the DDS phase data width register and configure
the DDS init and increment registers accordingly, otherwise the obtained
DDS output frequency will not be the desired one for DDS phase width
different than 16.

DDS_incr = (f_out * 2^(phase_width) * clkratio)/f_if
2023-09-26 18:39:28 +03:00
Iulia Moldovan ff7b8ef6ae Add LICENSE_ADIJESD204. Delete jesd204/README.md
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-09-07 10:45:49 +03:00
Iulia Moldovan 860010e050 library/common/tb/tb_base.v: Update license header
* Removed the commercial JESD license and put the ADIBSD or GPL v2 like
   for other Verilog files

Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-09-07 10:45:49 +03:00
Iulia Moldovan 0590a4046c Add copyright & license for all files needing ADI JESD specific license
* Added every year when the file was edited, with comma
 * Range if it's consecutive years

Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-09-07 10:45:49 +03:00
AndreiGrozav aa11f4311c xilinx/ad_data_in.v: Add SDR support 2023-09-07 10:43:29 +03:00
alin724 c8a131ec0a ad7606x: Add dynamic configuration for AD7606X operation modes
AD7606x operation mode configuration:
REG_CNTRL_3
bit 8 - 'b1 - set operation mode indicated in bits [7:0];
bit [7:0] - set desired operation mode: 0 - SIMPLE, 1 - CRC, 2 - STATUS_HEADER, 3 - CRC_STATUS
2023-09-06 17:09:22 +03:00
Iulia Moldovan 5c9b271f3a Fix error regarding hierarchy that Vivado misses
* Solution from here: https://support.xilinx.com/s/article/69320?language=en_US
 * Added in:
  * util_cdc
  * util_cic
  * jesd204_rx/tx
  * util_upack2
  * axi_jesd204_common: used in axi_jesd204_rx/tx
  * axi_jesd204_rx/tx
  * jesd_common

Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-08-01 18:12:40 +03:00
Alin-Tudor Sferle ea29a37eae adi_xilinx_device_info: Update speed_grade_list 2023-07-25 19:49:33 +03:00
Iulia Moldovan c9a7d4d927 Add copyright and license to .tcl, .ttcl files
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-07-25 15:22:26 +03:00
Iulia Moldovan 1cac2d82e1 Add copyright and license to .xdc files
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-07-25 11:03:02 +03:00
Iulia Moldovan 27bb69b44c Add copyright and license to .sdc files
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-07-25 10:41:40 +03:00
Iulia Moldovan 86c9847c5f Add copyright & license to .sh, .yml, .pl files. Edit Makefile for KV260
* Updated the Makefile for KV260 template as the copyright was not generated
   properly

Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-07-11 18:39:55 +03:00
Iulia Moldovan 28c06d505f Add/edit copyright and license for .v, .sv files
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-07-11 15:17:41 +03:00
Jorge Marques 15250232f9
axi_dmac: Fix constraints coverage and empty to list warnings
Due to nets being optimized at IP-level during the no-OOC synthesis flow,
constraints related to req_clk (request clock) were not being applied,
causing the design to not meet timing.
The fix considers the synchronous modes, appending the possible resulting
req_clk's names after the synthesis flow.

Due to grounded signals in the DMA_TYPE_SRC != DMA_TYPE_STREAM_AXI config.,
sync_rewind is removed during synthesis, even so, constraints were
trying to be applied to those nets.
To resolve this, sync_rewind block was moved to inside the generate.
Vivado seems to properly suppress "Empty list" warnings when the circuit does not exist because of a generate rule.

Signed-off-by: Jorge Marques <jorge.marques@analog.com>
Signed-off-by: Ionut Podgoreanu <ionut.podgoreanu@analog.com>
2023-07-10 12:28:59 +00:00
Iulia Moldovan c7af4daa2f library.mk: Update folders and files from make clean
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-04-28 17:02:13 +03:00
Jem Geronimo d152ad1e9d
add: softspan support in adc_channel regmap (#1081)
docs/regmap/adi_regmap_adc.txt: 
- add softspan to regmap
library/common/up_adc_channel.v
- update copyright year header
- add softspan to regmap
library/common/up_adc_common.v
- update minor version

Signed-off-by: John Erasmus Mari Geronimo <Johnerasmusmari.Geronimo@analog.com>
2023-04-20 19:05:38 +08:00
Iulia Moldovan 9a91dd8857 ad_data_out: Revert change (issue) inserted in commit 075ee05189
* Issue is with ODDR and ODDRE1 inputs D1 and D2

Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-04-13 11:08:17 +03:00
imoldovan 075ee05189
Update ad_data_in &_out (#1060)
* ad_data_in: Add new logic and explanations

 * Added parameters IDELAY_TYPE, DELAY_FORMAT, US_DELAY_TYPE to be used
   with the IDELAY instances
 * Added explanations
 * Added option to bypass IDELAY if it's not instantiated, regardless of
   the FPGA_TECHNOLOGY parameter
 * Determined a part of the logic for EN_VTC (by the UG) but not for all
   modes since we don't have use cases for them
 * Changed logic when adding ODELAY: now you must set IODELAY_ENABLE = 1
   and FPGA_TECHNOLOGY != NONE if you want it

* ad_data_out:

 * Updated ODDR parameter
 * Fixed issue with ODDR inputs D1, D2: D1 must be with _p and D2 with _n,
   according to the Xilinx template
 * Removed _ES1 from IODELAY_SIM_DEVICE

 * Added ODELAY for UltraScale
 * Before, there was no support for UltraScale/+, and the output data
   was completely disconnected from the ODDR
 * The support for this was requested in this issue, although as of now we don't
   have a design that uses it: https://github.com/analogdevicesinc/hdl/issues/917

 * Added parameters ODELAY_TYPE, DELAY_FORMAT, US_DELAY_TYPE to be used
   with the ODELAY instances
 * Added explanations
 * Added option to bypass ODELAY if it's not instantiated, regardless of
   the FPGA_TECHNOLOGY parameter
 * Determined a part of the logic for the EN_VTC (by the UG) but not for
   all modes since we don't have use cases for them
 * Changed logic when adding ODELAY: now you must set IODELAY_ENABLE = 1
   and FPGA_TECHNOLOGY != NONE if you want it

---------

Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-04-04 11:09:46 +03:00
Sergiu Arpadi cf3bd8528d spi_engine_offload: Update hw.tcl
Define trigger input signal as if_pwm interface type. This ensures
compatibility with axi_pwm_gen pwm outputs.
2023-03-30 14:55:59 +03:00
Sergiu Arpadi 369e34425f axi_pwm_gen: Update timing constraints, hw.tcl and sdc files.
Not using util_cdc_constr.tcl
2023-03-30 14:55:59 +03:00
alin724 f945520020 axi_ad7606x: Fix data width and order of ADC channels 2023-03-29 21:33:33 +03:00
AndreiGrozav e883f6ecd6 adi_xilinx_device_info_enc: Enlarge detection
Add detection scenario for xazu*, xczu*, xqzu* and ultrascale+ packages.
2023-03-29 16:44:25 +03:00
laurent-19 2ae09c9808 Check guidelines. Remove redundancies
* Removed empty/commented lines
 * Regenerated Makefiles
 * Removed redundancies adc channels data width
 * Set data width 32-bit: max resolution and CRC header

Signed-off-by: laurent-19 <laurentiu.popa@analog.com>
2023-03-29 15:08:07 +03:00
Sergiu Arpadi 445cca61ef SPI Engine: Update spi_engine.tcl
The SPI Engine cores were named directly inside the script and this
would mean that for multiple SPI Engine instances IPs with the same
name would appear. These updates will introduce the hierarchy name
into the name given to the cores and will therefore allow for
multiple instances of SPI Engine to be added to the same Xilinx
project.

Projects which use spi_engine.tcl will be updated to account for
these changes.
2023-03-29 15:08:07 +03:00
laurent-19 83284107a2 library/axi_pwm_gen: Assign correct reg value to offset_0
Signed-off-by: laurent-19 <laurentiu.popa@analog.com>
2023-03-22 17:58:18 +02:00
PopPaul2021 e94df1d7da library/axi_ad7768: Data valid signal updates
If the sampling clock is lower than dclk*number_of_active_lines*32 the interface should wait for the next adc_ready signal to reset the counter.
The adc_valid_p signal should be set high just for a clock period after the sample was captured.
2023-03-01 15:52:05 +02:00
Jem Geronimo 2db944396f
axi_pwm_gen: add: intel support (#1080)
Signed-off-by: Jem Geronimo <johnerasmusmari.geronimo@analog.com>
2023-02-07 18:27:04 +08:00
Istvan-Zsolt Szekely 15e9c65c83 library/common/util_pulse_gen: Fix for unupdateable registers
- Fixed an issue where if Pulse Period is set to 0, the load_config won't work

Signed-off-by: Istvan-Zsolt Szekely <istvan.szekely@analog.com>
2023-02-02 11:33:08 +02:00
Iulia Moldovan db94628cc6 library & projects: Update Makefiles
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-01-27 11:54:05 +02:00
Iulia Moldovan a88215abc1 axi_adrv9001/intel: Add dummy parameter IODELAY_ENABLE in adrv9001_rx
- Issue introduced by commit 173f4a83d4
 - When IODELAY_ENABLE was inserted in axi_adrv9001_if for adrv9001_rx (Xilinx instance),
   for Intel instance (intel/adrv9001_rx.v) was omitted and caused a build error for
   adrv9001/a10soc

Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2023-01-18 14:52:30 +02:00
alin724 cd448ea0d0 axi_ad7606x: Initial commit 2023-01-12 17:38:14 +02:00
AndreiGrozav 22fbb05256 Update IPs based on up_adc_common changes 2023-01-12 13:09:35 +02:00
alin724 8ad959c16f up_adc_common: Update custom RD/WR mechanism 2023-01-12 13:09:35 +02:00
Filip Gherman 4257a47b7a intel/adi_jesd204: Enable master clock generation block for S10 H-Tile 2023-01-10 13:07:04 +02:00
Iulia Moldovan 45346b1957 library: Cosmetic changes for modules that use ad_serdes_*
Edited in:
 * axi_ad9122
 * axi_ad9434
 * axi_ad9684
 * axi_ad9739a
 * axi_ad9783
 * axi_adrv9001
 * ad_serdes_clk
 * ad_serdes_in
 * ad_serdes_out

Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
2022-12-15 14:22:40 +02:00