53e79f553f
Merge branch 'master' into new
2018-11-19 11:54:50 +08:00
a3e0b1c5b4
ad9914,spi2: add warnings about driver state and DMA. Closes #1113
2018-11-17 22:10:20 +08:00
69e699c7bd
ttl: compensate for SED latency in input gating
...
Closes #1137
2018-11-17 22:10:20 +08:00
3ad68f65c5
urukul: make get_att_mu() not alter state
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-16 14:56:26 +00:00
d1eee7c0ea
ad9910: ensure sync is driven when required
...
close #1194
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-16 13:21:01 +00:00
1b841805f6
Merge branch 'master' into new
2018-11-16 15:20:32 +08:00
c3178c2cab
ad9910: profile support
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-14 08:30:28 +01:00
d0cadfeb4b
ad9910: more idiomatic register names
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-14 07:55:01 +01:00
a52d1be140
urukul: expose PROFILE setting
...
* add documentation
* add unittest
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-14 07:43:56 +01:00
a4997c56cf
ad9910: simplify edge detection logic
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-09 18:54:34 +00:00
14b6b63916
ad9910: rewire io_delay tuning
...
This now reliably locates the SYNC_CLK-IO_UPDATE edge by doing two
scans at different delays between start and stop IO_UPDATE.
It also works well when one delay is very close to the edge.
And it correctly identifies which (start or stop) pulse hit or crossed
the SYNC_CLK edge.
for #1143
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-09 18:38:27 +00:00
38c6878d49
urukul: mention min/max attenuation
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-09 13:32:05 +01:00
e565ca6b82
urukul: slow down att write to datasheet limit
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-09 13:23:06 +01:00
998be50f07
urukul: handle MSB in att_reg
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-09 13:21:14 +01:00
c990b5e4f1
Merge remote-tracking branch 'origin/master' into new
2018-11-08 20:21:56 +08:00
0bee43aa58
sawg: use new rtio_output() API
2018-11-08 20:16:30 +08:00
bec25cbaa0
suservo: use new rtio_output() API
2018-11-08 20:13:14 +08:00
e8d58b35b4
spi2: use new rtio_output() API
2018-11-08 20:12:30 +08:00
d18546550e
grabber: use new rtio_output() API
2018-11-08 19:15:50 +08:00
2549e623c1
ad9914: use new rtio_output() API
2018-11-08 19:15:44 +08:00
8caea0e6d3
gateware,runtime: optimize RTIO kernel interface further
...
* now pinning (TODO: atomicity)
* for inputs, merge request and timeout registers
2018-11-08 18:29:24 +08:00
fae95e73ad
ttl: use optimized rtio_output API
2018-11-07 23:41:43 +08:00
3d0c3cc1cf
gateware,runtime: optimize RTIO output interface
...
* reduce address to 8 bits
* merge core, channel and address into 32-bit pre-computable "target"
* merge we register into data register
2018-11-07 23:39:58 +08:00
e6efe830c4
ad9910: rewire sync delay tuning
...
* search from wide window end
* decouple margins and minimum window size
* add note about kasli jitter
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-07 14:52:03 +00:00
ad0254c17b
Merge branch 'switching125' into new
2018-11-07 22:03:18 +08:00
6c00ab57c0
test_ad9910: relax SYNC window
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-06 19:31:38 +01:00
172633c7da
test_ad9910: default to a useful seed
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-06 17:35:57 +01:00
0b2661a34d
ad9910: robustify SYNC window finding
...
don't integrate too long, find the window tip fast and early
a couple 100 SYNC pulses are sufficient
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-06 12:41:21 +00:00
31f68ddf6c
Merge branch 'urukul-sync'
...
* urukul-sync: (29 commits)
urukul: flake8 [nfc]
ad9910: flake8 [nfc]
urukul/ad9910 test: remove unused import
test_urukul: relax speed
urukul,ad9910: print speed metrics
kasli: add PTB2 (external clock and SYNC)
kasli: add sync to LUH, HUB, Opticlock
kasli_tester: urukul0 mmcx clock defunct
test_ad9910: relax ifc mode read
tests: add Urukul-AD9910 HITL unittests including SYNC
ad9910: add init bit explanation
test: add Urukul CPLD HITL tests
ad9910: fiducial timestamp for tracking phase mode
ad9910: add phase modes
ad9910: fix pll timeout loop
tester: add urukul sync
ptb: back out urukul-sync
ad9910: add IO_UPDATE alignment and tuning
urukul: set up sync_in generator
ad9910: add io_update alignment measurement
...
close #1143
2018-11-05 19:54:30 +01:00
6fb18270a2
urukul: flake8 [nfc]
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:45:24 +01:00
832690af9a
ad9910: flake8 [nfc]
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:44:51 +01:00
9fb850ae75
ad9910: add init bit explanation
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:37:02 +01:00
bc04da15c5
test: add Urukul CPLD HITL tests
...
for #1143
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:37:00 +01:00
141cc7d99f
ad9910: fiducial timestamp for tracking phase mode
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:58 +01:00
2f6d3f79ff
ad9910: add phase modes
...
* simplified and cross-referenced the explanation of the different
phase modes.
* semantically and functionally merged absolute and tracking/coherent
phase modes.
* simplified numerics to calculate phase correction
* added warning about possible inconsistency with DMA and default
phase mode
* restricted __all__ imports
* moved continuous/relative phase offset tracking from an instance
variable to a "handle" returned by set()/set_mu() in order to avoid
state inconsistency with DMA (#1113 #1115 )
for #1143
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:55 +01:00
d3ad2b7633
ad9910: fix pll timeout loop
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:53 +01:00
06139c0f4d
ad9910: add IO_UPDATE alignment and tuning
...
for #1143
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:48 +01:00
1066430fa8
urukul: set up sync_in generator
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:46 +01:00
4bbd833cfe
ad9910: add io_update alignment measurement
...
for #1143
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:44 +01:00
7b92282012
ad9910: add docs for sync tuning, refactor
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:42 +01:00
8a47a6b2fb
ad9910: disable sync_clk output
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:40 +01:00
65e2ebf960
ad9910: add sync delay control, auto tuning
...
* expose multi device sync functionality
* sync delay configuration interface
* auto-tuning of sync delay from device_db seed
for #1143
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:37 +01:00
8dbf5f87fd
ad9910: simplify io_update pulsing on init, set_mu
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:35 +01:00
0b3b07a7da
ad9910: add power down method
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:34 +01:00
0433e8f4fe
urukul: add sync_in generator
...
for #1143
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:30 +01:00
f62c1ff0bb
TTLClockGen: expose acc_width
...
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-05 19:36:27 +01:00
David Nadlinger
f79b9d9e1e
ttl: Expand input gate/count API docstrings
2018-11-03 20:33:19 +08:00
David Nadlinger
5d2e3f975f
coredevice: Add get_rtio_counter_mu() docstring [nfc]
2018-11-03 20:33:19 +08:00
David Nadlinger
d6fcc0529f
coredevice: Imperative mood in docstrings [nfc]
...
This follows Python conventions (PEP257) and unifies the style with
other comments.
2018-11-03 20:33:19 +08:00
David Nadlinger
cbdef0225c
ttl: Add target RTIO time argument to timestamp/count functions
...
Software-based tracking of timestamps is problematic (e.g. when
using DMA, see GitHub #1113 ).
2018-11-03 20:33:19 +08:00
David Nadlinger
2a0e1dabfb
ttl: Remove unused attribute [nfc]
2018-11-03 20:33:19 +08:00
David Nadlinger
17a5fb2dce
ttl: Remove error-prone sync() calls
...
These methods are problematic, as with DMA in the picture, the
timestamp member variables did not necessarily reflect the last
submitted event timestamp (see GitHub #1113 ).
sync() is only very rarely used in typical experimental code, so
the methods are removed without a transition period.
Core.wait_until() can be used to busy-wait for a specified RTIO
timestamp value on the core device CPU instead.
2018-11-03 20:33:19 +08:00
David Nadlinger
11e8c9d5f7
coredevice: Add Core.wait_until_mu()
...
(This supersedes TTLOut.sync(), see see GitHub #1113.)
2018-11-03 20:33:19 +08:00
David Nadlinger
cbfbe24d7a
ttl: Remove broken TTLClockGen.sync
...
The code currently doesn't compile because of a typo in the timestamp
field name. However, tracking event timestamps in software is
problematic anyway (e.g. with DMA, see GitHub #1113 ), so just remove
`sync()` altogether.
2018-11-03 20:33:19 +08:00
89a961fb00
urukul, ad9912, ad9910: expose CFG RF switch better
...
* conincident setting of multiple switches
* per channel setting
2018-10-24 13:04:46 +02:00
661dd00c4c
ad9912: phase offset is 14 bit LSB aligned
...
c.f. sinara-hw/Urukul#15
2018-10-11 15:16:08 +02:00
hartytp
08074d5275
Urukul: add support for hardware v1.3 clocking options
2018-10-10 09:26:35 +02:00
hartytp
1a1b454ed9
Urukul: flake8 (NFC)
2018-10-08 10:09:49 +01:00
hartytp
9a509e5070
Zotino: increase delay after register read in init method to avoid underflows
2018-10-06 21:45:17 +08:00
969a305c5a
Merge branch 'master' into switching125
2018-10-04 10:08:42 +08:00
c71e442929
documentation improvements
...
Based on PR #1101 by @drewrisinger
2018-09-26 12:12:37 +08:00
c8cd830118
drtio: implement get_rtio_destination_status for kernels
2018-09-15 19:11:22 +08:00
d38755feff
drtio: implement destination state checks on operations
2018-09-15 15:55:45 +08:00
95432a4ac1
drtio: remove old debugging features
2018-09-12 13:01:27 +08:00
whitequark
a74958f01f
ksupport: raise RuntimeError on reraise with no inflight exception.
...
Fixes #1123 .
2018-08-07 05:53:13 +00:00
6fc8439399
tweak moninj to allow old dashboard with new firmware
2018-08-02 19:34:14 +08:00
47740c8930
share moninj injection state between dashboards
...
Previously if one dashboard overrode a channel this was not visible on
any other dashboard - the channel appeared to operate normally.
2018-08-02 19:34:14 +08:00
7d6a1b528d
ad9912: add ftw_to_frequency
2018-08-02 11:19:12 +00:00
e518a1f1d0
ad53xx: also increase slack after control readback
2018-08-02 11:19:12 +00:00
David Nadlinger
08ee91beb2
ad9910: Clarify chip_select range [nfc]
...
`assert 3 <= chip_select <= 7` is rather opaque without looking
at the CPLD source code otherwise.
2018-07-30 11:08:17 +01:00
David Nadlinger
6b89106578
ad53xx: Avoid sporadic RTIOUnderflow in init()
...
I observed sporadic RTIO underflows on Kasli before, by ~2.5 µs,
so 5 µs extra slack should be plenty. No underflows since.
2018-07-28 23:45:48 +01:00
fb96c1140e
grabber: add coredevice driver
2018-07-24 18:06:44 +08:00
cab0ba408d
fmcdio_vhdci_eem: cleanup and document
2018-07-20 09:57:03 +08:00
8dfcd463aa
fmcdio_vhdci_eem: naming consistency
2018-07-19 15:46:04 +08:00
fe93a454d6
fmcdio_vhdci_eem: fix direction shift register permutation and polarity
2018-07-19 15:16:21 +08:00
8b9a8be12a
fmcdio_vhdci_eem: add dirctl word computation functions
2018-07-17 23:27:29 +08:00
d4d12e264d
fmcdio_vhdci_eem: refactor
...
This allows access to the pin allocation from kernels, which becomes useful
to configure the direction shift register.
2018-07-17 20:13:59 +08:00
b27fa8964b
add variant in identifier string
...
Also add without-sawg suffixes on Sayma.
Closes #1060
Closes #1059
2018-07-15 17:21:17 +08:00
whitequark
12fde6d34b
artiq_coremgmt: fix typo.
...
Fixes #1056 .
2018-06-23 00:36:59 +00:00
21a48711ec
i2c: refactor common operations
2018-06-18 09:34:09 +00:00
f9910ab242
i2c: support selecting multiple or no channels
...
closes #1054
2018-06-15 19:36:37 +02:00
735e4e8561
pcu: spelling
2018-06-08 14:39:22 +00:00
38971d130a
comm_analyzer: fix data without any spi reads
...
closes #1050
2018-06-06 12:21:42 +02:00
5de2d06568
ad53xx/zotino: do not clear power down on overtemp
2018-06-01 13:17:13 +00:00
2c344686d9
ad53xx/zotino: enable overtemp shutdown and readback control
2018-06-01 13:06:52 +00:00
87d3ac9d25
suservo: swap transfer function parametrization
...
The integrator is now parametrized through its gain and not the PI
corner frequency. The integrator gain limit is given in absolute gain
units and not relative to the proportional gain.
close #1033
2018-06-01 09:38:18 +00:00
e408241233
sawg: work around compiler not accepting delay_mu(int32)
2018-06-01 15:42:37 +08:00
f5d55c6902
sawg: add 1 coarse RTIO cycle between spline resets
...
This keeps all events in the same SED lane and limits the number of SED lanes required.
Closes #1038
2018-06-01 15:15:24 +08:00
22506e849f
suservo: clarify timings
...
close #1027
2018-06-01 06:35:38 +00:00
a42f774440
suservo: document offset range limits
...
close #1034
2018-05-31 16:55:44 +00:00
36dcea3edf
suservo: refactor y_mu_to_full_scale as portable
...
close #1032
2018-05-31 16:44:14 +00:00
e136709cac
suservo: document gain state
...
close #1030
2018-05-31 16:36:53 +00:00
5dbdc5650c
suservo: document set_config and get_status more
...
close #1028
2018-05-31 16:32:05 +00:00
e1b0fcc24e
suservo: add documentation on settings and setup
...
close #1015
2018-05-31 16:21:09 +00:00
4e863b32a1
coredevice: configurable initial backing state
...
Several core device drivers maintain a copy of some device state.
Since this copy is not transferred between experiments this backing state
can be different from device state when a new experiment is started.
This commit adds support for injecting initial backing state into
experiments via the device database and sets initial backing state where
known.
ad53xx (zotino): spi2 xfer_duration
novogorny: pgia gains
sampler: pgia gains, spi2 pgia and adc xfer_duration
suservo: pgia gains, spi2 pgia xfer_duration
urukul: cpld cfg (partial: rf_sw), attenuator register
spi2: div/length for xfer_duration
close #1003
2018-05-21 18:55:06 +02:00
8513f0b0d4
minor cleanup
2018-05-21 15:35:00 +08:00
b10d3ee4b4
make RTIO clock switch optional and simplify
...
Kasli no longer has an internal RTIO clock.
Switching clocks dynamically is no longer supported.
2018-05-18 17:41:34 +08:00
bfff755295
urukul: do IO_RST also when blind
2018-05-17 14:48:49 +00:00
whitequark
31c6c79204
firmware: implement an edge profiler.
...
It doesn't work extremely well, and the results can be somewhat
confusing, and it needs a libunwind patch, but it's the best I could
do and it seems still useful.
2018-05-16 21:53:53 +00:00
99f7672c79
ad53xx: tweak spi readback
2018-05-16 19:08:27 +02:00