From b128ad0055ef2c9b9ca156ebd8278b2ce51aaf05 Mon Sep 17 00:00:00 2001 From: Egor Savkin Date: Tue, 7 Feb 2023 17:08:04 +0800 Subject: [PATCH] Add instruction for SMA/BNC TTLs Signed-off-by: Egor Savkin --- README.md | 2 +- src/SUMMARY.md | 1 + src/hw/bnc_sma_ttl.md | 58 +++++++++++++++++++++++++++++++++++ src/hw/hardware.md | 5 ++- src/hw/mirny.md | 2 ++ src/hw/phaser_upconverter.md | 17 +++++----- src/hw/suservo.md | 5 ++- src/img/dio_ttl_switches.jpg | Bin 0 -> 14112 bytes 8 files changed, 80 insertions(+), 10 deletions(-) create mode 100644 src/hw/bnc_sma_ttl.md create mode 100644 src/img/dio_ttl_switches.jpg diff --git a/README.md b/README.md index d6dac3c..d2bad8c 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Tips for adding hardware instructions: (you can use `convert -quality 80% -resize x ` for optimizing) 3. Add link to the new chapter to the `src/SUMMARY.md` 4. Do not forget to tell about all hidden/non-obvious obstacles and pitfalls -5. Add testing steps, even if the "obvious" ones +5. Add testing steps, even the "obvious" ones 6. Add JSON sample if needed 7. Add hardware setup (e.g. pins, switches) steps if needed 8. View changed and added pages with `mdbook build` (see building instructions above) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index c057a0d..08511ae 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -5,3 +5,4 @@ - [Sinara 4624 AWG Phaser (Upconverter)](./hw/phaser_upconverter.md) - [Sinara 4456 synthesizer Mirny](./hw/mirny.md) - [SUServo (Sampler + Urukul)](./hw/suservo.md) + - [Sinara 2118 BNC-TTL / 2128 SMA-TTL](./hw/bnc_sma_ttl.md) diff --git a/src/hw/bnc_sma_ttl.md b/src/hw/bnc_sma_ttl.md new file mode 100644 index 0000000..2252259 --- /dev/null +++ b/src/hw/bnc_sma_ttl.md @@ -0,0 +1,58 @@ +# Sinara 2118 BNC-TTL / 2128 SMA-TTL + +* [Datasheet](https://m-labs.hk/docs/sinara-datasheets/2118-2128.pdf) +* [Wiki DIO BNC](https://github.com/sinara-hw/DIO_BNC/wiki) +* [Wiki DIO SMA](https://github.com/sinara-hw/DIO_SMA/wiki) + +## JSON + +```json +{ + "type": "dio", + "board": "DIO_BNC", // or "DIO_SMA" + "hw_rev": "vX.Y", // optional + "ports": [], + "edge_counter": , + "bank_direction_low": "input", + "bank_direction_high": "output" +} +``` + +## Setup + +Switch the direction switches (shown on the picture below) according to customer requests. +Remember, that you can only switch directions in groups of four. + +![](../img/dio_ttl_switches.jpg) + +## Test + +### Output + +```text +*** Testing TTL outputs. +Outputs are tested in groups of 4. Touch each TTL connector +with the oscilloscope probe tip, and check that the number of +pulses corresponds to its number in the group. +Press ENTER when done. +Testing TTL outputs: ttl0, ttl1, ttl2, ttl3. +``` + +1. Touch each TTL connector with the oscilloscope probe tip +2. Adjust time- and voltage- scale and trigger threshold so that you clearly see square pulse +3. Check that first TTL connector outputs 1 pulse, second - 2... fourth - 4 pulses +4. Repeat 1-3 for each group of TTL connectors + +### Input + +```text +*** Testing TTL inputs. +TTL device to use as stimulus (default: ttl4): ttl4 +Connect ttl4 to ttl0. Press ENTER when done. +... +``` + +1. Mount a wire with respective connector to the chosen TTL output (any should work, choose most convenient one) +2. Connect the end of the wire to the TTL input requested by the `artiq_sinara_test` (you may use fast connector for SMA) +3. Press ENTER and check that `artiq_sinara_test` prints `PASSED` +4. Repeat 2-3 for every connector diff --git a/src/hw/hardware.md b/src/hw/hardware.md index 49fd795..5094709 100644 --- a/src/hw/hardware.md +++ b/src/hw/hardware.md @@ -1,4 +1,7 @@ # Hardware In this section you will find instructions on testing the hardware. -If you didn't find one for your hardware, feel free to compose and add your instruction. \ No newline at end of file +If you didn't find one for your hardware, feel free to compose and add your instruction. + +Useful links: +* [Sinara Wiki](https://github.com/sinara-hw/meta/wiki) \ No newline at end of file diff --git a/src/hw/mirny.md b/src/hw/mirny.md index 3fc3c7e..38ec3f2 100644 --- a/src/hw/mirny.md +++ b/src/hw/mirny.md @@ -1,5 +1,7 @@ # Sinara 4456 synthesizer Mirny +[Wiki](https://github.com/sinara-hw/mirny/wiki) + ## JSON ```json diff --git a/src/hw/phaser_upconverter.md b/src/hw/phaser_upconverter.md index 6f13634..cf93999 100644 --- a/src/hw/phaser_upconverter.md +++ b/src/hw/phaser_upconverter.md @@ -1,30 +1,33 @@ # Sinara 4624 AWG Phaser (Upconverter) -## JSON +[Wiki](https://github.com/sinara-hw/Phaser/wiki) + +## JSON ```json { - "type": "phaser", - "hw_rev": "v1.1", // optional - "ports": [] + "type": "phaser", + "hw_rev": "vX.Y", // optional + "ports": [] } ``` ## Testing +After running `artiq_sinara_test`: + ```text *** Testing Phaser DACs and 6 USER LEDs. Frequencies: phaser0 10+0 10+1 10+2 10+3 10+4 MHz ``` -After running `artiq_sinara_test`: - 1. Install gqrx `nix-shell -p gqrx` 2. Connect bladeRF via USB cable only 3. Run gqrx and choose `BladeRF #...` 4. Input rate 30000000, other settings are default -5. When gqrx loaded, start DSP processing with frequency near 2.875 GHz + frequencies from `artiq_sinara_test` in `Receiver Options` +5. When gqrx loaded, start DSP processing with frequency near 2.875 GHz + frequencies from `artiq_sinara_test` + in `Receiver Options` 6. Connect the probe through attenuator to the Phaser's ports 7. You should see 5 tones on `artiq_sinara_test`'s frequencies, like on the picture below diff --git a/src/hw/suservo.md b/src/hw/suservo.md index 0030017..1a626d1 100644 --- a/src/hw/suservo.md +++ b/src/hw/suservo.md @@ -21,6 +21,8 @@ On bottoms of each Urukul, switch first pins 1 and 2 to `ON`, as on the picture: ## Testing +After running `artiq_sinara_test`: + ```text *** Testing SUServos. Initializing modules... @@ -49,7 +51,8 @@ Verify frequency and power behavior. 1. Connect oscilloscope to the `urukul0` port and configure with time and voltage scale and trigger threshold so that you'll see sine wave, like on the picture: ![](../img/urukul_suservo_output_without_battery.jpg) 2. Verify amplitude and frequency -3. Apply 1.5V (connect the AA-battery) to the `sampler0` port, as on the picture: ![](../img/urukul_sampler_susevo_connections.jpg) +3. Apply 1.5V (connect the AA-battery) to the `sampler0` port, as on the + picture: ![](../img/urukul_sampler_susevo_connections.jpg) 4. You should see significant amplitude decrease, as in the picture: ![](../img/urukul_suservo_output_with_battery.jpg) 5. Verify amplitude difference, and the frequency to be unchanged 6. Repeat steps 1-5 for every available channel. diff --git a/src/img/dio_ttl_switches.jpg b/src/img/dio_ttl_switches.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e23f36b3e4e4a001df7fa62426d2b569ea32d5f0 GIT binary patch literal 14112 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 s999Sah`w~*u6&P#`-Y|Z-|GB*c*Ch