|
| 1 | + |
| 2 | +.. image:: http://kevinpt.github.io/vhdl-extras/_static/vhdl-extras-sm.png |
| 3 | + |
| 4 | +=================== |
| 5 | +VHDL-extras Library |
| 6 | +=================== |
| 7 | + |
| 8 | +This library provides some "extra" bits of code that are not found in the standard VHDL libraries. With VHDL-extras you can create designs that will resize to varying data widths, compute with time, frequency, and clock cycles, include error correction, and many more commonly encountered issues in digital logic design. These packages can be used for logic simulations and, in most cases, can be synthesized to hardware with an FPGA or ASIC target. |
| 9 | + |
| 10 | +All of the packages are designed to work with VHDL-93. Alternate packages supporting newer VHDL standards are provided where new language features provide enhanced functionality or where forward compatibility is broken. The core code should work in most VHDL-93 compliant tools. In one instance with the `timing_ops <http://kevinpt.github.io/opbasm/rst/packages.html#timing-ops>`_ package, a simplified Xilinx specific implementation is provided because of limitations with the XST synthesizer (fixed in Vivado). |
| 11 | + |
| 12 | +Requirements |
| 13 | +------------ |
| 14 | + |
| 15 | +You can use the VHDL-extras library files piecemeal with no tools other than the simulator or synthesizer you will process them with. If you wish to use the provided Modelsim build scripts you will need Modelsim, Python 2.x, sed, grep, and GNU make. To run the test suite you will need Python 2.7 and Modelsim. See the sections on `installation <http://kevinpt.github.io/opbasm/index.html#installation>`_ and `testing <http://kevinpt.github.io/opbasm/index.html#testing>`_ for more information on setting up the VHDL-extras library. You can get optional colorized output from the build and test scripts by installing the Python colorama package. |
| 16 | + |
| 17 | +Documentation |
| 18 | +------------- |
| 19 | + |
| 20 | +Take a look at the `online documentation <http://kevinpt.github.io/opbasm/index.html>`_ for more information on what you can do with VHDL-extras. |
| 21 | + |
| 22 | + |
| 23 | +Download |
| 24 | +-------- |
| 25 | +You can access the VHDL-extras Git repository from `Github <https://github.com/kevinpt/vhdl-extras>`_. `Packaged source code <https://drive.google.com/folderview?id=0B5jin2146-EXV2NfS3V2VXBsQnM&usp=sharing>`_ is also available for download. |
| 26 | + |
| 27 | +The Code |
| 28 | +-------- |
| 29 | + |
| 30 | +The VHDL-extras library contains the following packages: |
| 31 | + |
| 32 | +* Core packages |
| 33 | + |
| 34 | + `pipelining <http://kevinpt.github.io/opbasm/rst/packages.html#pipelining>`_ -- Pipeline registers |
| 35 | + |
| 36 | + `sizing <http://kevinpt.github.io/opbasm/rst/packages.html#sizing>`_ -- Generalized integer logarithms and array size computation |
| 37 | + |
| 38 | + `synchronizing <http://kevinpt.github.io/opbasm/rst/packages.html#synchronizing>`_ -- Clock domain synchronizing components |
| 39 | + |
| 40 | + `timing_ops <http://kevinpt.github.io/opbasm/rst/packages.html#timing-ops>`_ -- Conversions for time, frequency, and clock cycles |
| 41 | + |
| 42 | +* Error handling |
| 43 | + |
| 44 | + `crc_ops <http://kevinpt.github.io/opbasm/rst/packages.html#crc-ops>`_ -- Compute CRCs |
| 45 | + |
| 46 | + `hamming_edac <http://kevinpt.github.io/opbasm/rst/packages.html#hamming-edac>`_ -- Generalized Hamming error correction encoding and decoding |
| 47 | + |
| 48 | + `parity_ops <http://kevinpt.github.io/opbasm/rst/packages.html#parity-ops>`_ -- Basic parity operations |
| 49 | + |
| 50 | + `secded_edac <http://kevinpt.github.io/opbasm/rst/packages.html#secded-edac>`_ -- Hamming extension with double-error detection |
| 51 | + |
| 52 | +* Encoding |
| 53 | + |
| 54 | + `bcd_conversion <http://kevinpt.github.io/opbasm/rst/packages.html#bcd-conversion>`_ -- Encode and decode packed Binary Coded Decimal |
| 55 | + |
| 56 | + `gray_code <http://kevinpt.github.io/opbasm/rst/packages.html#gray-code>`_ -- Encode and decode Gray code |
| 57 | + |
| 58 | + `muxing <http://kevinpt.github.io/opbasm/rst/packages.html#muxing>`_ -- Decoder and muxing operations |
| 59 | + |
| 60 | +* Memories |
| 61 | + |
| 62 | + `fifos <http://kevinpt.github.io/opbasm/rst/packages.html#fifos>`_ -- General purpose FIFOs |
| 63 | + |
| 64 | + `memory <http://kevinpt.github.io/opbasm/rst/packages.html#memory>`_ -- Synthesizable memories |
| 65 | + |
| 66 | + `reg_file <http://kevinpt.github.io/opbasm/rst/packages.html#reg-file>`_ -- General purpose register file |
| 67 | + |
| 68 | +* Randomization |
| 69 | + |
| 70 | + `lcar_ops <http://kevinpt.github.io/opbasm/rst/packages.html#lcar-ops>`_ -- Linear Cellular Automata |
| 71 | + |
| 72 | + `lfsr_ops <http://kevinpt.github.io/opbasm/rst/packages.html#lfsr-ops>`_ -- Linear Feedback Shift Registers |
| 73 | + |
| 74 | + `random <http://kevinpt.github.io/opbasm/rst/packages.html#random>`_ -- Simulation-only random number generation |
| 75 | + |
| 76 | +* String and character handling |
| 77 | + |
| 78 | + `characters_handling <http://kevinpt.github.io/opbasm/rst/packages.html#characters-handling>`_ -- Character class identification and case conversions |
| 79 | + |
| 80 | + `strings_fixed <http://kevinpt.github.io/opbasm/rst/packages.html#strings-fixed>`_ -- Operations on fixed length strings |
| 81 | + |
| 82 | + `strings_maps <http://kevinpt.github.io/opbasm/rst/packages.html#strings-maps>`_ -- Mapping character sets |
| 83 | + |
| 84 | + `strings_unbounded <http://kevinpt.github.io/opbasm/rst/packages.html#strings-unbounded>`_ -- Operations on unbounded strings |
| 85 | + |
| 86 | +* Miscellaneous |
| 87 | + |
| 88 | + `binaryio <http://kevinpt.github.io/opbasm/rst/packages.html#binaryio>`_ -- Binary file I/O |
| 89 | + |
| 90 | + `text_buffering <http://kevinpt.github.io/opbasm/rst/packages.html#text-buffering>`_ -- Store text files in internal buffers |
| 91 | + |
| 92 | + `ddfs <http://kevinpt.github.io/opbasm/rst/packages.html#ddfs>`_ -- Direct Digital Frequency Synthesizer |
| 93 | + |
| 94 | + `glitch_filtering <http://kevinpt.github.io/opbasm/rst/packages.html#glitch-filtering>`_ -- Clean up noisy inputs |
| 95 | + |
| 96 | + |
| 97 | +Licensing |
| 98 | +~~~~~~~~~ |
| 99 | + |
| 100 | + All of the source files distributed as part of VHDL-extras are made freely |
| 101 | + available under the MIT license. The license permits unrestricted use of |
| 102 | + this code for commercial and non-commercial use. You may freely mix |
| 103 | + VHDL-extras code with proprietary code. You may make any modifications |
| 104 | + necessary without any requirement to redistribute your source code. The only |
| 105 | + requirement is to maintain the copyright and licensing information in the |
| 106 | + file headers. |
| 107 | + |
| 108 | + It is presumed that portions of the VHDL-extras library will be |
| 109 | + translated into circuitry with synthesis software. The resulting hardware |
| 110 | + implementation will be free of any requirements beyond those that apply |
| 111 | + when the code is used as software. The functions provided in VHDL-extras |
| 112 | + are all commonly known in the art and are free of any patent |
| 113 | + restrictions. It would be a nice gesture if the documentation for any |
| 114 | + hardware containing VHDL-extras code included an acknowledgement of that |
| 115 | + code and a pointer to this web site. |
| 116 | + |
| 117 | +MIT License |
| 118 | +~~~~~~~~~~~ |
| 119 | + |
| 120 | + Permission is hereby granted, free of charge, to any person obtaining a |
| 121 | + copy of this software and associated documentation files (the "Software"), |
| 122 | + to deal in the Software without restriction, including without limitation |
| 123 | + the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| 124 | + and/or sell copies of the Software, and to permit persons to whom the |
| 125 | + Software is furnished to do so, subject to the following conditions: |
| 126 | + |
| 127 | + The above copyright notice and this permission notice shall be included in |
| 128 | + all copies or substantial portions of the Software. |
| 129 | + |
| 130 | + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| 131 | + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 132 | + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| 133 | + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| 134 | + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
| 135 | + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
| 136 | + DEALINGS IN THE SOFTWARE. |
0 commit comments