6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7,...

28
6.111 Fall 2006 Lecture 7, Slide 1 6.111 Lecture 7 Today: Demo! (or die): An Electronic Lock 1.Design FSM 2.Implement in Verilog 3.Compile: Xilinx tool-chain 4.Program labkit

Transcript of 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7,...

Page 1: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 1

6.111 Lecture 7

Today:Demo! (or die): An Electronic Lock

1.Design FSM2.Implement in Verilog3.Compile: Xilinx tool-chain4.Program labkit

Page 2: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 2

Demo!GOAL:

Build an electronic combination lock with a reset button, two number buttons (0 and 1), and an unlock output. The combination should be 01011.

“0”“1”

RESETUNLOCK

STEPS:1.Design lock FSM (block diagram, state transitions)2.Write Verilog module(s) for FSM3.Use Xilinx ISE7.1 (synthesis, simulation)4.Program FGPA, give it a whirl!

Page 3: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 3

Step 1A: Block Diagram

fsm_clock

reset

b0_in

b1_in

lock

button

button

button

Clockgenerator

ButtonEnter

Button0

Button1

fsm

state

unlock

reset

b0

b1

LEDDISPLAY

UnlockLED

Page 4: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 4

Step 1B: State transition diagram

RESETUnlock = 0

“0”Unlock = 0

“01”Unlock = 0

“01011”Unlock = 1

“0101”Unlock = 0

“010”Unlock = 0

0 1

0

11

1 01

0

0

10

RESET

6 states → 3 bits6 states → 3 bits

Page 5: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 5

Step 2: Write Verilogmodule lock(clk,reset_in,b0_in,b1_in,out);

input clk,reset,b0_in,b1_in;output out;

// synchronize push buttons, convert to pulses

// implement state transition diagramreg [2:0] state;always @ (posedge clk)beginstate <= ???;

end

// generate outputassign out = ???;

// debugging?endmodule

Page 6: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 6

Step 2A: Synchronize buttons// button -- push button synchronizer and level-to-pulse converter// OUT goes high for one cycle of CLK whenever IN makes a// low-to-high transition.

module button(clk,in,out);input clk;input in;output out;

reg r1,r2,r3;always @ (posedge clk)beginr1 <= in; // first reg in synchronizerr2 <= r1; // second reg in synchronizer, output is in sync!r3 <= r2; // remembers previous state of button

end

// rising edge = old value is 0, new value is 1assign out = ~r3 & r2;

endmodule

D Q D Q D Qinr3r1 r2

clk

out

synchronizer state

Page 7: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 7

Step 2B: state transition diagramparameter S_RESET = 0; // state assignmentsparameter S_0 = 1;parameter S_01 = 2;parameter S_010 = 3;parameter S_0101 = 4;parameter S_01011 = 5;

reg [2:0] state; always @ (posedge clk)begin // implement state transition diagramif (reset) state <= S_RESET;else case (state)S_RESET: state <= b0 ? S_0 : b1 ? S_RESET : state;S_0: state <= b0 ? S_0 : b1 ? S_01 : state;S_01: state <= b0 ? S_010 : b1 ? S_RESET : state;S_010: state <= b0 ? S_0 : b1 ? S_0101 : state;S_0101: state <= b0 ? S_010 : b1 ? S_01011 : state;S_01011: state <= b0 ? S_0 : b1 ? S_RESET : state;default: state <= S_RESET; // handle unused states

endcaseend

RESETUnlock = 0

“0”Unlock = 0

“01”Unlock = 0

“01011”Unlock = 1

“0101”Unlock = 0

“010”Unlock = 0

0 1

0

11

1 01

0

0

10

RESET

Page 8: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 8

Step 2C: generate output

// it’s a Moore machine! Output only depends on current state

assign out = (state == S_01011);

Step 2D: debugging?

// hmmm. What would be useful to know? Current state?

assign hex_display = {1'b0,state[2:0]};

Page 9: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 9

Step 2: final Verilog implementationmodule lock(clk,reset_in,b0_in,b1_in,out, hex_display);

input clk,reset,b0_in,b1_in;output out; output[3:0] hex_display;

wire reset, b0, b1; // synchronize push buttons, convert to pulsesbutton b_reset(clk,reset_in,reset);button b_0(clk,b0_in,b0);button b_1(clk,b1_in,b1);

parameter S_RESET = 0; parameter S_0 = 1; // state assignmentsparameter S_01 = 2; parameter S_010 = 3;parameter S_0101 = 4; parameter S_01011 = 5;

reg [2:0] state; always @ (posedge clk)begin // implement state transition diagram

if (reset) state <= S_RESET;else case (state)

S_RESET: state <= b0 ? S_0 : b1 ? S_RESET : state;S_0: state <= b0 ? S_0 : b1 ? S_01 : state;S_01: state <= b0 ? S_010 : b1 ? S_RESET : state;S_010: state <= b0 ? S_0 : b1 ? S_0101 : state;S_0101: state <= b0 ? S_010 : b1 ? S_01011 : state;S_01011: state <= b0 ? S_0 : b1 ? S_RESET : state;default: state <= S_RESET; // handle unused states

endcase

assign out = (state == S_01011); // assign output: Moore machineassign hex_display = {1'b0,state}; // debugging

endmodule

Page 10: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 10

Programming(parallel cable)

*.bit

Implementation(map, place, route)

rtl

Step 3: Synthesis & Simulation• We will be using the Xilinx toolchain• Software: ISE 7.1i (windows / linux)

Design Entry(Verilog)

Synthesis(xst)

Simulation

(modelsim

)

*.v

Page 11: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 11

Step 3A: Load source file lock.v

Page 12: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 12

Step 3B: Compile/Synthesize

Page 13: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 13

Step 3B: Create testbench

Page 14: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 14

Step 3B: Create testbench

Page 15: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 15

Step 3B: Generate Simulation Results

Page 16: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 16

Step 4: Implementation – Program FPGA

• fsm_demo.v (modified copy of labkit.v): peripherals definitions• Optimization: Placing and Routing

Synthesis(xst)

Implementation(map, place, route)

Programming(parallel cable)

rtl

*.bit

• Pin assignments: User constraints file

fsm_demo.v, lock.v, debounce.v, display_1hex.v

labkit.ucf

Page 17: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 17

Step 4: Implementation – Program FPGA• Pin assignments: User constraints file labkit.ucf

Page 18: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 18

Clocks

27 MHz2 user inputs

Memory

4Mx36 ZBT SRAM128 mbit Flash ROM

Audio

LM4550 AC’97Stereo In/OutHeadphone/mic

Video Input

ADV7185NTSC decoder

Display

16 char5x7 dots

VGA Video

AD7125Tripple-out DAC1024 x 768 RGB

Video Output

AD7194NTSC encoder

General I/O9 buttons8 switches8 LED’sps/2 kbd & mouseRS-232 serialuser, LA signals

The 6.111 Labkit: Subsystems

Xilinx Virtex-II FPGAXC2V6000-6BF957

6M gates1M RAM684 I/O pads

0.15μm 8 layer CMOS

Nathan Ickes

Page 19: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 19

Step 4A: FPGA Device Assignment

Virtex 2: xc2v6000 Package: bf957

Speed: -4

Page 20: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 20

Step 4B: Add labkit files

Page 21: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 21

Step 4C: Implement

Double-click hereto implement design,and create the labkit.bit file

Right-click implement, select properties,Select “allow unmatched LOC constraints”

Page 22: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 22

Step 4C: Implement• Useful reports: Resource Utilization, Timing, RTL diagram

Page 23: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 23

Step 4C: Implement• Useful reports: Resource Utilization, Timing, RTL diagram

Page 24: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 24

Step 4C: Implement• Useful reports: Resource Utilization, Timing, RTL diagram

Page 25: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 25

Step 4C: Implement• Useful reports: Floorplan

Page 26: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 26

Step 4D: Program FPGA• We’ll use the parallel port IV cable• Transfer program: “IMPACT” – uses JTAG serial chain

1. Select “Configure Device”2. Bypass first device

assign labkit.bit to second device

3. Attach cable;Program

joint test access group

Page 27: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 27

Step 4D: Program FPGAProgrammer Cable

Xilinx Virtex-II FPGA

Dot-matrix LEDsButtons

Reset Button

Compact-FlashSlot

Page 28: 6.111 Lecture 7courses.csail.mit.edu/6.111/f2006/handouts/L07.pdf · 6.111 Fall 2006 Lecture 7, Slide 2 Demo! GOAL: Build an electronic combination lock with a reset button, two number

6.111 Fall 2006 Lecture 7, Slide 28

Summary

• Modern digital system design:– Hardware description language FPGA / ASIC

• Toolchain:– Design Entry Synthesis Implementation

• New Labkit: Design Entry(Verilog)

Synthesis(xst)

Implementation(map, place, route)

Programming(parallel cable)

Sim

ulation(m

odelsim)

*.v

rtl

*.bit

– Black-box peripherals– Almost all functionality

is programmed in!– How to generate video?

Synchronize systems? Create/Digitize Audio? Serial & communications?

Simulate