L5: Simple Sequential Circuits and Verilog

Similar documents
L5: Simple Sequential Circuits and Verilog

L5: Simple Sequential Circuits and Verilog

L5: Simple Sequential Circuits and Verilog

Sequential Logic. Use Explicit Port Declarations. Verilog Summary. Examples

Sequential Logic. Reminder: Lab #2 due Thursday Fall 2016 Lecture 4

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

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences

Sequential Logic. Reminder: Lab #2 due Thursday Fall 2017 Lecture 4

Modeling Sequential Circuits in Verilog

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

DIGITAL SYSTEM DESIGN

Logic Circuits II ECE 2411 Thursday 4:45pm-7:20pm. Lecture 3

EECS 270 Verilog Reference: Sequential Logic

N-input EX-NOR gate. N-output inverter. N-input NOR gate

EECS150 - Digital Design Lecture 20 - Finite State Machines Revisited

Lab 7 (Sections 300, 301 and 302) Prelab: Introduction to Verilog

Chapter 5 Registers & Counters

Digital Integrated Circuits

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

Sequential Logic Design

Ripple Counters. Lecture 30 1

Modeling Synchronous Logic Circuits. Debdeep Mukhopadhyay IIT Madras

Chapter 10. Counters (a short discussion)

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

Verilog Execution Semantics

HANSABA COLLEGE OF ENGINEERING & TECHNOLOGY (098) SUBJECT: DIGITAL ELECTRONICS ( ) Assignment

Writing Circuit Descriptions 8

EN164: Design of Computing Systems Lecture 07: Lab Foundations / Verilog 3

University of Technology

Lab 7 (All Sections) Prelab: Introduction to Verilog

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

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

Digital Design with SystemVerilog

Sequential Circuit Design: Principle

Amrita Vishwa Vidyapeetham. EC429 VLSI System Design Answer Key

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

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

Outcomes. Spiral 1 / Unit 6. Flip Flops FLIP FLOPS AND REGISTERS. Flip flops and Registers. Outputs only change once per clock period

EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis

Lecture 12 VHDL Synthesis

ECEN 468 Advanced Logic Design

C A R L E T O N U N I V E R S I T Y. FINAL EXAMINATION April Duration: 3 Hours No. of Students: 108

Spiral 1 / Unit 6. Flip-flops and Registers

Lecture 15: System Modeling and Verilog

Outcomes. Spiral 1 / Unit 6. Flip Flops FLIP FLOPS AND REGISTERS. Flip flops and Registers. Outputs only change once per clock period

Quick Introduction to SystemVerilog: Sequental Logic

FSM and Efficient Synthesizable FSM Design using Verilog

In this lecture, we will go beyond the basic Verilog syntax and examine how flipflops and other clocked circuits are specified.

Chapter 9: Sequential Logic Modules

L11: Major/Minor FSMs

Verilog Fundamentals. Shubham Singh. Junior Undergrad. Electrical Engineering

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

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

Sequential Circuit Design: Principle

Synthesizable Verilog

Lecture 32: SystemVerilog

EE 231 Fall EE 231 Homework 8 Due October 20, 2010

Last Lecture. Talked about combinational logic always statements. e.g., module ex2(input logic a, b, c, output logic f); logic t; // internal signal

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

VERILOG: FLIP-FLOPS AND REGISTERS

Latch Based Design (1A) Young Won Lim 2/18/15

ECE 331: N0. Professor Andrew Mason Michigan State University. Opening Remarks

Verilog for High Performance

SHRI ANGALAMMAN COLLEGE OF ENGINEERING. (An ISO 9001:2008 Certified Institution) SIRUGANOOR, TIRUCHIRAPPALLI

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

MCMASTER UNIVERSITY EMBEDDED SYSTEMS

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

Date Performed: Marks Obtained: /10. Group Members (ID):. Experiment # 11. Introduction to Verilog II Sequential Circuits

Verilog for Synthesis Ing. Pullini Antonio

Sequential Logic Blocks

Department of Computer Science and Electrical Engineering. CMPE 415 Verilog Events Timing and Testbenches Prof. Ryan Robucci

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

Code No: R Set No. 1

Recommended Design Techniques for ECE241 Project Franjo Plavec Department of Electrical and Computer Engineering University of Toronto

Logic Synthesis. EECS150 - Digital Design Lecture 6 - Synthesis

Synthesis of Combinational and Sequential Circuits with Verilog

Nanosistemų programavimo kalbos 5 paskaita. Sekvencinių schemų projektavimas

Laboratory Exercise 3

Chapter 9: Sequential Logic Modules

KINGS COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING QUESTION BANK NAME OF THE SUBJECT: EE 2255 DIGITAL LOGIC CIRCUITS

- 1 of 18 - The Verilog Hardware Description Language - A Behavioural View Overview. The Behavioural Model

EECS150 - Digital Design Lecture 10 Logic Synthesis

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

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

CS/EE Homework 7 Solutions

Verilog Behavioral Modeling

CSE140L: Components and Design Techniques for Digital Systems Lab

R10. II B. Tech I Semester, Supplementary Examinations, May

Why Should I Learn This Language? VLSI HDL. Verilog-2

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

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

Behavioral Modeling and Timing Constraints

CSE140L: Components and Design

Sequential Logic - Module 5

Mealy and Moore examples

register:a group of binary cells suitable for holding binary information flip-flops + gates

Introduction. Purpose. Intended Audience. Conventions. Close

Lecture 4: Modeling in VHDL (Continued ) EE 3610 Digital Systems

Chapter 4 :: Topics. Introduction. SystemVerilog. Hardware description language (HDL): allows designer to specify logic function only.

Graduate Institute of Electronics Engineering, NTU Design of Datapath Controllers

Transcription:

L5: Simple Sequential Circuits and Verilog Acknowledgements: Nathan Ickes and Rex Min L5: 6. Spring 27 Introductory igital Systems Laboratory

Key Points from L4 (Sequential Blocks) Classification: Latch: level sensitive (positive latch passes input to output on high phase, hold value on low phase) Register: edge-triggered (positive register samples input on rising edge) Flip-Flop: any element that has two stable states. uite often Flip-flop also used denote an (edge-triggered) register Positive Latch Positive Register Clk Clk Latches are used to build Registers (using the Master-Slave Configuration), but are almost NEVER used by itself in a standard digital design flow. uite often, latches are inserted in the design by mistake (e.g., an error in your Verilog code). Make sure you understand the difference between the two. Several types of memory elements (SR, JK, T, ). We will most commonly use the -Register, though you should understand how the different types are built and their functionality. L5: 6. Spring 27 Introductory igital Systems Laboratory 2

System Timing Parameters In Combinational Logic Clk Register Timing Parameters T cq : worst case rising edge clock to q delay T cq, cd : contamination or minimum delay from clock to q T su : setup time T h : hold time Clk Logic Timing Parameters T logic : worst case delay through the combinational logic network T logic,cd : contamination or minimum delay through logic network L5: 6. Spring 27 Introductory igital Systems Laboratory 3

System Timing (I): Minimum Period CLout In Combinational Logic Clk Clk CLK T h T h IN T su T cq T su T cq FF T cq,cd T logic T cq,cd CLout T l,cd T su2 T > T cq + T logic + T su L5: 6. Spring 27 Introductory igital Systems Laboratory 4

System Timing (II): Minimum elay CLout In Combinational Logic Clk Clk CLK IN FF CLout T su T h T cq,cd T h T l,cd T cq,cd + T logic,cd > T hold L5: 6. Spring 27 Introductory igital Systems Laboratory 5

The Sequential always Block Edge-triggered circuits are described using a sequential always block Combinational module combinational(a, b, sel, out); input a, b; input sel; output out; reg out; always @ (a or b or sel) begin if (sel) out = a; else out = b; module Sequential module sequential(a, b, sel, clk, out); input a, b; input sel, clk; output out; reg out; always @ (posedge clk) begin if (sel) out <= a; else out <= b; module a a b out b out sel sel clk L5: 6. Spring 27 Introductory igital Systems Laboratory 6

Importance of the Sensitivity List The use of posedge and negedge makes an always block sequential (edge-triggered) Unlike a combinational always block, the sensitivity list does determine behavior for synthesis! Flip-flop with synchronous clear module dff_sync_clear(d, clearb, clock, q); input d, clearb, clock; output q; reg q; always @ (posedge clock) begin if (!clearb) q <= 'b; else q <= d; module always block entered only at each positive clock edge Flip-flop with asynchronous clear module dff_async_clear(d, clearb, clock, q); input d, clearb, clock; output q; reg q; always @ (negedge clearb or posedge clock) begin if (!clearb) q <= b; else q <= d; module always block entered immediately when (active-low) clearb is asserted Note: The following is incorrect syntax: always @ (clear or negedge clock) If one signal in the sensitivity list uses posedge/negedge, then all signals must. Assign any signal or variable from only one always block, Be wary of race conditions: always blocks execute in parallel L5: 6. Spring 27 Introductory igital Systems Laboratory 7

Simulation (after Place and Route in Xilinx) FF with Synchronous Clear t c-q Clear on Clock Edge FF with Asynchronous Clear Clear happens on falling edge of clearb L5: 6. Spring 27 Introductory igital Systems Laboratory 8

Blocking vs. Nonblocking Assignments Verilog supports two types of assignments within always blocks, with subtly different behaviors. Blocking assignment: evaluation and assignment are immediate always @ (a or b or c) begin x = a b; y = a ^ b ^ c; z = b & ~c; always @ (a or b or c) begin x <= a b; y <= a ^ b ^ c; z <= b & ~c;. Evaluate a b, assign result to x 2. Evaluate a^b^c, assign result to y 3. Evaluate b&(~c), assign result to z Nonblocking assignment: all assignments deferred until all right-hand sides have been evaluated ( of simulation timestep). Evaluate a b but defer assignment of x 2. Evaluate a^b^c but defer assignment of y 3. Evaluate b&(~c) but defer assignment of z 4. Assign x, y, and z with their new values Sometimes, as above, both produce the same result. Sometimes, not! L5: 6. Spring 27 Introductory igital Systems Laboratory 9

Assignment Styles for Sequential Logic Flip-Flop Based igital elay Line clk in q q2 out Will nonblocking and blocking assignments both produce the desired result? module nonblocking(in, clk, out); input in, clk; output out; reg q, q2, out; always @ (posedge clk) begin q <= in; q2 <= q; out <= q2; module module blocking(in, clk, out); input in, clk; output out; reg q, q2, out; always @ (posedge clk) begin q = in; q2 = q; out = q2; module L5: 6. Spring 27 Introductory igital Systems Laboratory

Use Nonblocking for Sequential Logic always @ (posedge clk) begin q <= in; q2 <= q; out <= q2; At each rising clock edge, q, q2, and out simultaneously receive the old values of in, q, and q2. always @ (posedge clk) begin q = in; q2 = q; out = q2; At each rising clock edge, q = in. After that, q2 = q = in. After that, out = q2 = q = in. Therefore out = in. q q2 q q2 in out in out clk clk Blocking assignments do not reflect the intrinsic behavior of multi-stage sequential logic Guideline: use nonblocking assignments for sequential always blocks L5: 6. Spring 27 Introductory igital Systems Laboratory

Non-blocking Simulation Simulation Blocking Simulation L5: 6. Spring 27 Introductory igital Systems Laboratory 2

Use Blocking for Combinational Logic Blocking Behavior (Given) Initial Condition a changes; always block triggered x = a & b; y = x c; Nonblocking Behavior (Given) Initial Condition a changes; always block triggered x <= a & b; y <= x c; Assignment completion a b c x y a b c x y eferred x<= x<=, y<= a b c x y module blocking(a,b,c,x,y); input a,b,c; output x,y; reg x,y; always @ (a or b or c) begin x = a & b; y = x c; module module nonblocking(a,b,c,x,y); input a,b,c; output x,y; reg x,y; always @ (a or b or c) begin x <= a & b; y <= x c; module Nonblocking and blocking assignments will synthesize correctly. Will both styles simulate correctly? Nonblocking assignments do not reflect the intrinsic behavior of multi-stage combinational logic While nonblocking assignments can be hacked to simulate correctly (expand the sensitivity list), it s not elegant Guideline: use blocking assignments for combinational always blocks L5: 6. Spring 27 Introductory igital Systems Laboratory 3

The Asynchronous Ripple Counter A simple counter architecture uses only registers (e.g., 74HC393 uses T-register and negative edge-clocking) Toggle rate fastest for the LSB Count[] Count [3:] Count[] Count[2] Count[3] but ripple architecture leads to large skew between outputs Clock register set up to always toggle: i.e., T Register with T= Skew Count [3] Count [2] Count [] Count [] Clock L5: 6. Spring 27 Introductory igital Systems Laboratory 4

The Ripple Counter in Verilog Single Register with Asynchronous Clear: module dreg_async_reset (clk, clear, d, q, qbar); input d, clk, clear; output q, qbar; reg q; Count[] Count [3:] Count[] Count[2] Count[3] always @ (posedge clk or negedge clear) begin if (!clear) q <= 'b; else q <= d; assign qbar = ~q; module clk Countbar[] Countbar[] Countbar[2] Countbar[3] Structural escription of Four-bit Ripple Counter: module ripple_counter (clk, count, clear); input clk, clear; output [3:] count; wire [3:] count, countbar; dreg_async_reset bit(.clk(clk),.clear(clear),.d(countbar[]),.q(count[]),.qbar(countbar[])); dreg_async_reset bit(.clk(countbar[]),.clear(clear),.d(countbar[]),.q(count[]),.qbar(countbar[])); dreg_async_reset bit2(.clk(countbar[]),.clear(clear),.d(countbar[2]),.q(count[2]),.qbar(countbar[2])); dreg_async_reset bit3(.clk(countbar[2]),.clear(clear),.d(countbar[3]),.q(count[3]),.qbar(countbar[3])); module L5: 6. Spring 27 Introductory igital Systems Laboratory 5

Simulation of Ripple Effect L5: 6. Spring 27 Introductory igital Systems Laboratory 6

Logic for a Synchronous Counter Count (C) will retained by a Register Next value of counter (N) computed by combinational logic C3 C2 C N3 N2 N C3 N N2 C C C2 C3 N3 C C2 C2 C3 N := C N2 := C C2 + C C2 := C xor C2 N3 := C C2 C3 + C C3 + C2 C3 := C C2 C3 + (C + C2 ) C3 := (C C2) xor C3 CLK C C2 C3 From [Katz5] L5: 6. Spring 27 Introductory igital Systems Laboratory 7

The 7463 Catalog Counter Synchronous Load and Clear Inputs Positive Edge Triggered FFs Parallel Load ata from, C, B, A P, T Enable Inputs: both must be asserted to enable counting Ripple Carry Output (RCO): asserted when counter value is (conditioned by T); used for cascading counters 7 9 2 6 5 4 3 P T C B A 63 CLK LOA CLR RCO C B A 5 2 3 4 Synchronous CLR and LOA If CLRb = then <= Else if LOAb= then <= Else if P * T = then <= + Else <= 7463 Synchronous 4-Bit Upcounter L5: 6. Spring 27 Introductory igital Systems Laboratory 8

Inside the 7463 (Courtesy TI) - Operating Modes CLR =, LOA = : Clear takes precedence CLR =, LOA = : Parallel load from ATA A A B B C C L5: 6. Spring 27 Introductory igital Systems Laboratory 9

63 Operating Modes - II CLR =, LOA =, P T = : Counting inhibited CLR =, LOA =, P T = : Count enabled A NA B NB C NC N L5: 6. Spring 27 Introductory igital Systems Laboratory 2

Verilog Code for 63 Behavioral description of the 63 counter: module counter(lbar, CLRbar, P, T, CLK,, count, RCO); input Lbar, CLRbar, P, T, CLK; input [3:] ; output [3:] count; output RCO; reg [3:] ; always @ (posedge CLK) begin if (!CLRbar) <= 4'b; else if (!Lbar) <= ; else if (P && T) <= + ; priority logic for control signals 7 9 2 6 5 4 3 P T C B A 63 CLK LOA CLR RCO C B A 5 2 3 4 assign count = ; assign RCO = [3] & [2] & [] & [] & T; module RCO gated by T input L5: 6. Spring 27 Introductory igital Systems Laboratory 2

Simulation Notice the glitch on RCO! L5: 6. Spring 27 Introductory igital Systems Laboratory 22

Output Transitions Any time multiple bits change, the counter output needs time to settle. Even though all flip-flops share the same clock, individual bits will change at different times. Clock skew, propagation time variations Can cause glitches in combinational logic driven by the counter The RCO can also have a glitch. Care is required of the Ripple Carry Output: It can have glitches: Any of these transition paths are possible! L5: 6. Spring 27 Introductory igital Systems Laboratory 23

Cascading the 7463: Will this Work? V bits -3 bits 4-7 bits 8- P CL T A B C 63 RCO L A B C P CL T A B C 63 RCO L A B C P CL T A B C 63 RCO L A B C V 63 is enabled only if P and T are high CLK When first counter reaches = 4 b, its RCO goes high for one cycle When RCO goes high, next counter is enabled (P T = ) So far, so good...then what s wrong? L5: 6. Spring 27 Introductory igital Systems Laboratory 24

Incorrect Cascade for 7463 Everything is fine up to 8 b: V P CL T A B C T A B C RCO P RCO 63 63 L A B C CL L A B C P CL T A B C 63 RCO L A B C V CLK Problem at 8 b: one of the RCOs is now stuck high for 6 cycles! V P CL T A B C T A B C RCO P RCO 63 63 L A B C CL L A B C P CL T A B C 63 RCO L A B C V CLK L5: 6. Spring 27 Introductory igital Systems Laboratory 25

Correct Cascade for 7463 Master enable P A B C P A B C T CL L RCO A B C T CL L RCO A B C P input takes the master enable T input takes the ripple carry assign RCO = [3] & [2] & [] & [] & T; L5: 6. Spring 27 Introductory igital Systems Laboratory 26

Summary Use blocking assignments for combinational always blocks Use non-blocking assignments for sequential always blocks Synchronous design methodology usually used in digital circuits Single global clocks to all sequential elements Sequential elements almost always of edge-triggered flavor (design with latches can be tricky) Today we saw simple examples of sequential circuits (counters) L5: 6. Spring 27 Introductory igital Systems Laboratory 27