COMP541 Sequential Circuits

Slides:



Advertisements
Similar presentations
Synchronous Sequential Logic
Advertisements

EE 5900 Advanced Algorithms for Robust VLSI CAD, Spring 2009 Sequential Circuits.
Classification of Digital Circuits  Combinational. Output depends only on current input values.  Sequential. Output depends on current input values and.
Sequential circuits The digital circuits considered thus far have been combinational, where the outputs are entirely dependent on the current inputs. Although.
Module 12.  In Module 9, 10, 11, you have been introduced to examples of combinational logic circuits whereby the outputs are entirely dependent on the.
Sequential Circuits : Part I Read Sections 5-1, 5-2, 5-3.
1 COMP541 Sequential Circuits Montek Singh Sep 17, 2014.
EE 4271 VLSI Design, Fall 2010 Sequential Circuits.
Sequential Circuit  It is a type of logic circuit whose output depends not only on the present value of its input signals but on the past history of its.
Digital Computer Design Fundamental
COE 202: Digital Logic Design Sequential Circuits Part 1
ENG241 Digital Design Week #6 Sequential Circuits (Part A)
Instructor: Alexander Stoytchev CprE 281: Digital Logic.
1 COMP541 Sequential Circuits Montek Singh Feb 1, 2012.
1 COMP541 Sequential Circuits Montek Singh Feb 1, 2007.
COMP541 Sequential Circuits
Synchronous Sequential Logic A digital system has combinational logic as well as sequential logic. The latter includes storage elements. feedback path.
Chapter5: Synchronous Sequential Logic – Part 1
Synchronous Sequential Circuits by Dr. Amin Danial Asham.
CS151 Introduction to Digital Design Chapter 5: Sequential Circuits 5-1 : Sequential Circuit Definition 5-2: Latches 1Created by: Ms.Amany AlSaleh.
Synchronous Sequential Circuits by Dr. Amin Danial Asham.
1 COMP541 Sequential Circuits Montek Singh Feb 24, 2016.
Sequential logic circuits First Class 1Dr. AMMAR ABDUL-HAMED KHADER.
Overview Logistics Last lecture Today HW5 due today
Lecture 4. Sequential Logic #1
Lecture 10 Flip-Flops/Latches
Week #6 Sequential Circuits (Part A)
2018/5/2 EE 4271 VLSI Design, Fall 2016 Sequential Circuits.
Dr. Clincy Professor of CS
FLIP FLOPS Binary unit capable of storing one bit – 0 or 1
Supplement on Verilog FF circuit examples
ECEN 248: INTRODUCTION TO DIGITAL SYSTEMS DESIGN
Last Lecture Talked about combinational logic always statements. e.g.,
Clocks A clock is a free-running signal with a cycle time.
EMT 351/4 DIGITAL IC DESIGN Week # Synthesis of Sequential Logic 10.
‘if-else’ & ‘case’ Statements
Instructor: Alexander Stoytchev
2018/8/29 EE 4271 VLSI Design, Fall 2013 Sequential Circuits.
Synchronous Sequential Circuits
Sequential Logic and Flip Flops
ECE Digital logic Lecture 16: Synchronous Sequential Logic
Sequential Logic and Flip Flops
CS Fall 2005 – Lec. #5 – Sequential Logic - 1
Boolean Algebra and Digital Logic
Buttons and Debouncing Finite State Machine
COMP541 Sequential Circuits
触发器 Flip-Flops 刘鹏 浙江大学信息与电子工程学院 March 27, 2018
Synchronous Sequential Circuits
SYNTHESIS OF SEQUENTIAL LOGIC
Instructor: Alexander Stoytchev
Dr. Clincy Professor of CS
CSE 370 – Winter Sequential Logic - 1
Lecture 16 Logistics Last lecture Today HW5 out, due next wednesday
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
332:437 Lecture 8 Verilog and Finite State Machines
Lecture 16 Logistics Last lecture Today HW5 out, due next wednesday
Dr. Tassadaq Hussain Introduction to Verilog – Part-3 Expressing Sequential Circuits and FSM.
FLIP-FLOPS.
Synchronous sequential
Synchronous Sequential
The Verilog Hardware Description Language
Sequential Circuits UNIT- IV
SEQUENTIAL CIRCUITS __________________________________________________
332:437 Lecture 8 Verilog and Finite State Machines
Sequential Digital Circuits
Week 11 Flip flop & Latches.
2019/9/26 EE 4271 VLSI Design, Fall 2012 Sequential Circuits.
Lecture 3: Timing & Sequential Circuits
Presentation transcript:

COMP541 Sequential Circuits Montek Singh Sep 26, 2016

Topics Sequential Circuits Latches Flip Flops Verilog design patterns for sequential design Examples

Sequential Circuits State of system is information stored/memorized State and inputs determine outputs

Types of Sequential Circuits Synchronous State changes synchronized by one or more clocks Asynchronous There are no clocks, but changes are triggered by events (e.g., inputs changing)

Clocking of Synchronous Changes enabled by clock

Comparison Synchronous Asynchronous Easier to analyze because can factor out gate delays Set clock so changes occur before next clock pulse Asynchronous Potentially faster Harder to analyze (more subtle, but more powerful!) Most of my research! This course will look mostly at synchronous

Storage Elements Several types: Latch Flip-Flop Registers Addressable memories or banks of registers

Basic Storage Need feedback to hold a value Apply low or high once, and it will persist Figure 3.1 Cross-coupled inverter pair

Bistable circuits Consider 2 possible cases: Q = 0: then Q’ = 1 and Q = 0 (consistent) Q = 1: then Q’ = 0 and Q = 1 (consistent) Bistable circuit stores 1 bit of state in the state variable, Q (or Q’) But there are no inputs to control the state

SR (set-reset) Latch Basic storage made from gates A “1” on the input sets/resets the output ‘1’ on S sets the output Q to ‘1’ ‘1’ on R resets the output Q to ‘0’ S & R both 0 in “resting” state If both S & R are 1, Q and Q’ are both 0 not a very useful case Figure 3.3 SR latch schematic

SR (set-reset) Latch Bistable: Has two stable states

SR Latch Symbol

SR Latch: Operation

Latch Similar, but dual made from NANDs A “0” on the input sets/resets the output ‘0’ on S’ sets the output Q to ‘1’ ‘0’ on R’ resets the output Q to ‘0’

SR Latch Summary SR stands for Set/Reset Latch Stores one bit of state (Q) Control what value is being stored with S, R inputs Set: Make the output 1 (S = 1, R = 0, Q = 1) Reset: Make the output 0 (S = 0, R = 1, Q = 0) Behavior undesirable when: S = R = 1 Q and Q’ are no longer complementary

D Latch Two modifications to SR latch Eliminate illegal state ensure that “set” and “reset” cannot be simultaneously asserted simply have one input called D (data) S is derived from D; R from D’ Add a control input (CLK) to decide when the state should change Figure 3.7 D latch: (a) schematic, (b) truth table, (c) symbol

D Latch: Operation When CLK = 0 When CLK = 1 both S and R are 0 previous value of output is held When CLK = 1 S=D, R=D’ output is set to 1 if input D =1 output is reset to 0 if input D =0 output is updated to the value of input D NOTE: output will be continuously updated to D while CLK=1 Figure 3.7 D latch: (a) schematic, (b) truth table, (c) symbol

D Latch: Transparency Summary: When CLK = 0 When CLK = 1 output is held we say: “D latch is opaque” When CLK = 1 output follows the input we say: “D latch is transparent” Figure 3.7 D latch: (a) schematic, (b) truth table, (c) symbol

Effects of Transparency Output of latch may feed back May cause/allow further state changes Behavior depends on actual gate delays Want to change latch state only once Behavior should depend only on logical values

Toll Booth Analogy

Flakey Control Systems Here’s a strategy for saving 2 bucks the next time you find yourself at a toll booth!

Flakey Control Systems Here’s a strategy for saving 2 bucks the next time you find yourself at a toll booth!

Flakey Control Systems Here’s a strategy for saving 2 bucks the next time you find yourself at a toll booth! WARNING: DON’T try this At home!

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time.

Escapement Strategy The Solution: Add two gates and only open one at a time. Key Idea: At no time is there an open path through both gates…

Reminder: Effects of Transparency Output of latch may feed back May cause/allow further state changes Behavior depends on actual gate delays Want to change latch state only once Behavior should depend only on logical values

Solution to Transparency: Flip-Flops Ensure output changes only once per clock cycle Master-Slave construction Use a sequence of two latches

D Flip-Flop (Master-Slave Flip-Flop) Either Master (L1) or Slave (L2) is enabled, not both Master typically controlled by CLK’ and slave by CLK positive edge-triggered example on right Another common form has master controlled by CLK and slave by CLK’ negative edge-triggered Figure 3.8 D flip-flop: (a) schematic, (b) symbol, (c) condensed symbol

D Flip-Flop: Operation Edge-triggered when CLK goes from 0 to 1 output Q is updated once to the input D value all other times, output is held Why? master latch is transparent when CLK=0 the last value of D that goes through to N1 is when CLK goes to 1 slave latch is transparent when CLK=1 the value that goes through is N1 i.e., last value of D just before CLK goes to 1 Figure 3.8 D flip-flop: (a) schematic, (b) symbol, (c) condensed symbol

Register Simply multi-bit flip-flops N flip-flops stacked on top of each other = N-bit Register Figure 3.9 A 4-bit register: (a) schematic and (b) symbol

Adding More Control Inputs: Enable determines whether new data from input is captured on next clock edge, or ignored 2 implementations (first one better) when EN=0, old value cycles back when EN=0, clock tick doesn’t reach the flip-flop messing with clock is messy! Figure 3.10 Enabled flip-flop: (a, b) schematics, (c) symbol

Adding More Control Inputs: Reset Reset (synchronous) if RESET=1 on next clock tick, stored value is changed to 0 alternatively, if “Preset” or “Set” is used on next clock tick, stored value changed to 1 Figure 3.11 Synchronously resettable flip-flop: (a) schematic, (b, c) symbols

Adding More Control Inputs: Reset Asynchronous Reset stored value is reset immediately if RESET=1 stored value is changed to 0 does not wait for a clock tick requires modification to internal structure of latches of the flip-flop design not discussed in class, but may be a fun exercise for you!

Latch and Flip-Flop comparison is transparent throughout the interval CLK=1 all input changes during this time go through! Flip-Flop only copies input to output at discrete instants last input D just before clock tick go through

Counters Increments on each clock edge Used to cycle through numbers For example, 000, 001, 010, 011, 100, 101, 110, 111, 000, 001… Not necessarily binary Example uses: Digital clock displays Program counter

Verilog design patterns for sequential logic

Verilog for Sequential One option is to use structural Verilog Can use latches and flip-flops from library And connect them using wires Alternative: Use behavioral Verilog more productive to write behavioral description if you follow the templates provided, the synthesis tool can infer sequential logic

Logic (logic) Data Type Like wire but value is retained over time IF NEEDED: causes latch/flipflop to be synthesized if SystemVerilog clearly describes a combinational block combinational circuit is synthesized, and output type becomes wires if SystemVerilog describes a value that needs to be “held” a latch or flipflop is synthesized Difference between wire and logic: wire must be continuously assigned (using assign) only creates combinational logic for the wire logic can be intermittently updated value is held or memorized between updates but… “intermittent” includes “continuous” as a special case: no hold periods between updates

wire vs. logic a signal of type wire must be continuously assigned since it cannot have memory wire z; assign z = a&b | c&d; // combinational func wire zz = a&b | c&d; // shorter form logic can be intermittently updated holds its value between updates must specify the discrete events when updates occur logic [3:0] z = 0; always_ff @(posedge clock) z <= z + 1; // sequential func

wire vs. logic logic can be intermittently updated holds its value between updates must specify the discrete events when updates occur Example: counter logic [3:0] z = 0; always_ff @(posedge clock) z <= z + 1; // sequential func Example: stimulus in tester logic [31:0] A = 0; initial begin #10 A = 1; // discrete time instants #10 A = 2; … end

wire vs. logic As a special case: “intermittent” includes “continuous” logic can also be assigned logic zz; assign zz = a&b | c&d; // zz becomes a wire update instants are implicitly defined whenever a or b or c or d changes value  update zz since updates occur whenever inputs change, SystemVerilog infers a combinational circuit with no need for latches/flipflops

Always Block Example always_ff @ ( sensitivity list ) statement; Sensitivity list determines when statements are evaluated Could think of it as “statement is evaluated whenever one of values in sensitivity list changes” Example next slide

Synthesize a Flip-Flop module flop (   input wire C, D,   output logic Q // Q needs 1 bit of storage );   always_ff @(posedge C) // here’s how Q is updated       Q <= D; endmodule negedge also possible Behavioral description: always_ff @(posedge C)  whenever C transitions from 0 to 1a Q <= D;  output Q is updated to input D

Blocking vs. Non-blocking Assignment Blocking assignments: Equal sign indicates blocking statements B = A; C = B; Result: new contents of B are in C, so all have contents of A Non-blocking assignments: RHS of all <= lines within a begin-end block are evaluated in parallel, then assigned to LHS signals in parallel B <= A; C <= B; Result: new B is the value of A, but new C is the old B!

This is Not Software! Don’t assign to same signal in more than one always_ff block The always_ff blocks are concurrent Doesn’t make sense to set a flipflop from two different inputs For sequential logic: Use only non-blocking assignments you usually don’t mean one-by-one execution anyway yields the design pattern that is recognized by the compiler each logic on the LHS becomes a flip-flop/register each RHS becomes the input D to the flipflop sensitivity list (posedge clock) determines the clock signal enables/resets are also inferred if described But for testers: Blocking assignments are more convenient!

Verilog template: Synchronous Reset always_ff @(posedge CLK) begin if (RESET) state <= 0; else state <= D; end OR state <= RESET? 0 : D; Remember: This is just a template that the SystemVerilog compiler recognizes

Verilog template: Asynchronous Reset always_ff @(posedge CLK, posedge RESET) begin if (RESET) state <= 0; else state <= D; end OR state <= RESET? 0 : D; Remember: This is just a template that the SystemVerilog compiler recognizes

Verilog template: Counter module #(parameter N=32) counter( input wire CLK, Reset, output logic [N-1:0] Q ); always_ff @(posedge CLK) Q <= Reset ? 0 : Q + 1; endmodule

Simulation vs. Synthesis If you don’t initialize flipflops/registers in your circuits, simulator will complain many values will be X Electronics will work OK each flipflop in actual circuit will “wake up” to a 0 or 1 value

SystemVerilog Syntax: Initialization Can initialize flipflops/registers at declaration logic onebit = 1’b 0; logic [3:0] fourbits = 4’b 1011; logic [23:0] cnt = 0; // widths default to 32 bits // and are padded // or truncated (keep LSBs) DO NOT initialize combinational logic! initial values of a combinational circuit are determined solely by the initial values of its inputs logic z = 1’b 0; // should NOT initialize! assign z = x & y; // a combinational func

SystemVerilog Syntax: Initialization Do not confuse initialization with shorter form of assignment wire A = B | C; // short form is equivalent to: wire A; // type declaration AND assign A = B | C; // continuous assignment But… logic A = B | C; // is initialization ONLY update behavior still needs to be described, e.g.: always_ff @(posedge clock) A <= D^E;

Summary Today Looked at basic latches Flip-flops Verilog for sequential circuits Simple counter

Read Textbook Ch. 3.1-3.3 and Ch. 5.4.1 for today Ch. 3.4-3.5 for next class Next Topic: State Machines