Behavioral verilog implementations of components including peripherals for communication protocols and other components commonly used in design of digital systems. Primarily meant for use in FPGAs
This is mostly a learning exercise for me, for practicing writing and verifying RTL code
- UART master, slave : Universal Asyncrhnronous Read/Transmit
- SPI master, slave : Serial Peripheral Interconnect
- I2C master, slave : Inter-Integrated Circuit
- CRC : Cyclic Redundance Check
- Wishbone, AXI wrappers and interfaces for existing peripherals
- Checksum
- AES encryption, SHA hashing
- GPIO
- NVIC
- Programmable timer
- Programmable counter
This is the notation used (for the most part) as prefix for identifier names to indicate their type
Prefix | Meaning |
---|---|
i_ |
Input port |
o_ |
Output port |
p_ |
Parameter (or localparam) |
r_ |
Register |
w_ |
Wire |
s_ |
State definitions (as localparam) |
- Icarus verilog for compilation
- Makefiles for build automation
- GTKwave for visualization of waveforms
- Sigrok, pulseview for protocol decoding (from .vcd files)
- Draw.io for flowcharts