From 66a409c33e84c10902e31f352786c88504b6f0f3 Mon Sep 17 00:00:00 2001 From: yannickreiss Date: Wed, 4 Oct 2023 11:03:41 +0200 Subject: [PATCH] Init TinyTapeout repository --- TinyTapeout/LICENSE | 201 +++++++++++++++++++++++++++++++++++++ TinyTapeout/README.md | 33 ++++++ TinyTapeout/States.png | Bin 0 -> 17456 bytes TinyTapeout/info.yaml | 77 ++++++++++++++ TinyTapeout/src/bfpu.v | 12 +++ TinyTapeout/src/cells.v | 116 +++++++++++++++++++++ TinyTapeout/src/config.tcl | 62 ++++++++++++ 7 files changed, 501 insertions(+) create mode 100644 TinyTapeout/LICENSE create mode 100644 TinyTapeout/README.md create mode 100644 TinyTapeout/States.png create mode 100644 TinyTapeout/info.yaml create mode 100644 TinyTapeout/src/bfpu.v create mode 100644 TinyTapeout/src/cells.v create mode 100644 TinyTapeout/src/config.tcl diff --git a/TinyTapeout/LICENSE b/TinyTapeout/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/TinyTapeout/LICENSE @@ -0,0 +1,201 @@ + 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/TinyTapeout/README.md b/TinyTapeout/README.md new file mode 100644 index 0000000..6f6663f --- /dev/null +++ b/TinyTapeout/README.md @@ -0,0 +1,33 @@ +# Buszustände + +## Nachrichtenaufbau + +5 Bit für 21 Zustände: + +|Bit(s)|Description | +|------|------------| +|0 |Start Symbol| +|1-8 |Address | +|9 |Read/Write | +|10 |Acknoledge | +|11-18 |Data | +|19 |Acknoledge | +|20 |Stop Symbol | + +--------------------------------- + +## Zustände + +- Idle +- sende Start +- sende Adresse +- sende Nachrichtenrichtung +- sende Acknowledge +- sende Datenbyte +- sende Acknowledge +- sende Stop +- Idle + +![Zustandsautomat](./States.png "NOT FOUND!") + +--------------------------------- diff --git a/TinyTapeout/States.png b/TinyTapeout/States.png new file mode 100644 index 0000000000000000000000000000000000000000..12549fb5fb41b3637c0031593d5b0bb41dd52dea GIT binary patch literal 17456 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 e4zo8XoC=u1*oOH!@K1Lj$xA