diff --git a/.github/workflows/docs-publish.yaml b/.github/workflows/docs-publish.yaml index 3d4f63a..ef16bb2 100644 --- a/.github/workflows/docs-publish.yaml +++ b/.github/workflows/docs-publish.yaml @@ -1,3 +1,17 @@ +# Copyright © 2024 Vangelis Koukis +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + name: docs-publish on: diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Makefile b/Makefile index 1ead8f1..00c1383 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,18 @@ # Top-level Makefile for Circuit Explorers +# +# Copyright © 2024 Vangelis Koukis +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Quick-n-dirty way to determine a version for our project: # Use "git describe" to derive a version string based on annotated tags. diff --git a/README.md b/README.md index 65b62f6..81456cf 100644 --- a/README.md +++ b/README.md @@ -1,210 +1,54 @@ -# Circuit Explorers - -A hands-on tutorial on exploring, designing, simulating, building, testing -digital circuits. - -*Goal:* Build a full-featured, programmable 8-bit computer using only chips -in the [74LS family of integrated circuits](https://en.wikipedia.org/wiki/List_of_7400-series_integrated_circuits). - - -## Adventure 0: Install Digital, run tutorial - -*Goal:* Install [Digital](https://github.com/hneemann/Digital). -Run its tutorial and simulate a logic circuit. - -1. Download and install [Digital](https://github.com/hneemann/Digital). - 1. Install Temurin for Windows x64 from https://adoptium.net/ - 1. Download Digital from GitHub - 1. Extract in a local directory, e.g., `C:\WinPRG\Digital` - 1. Double-click `Digital.jar` to run. -1. Go through the Digital tutorial. If you want to repeat it in the future, - it is available at View --> Start tutorial. -1. Save your work as `adv-0.dig`. - - -## Adventure 1: Logic gates [NOT, AND, OR, XOR, NAND, NOR, XNOR] - -*Goal:* Understand all basic logic gates and build a logic circuit which uses -all of them. - - -### Adventure 1A: Logic gates: Design and simulate circuit - -*Goal:* Build a circuit will all basic logic gates: NOT, AND, OR, XOR, NAND, -NOR, XNOR in Digital. - -1. Create a new circuit in Digital. -1. Insert two inputs. -1. Label them `A` and `B`: To label an input right-click on it, and edit the - `Label` text entry. -1. Insert two NOT gates. -1. Wire input `A` to the first NOT gate, and input `B` to the second NOT gate. - Note a NOT gate accepts a single input. -1. Insert each one of the remaining logic gates, 6 in total. -1. Insert an LED output for each gate, 8 in total. -1. Wire input `A` to the first input of each 2-input gate (AND, OR, XOR, NAND, - NOR, XNOR). -1. If you make a mistake while adding wires, hold down Ctrl and click the - offending wire, then *drag* it to its new location. Similarly, Ctrl-click a - wire and drag it to the trashcan icon in the toolbar, then click the - trashcan icon, to delete it. -1. Wire input `B` to the second input of each 2-input gate. -1. Label each LED according to its role: `NOT_A`, `NOT_B`, `AND`, `OR`, `NAND`, - etc. -1. Simulate your circuit. How does each logic gate function? - If there are disconnected input pins ("floating" inputs), Digital will - complain with an error message similar to this: - ``` - Error creating the circuit. Nothing connected to input 'in_2' at component - 'XNOr'. Open inputs are not allowed. - ``` - If this happens, make sure you have connected every input of every gate to - either input `A` or `B` and try again. If things still fail, *remove* some - of the logic gates to simplify your circuit, until you can get it to work, - then add them back gradually. -1. Notice how some wires are light green, some others are dark green, depending - on whether their current state is `1` or `0`, respectively. -1. Write down the [truth table](https://www.geeksforgeeks.org/logic-gates/) for - each one of the gates, according to your testing. -1. Navigate to Analysis --> Analysis in the menu. See Digital produce the truth - table for each one of your outputs automatically. -1. Save your work as `adv-1a.dig`. - - -### Adventure 1B: Logic gates: Simulate with 74LS chips - -*Goal:* Build a circuit similar to the one in Adventure 1A, but use 74xx chips -in Digital. - -1. Have a look at the list of logic gates in the 74LS family - ([Wikipedia](https://en.wikipedia.org/wiki/List_of_7400-series_integrated_circuits#Logic_gates)) - of integrated circuits ("chips", "ICs"). We care about the "Normal inputs / - push-pull outputs" category. -1. See we will be using chips 74LS04, 74LS08, 74LS32, 74LS86, 74LS00, 74LS02, - 74LS7266. How many gates and of which kind does each IC implement? -1. Find the documentation for Digital as a PDF file in the `docu/` directory, - e.g., `docu/Documentation_en.pdf`. Section `E Library` contains a full list - of all supported 74xx ICs. -1. Create a new circuit in Digital. -1. Navigate to Components --> Library --> DIL chips --> 74xx --> basic. -1. Insert one of each of the 7404, 7408, 7432, 7486, 7400, 7402, 747266 chips. - Arrange them one below the other, in two or three columns, any way you like. -1. Use the scroll wheel of your mouse to zoom in and out of the circuit, hold - down the right mouse button and drag the circuit, to move it around. -1. Notice the pinout for each chip. There are pins for each input and output, - as well as pins to connect to power [VCC] and to the ground [GND]. -1. Insert two inputs, label them `A` and `B`. -1. Wire the inputs to create a circuit equivalent to the one in Adventure 1A, - this time using 74xx chips instead of the basic LED gates. For each chip - implementing 2-input gates, wire input `A` to input `1A` of each chip, and - input `B` to input `1B` of each chip. Notice chip 7404 implements NOT gates - which only accept one input, and the pin layout differs slightly between - different chips, so you need to be paying attention. -1. Insert an LED output per gate you have used, 8 total. Label them according - to their role, as in Adventure 1A. Wire the output of each logic gate you - have used to the right LED. When adding wires, pay attention to not touch - other - pins on the chip. It is OK if the wires go over the chip itself, but they - should not touch other pins, because you will find it difficult to wire - these pins later on. -1. Navigate to Components --> Wires --> Supply voltage and add a power source - next to each chip. Label it `VCC`. Connect the VCC pin of each chip to VCC. -1. Navigate to Components --> Wires --> Ground and add a ground terminal next - to each chip. Label it `GND`. Connect the GND pin of each chip to GND. -1. Notice each chip implements more than one logic gates, but you only need to - use one input of each chip, *except* the 7404 chip, where you use two - inputs. Connect every single unused input of every chip to VCC [a logical - `1`] or to GND [a logical `0`]. It does not matter, as long as every single - input is connected to either VCC or GND. -1. Simulate your circuit. How does each logic gate function? - If there are disconnected input pins ("floating" inputs), Digital will - complain with an error message similar to this: - ``` - Error creating the circuit. No output connected to a wire ([In_2; NAnd]). - The state of the wire is undefined. Ocured in file 7400.dig. - ``` - If this happens, make sure you have connected every single input to either - VCC or GND, and try again. See [this issue in Digital](https://github.com/hneemann/Digital/issues/36) - for technical details. -1. Compare the truth table of your new circuit to the truth table of Adventure - 1A. They should be identical. -1. Save your work as `adv-1b.dig`. - - -### Adventure 1C: Logic gates: Build physical circuit with 74LS chips - -*Goal:* Use a breadboard and 74LS chips to build an actual, real-world version of -the circuit in Adventure 1B. - -*Tools:* Here is a list of the tools you will need to buy. You will re-use -these tools throughout the tutorial: - -| Quantity | Name | Description | Links | -| :------ | :----------------------- | :------------------------------------ | :---------------------------- | -| 1 | needle nose pliers | | [Fanos](https://www.fanos.gr/%CE%B5%CF%81%CE%B3%CE%B1%CE%BB%CE%B5%CE%AF%CE%B1/%CE%BC%CF%85%CF%84%CE%BF%CF%84%CF%83%CE%B9%CE%BC%CF%80%CE%B9%CE%B4%CE%B1-%CF%80%CE%B5%CE%BD%CF%83%CE%B5%CF%82/%CE%BC%CF%85%CF%84%CE%BF%CF%84%CF%83%CE%AF%CE%BC%CF%80%CE%B9%CE%B4%CE%BF-%CE%BC%CE%B1%CE%BA%CF%81%CF%8D-pn2007-piergiacomi.html) | -| 1 | wire cutter | | [Fanos](https://www.fanos.gr/%CE%B5%CF%81%CE%B3%CE%B1%CE%BB%CE%B5%CE%AF%CE%B1/%CE%BA%CF%8C%CF%86%CF%84%CE%B5%CF%82/%CE%BA%CF%8C%CF%86%CF%84%CE%B7%CF%82-%CF%80%CE%BB%CE%AC%CE%B3%CE%B9%CE%BF%CF%82-tre03nb-piergiacomi.html) | -| 1 | wire stripper | | [Fanos](https://www.fanos.gr/%CE%B5%CF%81%CE%B3%CE%B1%CE%BB%CE%B5%CE%AF%CE%B1/%CE%B1%CF%80%CE%BF%CE%B3%CF%85%CE%BC%CE%BD%CF%89%CF%84%CE%AD%CF%82/%CE%B1%CF%80%CE%BF%CE%B3%CF%85%CE%BC%CE%BD%CF%89%CF%84%CE%AE%CF%82-yy-78318.html) | -| 1 | multimeter | | [Fanos](https://www.fanos.gr/%CE%B5%CF%81%CE%B3%CE%B1%CE%BB%CE%B5%CE%AF%CE%B1/%CF%8C%CF%81%CE%B3%CE%B1%CE%BD%CE%B1-%CE%BC%CE%AD%CF%84%CF%81%CE%B7%CF%83%CE%B7%CF%82/%CF%80%CE%BF%CE%BB%CF%8D%CE%BC%CE%B5%CF%84%CF%81%CE%B1/%CF%88%CE%B7%CF%86%CE%B9%CE%B1%CE%BA%CE%AC-dvm/%CF%88%CE%B7%CF%86%CE%B9%CE%B1%CE%BA%CF%8C-%CF%80%CE%BF%CE%BB%CF%8D%CE%BC%CE%B5%CF%84%CF%81%CE%BF-uni-t-ut39c.html) | -| 1 | small organizer box | | [Fanos](https://www.fanos.gr/%CE%BA%CE%BF%CF%85%CF%84%CE%B9%CE%AC-%CE%B1%CF%80%CE%BF%CE%B8%CE%AE%CE%BA%CE%B5%CF%85%CF%83%CE%B7%CF%82-%CE%BA%CE%B1%CE%B9-%CE%BA%CE%B1%CF%84%CE%B1%CF%83%CE%BA%CE%B5%CF%85%CF%8E%CE%BD/%CE%BA%CE%BF%CF%85%CF%84%CE%B9%CE%AC-%CE%B1%CF%80%CE%BF%CE%B8%CE%AE%CE%BA%CE%B5%CF%85%CF%83%CE%B7%CF%82/%CE%BA%CE%BF%CF%85%CF%84%CE%B9-%CE%B1%CF%80%CE%BF%CE%B8%CE%B7%CE%BA%CE%B5%CF%85%CF%83%CE%B7%CF%83-76x61x21-903133s-t-proskit.html) | - -*Components:* Here is a list of the components you will need to buy: -| Quantity | Name | Description | Links | -| :------ | :----------------------- | :------------------------------------ | :---------------------------- | -| 1 | 5V power supply | E.g., any USB charger | | -| 1 | breadboard | Breadboard | [Fanos](https://www.fanos.gr/en-gb/electronic-components/boards-testing-boards/solderless-breadboard-mb-102.html) | -| 1 | 65-piece jumper wire kit | Many small jumper wires to use with the breadboard | [Fanos](https://www.fanos.gr/en-gb/electronic-components/jumpers-pinheaders/65pcs-flexible-breadboard-jumper-wires.html) | -| 1 | 74LS04 | Hex inverter | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls04.html) | -| 1 | 74LS08 | Quad 2-input AND gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls08.html) | -| 1 | 74LS32 | Quad 2-input OR gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls32.html) | -| 1 | 74LS00 | Quad 2-input NAND gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls00.html) | -| 1 | 74LS02 | Quad 2-input NOR gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls02.html) | -| 1 | 74LS86 | Quad 2-input XOR gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls86.html) | -| 1 | 74LS7266 | Quad 2-input XNOR gate | Not sure it is actually available | -| 2 | SPDT switch | Single Pole Double Throw Switch | [Fanos](https://www.fanos.gr/en-gb/switches/slide-switch/slide-switch-on-on-spdt-12d01.html) | -| 3 | LED, red | LED, red 2-2.5V, 20mA | [Fanos](https://www.fanos.gr/%CF%80%CE%B7%CE%B3%CE%AD%CF%82-%CF%86%CF%89%CF%84%CE%B9%CF%83%CE%BC%CE%BF%CF%8D/led/10mm/led-10mm-%CE%BA%CF%8C%CE%BA%CE%BA%CE%B9%CE%BD%CE%BF%CF%85-%CF%87%CF%81%CF%8E%CE%BC%CE%B1%CF%84%CE%BF%CF%82-l813id-40-150mcd-html) | -| 3 | 120-150Ω resistors | Resistors, 1W | [Fanos](https://www.fanos.gr/%CE%B7%CE%BB%CE%B5%CE%BA%CF%84%CF%81%CE%BF%CE%BD%CE%B9%CE%BA%CE%B1-%CE%B5%CE%BE%CE%B1%CF%81%CF%84%CE%B7%CE%BC%CE%B1%CF%84%CE%B1/%CE%91%CE%BD%CF%84%CE%B9%CF%83%CF%84%CE%AC%CF%83%CE%B5%CE%B9%CF%82,%20antistaseis,%20%CE%B1%CE%BD%CF%84%CE%B9%CF%83%CF%84%CE%B1%CF%83%CE%B7,%20antistasi/%CE%B1%CE%BD%CF%84%CE%B9%CF%83%CF%84%CE%B1%CF%83%CE%B7-1W/%CE%B1%CE%BD%CF%84%CE%AF%CF%83%CF%84%CE%B1%CF%83%CE%B7-120-%CF%89-1w.html) | - -**TODO:** Revisit this list. 74LS is TTL and cannot drive output LEDs directly, -it can only source 1mA, LEDs need ~5-20mA. -See: -https://www.eevblog.com/forum/beginners/driving-leds-with-74ls-logic/ -> TTL is better at sinking current, so run the LEd's from the 5V rail with the logic low turning them on. Use 5mA as a current and most modern LED devices will be very bright at this current. Typically this means a 470R resistor per LED. -> A typical 74LS00 output pin can sink significant current to drive a standard LED. Just wire the cathode to the output pin through a suitably sized series resistor (calc for maybe 10 ma, plenty bright) to then to +5vcc. You just have design for circuit so that a LOW output is the active (lite) state. - -**WIP:** - - +[![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) +[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0) + + + +Welcome to **Circuit Explorers**, a hands-on tutorial on exploring, designing, +simulating, building, and testing digital circuits. + +🎯 **Goal:** To build a full-featured, programmable 8-bit computer using only +chips in the [74LS family of integrated circuits](https://en.wikipedia.org/wiki/List_of_7400-series_integrated_circuits). + +📈 **Journey:** Circuit Explorers aims to be an educational journey where you +start from zero knowledge of electronics to learn about analog and digital +circuits via a set of **Adventures**, and eventually build your every own +programmable CPU from scratch. + +Each adventure redirects you to curated documentation and video tutorials so +you can quickly understand the basic concepts, and encourages you to experiment +both by simulating circuits on your computer, and by building physical circuits +to test them yourself. + +This is the repository where development for the public +[Circuit Explorers website](https://vkoukis.github.io/circuit-explorers) happens. + + +## Development + +🚧 🚧 🚧 This is Work-in-Progress 🚧 🚧 🚧 + + +## Contact + +For all comments, bug reports, suggestions for improvements, please contact: + +* Vangelis Koukis <vkoukis@gmail.com> + +Looking forward hearing from you! + + +## License + +The documentation in this repository is licensed under the [Creative Commons +Attribution-ShareAlike 4.0 International +license](https://creativecommons.org/licenses/by-sa/4.0/). + +The code in this repository is licensed under the [Apache +2.0](https://www.apache.org/licenses/LICENSE-2.0) license. diff --git a/docs/LICENSE b/docs/LICENSE new file mode 100644 index 0000000..2d58298 --- /dev/null +++ b/docs/LICENSE @@ -0,0 +1,428 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/docs/adventures.md b/docs/adventures.md new file mode 100644 index 0000000..1d2a8f4 --- /dev/null +++ b/docs/adventures.md @@ -0,0 +1,210 @@ +# Circuit Explorers + +A hands-on tutorial on exploring, designing, simulating, building, and testing +digital circuits. + +*Goal:* Build a full-featured, programmable 8-bit computer using only chips +in the [74LS family of integrated circuits](https://en.wikipedia.org/wiki/List_of_7400-series_integrated_circuits). + + +## Adventure 0: Install Digital, run tutorial + +*Goal:* Install [Digital](https://github.com/hneemann/Digital). +Run its tutorial and simulate a logic circuit. + +1. Download and install [Digital](https://github.com/hneemann/Digital). + 1. Install Temurin for Windows x64 from https://adoptium.net/ + 1. Download Digital from GitHub + 1. Extract in a local directory, e.g., `C:\WinPRG\Digital` + 1. Double-click `Digital.jar` to run. +1. Go through the Digital tutorial. If you want to repeat it in the future, + it is available at View --> Start tutorial. +1. Save your work as `adv-0.dig`. + + +## Adventure 1: Logic gates [NOT, AND, OR, XOR, NAND, NOR, XNOR] + +*Goal:* Understand all basic logic gates and build a logic circuit which uses +all of them. + + +### Adventure 1A: Logic gates: Design and simulate circuit + +*Goal:* Build a circuit will all basic logic gates: NOT, AND, OR, XOR, NAND, +NOR, XNOR in Digital. + +1. Create a new circuit in Digital. +1. Insert two inputs. +1. Label them `A` and `B`: To label an input right-click on it, and edit the + `Label` text entry. +1. Insert two NOT gates. +1. Wire input `A` to the first NOT gate, and input `B` to the second NOT gate. + Note a NOT gate accepts a single input. +1. Insert each one of the remaining logic gates, 6 in total. +1. Insert an LED output for each gate, 8 in total. +1. Wire input `A` to the first input of each 2-input gate (AND, OR, XOR, NAND, + NOR, XNOR). +1. If you make a mistake while adding wires, hold down Ctrl and click the + offending wire, then *drag* it to its new location. Similarly, Ctrl-click a + wire and drag it to the trashcan icon in the toolbar, then click the + trashcan icon, to delete it. +1. Wire input `B` to the second input of each 2-input gate. +1. Label each LED according to its role: `NOT_A`, `NOT_B`, `AND`, `OR`, `NAND`, + etc. +1. Simulate your circuit. How does each logic gate function? + If there are disconnected input pins ("floating" inputs), Digital will + complain with an error message similar to this: + ``` + Error creating the circuit. Nothing connected to input 'in_2' at component + 'XNOr'. Open inputs are not allowed. + ``` + If this happens, make sure you have connected every input of every gate to + either input `A` or `B` and try again. If things still fail, *remove* some + of the logic gates to simplify your circuit, until you can get it to work, + then add them back gradually. +1. Notice how some wires are light green, some others are dark green, depending + on whether their current state is `1` or `0`, respectively. +1. Write down the [truth table](https://www.geeksforgeeks.org/logic-gates/) for + each one of the gates, according to your testing. +1. Navigate to Analysis --> Analysis in the menu. See Digital produce the truth + table for each one of your outputs automatically. +1. Save your work as `adv-1a.dig`. + + +### Adventure 1B: Logic gates: Simulate with 74LS chips + +*Goal:* Build a circuit similar to the one in Adventure 1A, but use 74xx chips +in Digital. + +1. Have a look at the list of logic gates in the 74LS family + ([Wikipedia](https://en.wikipedia.org/wiki/List_of_7400-series_integrated_circuits#Logic_gates)) + of integrated circuits ("chips", "ICs"). We care about the "Normal inputs / + push-pull outputs" category. +1. See we will be using chips 74LS04, 74LS08, 74LS32, 74LS86, 74LS00, 74LS02, + 74LS7266. How many gates and of which kind does each IC implement? +1. Find the documentation for Digital as a PDF file in the `docu/` directory, + e.g., `docu/Documentation_en.pdf`. Section `E Library` contains a full list + of all supported 74xx ICs. +1. Create a new circuit in Digital. +1. Navigate to Components --> Library --> DIL chips --> 74xx --> basic. +1. Insert one of each of the 7404, 7408, 7432, 7486, 7400, 7402, 747266 chips. + Arrange them one below the other, in two or three columns, any way you like. +1. Use the scroll wheel of your mouse to zoom in and out of the circuit, hold + down the right mouse button and drag the circuit, to move it around. +1. Notice the pinout for each chip. There are pins for each input and output, + as well as pins to connect to power [VCC] and to the ground [GND]. +1. Insert two inputs, label them `A` and `B`. +1. Wire the inputs to create a circuit equivalent to the one in Adventure 1A, + this time using 74xx chips instead of the basic LED gates. For each chip + implementing 2-input gates, wire input `A` to input `1A` of each chip, and + input `B` to input `1B` of each chip. Notice chip 7404 implements NOT gates + which only accept one input, and the pin layout differs slightly between + different chips, so you need to be paying attention. +1. Insert an LED output per gate you have used, 8 total. Label them according + to their role, as in Adventure 1A. Wire the output of each logic gate you + have used to the right LED. When adding wires, pay attention to not touch + other + pins on the chip. It is OK if the wires go over the chip itself, but they + should not touch other pins, because you will find it difficult to wire + these pins later on. +1. Navigate to Components --> Wires --> Supply voltage and add a power source + next to each chip. Label it `VCC`. Connect the VCC pin of each chip to VCC. +1. Navigate to Components --> Wires --> Ground and add a ground terminal next + to each chip. Label it `GND`. Connect the GND pin of each chip to GND. +1. Notice each chip implements more than one logic gates, but you only need to + use one input of each chip, *except* the 7404 chip, where you use two + inputs. Connect every single unused input of every chip to VCC [a logical + `1`] or to GND [a logical `0`]. It does not matter, as long as every single + input is connected to either VCC or GND. +1. Simulate your circuit. How does each logic gate function? + If there are disconnected input pins ("floating" inputs), Digital will + complain with an error message similar to this: + ``` + Error creating the circuit. No output connected to a wire ([In_2; NAnd]). + The state of the wire is undefined. Ocured in file 7400.dig. + ``` + If this happens, make sure you have connected every single input to either + VCC or GND, and try again. See [this issue in Digital](https://github.com/hneemann/Digital/issues/36) + for technical details. +1. Compare the truth table of your new circuit to the truth table of Adventure + 1A. They should be identical. +1. Save your work as `adv-1b.dig`. + + +### Adventure 1C: Logic gates: Build physical circuit with 74LS chips + +*Goal:* Use a breadboard and 74LS chips to build an actual, real-world version of +the circuit in Adventure 1B. + +*Tools:* Here is a list of the tools you will need to buy. You will re-use +these tools throughout the tutorial: + +| Quantity | Name | Description | Links | +| :------ | :----------------------- | :------------------------------------ | :---------------------------- | +| 1 | needle nose pliers | | [Fanos](https://www.fanos.gr/%CE%B5%CF%81%CE%B3%CE%B1%CE%BB%CE%B5%CE%AF%CE%B1/%CE%BC%CF%85%CF%84%CE%BF%CF%84%CF%83%CE%B9%CE%BC%CF%80%CE%B9%CE%B4%CE%B1-%CF%80%CE%B5%CE%BD%CF%83%CE%B5%CF%82/%CE%BC%CF%85%CF%84%CE%BF%CF%84%CF%83%CE%AF%CE%BC%CF%80%CE%B9%CE%B4%CE%BF-%CE%BC%CE%B1%CE%BA%CF%81%CF%8D-pn2007-piergiacomi.html) | +| 1 | wire cutter | | [Fanos](https://www.fanos.gr/%CE%B5%CF%81%CE%B3%CE%B1%CE%BB%CE%B5%CE%AF%CE%B1/%CE%BA%CF%8C%CF%86%CF%84%CE%B5%CF%82/%CE%BA%CF%8C%CF%86%CF%84%CE%B7%CF%82-%CF%80%CE%BB%CE%AC%CE%B3%CE%B9%CE%BF%CF%82-tre03nb-piergiacomi.html) | +| 1 | wire stripper | | [Fanos](https://www.fanos.gr/%CE%B5%CF%81%CE%B3%CE%B1%CE%BB%CE%B5%CE%AF%CE%B1/%CE%B1%CF%80%CE%BF%CE%B3%CF%85%CE%BC%CE%BD%CF%89%CF%84%CE%AD%CF%82/%CE%B1%CF%80%CE%BF%CE%B3%CF%85%CE%BC%CE%BD%CF%89%CF%84%CE%AE%CF%82-yy-78318.html) | +| 1 | multimeter | | [Fanos](https://www.fanos.gr/%CE%B5%CF%81%CE%B3%CE%B1%CE%BB%CE%B5%CE%AF%CE%B1/%CF%8C%CF%81%CE%B3%CE%B1%CE%BD%CE%B1-%CE%BC%CE%AD%CF%84%CF%81%CE%B7%CF%83%CE%B7%CF%82/%CF%80%CE%BF%CE%BB%CF%8D%CE%BC%CE%B5%CF%84%CF%81%CE%B1/%CF%88%CE%B7%CF%86%CE%B9%CE%B1%CE%BA%CE%AC-dvm/%CF%88%CE%B7%CF%86%CE%B9%CE%B1%CE%BA%CF%8C-%CF%80%CE%BF%CE%BB%CF%8D%CE%BC%CE%B5%CF%84%CF%81%CE%BF-uni-t-ut39c.html) | +| 1 | small organizer box | | [Fanos](https://www.fanos.gr/%CE%BA%CE%BF%CF%85%CF%84%CE%B9%CE%AC-%CE%B1%CF%80%CE%BF%CE%B8%CE%AE%CE%BA%CE%B5%CF%85%CF%83%CE%B7%CF%82-%CE%BA%CE%B1%CE%B9-%CE%BA%CE%B1%CF%84%CE%B1%CF%83%CE%BA%CE%B5%CF%85%CF%8E%CE%BD/%CE%BA%CE%BF%CF%85%CF%84%CE%B9%CE%AC-%CE%B1%CF%80%CE%BF%CE%B8%CE%AE%CE%BA%CE%B5%CF%85%CF%83%CE%B7%CF%82/%CE%BA%CE%BF%CF%85%CF%84%CE%B9-%CE%B1%CF%80%CE%BF%CE%B8%CE%B7%CE%BA%CE%B5%CF%85%CF%83%CE%B7%CF%83-76x61x21-903133s-t-proskit.html) | + +*Components:* Here is a list of the components you will need to buy: +| Quantity | Name | Description | Links | +| :------ | :----------------------- | :------------------------------------ | :---------------------------- | +| 1 | 5V power supply | E.g., any USB charger | | +| 1 | breadboard | Breadboard | [Fanos](https://www.fanos.gr/en-gb/electronic-components/boards-testing-boards/solderless-breadboard-mb-102.html) | +| 1 | 65-piece jumper wire kit | Many small jumper wires to use with the breadboard | [Fanos](https://www.fanos.gr/en-gb/electronic-components/jumpers-pinheaders/65pcs-flexible-breadboard-jumper-wires.html) | +| 1 | 74LS04 | Hex inverter | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls04.html) | +| 1 | 74LS08 | Quad 2-input AND gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls08.html) | +| 1 | 74LS32 | Quad 2-input OR gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls32.html) | +| 1 | 74LS00 | Quad 2-input NAND gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls00.html) | +| 1 | 74LS02 | Quad 2-input NOR gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls02.html) | +| 1 | 74LS86 | Quad 2-input XOR gate | [Fanos](https://www.fanos.gr/en-gb/semiconductors/circuit-chips/gate-ls/74ls86.html) | +| 1 | 74LS7266 | Quad 2-input XNOR gate | Not sure it is actually available | +| 2 | SPDT switch | Single Pole Double Throw Switch | [Fanos](https://www.fanos.gr/en-gb/switches/slide-switch/slide-switch-on-on-spdt-12d01.html) | +| 3 | LED, red | LED, red 2-2.5V, 20mA | [Fanos](https://www.fanos.gr/%CF%80%CE%B7%CE%B3%CE%AD%CF%82-%CF%86%CF%89%CF%84%CE%B9%CF%83%CE%BC%CE%BF%CF%8D/led/10mm/led-10mm-%CE%BA%CF%8C%CE%BA%CE%BA%CE%B9%CE%BD%CE%BF%CF%85-%CF%87%CF%81%CF%8E%CE%BC%CE%B1%CF%84%CE%BF%CF%82-l813id-40-150mcd-html) | +| 3 | 120-150Ω resistors | Resistors, 1W | [Fanos](https://www.fanos.gr/%CE%B7%CE%BB%CE%B5%CE%BA%CF%84%CF%81%CE%BF%CE%BD%CE%B9%CE%BA%CE%B1-%CE%B5%CE%BE%CE%B1%CF%81%CF%84%CE%B7%CE%BC%CE%B1%CF%84%CE%B1/%CE%91%CE%BD%CF%84%CE%B9%CF%83%CF%84%CE%AC%CF%83%CE%B5%CE%B9%CF%82,%20antistaseis,%20%CE%B1%CE%BD%CF%84%CE%B9%CF%83%CF%84%CE%B1%CF%83%CE%B7,%20antistasi/%CE%B1%CE%BD%CF%84%CE%B9%CF%83%CF%84%CE%B1%CF%83%CE%B7-1W/%CE%B1%CE%BD%CF%84%CE%AF%CF%83%CF%84%CE%B1%CF%83%CE%B7-120-%CF%89-1w.html) | + +**TODO:** Revisit this list. 74LS is TTL and cannot drive output LEDs directly, +it can only source 1mA, LEDs need ~5-20mA. +See: +https://www.eevblog.com/forum/beginners/driving-leds-with-74ls-logic/ +> TTL is better at sinking current, so run the LEd's from the 5V rail with the logic low turning them on. Use 5mA as a current and most modern LED devices will be very bright at this current. Typically this means a 470R resistor per LED. +> A typical 74LS00 output pin can sink significant current to drive a standard LED. Just wire the cathode to the output pin through a suitably sized series resistor (calc for maybe 10 ma, plenty bright) to then to +5vcc. You just have design for circuit so that a LOW output is the active (lite) state. + +**WIP:** + + diff --git a/docs/index.rst b/docs/index.rst index 3957246..0ba1ef7 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -11,6 +11,10 @@ :scale: 25% :class: no-scaled-link +.. image:: https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg + :target: https://creativecommons.org/licenses/by-sa/4.0/ + :alt: License: Creative Commons Attribution-ShareAlike 4.0 International + Welcome to **Circuit Explorers**, a hands-on tutorial on exploring, designing, simulating, building, and testing digital circuits. @@ -38,6 +42,12 @@ See the `Circuit Explorers repository `_. + + Contact ======= @@ -52,6 +62,8 @@ Looking forward hearing from you! :maxdepth: 2 :caption: Contents: + adventures.md + .. Indices and tables ==================