General FSM design procedure

Similar documents
General FSM design procedure

General FSM design procedure

Chapter 10. case studies in sequential logic design

Sequential Circuits. inputs Comb FFs. Outputs. Comb CLK. Sequential logic examples. ! Another way to understand setup/hold/propagation time

Data paths and control logic

CSE140L: Components and Design Techniques for Digital Systems Lab. FSMs. Instructor: Mohsen Imani. Slides from Tajana Simunic Rosing

EECS Components and Design Techniques for Digital Systems. Lec 07 PLAs and FSMs 9/ Big Idea: boolean functions <> gates.

Sequential Logic Implementation. Mealy vs. Moore Machines. Specifying Outputs for a Mealy Machine. Specifying Outputs for a Moore Machine

Verilog Tutorial. Introduction. T. A.: Hsueh-Yi Lin. 2008/3/12 VLSI Digital Signal Processing 2

Outline. EECS Components and Design Techniques for Digital Systems. Lec 11 Putting it all together Where are we now?

Quick Introduction to SystemVerilog: Sequental Logic

Homework deadline extended to next friday

Computer Organization

Techniques for Digital Systems Lab. Verilog HDL. Tajana Simunic Rosing. Source: Eric Crabill, Xilinx

ECE 4514 Digital Design II. Spring Lecture 15: FSM-based Control

Course Topics - Outline

Digital Design with FPGAs. By Neeraj Kulkarni

This Lecture. Some components (useful for the homework) Verilog HDL (will continue next lecture)

Mealy and Moore examples

CSE 140L Final Exam. Prof. Tajana Simunic Rosing. Spring 2008

Verilog introduction. Embedded and Ambient Systems Lab

I 3 I 2. ! Language of logic design " Logic optimization, state, timing, CAD tools

University of Toronto Faculty of Applied Science and Engineering Edward S. Rogers Sr. Department of Electrical and Computer Engineering

Workshop on Digital Circuit Design in FPGA

EECS150 - Digital Design Lecture 20 - Finite State Machines Revisited

In the previous lecture, we examined how to analyse a FSM using state table, state diagram and waveforms. In this lecture we will learn how to design

In the previous lecture, we examined how to analyse a FSM using state table, state diagram and waveforms. In this lecture we will learn how to design

EECS 151/251A: SRPING 2017 MIDTERM 1

ECE 2300 Digital Logic & Computer Organization. More Finite State Machines

CSE140L: Components and Design Techniques for Digital Systems Lab

EEL 4783: HDL in Digital System Design

Sequential Logic Design

CSE140L: Components and Design

EE178 Lecture Verilog FSM Examples. Eric Crabill SJSU / Xilinx Fall 2007

EPC6055 Digital Integrated Circuits EXAM 1 Fall Semester 2013

FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1

EECS150, Fall 2004, Midterm 1, Prof. Culler. Problem 1 (15 points) 1.a. Circle the gate-level circuits that DO NOT implement a Boolean AND function.

ECE 2300 Digital Logic & Computer Organization. More Sequential Logic Verilog

Introduction to Verilog and ModelSim. (Part 6 State Machines)

Exp#8: Designing a Programmable Sequence Detector

6.111 Lecture # 8. Topics for Today: (as time permits)

ECE 2300 Digital Logic & Computer Organization. More Verilog Finite State Machines

ECE 574: Modeling and Synthesis of Digital Systems using Verilog and VHDL. Fall 2017 Final Exam (6.00 to 8.30pm) Verilog SOLUTIONS

CSE140L: Components and Design Techniques for Digital Systems Lab. Verilog HDL. Instructor: Mohsen Imani UC San Diego. Source: Eric Crabill, Xilinx

Verilog Sequential Logic. Verilog for Synthesis Rev C (module 3 and 4)

In this lecture, we will focus on two very important digital building blocks: counters which can either count events or keep time information, and

Digital Circuit Design and Language. Datapath Design. Chang, Ik Joon Kyunghee University

Finite State Machines

Lecture 3. Behavioral Modeling Sequential Circuits. Registers Counters Finite State Machines

CSE 140L Final Exam. Prof. Tajana Simunic Rosing. Spring 2008

Verilog for High Performance

Synthesis vs. Compilation Descriptions mapped to hardware Verilog design patterns for best synthesis. Spring 2007 Lec #8 -- HW Synthesis 1

Abstraction of State Elements. Sequential Logic Implementation. Forms of Sequential Logic. Finite State Machine Representations

EN2911X: Reconfigurable Computing Lecture 05: Verilog (2)

Chap 6 Introduction to HDL (d)

EN164: Design of Computing Systems Lecture 06: Lab Foundations / Verilog 2

ECEN 468 Advanced Logic Design

CS 151 Final. Q1 Q2 Q3 Q4 Q5 Total Credit Score. Instructions: Student ID. (Last Name) (First Name) Signature

One and a half hours. Section A is COMPULSORY UNIVERSITY OF MANCHESTER SCHOOL OF COMPUTER SCIENCE

Block diagram view. Datapath = functional units + registers

Verilog Coding Guideline

EECS 270 Midterm Exam

RTL Design (Using ASM/SM Chart)

BUILDING BLOCKS OF A BASIC MICROPROCESSOR. Part 1 PowerPoint Format of Lecture 3 of Book

EECS 150 Homework 7 Solutions Fall (a) 4.3 The functions for the 7 segment display decoder given in Section 4.3 are:

Register Transfer Level in Verilog: Part I

Contents. Chapter 9 Datapaths Page 1 of 28

University of Toronto Faculty of Applied Science and Engineering Edward S. Rogers Sr. Department of Electrical and Computer Engineering

Digital design laboratory 5

a, b sum module add32 sum vector bus sum[31:0] sum[0] sum[31]. sum[7:0] sum sum overflow module add32_carry assign

EE 231 Fall EE 231 Lab 3

Register Transfer Level

Verilog Design Principles

Digital Design (VIMIAA01) Introduction to the Verilog HDL

Amrita Vishwa Vidyapeetham. EC429 VLSI System Design Answer Key

Spring 2017 EE 3613: Computer Organization Chapter 5: Processor: Datapath & Control - 2 Verilog Tutorial

Laboratory Exercise 7

Graduate Institute of Electronics Engineering, NTU. Lecturer: Chihhao Chao Date:

The Verilog Language COMS W Prof. Stephen A. Edwards Fall 2002 Columbia University Department of Computer Science

Federal Urdu University of Arts, Science and Technology, Islamabad VLSI SYSTEM DESIGN. Prepared By: Engr. Yousaf Hameed.

10/21/2016. ECE 120: Introduction to Computing. Let s Extend Our Keyless Entry FSM. FSM Designs Also Allow Use of Abstraction

Introduction to Verilog/System Verilog

ES611 FPGA Based System Design. Behavioral Model

The VHDL Hardware Description Language

Verilog Module 1 Introduction and Combinational Logic

ECE 551 Digital System Design and Synthesis. Instructor: Kewal K. Saluja. Midterm Exam

EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis

CSCB58 - Lab 3. Prelab /3 Part I (in-lab) /2 Part II (in-lab) /2 TOTAL /8

EECS Components and Design Techniques for Digital Systems. Lec 20 RTL Design Optimization 11/6/2007

Logic Synthesis. EECS150 - Digital Design Lecture 6 - Synthesis

Synthesizable Verilog

Synthesis of Language Constructs. 5/10/04 & 5/13/04 Hardware Description Languages and Synthesis

ENSC E-123: HW D3: Counter Applications; Counter in Verilog

Writing VHDL for RTL Synthesis

Registers and finite state machines

Control in Digital Systems

Blocking(=) vs Nonblocking (<=) Assignment. Lecture 3: Modeling Sequential Logic in Verilog HDL. Procedural assignments

Format. 10 multiple choice 8 points each. 1 short answer 20 points. Same basic principals as the midterm

problem maximum score 1 10pts 2 8pts 3 10pts 4 12pts 5 7pts 6 7pts 7 7pts 8 17pts 9 22pts total 100pts

Computer Organization. Structure of a Computer. Registers. Register Transfer. Register Files. Memories

Transcription:

Sequential logic examples Basic design approach: a 4-step design process Hardware description languages and finite state machines Implementation examples and case studies finite-string pattern recognizer complex counter traffic light controller door combination lock Winter 25 CSE37 - X - Sequential Logic Case Studies General FSM design procedure () Determine inputs and outputs (2) Determine possible states of machine state minimization (3) Encode states and outputs into a binary code state assignment or state encoding output encoding possibly input encoding (if under our control) (4) Realize logic to implement functions for states and outputs combinational logic implementation and optimization choices in steps 2 and 3 can have large effect on resulting logic Winter 25 CSE37 - X - Sequential Logic Case Studies 2

Finite string pattern recognizer (step ) Finite string pattern recognizer one input (X) and one output (Z) output is asserted whenever the input sequence has been observed, as long as the sequence has never been seen Step : understanding the problem statement sample input/output behavior: X: Z: X: Z: Winter 25 CSE37 - X - Sequential Logic Case Studies 3 Finite string pattern recognizer (step 2) Step 2: draw state diagram for the strings that must be recognized, i.e., and a Moore implementation S [] S [] S2 [] S3 [] S4 [] S5 [] S6 [] or Winter 25 CSE37 - X - Sequential Logic Case Studies 4

Finite string pattern recognizer (step 2, cont d) Exit conditions from state S3: have recognized if next input is then have =... (state S6) if next input is then have = (state S2) Exit conditions from S: recognizes strings of form (no seen) loop back to S if input is Exit conditions from S4: recognizes strings of form (no seen) loop back to S4 if input is... S [] S2 []... S []... S4 [] S5 [] S3 S6... []... [] or Winter 25 CSE37 - X - Sequential Logic Case Studies 5 Finite string pattern recognizer (step 2, cont d) S2 and S5 still have incomplete transitions S2 = ; If next input is, then string could be prefix of ()() S4 handles just this case S5 = ; If next input is, then string could be prefix of ()() S2 handles just this case Reuse states as much as possible look for same meaning state minimization leads to smaller number of bits to represent states Once all states have a complete set of transitions we have a final state diagram... S [] S2 []... S []... S3... []... S4 [] S5 []... S6 [] or Winter 25 CSE37 - X - Sequential Logic Case Studies 6

Finite string pattern recognizer (step 3) Verilog description including state assignment (or state encoding) module string (clk, X, rst, Q, Q, Q2, Z); input clk, X, rst; output Q, Q, Q2, Z; parameter S = [,,]; // state parameter S = [,,]; //strings ending in... parameter S2 = [,,]; //strings ending in... parameter S3 = [,,]; //strings ending in... parameter S4 = [,,]; //strings ending in... parameter S5 = [,,]; //strings ending in... parameter S6 = [,,]; //strings ending in... reg state[:2]; assign Q = state[]; assign Q = state[]; assign Q2 = state[2]; assign Z = (state == S3); always @(posedge clk) begin if (rst) state = S; else case (state) S: if (X) state = S4 else state = S; S: if (X) state = S2 else state = S; S2: if (X) state = S4 else state = S3; S3: if (X) state = S2 else state = S6; S4: if (X) state = S4 else state = S5; S5: if (X) state = S2 else state = S6; S6: state = S6; default: begin $display ( invalid state reached ); state = 3 bxxx; end endcase end endmodule Winter 25 CSE37 - X - Sequential Logic Case Studies 7 Finite string pattern recognizer Review of process understanding problem write down sample inputs and outputs to understand specification derive a state diagram write down sequences of states and transitions for sequences to be recognized minimize number of states add missing transitions; reuse states as much as possible state assignment or encoding encode states with unique patterns simulate realization verify I/O behavior of your state diagram to ensure it matches specification Winter 25 CSE37 - X - Sequential Logic Case Studies 8

Complex counter A synchronous 3-bit counter has a mode control M when M =, the counter counts up in the binary sequence when M =, the counter advances through the Gray code sequence binary:,,,,,,, Gray:,,,,,,, Valid I/O behavior (partial) Mode Input M Current State Next State Winter 25 CSE37 - X - Sequential Logic Case Studies 9 Complex counter (state diagram) Deriving state diagram one state for each output combination add appropriate arcs for the mode control S [] S [] S2 [] S3 [] S4 [] S5 [] S6 [] S7 [] Winter 25 CSE37 - X - Sequential Logic Case Studies

Complex counter (state encoding) Verilog description including state encoding module string (clk, M, rst, Z, Z, Z2); input clk, X, rst; output Z, Z, Z2; parameter S = [,,]; parameter S = [,,]; parameter S2 = [,,]; parameter S3 = [,,]; parameter S4 = [,,]; parameter S5 = [,,]; parameter S6 = [,,]; parameter S7 = [,,]; reg state[:2]; assign Z = state[]; assign Z = state[]; assign Z2 = state[2]; always @(posedge clk) begin if rst state = S; else case (state) S: state = S; S: if (M) state = S3 else state = S2; S2: if (M) state = S6 else state = S3; S3: if (M) state = S2 else state = S4; S4: if (M) state = S else state = S5; S5: if (M) state = S4 else state = S6; S6: if (M) state = S7 else state = S7; S7: if (M) state = S5 else state = S; endcase end endmodule Winter 25 CSE37 - X - Sequential Logic Case Studies Traffic light controller as two communicating FSMs Without separate timer S would require 7 states TS' S would require 3 states S Sa S2 would require 7 states S3 would require 3 states TS/ST Sb S and S3 have simple transformation S and S2 would require many more arcs C could change in any of seven states Sc /ST By factoring out timer greatly reduce number of states 4 instead of 2 counter only requires seven or eight states 2 total instead of 2 ST traffic light controller TS TL timer Winter 25 CSE37 - X - Sequential Logic Case Studies 2

Traffic light controller FSM Specification of inputs, outputs, and state elements module FSM(HR, HY, HG, FR, FY, FG, ST, TS, TL, C,, Clk); output HR; output HY; output HG; parameter highwaygreen = 6'b; output FR; parameter highwayyellow = 6'b; output FY; parameter farmroadgreen = 6'b; output FG; parameter farmroadyellow = 6'b; output ST; input TS; input TL; assign HR = state[6]; input C; assign HY = state[5]; input ; assign HG = state[4]; input Clk; assign FR = state[3]; assign FY = state[2]; reg [6:] state; assign FG = state[]; reg ST; specify state bits and codes for each state as well as connections to outputs Winter 25 CSE37 - X - Sequential Logic Case Studies 3 Traffic light controller FSM (cont d) initial begin state = highwaygreen; ST = ; end always @(posedge Clk) begin if () begin state = highwaygreen; ST = ; end else begin ST = ; case (state) highwaygreen: case statement triggerred by clock edge if (TL & C) begin state = highwayyellow; ST = ; end highwayyellow: if (TS) begin state = farmroadgreen; ST = ; end farmroadgreen: if (TL!C) begin state = farmroadyellow; ST = ; end farmroadyellow: if (TS) begin state = highwaygreen; ST = ; end endcase end end endmodule Winter 25 CSE37 - X - Sequential Logic Case Studies 4

Timer for traffic light controller Another FSM module Timer(TS, TL, ST, Clk); output TS; output TL; input ST; input Clk; integer value; assign TS = (value >= 4); // 5 cycles after assign TL = (value >= 4); // 5 cycles after always @(posedge ST) value = ; // async always @(posedge Clk) value = value + ; endmodule Winter 25 CSE37 - X - Sequential Logic Case Studies 5 Complete traffic light controller Tying it all together (FSM + timer) structural Verilog (same as a schematic drawing) module main(hr, HY, HG, FR, FY, FG,, C, Clk); output HR, HY, HG, FR, FY, FG; input, C, Clk; Timer part(ts, TL, ST, Clk); FSM part2(hr, HY, HG, FR, FY, FG, ST, TS, TL, C,, Clk); endmodule traffic light controller ST timer TS TL Winter 25 CSE37 - X - Sequential Logic Case Studies 6

Communicating finite state machines One machine's output is another machine's input X FSM FSM 2 Y CLK FSM X A A B Y== A [] B [] Y== Y== X== C [] D [] X== X== X== X== FSM2 Y C D D machines advance in lock step initial inputs/outputs: X =, Y = Winter 25 CSE37 - X - Sequential Logic Case Studies 7 Data-path and control Digital hardware systems = data-path + control datapath: registers, counters, combinational functional units (e.g., ALU), communication (e.g., busses) control: FSM generating sequences of control signals that instructs datapath what to do next control "puppeteer who pulls the strings" status info and inputs state control signal outputs data-path "puppet" Winter 25 CSE37 - X - Sequential Logic Case Studies 8

Digital combinational lock Door combination lock: punch in 3 values in sequence and the door opens; if there is an error the lock must be ; once the door opens the lock must be inputs: sequence of input values, outputs: door open/close memory: must remember combination or always have it available open questions: how do you set the internal combination? stored in registers (how loaded?) hardwired via switches set by user Winter 25 CSE37 - X - Sequential Logic Case Studies 9 Implementation in software integer combination_lock ( ) { integer v, v2, v3; integer error = ; static integer c[3] = 3, 4, 2; while (!new_value( )); v = read_value( ); if (v!= c[]) then error = ; while (!new_value( )); v2 = read_value( ); if (v2!= c[2]) then error = ; while (!new_value( )); v3 = read_value( ); if (v2!= c[3]) then error = ; if (error == ) then return(); else return (); } Winter 25 CSE37 - X - Sequential Logic Case Studies 2

Determining details of the specification How many bits per input value? How many values in sequence? How do we know a new input value is entered? What are the states and state transitions of the system? new value clock open/closed Winter 25 CSE37 - X - Sequential Logic Case Studies 2 Digital combination lock state diagram States: 5 states represent point in execution of machine each state has outputs Transitions: 6 from state to state, 5 self transitions, global changes of state occur when clock says its ok based on value of inputs Inputs:, new, results of comparisons Output: open/closed closed C!=value C2!=value C3!=value & new & new & new S S2 S3 OPEN C==value & new closed C2==value & new closed C3==value & new ERR closed open not new not new not new Winter 25 CSE37 - X - Sequential Logic Case Studies 22

Data-path and control structure Data-path storage registers for combination values multiplexer comparator Control finite-state machine controller control for data-path (which value to compare) value C C2 C3 4 4 4 multiplexer 4 4 comparator mux control equal new controller clock open/closed Winter 25 CSE37 - X - Sequential Logic Case Studies 23 State table for combination lock Finite-state machine refine state diagram to take internal structure into account state table ready for encoding next new equal state state mux open/closed S C closed S S C closed S ERR closed S S2 C2 closed... S3 OPEN open... Winter 25 CSE37 - X - Sequential Logic Case Studies 24

Encodings for combination lock Encode state table state can be: S, S2, S3, OPEN, or ERR needs at least 3 bits to encode:,,,, and as many as 5:,,,, choose 4 bits:,,,, output mux can be: C, C2, or C3 needs 2 to 3 bits to encode choose 3 bits:,, mux control output open/closed can be: open or closed controller needs or 2 bits to encode equal clock choose bit:, next open/closed new equal state state mux open/closed mux is identical to last 3 bits of state open/closed is identical to first bit of state therefore, we do not even need to implement... FFs to hold state, just use outputs... Winter 25 CSE37 - X - Sequential Logic Case Studies 25 new Data-path implementation for combination lock Multiplexer easy to implement as combinational logic when few inputs logic can easily get too big for most PLDs value Ci C2i C3i mux control value C C2 C3 4 4 4 multiplexer 4 comparator 4 mux control equal equal Winter 25 CSE37 - X - Sequential Logic Case Studies 26

Data-path implementation (cont d) Tri-state logic utilize a third output state: no connection or float connect outputs together as long as only one is enabled open-collector gates can only output, not value can be used to implement logical AND with only wires Ci C2i C3i mux control + oc C C2 C3 4 4 4 mux control multiplexer tri-state driver (can disconnect 4 equal from output) value comparator 4 equal open-collector connection (zero whenever one connection is zero, one otherwise wired AND) Winter 25 CSE37 - X - Sequential Logic Case Studies 27 Tri-state gates The third value logic values:, don't care: X (must be or in real circuit!) third value or state: Z high impedance, infinite R, no connection Tri-state gates OE additional input output enable (OE) output values are,, and Z In when OE is high, the gate functions normally when OE is low, the gate is disconnected from wire at output allows more than one gate to be connected to the same output wire as long as only one has its output enabled at any one time (otherwise, sparks could fly) non-inverting tri-state buffer In OE Out X Z In OE Out Winter 25 CSE37 - X - Sequential Logic Case Studies 28 Out

Tri-state and multiplexing When using tri-state logic () make sure never more than one "driver" for a wire at any one time (pulling high and low at the same time can severely damage circuits) (2) make sure to only use value on wire when its being driven (using a floating value may cause failures) Using tri-state gates to implement an economical multiplexer Input F Input OE OE when Select is high Input is connected to F when Select is low Input is connected to F this is essentially a 2: mux Select Winter 25 CSE37 - X - Sequential Logic Case Studies 29 Open-collector gates and wired-and Open collector: another way to connect gate outputs to the same wire gate only has the ability to pull its output low it cannot actively drive the wire high (default pulled high through resistor) Wired-AND can be implemented with open collector logic if A and B are "", output is actively pulled low if C and D are "", output is actively pulled low if one gate output is low and the other high, then low wins if both gate outputs are "", the wire value "floats", pulled high by resistor low to high transition usually slower than it would have been with a gate pulling high hence, the two NAND functions are ANDed together open-collector NAND gates with ouputs wired together using "wired-and" to form (AB)'(CD)' Winter 25 CSE37 - X - Sequential Logic Case Studies 3

Digital combination lock (new data-path) Decrease number of inputs Remove 3 code digits as inputs use code registers make them loadable from value need 3 load signal inputs (net gain in input (4*3) 3=9) could be done with 2 signals and decoder (ld, ld2, ld3, load none) ld ld2 ld3 value 4 C C2 C3 4 4 4 multiplexer 4 comparator mux control equal Winter 25 CSE37 - X - Sequential Logic Case Studies 3 Section summary FSM design understanding the problem generating state diagram communicating state machines Four case studies understand I/O behavior draw diagrams enumerate states for the "goal" expand with error conditions reuse states whenever possible Winter 25 CSE37 - X - Sequential Logic Case Studies 32

Final Lab Project RS-232 serial line to LCD display Solution will require 3 22V chips on the XLA5 protoboard We ll provide a schematic and test fixtures but not the core of the 3 PALs Winter 25 CSE37 - X - Sequential Logic Case Studies 33 Overview of RS232 Very established serial line communication protocol Originally designed for teletypes and modems Point-to-point, full-duplex Variable baud (bit) rates Cheap 9-wire connector connectors We ll only use Received Data along with Ground Winter 25 CSE37 - X - Sequential Logic Case Studies 34

RS232 serial data format start bit 8 data bits stop bit Winter 25 CSE37 - X - Sequential Logic Case Studies 35 Block diagram Major components RS232 sender (simulation test fixture) RS232 receiver (logic that goes into XLA board s FPGA) Serial-to-parallel converter (Lab ) Main controller (Lab 9 and ) LCD display (simulation test fixture) Simulation Model PC Sender Receiver S-to-P Control Display Hyper Terminal PC hardware RS232 Cable from PC XLA5 FPGA YOUR CIRCUIT Winter 25 CSE37 - X - Sequential Logic Case Studies 36

LCD interface Eleven signal wires plus PWR/GND/V o mode input read/write control enable 8 data lines setup time hold time E DB RS RW valid data valid mode valid r/w Winter 25 CSE37 - X - Sequential Logic Case Studies 37 Basic LCD operations Requires sequence of 4 commands on initialization Many more commands E.g., backup cursor, blink, etc. Data write prints character to display Operation RS DB7...DB Clear Display Function Set Display On Entry Mode Set Write Character DDDD DDDD Winter 25 CSE37 - X - Sequential Logic Case Studies 38

ASCII codes Each character has a unique code Some codes could be used to issue commands to display E.g., clear, backspace, etc. These are extra credit Winter 25 CSE37 - X - Sequential Logic Case Studies 39 Simulation model (lab 9) U clk write U2 clk CMD(:) EN write RS RS lcdcmd(7:) cmdindex(:) lcd_cmd U4 EN RS lcd_control U3 RW data(7:) bytetoprint(7:) en to(7:) from(7:) tri_driver lcd_tf GND Winter 25 CSE37 - X - Sequential Logic Case Studies 4

Skeleton Verilog files module lcd_control (clk,, write, EN, RS, CMD); input clk, ; input write; // Write a character to the LCD output EN, RS; // Enable, RS signals of LCD output [:] CMD; // Index for current LCD command /* YOUR DECLARATIONS ETC. GO HERE */ /* reg [??:??] state; */ always @(posedge clk) begin end endmodule /* YOUR CODE GOES HERE */ Winter 25 CSE37 - X - Sequential Logic Case Studies 4 Skeleton Verilog files (cont d) module lcd_cmd (RS, cmdindex, lcdcmd); input RS; // Used to tristate the LCD CMD input [:] cmdindex; // Index of the command output [7:] lcdcmd; // LCD command /* YOUR CODE HERE */ endmodule module tri_driver (en, from, to); input en; input [7:] from; output [7:] to; endmodule assign to = (en)? from : 8'bzzzzzzzz; Winter 25 CSE37 - X - Sequential Logic Case Studies 42

LCD test fixture module lcd_tf (, RS, EN, RW, data); input, RS, EN, RW; input [7:] data; reg [2:] Cnt; // Counts through the sequence parameter CMD = 8'h, CMD = 8'h33, CMD2 = 8'hC, CMD3 = 8'h6; initial begin Cnt = ; end always @(negedge EN) begin if ( == ) begin if (RW!== ) begin $display("error: RW should be "); $stop; end if (RS === ) begin // Writing a command case (Cnt) : begin // First if (data == CMD) begin $display("display cleared"); Cnt = ; end else begin $display("error: Invalid command "); $stop; end end : begin if (data == CMD) begin $display("display function set"); Cnt = 2; end else begin $display("error: Invalid command "); $stop; end end 2: begin if (data == CMD2) begin $display("display turned on"); Cnt = 3; end else begin $display("error: Invalid command 2"); $stop; end end 3: begin if (data == CMD3) begin $display("display entry mode set"); Cnt = 4; end else begin $display("error: Invalid command 3"); $stop; end end default: begin $display("error: Too many commands"); $stop; end endcase // case(cnt) end else if (RS === ) begin // Writing a character if (Cnt!= 4) begin $display("display has not been properly "); end $display("write Character: %c", data); end // else:!if(rs == ) end // if ( == ) Winter end 25 // always @ (negedge EN) CSE37 - X - Sequential Logic Case Studies 43 endmodule Simulation model (lab ) clk U4 clk recieved displayed sdata rs232_tf U3 charrcvd CMD(:) clk EN received RS displayed shift main_controller U lcd_cmd RS lcdcmd(7:) cmdindex(:) U2 RS out(7:) clk in U5 EN RS RW data(7:) lcd_tf GND shift tri_driver Winter 25 CSE37 - X - Sequential Logic Case Studies 44

Four-cycle handshake between modules Don t let one get ahead of the other Received Data Displayed Received Displayed Data valid data Winter 25 CSE37 - X - Sequential Logic Case Studies 45 Purpose of the project Learn how to build a realistic system Read data sheets Communicating state machines Deal with existing code/components Winter 25 CSE37 - X - Sequential Logic Case Studies 46