Skip to content

Commit 7bc5bb6

Browse files
authored
Merge pull request #128 from dihm/nt_docs
DDS9m docs update
2 parents bdf982f + 08ceee2 commit 7bc5bb6

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

docs/source/devices/novatechDDS9m.rst

+77
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,83 @@ Novatech DDS 9m
44
Labscript device for control of the Novatech DDS9m synthesizer.
55
With minor modifications, it can also control the Novatech 409B DDS.
66

7+
.. note::
8+
The following text is copied from the old labscriptsuite.org blog.
9+
Its information dates from 2014.
10+
11+
The DDS9m has four outputs, the first two of which can be stepped through a pre-programmed table,
12+
with the remaining two only controllable by software commands (and hence static during buffered runs).
13+
We use a revision 1.3 board,
14+
which supports external timing of the table mode, as detailed in `Appendix A of the Manual <https://www.novatechsales.com/PDF_files/dds9man.pdf>`_.
15+
16+
The clocking of the DDS9m through the table entries is non-trivial, however we have converged on an implementation which reliably updates the output on rising clock edges.
17+
Here we will detail the hardware involved, along with the software commands sent from the BLACS tab, and the resulting behaviour of the device.
18+
19+
Hardware
20+
~~~~~~~~
21+
22+
We have installed each DDS9m board in a box with a power supply, rf switches and rf amplifiers, creating what we refer to as a Supernova.
23+
Each channel of the DDS9m is fed into a switch, with one output port going to the amplifier,
24+
and the other going directly to the front panel for debugging (though this isn’t necessary, we don’t use this feature often).
25+
The direction of the output (amp. vs test) is determined by a toggle switch for each channel.
26+
The on/off state of each switch is then determined by a second toggle switch for each channel, which can switch between on, off and TTL modes.
27+
In TTL mode the state of the switch is determined by the high/low state of a TTL line connected to a BNC port on the front panel.
28+
We use these TTL lines to switch our rf during the experiment, since it saves on lines in the DDS9m’s table, and allows some control of the static channels.
29+
30+
To step through the table, we use a TTL clocking line, along with a “table enable” TTL line, to drive a tri-state driver chip,
31+
which in turn drives pins 10 and 14 of the DDS9m.
32+
The roles of the pins (for the rev. 1.3 boards and later) when in table mode, with hardware output enabled, are as follows:
33+
falling edges on pin 10 cause the next table entry to be loaded into the buffer, and rising edges on pin 14 cause the values in the buffer to be output.
34+
Since pin 14 is usually an output when I e hardware output has not been enabled,
35+
it should not be directly connected to pin 10, as this interferes with operation during manual mode (and possibly programming of the table?).
36+
For this same reason, you should not hold pin 14 high or low when not in hardware table mode, hence the use of a tri-state buffer.
37+
38+
We use an M74HC125B1R quad tri-state driver in the following configuration:
39+
40+
.. image:: /img/NT_DDS9m_schemeit-project.png
41+
42+
The clock line used to step through the table is sent to two channels of the buffer, which are connected to pins 10 and 14 of the DDS9m.
43+
Our table enable line passes through another channel of the buffer and has its output inverted by a transistor before feeding the disable lines of the other channels of the buffer.
44+
The result is that when the enable line is low, the buffer is disabled,
45+
meaning that the DDS9m pins see a high impedance, and importantly, are isolated from each other since they are on their own channels.
46+
When the enable pin is high, the buffer is enabled, and the signal from the clock line is sent to both pins.
47+
48+
Since the one clock line feeds both pins, when it goes high the output is updated, and when it goes low the next value is loaded into the buffer in preparation for the next clock tick.
49+
50+
.. note::
51+
Alternate circuits that do not involve tri-state buffering are described in the `mailing list <https://groups.google.com/g/labscriptsuite/c/Bf4UJMgmky0/m/xI0-q5x7AAAJ>`_.
52+
53+
Software implementation
54+
~~~~~~~~~~~~~~~~~~~~~~~
55+
56+
Manual/static mode
57+
------------------
58+
59+
When the Novatech BLACS tab is in static mode, the device operates in “automatic update” mode, having had the I a command called.
60+
When front panel values are changed, the appropriate Fn, Vn, or Pn command is sent, and the output updates without the need for any extra hardware trigger.
61+
62+
Table/buffered mode
63+
-------------------
64+
65+
When the Novatech BLACS tab transitions to buffered mode, it executes commands in a very specific order.
66+
Firstly, the “static” channels (2 & 3) are programmed using the same method as manual mode, then the values for the buffered channels (0 & 1) are programmed in.
67+
Since it takes a considerable amount of time to program a full table over the slow RS232 connection, we have implemented “smart programming”,
68+
where the table to be programmed is compared with the last table programmed into the device.
69+
Only the lines which have changed are reprogrammed, overwriting those values in the DDS9m’s table, but keeping all other previous values as they are.
70+
If you suspect that your table has become corrupt you can always force a “fresh program” where BLACS‘ “smart cache” is cleared and the whole table is programmed.
71+
72+
Once the table has been written, we sent the mt command to the board, which places it in table mode.
73+
Since we are still in I a auto update mode at this point, the first entry of the table is not only loaded into the buffer, but output too.
74+
At this point, all channels on the board are outputting the instruction set at their initial output time for the experiment to be run.
75+
We now send the I e command to switch to hardware updating, and wait for the experiment to begin.
76+
77+
As the experiment starts, the table enable line must be set to go high at the board’s initial output time, and the clocking line will go high too.
78+
This initial rising edge will do nothing, since the device is already outputting the values in its buffer.
79+
The first falling edge will then load the second line of the table into the buffer, ready for the second rising edge to trigger the output of the second value, and so on.
80+
81+
On transition to manual, at the end of the experiment, m 0 is sent to put the board back into manual mode, and I a is sent to turn automatic updating of the outputs again.
82+
The last values of the experiment are then programmed in via the normal manual update mode to keep the front panel consistent with the output.
83+
784
Detailed Documentation
885
~~~~~~~~~~~~~~~~~~~~~~
986

16.6 KB
Loading

0 commit comments

Comments
 (0)