forked from M-Labs/artiq
1
0
Fork 0

sawg: also give offset some headroom

closes #771
This commit is contained in:
Robert Jördens 2017-07-04 16:49:59 +02:00
parent 60809d1cb4
commit 91ca9fbcad
2 changed files with 5 additions and 6 deletions

View File

@ -281,18 +281,18 @@ class SAWG:
width = 16 width = 16
time_width = 16 time_width = 16
cordic_gain = 1.646760258057163 # Cordic(width=16, guard=None).gain cordic_gain = 1.646760258057163 # Cordic(width=16, guard=None).gain
cordic_gain *= 1.01 # leave a bit of headroom head_room = 1.001
self.config = Config(channel_base, self.core, cordic_gain) self.config = Config(channel_base, self.core, cordic_gain)
self.offset = Spline(width, time_width, channel_base + 1, self.offset = Spline(width, time_width, channel_base + 1,
self.core, 2.) self.core, 2.*head_room)
self.amplitude1 = Spline(width, time_width, channel_base + 2, self.amplitude1 = Spline(width, time_width, channel_base + 2,
self.core, 2*cordic_gain**2) self.core, 2*head_room*cordic_gain**2)
self.frequency1 = Spline(3*width, time_width, channel_base + 3, self.frequency1 = Spline(3*width, time_width, channel_base + 3,
self.core, 1/self.core.coarse_ref_period) self.core, 1/self.core.coarse_ref_period)
self.phase1 = Spline(width, time_width, channel_base + 4, self.phase1 = Spline(width, time_width, channel_base + 4,
self.core, 1.) self.core, 1.)
self.amplitude2 = Spline(width, time_width, channel_base + 5, self.amplitude2 = Spline(width, time_width, channel_base + 5,
self.core, 2*cordic_gain**2) self.core, 2*head_room*cordic_gain**2)
self.frequency2 = Spline(3*width, time_width, channel_base + 6, self.frequency2 = Spline(3*width, time_width, channel_base + 6,
self.core, 1/self.core.coarse_ref_period) self.core, 1/self.core.coarse_ref_period)
self.phase2 = Spline(width, time_width, channel_base + 7, self.phase2 = Spline(width, time_width, channel_base + 7,

View File

@ -68,8 +68,7 @@ class SAWGTest(unittest.TestCase):
v = int(round((1 << 48) * .1 * self.t)) v = int(round((1 << 48) * .1 * self.t))
self.assertEqual( self.assertEqual(
self.rtio_manager.outputs, [ self.rtio_manager.outputs, [
(0., 1, 0, int(round( (0., 1, 0, int(round(self.driver.offset.scale*.9))),
(1 << self.driver.offset.width - 1)*.9))),
(2.*self.t, 8, 0, int(round( (2.*self.t, 8, 0, int(round(
(1 << self.driver.frequency0.width) * (1 << self.driver.frequency0.width) *
self.t/self.channel.parallelism*.1))), self.t/self.channel.parallelism*.1))),