25
1 VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR Part 1: Implementation of the TOC on the DE2 Board using Verilog - Performed in Lab #1 Part 2: Extend the TOC to Achieve a 4-Bit Processor - Done in Other Parts of Course (If Time Permits)

VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

Embed Size (px)

Citation preview

Page 1: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

1

VERILOG DESCRIPTION OF A BASIC 4-BIT

PROCESSOR

Part 1: Implementation of the TOC on the DE2 Board using Verilog - Performed in Lab #1

Part 2: Extend the TOC to Achieve a 4-Bit Processor

- Done in Other Parts of Course (If Time Permits)

Page 2: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

2

GOAL: IMPLEMENT A 4-BIT PROCESSOR IN THE FPGA OF THE DE2 BOARD

• Incrementally develop the Basic TOC

– Implemented in Laboratory 1

• Following additions (in Lectures) will be added if time permits

– Add Accumulator Functionality

– Add Multiplexers and Memory

– Add Address Generator Unit

– Add Computer Control Unit (CCU)

Page 3: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

3

BLOCK DIAGRAM OF BASIC TOC

REGA REGB

REGR

ALU

7-SEG DISPLAY

Switches for Data

Clock

Switches for

Control

LEDs for

Unit Testing

Page 4: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

4

ULTIMATE OBJECTIVE: A BASIC 4-BIT SOFT PROCESSOR IMPLEMENTED ON DE2 BOARD

Page 5: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

5

ALTERA’S DE2 BOARD

Page 6: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

6

SEVERAL PERIPHERAL I/O DEVICES

Red LEDs Green LEDs

FPGA Chip

18 Slider Switches (SW[17:0]) 4 Push Buttons (KEY[3:0])

8 7-Segments

(HEX)

Page 7: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

7

SWITCH NAMES

• 18 Slider Switches

– SW (Vector Name)

– SW[17], SW[16], … SW[0] (Component Names)

• 4 Push Button Switches

– KEY (Vector Name)

– KEY[3], KEY[2], KEY[1], KEY[0] (Component Names)

Page 8: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

8

LED NAMES

• 18 Red Light Emitting Diodes (LEDs)

– LEDR (Vector Name)

– LEDR[17], LEDR[16], …LEDR[0] (Component Names)

• 8 Green Light Emitting Diodes (LEDs)

– LEDG (Vector Name)

– LEDG[7], LEDG[6], … LEDG[0] (Component Names)

Page 9: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

9

HEXADECIMAL DISPLAY NAMES

• Eight 7-Segment Hexadecimal Display Digits – HEX7, HEX6, HEX5, …, HEX1, HEX0 (Vector Names)

– HEXn[0] (A-segment of Digit n)

– HEXn[1] (B-segment of Digit n)

– HEXn[2] (C-segment of Digit n)

– HEXn[3] (D-segment of Digit n)

– HEXn[4] (E-segment of Digit n)

– HEXn[5] (F-segment of Digit n)

– HEXn[6] (G-segment of Digit n)

– HEXn[7] (Dec. Point of Digit n)

n = 0, 1, …, 7; the Hexadecimal digit.

Example: HEX0

Page 10: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

10

PIN CONNECTION CONNECTION OF PERIPHERALS TO FPGA CHIP

• Each peripheral is connected (wired) to specific pins of the FPGA chip

• Slider Switches – SW[17], SW[16], … SW[0] (PIN_Y23, … PIN_AB28)

• Push Button Switches – KEY[3], KEY[2], KEY[1], KEY[0] (PIN_R24, …, PIN_M23)

• Red LEDs – LEDR[17], LEDR[16], … LEDR [0] (PIN_H15, …, PIN_G19)

• Green LEDs – LEDG[17], LEDG[16], … LEDG [0] (PIN_F17, …, PIN_E21)

• HEX Digits – HEX0[6], HEX0[5], … HEX0 [0] (PIN_H22, …, PIN_G18)

Page 11: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

11

INCREMENTAL DEVELOPMENT PROCEDURE

• Split the TOC into a number of sub-circuits.

• Implement the TOC in an incremental fashion, adding and testing one sub-circuit at a time.

• Each sub-circuit is tested in isolation (Unit Testing)

– Red and Green LEDs used for unit testing (not actually part of the TOC).

Page 12: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

12

TOC DIVISION SPLITTING THE TOC INTO A 5 INCREMENTAL DEVELOPMENT PHASES

• Phase 1 – REGA (Test Register A, output to LEDs)

• Phase 2 – REGA and REGB (Test Registers A and B, output to LEDs)

• Phase 3 – ALU (Test ALU with the Registers A and B, output to LEDs)

• Phase 4 – REGR (Test Registers R with ALU, REGA, and REGB , output to LEDs)

• Phase 5 – 7-Segment Display (Test 7-Segment Display with REGR, ALU, REGA, and REGB,

output to Hex display)

Page 13: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

13

PHASE 1: REGA UNIT TESTING

REGA

Switches for Data

Red LEDs

Slider Switches

A_R/Wn

CLKn Switches

for Control Slider/PB Switches

DBUS

Page 14: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

14

PHASE 3: REGA AND REGB UNIT TESTING

REGA

Switches for Data

Red LEDs

Slider Switches

A_R/Wn

CLKn

DBUS

REGB

Red LEDs

B_R/Wn

CLKn

Page 15: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

15

REGB

PHASE 3: REGA, REGB, & ALU UNIT TESTING

REGA

Switches for Data

Slider Switches

A_R/Wn

CLKn

DBUS

B_R/Wn

CLKn

ALU

Red LEDs Red LEDs

M S3

S2

S1

S0

Slider Switches

Red LEDs

Page 16: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

16

PHASE 4: REGA, REGB, ALU, & REGR UNIT TESTING

REGB REGA

Switches for Data

Slider Switches

A_R/Wn

CLKn

DBUS

B_R/Wn

CLKn

ALU

Red LEDs Red LEDs

M S3

S2

S1

S0

Slider Switches

REGR R_R/Wn

CLK

Red LEDs

Red LEDs

Page 17: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

17

PHASE 5: REGA, REGB, ALU, REGR, & HEX SYSTEM TESTING

REGB REGA

Switches for Data

Slider Switches

A_R/Wn

CLKn

DBUS

B_R/Wn

CLKn

ALU

Red LEDs Red LEDs

M S3

S2

S1

S0

Slider Switches

REGR

7-Segment Display

CLK

Red LEDs

Red LEDs

Page 18: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

18

PHASE 1: REGA UNIT TEST

Slider Switches

SW[0] SW[1] SW[2] SW[3]

Assigned Names to FPGA Pins

KEY0

Push Button Switch

FPGA

RegA

SW[4]

DBUS

Reg

AW

n

Wn Clock

Clo

ckn

D0 D1 D2 D3

Q0 Q1 Q2 Q3

LEDR[3]

LEDR[2]

LEDR[1]

LEDR[0]

RED LEDS

RegAQ[3]

RegAQ[2]

RegAQ[1]

RegAQ[0]

DE2 Board Components

DE2 Board Component

Clo

ck

Page 19: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

19

VERILOG DESCRIPTION OF REGISTER A 4-BIT REGISTER

FILE: TOC_REGA.v

module TOC_REGA (SW, KEY, LEDR);

input [4:0] SW;

input [0:0] KEY;

output [3:0] LEDR;

wire [3:0] DBUS, RegAQ;

wire RegAWn, Clock, Clockn;

assign LEDR [3:0] = RegAQ [3:0];

assign Clockn = !Clock;

assign RegAWn = SW[4], Clock = KEY[0];

assign DBUS[3] = SW[3], DBUS[2] = SW[2];

assign DBUS[1] = SW[1], DBUS[0] = SW[0];

reg4 AReg (DBUS, RegAWn, Clockn, RegAQ);

endmodule

Instantiates a reg4

FILE: TOC_REGA.v (Continued)

module reg4 (D, Wn, Clock, Q);

input [3:0] D;

input Clock, Wn;

output reg [3:0] Q;

always @ (posedge Clock)

if (Wn==0)

Q <= D;

endmodule

Sub- Circuit

Top

-lev

el M

od

ule

Page 20: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

20

MODULE CONNECTION TO PINS

• The declared inputs and outputs of the top-level module need to be specified as pin numbers of the FPGA:

– This is because the compiler connects the declared inputs and outputs of the top-level design file to pins on the FPGA chip.

FILE: TOP_LEVEL.v

module TOP_LEVEL (PIN_12, PIN_34, PIN_1234);

endmodule

Page 21: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

21

MODULE CONNECTION TO PINS

• Alternatively, you can give names to the inputs and outputs, instead of pin numbers:

– If you do this, then you must also specify names of the pin numbers on the FPGA, and these names should match.

– If the names of your inputs and outputs do not match the assigned names of the pins on the FPGA, then the compiler will arbitrarily assign your inputs and outputs to random pins on the FPGA.

FILE: TOC_REGA.v

module TOC_REGA (SW, KEY, LEDR);

input [4:0] SW;

input [0:0] KEY;

output [3:0] LEDR;

endmodule

Page 22: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

22

PIN ASSIGNMENT CONNECTIONS SPECIFIED IN FILE (DE2_115.qsf)

• Pin specification file may be imported into the Quartus II software – Facilitates pin mapping

– Assigns peripheral names to pins on the FPGA

– Pins of FPGA are wired to peripherals

– Your hardware description can use these names to interface to the peripherals

Page 23: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

23

ANALYSIS

• Top level design file has inputs SW and KEY0; and outputs LEDR – These inputs/outputs are connected to the pins on the FPGA which have

been assigned the same names by the import procedure

– These FPGA pins are connected to the Slider Switch, Push Button, and Red LED Peripherals on the DE2 board.

TOC_REGA Circuit

SW[4]…SW[0]

LEDR[3]…LEDR[0]

KEY[0]

KEY[0] SW[4]…SW[0]

LEDR[3]…LEDR[0]

FILE: TOC_REGA.v

module TOC_REGA (SW, KEY, LEDR);

input [4:0] SW;

input [0:0] KEY;

output [3:0] LEDR;

Page 24: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

24

TEMPLATE reg4

• A template for a sub-circuit is designed and named as reg4.

– This sub-circuit has inputs D, Clock, and Wn; and output Q

– Note that these are names within the module (sub-circuit)

• A template is not actually realized in the circuit, but just declared in the source code

RegA

Wn Clock D0 D1 D2 D3

Q0 Q1 Q2 Q3

module reg4 (D, Wn, Clock, Q);

input [3:0] D;

input Clock, Wn;

output reg [3:0] Q;

always @ (posedge Clock)

if (Wn==0)

Q <= D;

endmodule

Page 25: VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSORece.eng.umanitoba.ca/undergraduate/ECE3610/Verilog Notes/4-BIT mP... · VERILOG DESCRIPTION OF A BASIC 4-BIT PROCESSOR ... –Add Multiplexers

25

INSTANTIATION OF reg4 AND CONNECTION TO REST OF CIRCUIT

• The following statement creates (realizes) a 4-bit register reg4 AReg (DBUS, RegAWn, Clockn, RegAQ);

– This makes a 4-bit register and names the register “AReg”

– Wires are connected to various points of the circuit:

input [4:0] SW;

input [0:0] KEY;

output [3:0] LEDR;

wire [3:0] DBUS, RegAQ; //declaration

wire RegAWn, Clock, Clockn; //declaration

reg4 AReg (DBUS, RegAWn, Clockn, RegAQ);

assign Clockn = !Clock, Clock = KEY[0];

assign LEDR [3:0] = RegAQ [3:0];

assign RegAWn = SW[4];

assign DBUS[3:0] = SW[3:0];

SW[0] SW[1] SW[2] SW[3] KEY0

RegA

SW[4]

DBUS

Reg

AW

n

Wn Clock

Clo

ckn

D0 D1 D2 D3

Q0 Q1 Q2 Q3

LEDR[3]

LEDR[2]

LEDR[1]

LEDR[0]

RegAQ[3]

RegAQ[2]

RegAQ[1]

RegAQ[0]

Clo

ck