From 46278bd224f97762030bbc00cdde0b412e1f8b64 Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 25 Feb 2023 18:44:40 -0600 Subject: [PATCH] A Compiled version of Will's work on docs.amdc.dev This is a current compilation that can be merged with the main branch on the Severson github (2/25/2023). --- .../knob-encoder/images/PCB_3D_Top.png | Bin 0 -> 68869 bytes .../knob-encoder/images/amdc-Knob_lpf.svg | 227 ++++++++++++++++++ source/accessories/knob-encoder/index.md | 124 ++++++++++ .../building-and-running-firmware.md | 28 +++ .../user-guide/logging/index.md | 2 +- source/index.rst | 1 + 6 files changed, 381 insertions(+), 1 deletion(-) create mode 100644 source/accessories/knob-encoder/images/PCB_3D_Top.png create mode 100644 source/accessories/knob-encoder/images/amdc-Knob_lpf.svg create mode 100644 source/accessories/knob-encoder/index.md diff --git a/source/accessories/knob-encoder/images/PCB_3D_Top.png b/source/accessories/knob-encoder/images/PCB_3D_Top.png new file mode 100644 index 0000000000000000000000000000000000000000..e6cc9b2d01b49abba4daf954b3c64761779d8b2c GIT binary patch literal 68869 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�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 + + + + + + + + + + V + out + + + + 10kΩ + + + (from op amp) + + + + + 0.1μF + + + + + + ANLG_OUT + + + (to BNC) + + + + + + + + + + + + + + + + diff --git a/source/accessories/knob-encoder/index.md b/source/accessories/knob-encoder/index.md new file mode 100644 index 00000000..3e982057 --- /dev/null +++ b/source/accessories/knob-encoder/index.md @@ -0,0 +1,124 @@ + + +# Knob Board[](https://docs.amdc.dev/accessories/Knob/index.html#Knob-board "Permalink to this headline") + +This document describes the design considerations and implementation details for the AMDC Knob (Encoder) expansion board. A block diagram is presented to explain each component in detail. + +![](images/PCB_3D_Top.png) + +## Relevant Hardware Versions[](https://docs.amdc.dev/accessories/Knob/index.html#relevant-hardware-versions "Permalink to this headline") + +- `AMDC REV D` with `Knob Board REV A` +- `AMDC REV E` with `Knob Board REV A` + +## How To Use[](https://docs.amdc.dev/accessories/Knob/index.html#how-to-use "Permalink to this headline") +After the AMDC is flashing sequentially and properly working in debug mode ([See this link for set up](https://docs.amdc.dev/firmware/xilinx-tools/building-and-running-firmware.html)) attach a DB9 connector between the AMDC GPIO pins and the Knob Board. + +To get discrete values from the encoder use the following commands in the Xilinx IDE: +- `hw enc steps` - Read encoder steps from power-up +- `hw enc pos` - Read encoder position +- `hw enc init` - Turn on blue LED until Z pulse found **(Not Currently Functional)** +- `hw enc zval` - Read switch presses from power-up **(Not Currently Functional)** + +## In Progress And Future Work[](https://docs.amdc.dev/accessories/Knob/index.html#in-progress "Permalink to this headline") + +The Knob Board does not currently support the Encoder's switch feature. An additional register must be allocated in the code and bitstream for this to work. + +The Knob Board may work with a DB15 connector, however, this will also require additional work to implement. + +**Proof of Concept Using LEDs: (Not Optimized)** +Copy the code found [here](https://github.com/Severson-Group/AMDC-Firmware/compare/v1.0.x...encoder-led-display) to the corresponding locations in your project. Note that the `hw/amdc_revd.bd` file does not need to be copied for the `hw enc steps` and `hw enc pos` commands to work, however, this code is set up to also test the `hw enc zval` command which may cause issues. Additionally this code was set up using a `AMDC REV D` + +## Design Requirements and Considerations[](https://docs.amdc.dev/accessories/Knob/index.html#design-requirements-and-considerations "Permalink to this headline") + +The AMDC Knob expansion board was designed with the following requirements: + +1. Allow for an additional input to the AMDC + +2. Works with DB-15 and DB-9 connectors + +3. Designed to run off of 5V power supplied from the AMDC + +4. Minimize noise with debouncing and a Signal Differentiator + +### AMDC Connector +The AMDC Knob expansion board interfaces with the AMDC via either the DB-15 (GPIO) connector or the DB-9 (encoder) connector. The pinouts of the two connectors differ from one another as shown in the tables below. + + +### DB-15 Connector + | Pin Number | Power Stack | + | ---------- | ------------- | + | 1 | `5V DB-15` | + | 2 | `Encoder 1A` | + | 3 | `Encoder ~1A` | + | 4 | `Encoder 1B` | + | 5 | `Encoder ~1B` | + | 6 | No Connect | + | 7 | `Encoder 1Z` | + | 8 | `Encoder ~1Z` | + | 9 | No Connect | + | 10 | No Connect | + | 11 | `GND` | + | 12 | No Connect | + | 13 | No Connect | + | 14 | No Connect | + | 15 | No Connect | + +### DB-9 Connector + | Pin Number | Power Stack | + | ---------- | ------------- | + | 1 | `Encoder 1A` | + | 2 | `Encoder ~1A` | + | 3 | `Encoder 1B` | + | 4 | `Encoder ~1B` | + | 5 | `Encoder 1Z ` | + | 6 | `Encoder ~1Z` | + | 7 | `5V DB-9` | + | 8 | `GND` | + | 9 | `GND` | + + Both the DB-15 and DB-9 connectors can be connected to the Knob expansion board, however, the single jumper on the Knob board ensures power will only be pulled from one of the connectors. + + ## PCB Layout[](https://docs.amdc.dev/accessories/Knob/index.html#pcb-layout "Permalink to this headline") + +Two polygon pours were used to reduce the number of required traces. The top pour is the +5V net, and the bottom pour is the GND net. All components and most traces are also located on the top of the board to simplify the fabrication of the board. Additional PCB properties are outlined in the table below. + +| Property | Value | +| ----------------------- | --------------- | +| Size | 70mm x 80mm | +| Number of Layers | 2 | +| Thickness | 1.6mm | +| Min Track/Spacing | 6/6mil | +| Min Hole Size | 0.3mm | +| Surface Finish | HASL (Tin-Lead) | +| Silkscreen | Top Only | +| Unique Part Count | 9 | +| Unique SMD Part Count | 5 | +| Total Parts | 17 | +| Through-Hole Count | 53 | +| Cost per Board (Unit 1) | $8.64 | +| Cost per Board (Unit 10)| $7.17 | + +### LPFs[](https://docs.amdc.dev/accessories/Knob/index.html#lpfs "Permalink to this headline") + +Low pass filters such as the one shown below are used throughout the Knob expansion board. These low pass filters are used to prevent debouncing while still allowing for signals to be sent at a rate of 160 times per second. + +![](images/amdc-Knob_lpf.svg) + + +The cutoff frequency is achieved based on the resistance and capacitance values of the filter: + + + +_f_c = 1 / (2*_π*R_*C_) + + + +The LPF’s cutoff frequency is set to 160Hz (a resistor with _R_ = 10kΩ and a capacitor with _C_ = 0.1μF achieves the desired frequency). + + ## Datasheets[](https://docs.amdc.dev/accessories/Knob/index.html#datasheets "Permalink to this headline") + +- Encoder: [`PEC12R-4220F-S0024-ND`](https://www.bourns.com/docs/Product-Datasheets/PEC12R.pdf) + +- Signal Differentiator: [`AM26C31CNS`](https://www.ti.com/lit/ds/symlink/am26c31.pdf?HQS=dis-dk-null-digikeymode-dsf-pf-null-wwe&ts=1652390392703&ref_url=https%253A%252F%252Fwww.ti.com%252Fgeneral%252Fdocs%252Fsuppproductinfo.tsp%253FdistId%253D10%2526gotoUrl%253Dhttps%253A%252F%252Fwww.ti.com%252Flit%252Fgpn%252Fam26c31) + diff --git a/source/firmware/xilinx-tools/building-and-running-firmware.md b/source/firmware/xilinx-tools/building-and-running-firmware.md index 9b1f00fc..b5027fa4 100644 --- a/source/firmware/xilinx-tools/building-and-running-firmware.md +++ b/source/firmware/xilinx-tools/building-and-running-firmware.md @@ -222,6 +222,18 @@ Fix another strange SDK issue: 16. Change directory to `/amdc_bsp_cpu1/ps7_cortexa9_1/include` 17. `OK` +Fix another strange SDK issue: + +18. `Edit...` on `/app_cpu1/src` +19. Change directory to `/app_cpu1` +20. `OK` + +Fix another strange SDK issue: + +21. `Edit...` on `/app_cpu1/src/common` +22. Change directory to `/app_cpu1/common` +23. `OK` + Add library path for BSP: 18. Change to `Library Paths` tab @@ -344,3 +356,19 @@ If you are getting compilation errors in the SDK (especially during the linking NOTE: Pushing the `RESET` button on PCB **is NOT** exactly the same as doing a full power cycle of board. The `RESET` button performs a different type of reset (it keeps around debug configurations, etc). During development, you may need to perform a full power cycle, while other times, a simple `RESET` button push will work. Xilinx tools also have **many** quirks. Good luck getting everything working! + +## Copying Xilinx Files/Projects + +When copying files from one Xilinx project to another, they may not show up in the Project Explorer after importing via File -> Open Projects from File System. Solution 1 relies on you to delete a `.project` file and Xilinx to regenerate it. Solution 2 seems to overwrite `.project` files. + +#### Solution 1: + +This can be fixed by Navigating to the folder you want to import and deleting the `.project` file found within that folder. Now it should import via File -> Open Projects from File System. + +#### Solution 2: + +Another solution is to start in Vivado. After getting a successful block diagram and generating a bitstream, select File -> Export -> Export Hardware, Leave 'Include Bitstream' unchecked, and select the folder that contains the code you want to modify (If you are following these [instructions](https://docs.amdc.dev/firmware/xilinx-tools/building-and-running-firmware.html#fix-common-code-compilation), `my-AMDC-private-C-code` is the folder that you should select). + +Click OK, and select File -> Launch SDK. Your Exported Location should be the same folder as before (`my-AMDC-private-C-code`), and your workspace should be the `SDK` folder found inside `AMDC-Firmware`. + +Click OK and close the welcome tab in Xilinx when it loads. There should only be `amdc_rev*_wrapper_hw_platform_0` in your Project Explorer. Now you can import files from the folders you selected earlier (`my-AMDC-private-C-code` and `SDK`) via File -> Open Projects from File System. \ No newline at end of file diff --git a/source/getting-started/user-guide/logging/index.md b/source/getting-started/user-guide/logging/index.md index 841b063c..eb6fdda3 100644 --- a/source/getting-started/user-guide/logging/index.md +++ b/source/getting-started/user-guide/logging/index.md @@ -174,7 +174,7 @@ Note that in the text that follows, `REPO_DIR` is an alias for the file path to ### 1. Import needed modules: -To use logging in Python, you must `import` the `AMDC` and `AMDC_Logger` modules from the `scipts` folder of the AMDC-Firmware. +To use logging in Python, you must `import` the `AMDC` and `AMDC_Logger` modules from the `scripts` folder of the AMDC-Firmware. There are two main classes of interest: 1. `AMDC`: class that is found in the `AMDC` module. Responsible for communicating with the AMDC over the physical link diff --git a/source/index.rst b/source/index.rst index 040a3ed9..036cfd2e 100644 --- a/source/index.rst +++ b/source/index.rst @@ -48,6 +48,7 @@ AMDC Platform Documentation accessories/uinverter/index DAC accessories/test-board/index + accessories/knob-encoder/index Welcome to the AMDC Platform documentation.