Skip to content

practicing creating meaningful real-world projects in Verilog/SystemVerilog

Notifications You must be signed in to change notification settings

CheeksTheGeek/rtl-design

Repository files navigation

Verilogging : Logging my regular Verilog projects

Verilogging is a small endeavour to practice creating meaningful real-world projects in Verilog, to make sure I don't lose the fun of it and to keep my skills sharp. I will be creating a few projects in Verilog and will be documenting them here. I will be using Icarus Verilog for simulation and GTKWave for waveform viewing.

Planned Projects

  • Odd Even Transposition Sorting Network/Engine (Scalable) This sorting engine aims to structurally parallelize a bubble sort-like algorithm to sort a list of numbers. The engine's external size parameters, like ARRAYLENGTH and DATAWIDTH are parameterized and the internal sizing gets calculated based on these parameters. The engine will be scalable and will be able to sort any list of numbers with any length and width less than 255. The project's black-box idea was designed (as a deliverable for UWaterloo's ECE327: Digital Hardware Engineering Course) by William D. Bishop.
  • Memory System Tester Given a registered memory system of 256 Bytes, it tests every single bit of the system by reading and writing 1s and 0s in a pipelined fashion. The project's black-box idea was designed (as a deliverable for UWaterloo's ECE327: Digital Hardware Engineering Course) by William D. Bishop.
  • Pattern Detector
  • Hamming Code Encoder and Decoder
  • UART Transmitter and Receiver A UART Transmitter and Receiver module that can be used to send and receive data between different devices.
  • SPI Master Transmitter and Receiver A SPI Master Transmitter and Receiver module that can be used to send and receive data between different devices.
  • I2C Master Transmitter and Receiver A I2C Master Transmitter and Receiver module that can be used to send and receive data between different devices.
  • Ethernet MAC A Ethernet MAC module that can be used to send and receive data between different devices.
  • VGA Controller A VGA Controller module that can be used to display graphics on a VGA monitor.
  • DDR Memory Controller A DDR Memory Controller module that can be used to interface with DDR memory modules.
  • PCIe Interface A PCIe Interface module that can be used to interface with PCIe devices.
  • PWM Controller A PWM Controller module that can be used to generate PWM signals.
  • AES Encryption/Decryption Engine A AES Encryption/Decryption Engine module that can be used to encrypt and decrypt data.
  • ADC/DAC Interface A ADC/DAC Interface module that can be used to interface with ADC and DAC devices.
  • Digital Signal Processor (DSP) A Digital Signal Processor (DSP) module that can be used to perform DSP operations.
  • JPEG Encoder/Decoder A JPEG Encoder/Decoder module that can be used to encode and decode JPEG images.
  • FFT Processor A FFT Processor module that can be used to perform FFT operations.
  • HDMI Transmitter/Receiver A HDMI Transmitter/Receiver module that can be used to send and receive HDMI signals.
  • RISC-V Processor Core A RISC-V Processor Core module that can be used to implement a RISC-V CPU core.
  • CAN Controller A CAN Controller module that can be used to implement a CAN controller.
  • USB 2.0/3.0 Controller A USB 2.0/3.0 Controller module that can be used to implement a USB controller.
  • CPLD-based Logic Analyzer A CPLD-based Logic Analyzer module that can be used to capture and analyze digital signals.
  • Smart Home Controller A Smart Home Controller module that can be used to control various smart home devices.
  • Wireless Communication Module (e.g., Zigbee, Bluetooth) A Wireless Communication Module module that can be used to implement wireless communication protocols.

Larger Projects

  • RISC-V Processor Core A RISC-V Processor Core module that can be used to implement a RISC-V CPU core.
  • A Neural Network I haven't decided what kind of architecture I want to implement. I think I will start with a simple 2 layer NN and then move towards a more complex 3 or 4 layer NN.

About

practicing creating meaningful real-world projects in Verilog/SystemVerilog

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published