forked from M-Labs/artiq
doc: document core device driver. Closes #119
This commit is contained in:
parent
3cf53667c8
commit
5f89d1a78f
|
@ -46,10 +46,22 @@ def _no_debug_unparse(label, node):
|
||||||
|
|
||||||
|
|
||||||
class Core:
|
class Core:
|
||||||
def __init__(self, dmgr, ref_period=8*ns, external_clock=False):
|
"""Core device driver.
|
||||||
self.comm = dmgr.get("comm")
|
|
||||||
|
:param ref_period: period of the reference clock for the RTIO subsystem.
|
||||||
|
On platforms that use clock multiplication and SERDES-based PHYs,
|
||||||
|
this is the period after multiplication. For example, with a RTIO core
|
||||||
|
clocked at 125MHz and a SERDES multiplication factor of 8, the
|
||||||
|
reference period is 1ns.
|
||||||
|
The time machine unit is equal to this period.
|
||||||
|
:param external_clock: whether the core device should switch to its
|
||||||
|
external RTIO clock input instead of using its internal oscillator.
|
||||||
|
:param comm_device: name of the device used for communications.
|
||||||
|
"""
|
||||||
|
def __init__(self, dmgr, ref_period=8*ns, external_clock=False, comm_device="comm"):
|
||||||
self.ref_period = ref_period
|
self.ref_period = ref_period
|
||||||
self.external_clock = external_clock
|
self.external_clock = external_clock
|
||||||
|
self.comm = dmgr.get(comm_device)
|
||||||
|
|
||||||
self.first_run = True
|
self.first_run = True
|
||||||
self.core = self
|
self.core = self
|
||||||
|
@ -120,10 +132,13 @@ class Core:
|
||||||
|
|
||||||
@kernel
|
@kernel
|
||||||
def get_rtio_counter_mu(self):
|
def get_rtio_counter_mu(self):
|
||||||
|
"""Return the current value of the hardware RTIO counter."""
|
||||||
return syscall("rtio_get_counter")
|
return syscall("rtio_get_counter")
|
||||||
|
|
||||||
@kernel
|
@kernel
|
||||||
def break_realtime(self):
|
def break_realtime(self):
|
||||||
|
"""Set the timeline to the current value of the hardware RTIO counter
|
||||||
|
plus a margin of 125000 machine units."""
|
||||||
min_now = syscall("rtio_get_counter") + 125000
|
min_now = syscall("rtio_get_counter") + 125000
|
||||||
if now_mu() < min_now:
|
if now_mu() < min_now:
|
||||||
at_mu(min_now)
|
at_mu(min_now)
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
Core drivers reference
|
Core drivers reference
|
||||||
======================
|
======================
|
||||||
|
|
||||||
These drivers are for peripherals closely integrated into the core device, which do not use the controller mechanism.
|
These drivers are for the core device and the peripherals closely integrated into it, which do not use the controller mechanism.
|
||||||
|
|
||||||
|
:mod:`artiq.coredevice.core` module
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
.. automodule:: artiq.coredevice.core
|
||||||
|
:members:
|
||||||
|
|
||||||
:mod:`artiq.coredevice.ttl` module
|
:mod:`artiq.coredevice.ttl` module
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
Loading…
Reference in New Issue