Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Building Processor with VHDL from Scratch
Rating: 4.6 out of 5(14 ratings)
172 students

Building Processor with VHDL from Scratch

Step by Step Guide
Created byKumar Khandagle
Last updated 6/2023
English
English [Auto],

What you'll learn

  • Startegies to implement VHDL based CPU
  • Buliding Custom Intruction Set to meet resource utilizations
  • Strategies to add Program and Data Memory inside Processor
  • Strategies to add Jump and Branching Instructions inside Processor

Course content

5 sections73 lectures3h 44m total length
  • Understanding Processor architecture4:37

    Explore the processor's subsystems, including the control unit, instruction register, program memory, data memory, and 32 general purpose registers, and trace operations from input buffers to arithmetic and logical units.

  • Agenda0:54

    Begin by building the instruction register and an arithmetic unit, then extend the processor block. Understand instruction types and addressing modes to design logic and verify with a testbench.

  • Types of Instructions8:41

    Explore the instruction register and the four instruction types: three-address, two-address, single-address, and zero-address, using register-based examples and the roles of sources, destinations, and the accumulator.

  • Addressing Modes4:35

    Explore how addressing modes determine data retrieval for instructions, including register, immediate, direct, and indirect modes, with practical examples.

  • Understanding Intruction Register3:48

    Build a 32-bit instruction register with fields for operation type, destination and source registers, and mode selection to choose between immediate or register data.

  • Creating new project in Vivado3:53

    Create a new Vivado project for a 32-register processor in VHDL, add a processor_top module and its testbench, and import design and testbench code for verification.

  • Adding MOV instruction to processor P15:16

    Explore adding the mov instruction to processor p1, detailing library use, instruction register design, 5-bit opcode encoding, and a 32×16-bit general‑purpose register file within a behavior architecture.

  • Adding MOV instruction to processor P25:26

    Add mov instruction to processor p2 by selecting between immediate data and source register data with a mode bit, using a case on the instruction’s msb bits in vhdl 2008.

  • Verifying RTL Designing5:06

    Build and verify rtl with a testbench that encodes the mu instruction (opcode 00001) and then run a behavioral simulation to confirm zero=3, one=5, gpt2=1 in both modes.

  • Design Code0:34
  • Testbench Code0:27
  • Adding Arithmetic Instructions to Processor6:46

    Introduce arithmetic instructions for a 16-bit processor, adding addition, subtraction, and multiplication. Prepare to handle carry out and 16- and 32-bit results with dedicated registers and opcodes.

  • Verifying Design2:44

    Verify design by testing addition operations in register and immediate modes, storing results in r2 and r3 using opcode 00010. Demonstrates 3+1=4 and 3+7=10 in simulation, confirming correct addition behavior.

  • Design Code1:13
  • Testbench Code0:43
  • A11 : Testing Multiplication operation

Requirements

  • Fundamentals of Digital Electronics

Description

Most of the 21st-century applications require powerful hardware but also along with the centralized controller allowing the development of complex algorithms. As we enter into the AI or Cloud-based devices and as systems complexity is growing daily, the need for incorporating multiple processor instances becomes mandatory as we progress in the AI era. Zynq and Microblaze are two popular alternatives that exist in the market suitable for almost any application requirements. The requirements of using Multiple instances of Processor viz. Multiple instances of Microblaze soft processor or using a hard processor such as Zynq Processor along with single or multiple instances of  Microblazer become necessary to independently handle both Data processing and control requirements. The fundamental challenge of incorporating multiple instances of Soft processors like Microblaze is the number of resources consumed for implementing Microblaze on the FPGA. Since FPGA consists of a limited amount of the FPGA resources, hardware and Software partition plays a prominent role in building complex systems. Another popular alternative approach followed by Embedded Engineers to build a Custom CPU /   Processor with the only required functionality thereby saving a large amount of the resources as compared to adding Microblaze instance. The course will discuss all the fundamentals required to build a simple processor/ CPU with VHDL and strategies to test its functionality. After completing this course, you will understand all the necessary skills required to build Complex CPU architecture to meet requirements. Best wishes for crafting your own processor.

Who this course is for:

  • Anyone Interested to build Custom CPU on FPGA for Load Sharing