Merge branch 'master' into new

This commit is contained in:
Sebastien Bourdeauducq 2018-11-26 01:02:19 +08:00
commit b32e89444c
6 changed files with 38 additions and 217 deletions

View File

@ -3,6 +3,14 @@
Release notes Release notes
============= =============
ARTIQ-5
-------
5.0
***
ARTIQ-4 ARTIQ-4
------- -------
@ -67,6 +75,11 @@ ARTIQ-4
clocks dynamically (i.e. without device restart) is no longer supported. clocks dynamically (i.e. without device restart) is no longer supported.
* ``set_dataset(..., save=True)`` has been renamed * ``set_dataset(..., save=True)`` has been renamed
``set_dataset(..., archive=True)``. ``set_dataset(..., archive=True)``.
* On the AD9914 DDS, when switching to ``PHASE_MODE_CONTINUOUS`` from another mode,
use the returned value of the last ``set_mu`` call as the phase offset for
``PHASE_MODE_CONTINUOUS`` to avoid a phase discontinuity. This is no longer done
automatically. If one phase glitch when entering ``PHASE_MODE_CONTINUOUS`` is not
an issue, this recommendation can be ignored.
ARTIQ-3 ARTIQ-3

View File

@ -80,8 +80,6 @@ class AD9914:
self.set_x_duration_mu = 7 * self.write_duration_mu self.set_x_duration_mu = 7 * self.write_duration_mu
self.exit_x_duration_mu = 3 * self.write_duration_mu self.exit_x_duration_mu = 3 * self.write_duration_mu
self.continuous_phase_comp = 0
@kernel @kernel
def write(self, addr, data): def write(self, addr, data):
rtio_output((self.bus_channel << 8) | addr, data) rtio_output((self.bus_channel << 8) | addr, data)
@ -194,18 +192,16 @@ class AD9914:
The "frequency update" pulse is sent to the DDS with a fixed latency The "frequency update" pulse is sent to the DDS with a fixed latency
with respect to the current position of the time cursor. with respect to the current position of the time cursor.
When switching from other phase modes to the continuous phase mode,
there is no jump in the DDS phase. This is however not true when
using the continuous phase mode after playing back a DMA sequence
that contained the other phase modes.
:param ftw: frequency to generate. :param ftw: frequency to generate.
:param pow: adds an offset to the phase. :param pow: adds an offset to the phase.
:param phase_mode: if specified, overrides the default phase mode set :param phase_mode: if specified, overrides the default phase mode set
by :meth:`set_phase_mode` for this call. by :meth:`set_phase_mode` for this call.
:param ref_time: reference time used to compute phase. Specifying this :param ref_time: reference time used to compute phase. Specifying this
makes it easier to have a well-defined phase relationship between makes it easier to have a well-defined phase relationship between
DDSes on the same bus that are updated at a similar time. DDSes on the same bus that are updated at a similar time.
:return: Resulting phase offset word after application of phase
tracking offset. When using :const:`PHASE_MODE_CONTINUOUS` in
subsequent calls, use this value as the "current" phase.
""" """
if phase_mode == _PHASE_MODE_DEFAULT: if phase_mode == _PHASE_MODE_DEFAULT:
phase_mode = self.phase_mode phase_mode = self.phase_mode
@ -224,7 +220,6 @@ class AD9914:
# Do not clear phase accumulator on FUD # Do not clear phase accumulator on FUD
# Disable autoclear phase accumulator and enables OSK. # Disable autoclear phase accumulator and enables OSK.
self.write(AD9914_REG_CFR1L, 0x0108) self.write(AD9914_REG_CFR1L, 0x0108)
pow += self.continuous_phase_comp
else: else:
# Clear phase accumulator on FUD # Clear phase accumulator on FUD
# Enable autoclear phase accumulator and enables OSK. # Enable autoclear phase accumulator and enables OSK.
@ -233,11 +228,11 @@ class AD9914:
pow -= int32((ref_time - fud_time) * self.sysclk_per_mu * ftw >> (32 - 16)) pow -= int32((ref_time - fud_time) * self.sysclk_per_mu * ftw >> (32 - 16))
if phase_mode == PHASE_MODE_TRACKING: if phase_mode == PHASE_MODE_TRACKING:
pow += int32(ref_time * self.sysclk_per_mu * ftw >> (32 - 16)) pow += int32(ref_time * self.sysclk_per_mu * ftw >> (32 - 16))
self.continuous_phase_comp = pow
self.write(AD9914_REG_POW, pow) self.write(AD9914_REG_POW, pow)
self.write(AD9914_REG_ASF, asf) self.write(AD9914_REG_ASF, asf)
self.write(AD9914_FUD, 0) self.write(AD9914_FUD, 0)
return pow
@portable(flags={"fast-math"}) @portable(flags={"fast-math"})
def frequency_to_ftw(self, frequency): def frequency_to_ftw(self, frequency):
@ -280,9 +275,10 @@ class AD9914:
def set(self, frequency, phase=0.0, phase_mode=_PHASE_MODE_DEFAULT, def set(self, frequency, phase=0.0, phase_mode=_PHASE_MODE_DEFAULT,
amplitude=1.0): amplitude=1.0):
"""Like :meth:`set_mu`, but uses Hz and turns.""" """Like :meth:`set_mu`, but uses Hz and turns."""
self.set_mu(self.frequency_to_ftw(frequency), return self.pow_to_turns(
self.set_mu(self.frequency_to_ftw(frequency),
self.turns_to_pow(phase), phase_mode, self.turns_to_pow(phase), phase_mode,
self.amplitude_to_asf(amplitude)) self.amplitude_to_asf(amplitude)))
# Extended-resolution functions # Extended-resolution functions
@kernel @kernel

View File

@ -1,7 +1,7 @@
from artiq.language.core import kernel, delay, portable, at_mu, now_mu from artiq.language.core import kernel, delay, portable, at_mu, now_mu
from artiq.language.units import us, ms from artiq.language.units import us, ms
from numpy import int32 from numpy import int32, int64
from artiq.coredevice import spi2 as spi from artiq.coredevice import spi2 as spi
@ -175,7 +175,7 @@ class CPLD:
self.cfg_reg = urukul_cfg(rf_sw=rf_sw, led=0, profile=0, self.cfg_reg = urukul_cfg(rf_sw=rf_sw, led=0, profile=0,
io_update=0, mask_nu=0, clk_sel=clk_sel, io_update=0, mask_nu=0, clk_sel=clk_sel,
sync_sel=sync_sel, rst=0, io_rst=0) sync_sel=sync_sel, rst=0, io_rst=0)
self.att_reg = int32(att) self.att_reg = int32(int64(att))
self.sync_div = sync_div self.sync_div = sync_div
@kernel @kernel

View File

@ -120,34 +120,6 @@ device_db = {
"arguments": {"channel": 26} "arguments": {"channel": 26}
}, },
# FMC DIO used to connect to Zotino
"fmcdio_dirctl_clk": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 27}
},
"fmcdio_dirctl_ser": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 28}
},
"fmcdio_dirctl_latch": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 29}
},
"fmcdio_dirctl": {
"type": "local",
"module": "artiq.coredevice.shiftreg",
"class": "ShiftReg",
"arguments": {"clk": "fmcdio_dirctl_clk",
"ser": "fmcdio_dirctl_ser",
"latch": "fmcdio_dirctl_latch"}
},
# DAC # DAC
"spi_ams101": { "spi_ams101": {
"type": "local", "type": "local",
@ -161,184 +133,26 @@ device_db = {
"class": "TTLOut", "class": "TTLOut",
"arguments": {"channel": 20} "arguments": {"channel": 20}
}, },
"spi_zotino": {
"type": "local",
"module": "artiq.coredevice.spi2",
"class": "SPIMaster",
"arguments": {"channel": 30}
},
"ttl_zotino_ldac": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 31}
},
"dac_zotino": {
"type": "local",
"module": "artiq.coredevice.zotino",
"class": "Zotino",
"arguments": {
"spi_device": "spi_zotino",
"ldac_device": "ttl_zotino_ldac",
"div_write": 30,
"div_read": 40
}
},
"spi_urukul": {
"type": "local",
"module": "artiq.coredevice.spi2",
"class": "SPIMaster",
"arguments": {"channel": 32}
},
"ttl_urukul_io_update": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 33}
},
"ttl_urukul_sw0": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 35}
},
"ttl_urukul_sw1": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 36}
},
"ttl_urukul_sw2": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 37}
},
"ttl_urukul_sw3": {
"type": "local",
"module": "artiq.coredevice.ttl",
"class": "TTLOut",
"arguments": {"channel": 38}
},
"urukul_cpld": {
"type": "local",
"module": "artiq.coredevice.urukul",
"class": "CPLD",
"arguments": {
"spi_device": "spi_urukul",
"io_update_device": "ttl_urukul_io_update",
"refclk": 100e6
}
},
"urukul_ch0a": {
"type": "local",
"module": "artiq.coredevice.ad9912",
"class": "AD9912",
"arguments": {
"pll_n": 10,
"chip_select": 4,
"cpld_device": "urukul_cpld",
"sw_device": "ttl_urukul_sw0"
}
},
"urukul_ch1a": {
"type": "local",
"module": "artiq.coredevice.ad9912",
"class": "AD9912",
"arguments": {
"pll_n": 10,
"chip_select": 5,
"cpld_device": "urukul_cpld",
"sw_device": "ttl_urukul_sw1"
}
},
"urukul_ch2a": {
"type": "local",
"module": "artiq.coredevice.ad9912",
"class": "AD9912",
"arguments": {
"pll_n": 10,
"chip_select": 6,
"cpld_device": "urukul_cpld",
"sw_device": "ttl_urukul_sw2"
}
},
"urukul_ch3a": {
"type": "local",
"module": "artiq.coredevice.ad9912",
"class": "AD9912",
"arguments": {
"pll_n": 10,
"chip_select": 7,
"cpld_device": "urukul_cpld",
"sw_device": "ttl_urukul_sw3"
}
},
"urukul_ch0b": {
"type": "local",
"module": "artiq.coredevice.ad9910",
"class": "AD9910",
"arguments": {
"pll_n": 40,
"chip_select": 4,
"cpld_device": "urukul_cpld",
"sw_device": "ttl_urukul_sw0"
}
},
"urukul_ch1b": {
"type": "local",
"module": "artiq.coredevice.ad9910",
"class": "AD9910",
"arguments": {
"pll_n": 40,
"chip_select": 5,
"cpld_device": "urukul_cpld",
"sw_device": "ttl_urukul_sw1"
}
},
"urukul_ch2b": {
"type": "local",
"module": "artiq.coredevice.ad9910",
"class": "AD9910",
"arguments": {
"pll_n": 40,
"chip_select": 6,
"cpld_device": "urukul_cpld",
"sw_device": "ttl_urukul_sw2"
}
},
"urukul_ch3b": {
"type": "local",
"module": "artiq.coredevice.ad9910",
"class": "AD9910",
"arguments": {
"pll_n": 40,
"chip_select": 7,
"cpld_device": "urukul_cpld",
"sw_device": "ttl_urukul_sw3"
}
},
# AD9914 DDS # AD9914 DDS
"ad9914dds0": { "ad9914dds0": {
"type": "local", "type": "local",
"module": "artiq.coredevice.ad9914", "module": "artiq.coredevice.ad9914",
"class": "AD9914", "class": "AD9914",
"arguments": {"sysclk": 3e9, "bus_channel": 39, "channel": 0}, "arguments": {"sysclk": 3e9, "bus_channel": 27, "channel": 0},
"comment": "Comments work in DDS panel as well" "comment": "Comments work in DDS panel as well"
}, },
"ad9914dds1": { "ad9914dds1": {
"type": "local", "type": "local",
"module": "artiq.coredevice.ad9914", "module": "artiq.coredevice.ad9914",
"class": "AD9914", "class": "AD9914",
"arguments": {"sysclk": 3e9, "bus_channel": 39, "channel": 1} "arguments": {"sysclk": 3e9, "bus_channel": 27, "channel": 1}
}, },
"ad9914dds2": { "ad9914dds2": {
"type": "local", "type": "local",
"module": "artiq.coredevice.ad9914", "module": "artiq.coredevice.ad9914",
"class": "AD9914", "class": "AD9914",
"arguments": {"sysclk": 3e9, "bus_channel": 39, "channel": 2} "arguments": {"sysclk": 3e9, "bus_channel": 27, "channel": 2}
}, },
# Aliases # Aliases

View File

@ -18,11 +18,11 @@
enable-background="new 0 0 800 800" enable-background="new 0 0 800 800"
xml:space="preserve" xml:space="preserve"
id="svg2" id="svg2"
inkscape:version="0.92.2 5c3e80d, 2017-08-06" inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="logo_ver.svg"><metadata sodipodi:docname="logo_ver.svg"><metadata
id="metadata548"><rdf:RDF><cc:Work id="metadata548"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs546" /><sodipodi:namedview id="defs546" /><sodipodi:namedview
pagecolor="#ffffff" pagecolor="#ffffff"
bordercolor="#666666" bordercolor="#666666"
@ -33,7 +33,7 @@
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:window-width="1920" inkscape:window-width="1920"
inkscape:window-height="1124" inkscape:window-height="1024"
id="namedview544" id="namedview544"
showgrid="false" showgrid="false"
fit-margin-top="0" fit-margin-top="0"
@ -41,8 +41,8 @@
fit-margin-right="0" fit-margin-right="0"
fit-margin-bottom="0" fit-margin-bottom="0"
inkscape:zoom="1.18" inkscape:zoom="1.18"
inkscape:cx="71.010198" inkscape:cx="98.9763"
inkscape:cy="110.91775" inkscape:cy="150.60851"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="0" inkscape:window-y="0"
inkscape:window-maximized="1" inkscape:window-maximized="1"
@ -153,11 +153,9 @@
d="M 28.084,368.98 0,429.872 v 1.124 h 14.16 l 4.202,-8.945 H 43.57 l 4.195,8.945 h 14.16 v -1.124 L 33.753,368.98 Z m -5.438,41.259 8.215,-19.134 8.424,19.134 z" /><g d="M 28.084,368.98 0,429.872 v 1.124 h 14.16 l 4.202,-8.945 H 43.57 l 4.195,8.945 h 14.16 v -1.124 L 33.753,368.98 Z m -5.438,41.259 8.215,-19.134 8.424,19.134 z" /><g
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:expanded;font-size:45px;line-height:125%;font-family:'Novecento sans wide';-inkscape-font-specification:'Novecento sans wide, Semi-Bold Expanded';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:expanded;font-size:45px;line-height:125%;font-family:'Novecento sans wide';-inkscape-font-specification:'Novecento sans wide, Semi-Bold Expanded';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text3371"><g id="text3371"><g
aria-label="4" aria-label="5"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:96px;line-height:25px;font-family:'Intro Inline';-inkscape-font-specification:'Intro Inline, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:96px;line-height:25px;font-family:'Droid Sans Thai';-inkscape-font-specification:'Droid Sans Thai, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none"
id="text3728" id="text38"><path
transform="translate(-4.9393448,-3.0990289)"><path d="m 313.61383,351.5027 h 13.824 v -7.296 h -20.928 v 18.72 c 2.496,-0.048 7.968,-0.768 11.376,0.24 1.872,0.528 2.928,1.584 3.024,3.6 -0.048,2.736 -1.488,4.128 -3.84,4.128 -2.256,0 -3.696,-1.152 -3.744,-3.36 h -7.392 c 0.288,6.816 4.944,10.944 11.328,10.944 7.776,0 11.856,-5.952 11.808,-11.712 -0.048,-9.984 -7.632,-11.568 -15.456,-11.088 z"
d="m 334.29087,373.25576 h 3.2 c 0,-2.50667 0,-5.17334 0,-7.78667 h -3.2 v -22.45333 h -10.24 l -14.88,26.08 v 4.16 h 16.26667 v 7.09333 c 2.93333,0 5.92,0 8.85333,0 z m -7.89333,-19.09334 h 0.10667 l -0.69334,5.70667 v 5.6 h -5.97333 z" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;font-family:Intro;-inkscape-font-specification:'Intro , Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:53.33333206px;font-family:Intro;-inkscape-font-specification:'Intro , Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" id="path40" /></g></g></svg>
id="path3730"
inkscape:connector-curvature="0" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -15,7 +15,7 @@ requirements:
- python >=3.5.3,<3.6 - python >=3.5.3,<3.6
- setuptools 33.1.1 - setuptools 33.1.1
- migen 0.8 py35_0+git2d62c0c - migen 0.8 py35_0+git2d62c0c
- misoc 0.11 py35_33+git128750aa - misoc 0.12 py35_0+git714ea689
- jesd204b 0.10 - jesd204b 0.10
- microscope - microscope
- binutils-or1k-linux >=2.27 - binutils-or1k-linux >=2.27