ads62p48 HDL Worker
Device worker for the ADS62P48 Dual-Channel, 14-Bit, 210-MSPS ADC.
Detail
Registers
The raw properties corresponding to the ADS62P48 registers are directly
connected to the rawprops interface. This is required to be connected to a
separate SPI worker that converts reads and writes to the raw properties to SPI
transfers to the device.
Data capture
The ADS62P48 transfers captured samples to the worker over a 14-bit parallel LVDS bus with a source synchronous clock. The data is transmitted as centre aligned double data rate (DDR). This is illustrated by the following diagram from the datasheet:
The circuit used to capture the data is shown below:
For each data lane an IDDR element is used to capture the bits on each edge of
the DCLK. In order to correctly sample the signal clock-to-data delay
calibration is required (see Calibration); to support this the delay value of
the IDELAY elements can be configured via the idelay_value property and a
pattern checker is implemented to detect correct data reception.
The Q data channel is inverted. This is to compensate for an inversion data inversion in the PCB layout.
The data is transferred from the source synchronous clock domain to the radclk
clock domain, which is created by a MMCM in the LMK04816 worker. This clock
domain crossing can be done via a simple synchronizer as these two clock
domains are synchronous.
The data is output over a devsignals interface using the qadc-16-signals
protocol. This is intended to interface to a data_src_qadc_csts device
worker. The data is output on the radclk clock domain. The valid signal on
this interface is controlled via the enable property which allows the DRC to
enable the data stream when the full RF path has been configured.
Calibration
To calibrate the clock-to-data delay the DRC should use the following process:
Configure the ADC to output the ramp test pattern
Sweep the delay from 0 to 31 by writing to the
idelay_valuepropertyFor each delay value, poll the
pattern_checkproperty until it reaches the locked (value of 2) or failed (value of 3) states.Determine the largest span of delay values that resulted in the pattern checker reaching the lock state
Set the delay to the value in the centre of this span
Return the ADC to normal operation
Worker Properties
idelay_valueType:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
pattern_checkType:
ucharAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
enableType:
boolAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x00Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x01_to_0x1fType:
ucharArray dimensions:
['31']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x20Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x21_to_0x3eType:
ucharArray dimensions:
['30']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x3fType:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
reg_0x40Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
reg_0x41Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x42_to_0x43Type:
ucharArray dimensions:
['2']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x44Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x45_to_0x4fType:
ucharArray dimensions:
['11']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x50Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
reg_0x51Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
reg_0x52Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
reg_0x53Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x54_to_0x54Type:
ucharArray dimensions:
['1']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x55Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x56_to_0x56Type:
ucharArray dimensions:
['1']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x57Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x58_to_0x61Type:
ucharArray dimensions:
['10']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x62Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
reg_0x63Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x64_to_0x65Type:
ucharArray dimensions:
['2']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x66Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x67_to_0x67Type:
ucharArray dimensions:
['1']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x68Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x69_to_0x69Type:
ucharArray dimensions:
['1']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x6aType:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
ocpi_pad_0x6b_to_0x74Type:
ucharArray dimensions:
['10']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
FalseRead back:
False
Default value:
None
reg_0x75Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
reg_0x76Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
TrueRead back:
False
Default value:
None
Worker Ports
devType:
devsignal
rfclkType:
devsignal
rawpropsType:
rawprop
Supported device worker:
data_src_qadc_cstsConnections:
Subdevice port:
devSupported worker port:
devIndex:
None
Interfaces (other than data I/O ports):
Subdevice Connections:
Worker Signals
clkDirection:
inDifferential:
falsePin:
false
data_iDirection:
inWidth:
16Differential:
falsePin:
false
data_qDirection:
inWidth:
16Differential:
falsePin:
false
validDirection:
inDifferential:
falsePin:
false
presentDirection:
outDifferential:
falsePin:
false
radclkDirection:
inDifferential:
falsePin:
false
radclk2xDirection:
inDifferential:
falsePin:
false
dciclkDirection:
inDifferential:
falsePin:
false
DCLK_PDirection:
inDifferential:
falsePin:
true
DCLK_NDirection:
inDifferential:
falsePin:
true
DA0_PDirection:
inDifferential:
falsePin:
true
DA0_NDirection:
inDifferential:
falsePin:
true
DB0_PDirection:
inDifferential:
falsePin:
true
DB0_NDirection:
inDifferential:
falsePin:
true
DA1_PDirection:
inDifferential:
falsePin:
true
DA1_NDirection:
inDifferential:
falsePin:
true
DB1_PDirection:
inDifferential:
falsePin:
true
DB1_NDirection:
inDifferential:
falsePin:
true
DA2_PDirection:
inDifferential:
falsePin:
true
DA2_NDirection:
inDifferential:
falsePin:
true
DB2_PDirection:
inDifferential:
falsePin:
true
DB2_NDirection:
inDifferential:
falsePin:
true
DA3_PDirection:
inDifferential:
falsePin:
true
DA3_NDirection:
inDifferential:
falsePin:
true
DB3_PDirection:
inDifferential:
falsePin:
true
DB3_NDirection:
inDifferential:
falsePin:
true
DA4_PDirection:
inDifferential:
falsePin:
true
DA4_NDirection:
inDifferential:
falsePin:
true
DB4_PDirection:
inDifferential:
falsePin:
true
DB4_NDirection:
inDifferential:
falsePin:
true
DA5_PDirection:
inDifferential:
falsePin:
true
DA5_NDirection:
inDifferential:
falsePin:
true
DB5_PDirection:
inDifferential:
falsePin:
true
DB5_NDirection:
inDifferential:
falsePin:
true
DA6_PDirection:
inDifferential:
falsePin:
true
DA6_NDirection:
inDifferential:
falsePin:
true
DB6_PDirection:
inDifferential:
falsePin:
true
DB6_NDirection:
inDifferential:
falsePin:
true
Utilization
Utilization reporting is not currently implemented.