design of digital circuits...design of digital circuits lab 2 supplement: mapping your circuit to...

18
Design of Digital Circuits Lab 2 Supplement: Mapping Your Circuit to FPGA Prof. Onur Mutlu ETH Zurich Spring 2019 12 March 2019

Upload: others

Post on 05-Mar-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Design of Digital CircuitsLab 2 Supplement:

Mapping Your Circuit to FPGA

Prof. Onur MutluETH ZurichSpring 2019

12 March 2019

What Will We Learn?

n In Lab 2, you will learn how to map your circuits to an FPGA.

n Design a 4-bit adder.

q Design a 1-bit full-adder.

q Use full-adders to design a 4-bit adder.

n Program your FPGA using Vivado software for HDL design.

n Work with your FPGA board and see the results of your designs

on the FPGA output (in this case LEDs).

2

Design an Adder (I)

n Design a full-adder: Receives two 1-bit numbers A and B and a

1-bit input carry (C_in), and returns outputs S and C as sum and

carry of the operation, respectively.

q Example: A = 1, B =1, C_in=1

n S = 1

n C = 1

3

Full-adder

A

B

Sum ‘S’

Carry ‘C’

1-bit

1-bit

C_in 1-bit

Design an Adder (II)

n Design a 4-bit adder: Receives two 1-bit numbers A and B and a

1-bit input carry (C_in), and returns outputs S and C as sum and

carry of the operation, respectively.

q Example: A = 1110, B =0001, C_in=1

n S = 0000

n C = 1

n Hint: Use four full-adders to design a 4-bit adder.

4

Full Adder

a0b0

s0

0c1Full Adder

a1b1

s1

c2Full Adder

a2b2

s2

c3Full Adder

a3b3

s3

c4

Design an Adder (Overview)

1. You will use truth tables to derive the Boolean equation of the

adder.

2. You will design the schematic of the circuit using logic gates.

3. In the next step, you will use Vivado to write your design in

Verilog.

4. In the end, you will use Vivado to program the FPGA.

5

Vivadon For this course, we use the software Vivado for FPGA

programming.

n The computers in the lab rooms are already installed with the necessary software.

n If you wish to use your own computer, you can refer to the following instructions:q https://reference.digilentinc.com/learn/programmable-

logic/tutorials/basys-3-getting-started/start

6

7

Verilog

Defining a Module in Verilogn A module is the main building block in Verilog.

n We first need to define:q Name of the moduleq Directions of its ports (e.g., input, output)q Names of its ports

n Then:q Describe the functionality of the module.

ab yc

VerilogModule

8

inputs output

example

Implementing a Module in Verilog

ab yc

VerilogModule

module example (a, b, c, y);input a;input b; input c;output y;

// here comes the circuit description

endmodule

9

Port list(inputs and outputs)

ports have a declared type

a module definition

name of module

example

Structural HDL: Instantiating a Module

10

Schematic of module “top” that is built from two instances of module “small”

i_firsti_second

Structural HDL Example (1)n Module Definitions in Verilog

module top (A, SEL, C, Y);input A, SEL, C;output Y;wire n1;

endmodule

module small (A, B, Y);input A;input B;output Y;

// description of small

endmodule

11

i_firsti_second

module top (A, SEL, C, Y);input A, SEL, C;output Y;wire n1;

endmodule

module small (A, B, Y);input A;input B;output Y;

// description of small

endmodule

Structural HDL Example (2)n Defining wires (module interconnections)

12

i_firsti_second

n The first instantiation of the “small” modulemodule top (A, SEL, C, Y);input A, SEL, C;output Y;wire n1;

// instantiate small oncesmall i_first ( .A(A),

.B(SEL),

.Y(n1) );

endmodule

module small (A, B, Y);input A;input B;output Y;

// description of small

endmodule

Structural HDL Example (3)

13

i_firsti_second

n The second instantiation of the “small” module

module top (A, SEL, C, Y);input A, SEL, C;output Y;wire n1;

// instantiate small oncesmall i_first ( .A(A),

.B(SEL),

.Y(n1) );

// instantiate small second timesmall i_second ( .A(n1),

.B(C),

.Y(Y) );

endmodule

module small (A, B, Y);input A;input B;output Y;

// description of small

endmodule

Structural HDL Example (4)

14

i_firsti_second

n Short form of module instantiation

module top (A, SEL, C, Y);input A, SEL, C;output Y;wire n1;

// alternativesmall i_first ( A, SEL, n1 );

/* Shorter instantiation,pin order very important */

// any pin order, safer choicesmall i_second ( .B(C),

.Y(Y),

.A(n1) );

endmodule

module small (A, B, Y);input A;input B;output Y;

// description of small

endmodule

Structural HDL Example (5)

15

i_firsti_second

Basys 3 FPGA Board

16

In this course, we will be using the Basys 3 boards from Digilent, as shown below.

You can learn more about the Basys 3 Starter Board from:

http://store.digilentinc.com/basys-3-artix-7-fpga-trainer-board-recommended-for-introductory-users/

Output LEDs

Input Switches

For this Lab:

Last Wordsn In this lab, you will map your circuit to an FPGA.

n First you will design a 4-bit adder.

n Then, you will learn how to use Xilinx Vivado for writing Verilog and how to connect to the Basys 3 board.

n Finally, you will program the FPGA and get the circuit running on the FPGA board.

n You will find more exercises in the lab report.

17

Design of Digital CircuitsLab 2 Supplement:

Mapping Your Circuit to FPGA

Prof. Onur MutluETH ZurichSpring 2019

12 March 2019