Digital System Design-II (CSEB312)

Slides:



Advertisements
Similar presentations
Tutorial 2 Sequential Logic. Registers A register is basically a D Flip-Flop A D Flip Flop has 3 basic ports. D, Q, and Clock.
Advertisements

FSM and Efficient Synthesizable FSM Design using Verilog
//HDL Example 8-2 // //RTL description of design example (Fig.8-9) module Example_RTL (S,CLK,Clr,E,F,A);
Counters Discussion D8.3.
1 COMP541 More on State Machines and Video Scanout Montek Singh Feb 13, 2007.
Verilog in transistor level using Microwind
CDA 3100 Recitation Week 11.
©2004 Brooks/Cole FIGURES FOR CHAPTER 17 VHDL FOR SEQUENTIAL LOGIC Click the mouse to move to the next page. Use the ESC key to exit this chapter. This.
Sequential Logic in Verilog
Synchronous Sequential Logic
EE 361 Fall 2003University of Hawaii1 Hardware Design Tips EE 361 University of Hawaii.
Combinational Logic.
Table 7.1 Verilog Operators.
ECE 551 Digital System Design & Synthesis Lecture 06 Loops Non-synthesizable Constructs File I/O.
CSE 201 Computer Logic Design * * * * * * * Verilog Modeling
Verilog. 2 Behavioral Description initial:  is executed once at the beginning. always:  is repeated until the end of simulation.
FSM Revisit Synchronous sequential circuit can be drawn like below  These are called FSMs  Super-important in digital circuit design FSM is composed.
TOPIC : Finite State Machine(FSM) and Flow Tables UNIT 1 : Modeling Module 1.4 : Modeling Sequential circuits.
Give qualifications of instructors: DAP
How to get a Circuit in verilog converted to hspice, connected to the micron package models, and simulating in hspice and hsimplus.
2/9/20031 ECE 551: Digital System Design & Synthesis Lecture Set 4 4.1: Verilog – Procedural Assignments &Scheduling Semantics 4.2: Verilog – More Behavioral.
Spring 2009W. Rhett DavisNC State UniversityECE 406Slide 1 ECE 406 – Design of Complex Digital Systems Lecture 8: Sequential Design Spring 2009 W. Rhett.
Digital Logic Design Brief introduction to Sequential Circuits and Latches.
 HDLs – Verilog and Very High Speed Integrated Circuit (VHSIC) HDL  „ Widely used in logic design  „ Describe hardware  „ Document logic functions.
CS 151 Digital Systems Design Lecture 37 Register Transfer Level
Digital System Design by Verilog University of Maryland ENEE408C.
Verilog Sequential Circuits Ibrahim Korpeoglu. Verilog can be used to describe storage elements and sequential circuits as well. So far continuous assignment.
Arbitrary Waveform Discussion 12.2 Example 34. Recall Divide-by-8 Counter Use q2, q1, q0 as inputs to a combinational circuit to produce an arbitrary.
2-to-1 Multiplexer: if Statement Discussion D7.1 Example 4.
Advanced Verilog EECS 270 v10/23/06.
D Flip-Flops in Verilog Discussion 10.3 Example 27.
Overview Logistics Last lecture Today HW5 due today
Sequential Logic in Verilog
Introduction Verilog is a HARDWARE DESCRIPTION LANGUAGE (HDL) A hardware description language is a language or means used to describe or model a digital.
Chapter 11: System Design Methodology Digital System Designs and Practices Using Verilog HDL and 2008, John Wiley11-1 Ders 8: FSM Gerçekleme ve.
1 COMP541 Sequential Circuits Montek Singh Feb 1, 2012.
Anurag Dwivedi. Basic Block - Gates Gates -> Flip Flops.
Behavioral Modelling - 1. Verilog Behavioral Modelling Behavioral Models represent functionality of the digital hardware. It describes how the circuit.
Why segregate blocking and non-blocking assignments to separate always blocks? always blocks start when triggered and scan their statements sequentially.
Introduction to ASIC flow and Verilog HDL
Multiplexers Section Topics Multiplexers – Definition – Examples – Verilog Modeling.
Chapter 11: System Design Methodology Digital System Designs and Practices Using Verilog HDL and 2008, John Wiley11-1 Chapter 11: System Design.
Exp#7 Finite State Machine Design in Verilog COE203 Digital Logic Laboratory Dr. Ahmad Almulhem KFUPM Spring 2009.
Overview Logistics Last lecture Today HW5 due today
Supplement on Verilog FF circuit examples
Adapted from Krste Asanovic
Last Lecture Talked about combinational logic always statements. e.g.,
EMT 351/4 DIGITAL IC DESIGN Week # Synthesis of Sequential Logic 10.
Introduction to Advanced Digital Design (14 Marks)
Behavioral Modeling Structural modeling Behavioral modeling
Learning Outcome By the end of this chapter, students are expected to be able to: Design State Machine Write Verilog State Machine by Boolean Algebra and.
TODAY’S OUTLINE Procedural Assignments Verilog Coding Guidelines
Sequential logic circuits
Why segregate blocking and non-blocking assignments to separate always blocks? always blocks start when triggered and scan their statements sequentially.
Digital Logic Design Digital Design, M. Morris Mano and Michael D
HDL Compiler Unsupport (Do NOT use in your verilog code)
SYNTHESIS OF SEQUENTIAL LOGIC
CS341 Digital Logic and Computer Organization F2003
Computer Architecture
FSM MODELING MOORE FSM MELAY FSM. Introduction to DIGITAL CIRCUITS MODELING & VERIFICATION using VERILOG [Part-2]
Topics Verilog styles for sequential machines. Flip-flops and latches.
Dr. Tassadaq Hussain Introduction to Verilog – Part-3 Expressing Sequential Circuits and FSM.
The Verilog Hardware Description Language
SYEN 3330 Digital Systems Chapter 6 – Part 3 SYEN 3330 Digital Systems.
332:437 Lecture 9 Verilog Example
332:437 Lecture 9 Verilog Example
Why segregate blocking and non-blocking assignments to separate always blocks? always blocks start when triggered and scan their statements sequentially.
332:437 Lecture 9 Verilog Example
Presentation transcript:

Digital System Design-II (CSEB312) Verilog Tutorial Part - 2

Topics Sequential Logic More Combinational Logic Finite State Machines

Sequential Logic Verilog uses certain idioms to synthesize into latches, flip-flops and FSMs Other coding styles may simulate correctly but produce incorrect hardware

Always Statement General Structure: always @ (sensitivity list) statement; Whenever the event in the sensitivity list occurs, the statement is executed

D Flip-Flop module flop(clk, d, q); input clk; input [3:0] d; output [3:0] q; reg [3:0] q; always @ (posedge clk) begin q <= d; // read as “q gets d” end endmodule Any output assigned in an always statement must be declared reg. In this case q is declared as reg Beware: A variable declared reg is not necessarily a registered output. We will show examples of this later.

Resettable D Flip-Flop module flopr(input clk, input reset, input [3:0] d, output reg [3:0] q); // synchronous reset always @ (posedge clk) begin if (reset) begin q <= 4'b0; end else begin q <= d; endmodule

Resettable D Flip-Flop module flopr(input clk, input reset, input [3:0] d, output reg [3:0] q); // asynchronous reset always @ (posedge clk, posedge reset) begin if (reset) q <= 4'b0; else q <= d; end endmodule

D Flip-Flop with Enable module dff_en(input clk, input reset, input en, input [3:0] d, output reg [3:0] q); // asynchronous reset and enable always @ (posedge clk, posedge reset) if (reset) q <= 4'b0; else if (en) q <= d; endmodule

Latch module latch(input clk, input [3:0] d, output reg [3:0] q); always @ (clk, d) if (clk) q <= d; endmodule Warning: We won’t use latches in this course, but you might write code that inadvertently implies a latch.

Other Behavioral Statements Statements that must be inside always statements: if / else case, casez Reminder: Variables assigned in an always statement must be declared as reg (even if they’re not actually registered!)

Combinational Logic using always // combinational logic using an always statement module gates(input [3:0] a, b, output reg [3:0] y1, y2, y3, y4, y5); always @ (*) begin // need begin/end because there is // more than one statement in always y1 = a & b; // AND y2 = a | b; // OR y3 = a ^ b; // XOR y4 = ~(a & b); // NAND y5 = ~(a | b); // NOR end endmodule This hardware could be described with assign statements using fewer lines of code, so it’s better to use assign statements in this case.

Combinational Logic using case module sevenseg(input [3:0] data, output reg [6:0] segments); always @(*) case (data) // _abc_defg 0: segments = 7'b111_1110; 1: segments = 7'b011_0000; 2: segments = 7'b110_1101; 3: segments = 7'b111_1001; 4: segments = 7'b011_0011; 5: segments = 7'b101_1011; 6: segments = 7'b101_1111; 7: segments = 7'b111_0000; 8: segments = 7'b111_1111; 9: segments = 7'b111_1011; default: segments <= 7'b000_0000; // required endcase endmodule

Combinational Logic using case In order for a case statement to imply combinational logic, all possible input combinations must be described by the HDL. Remember to use a default statement when necessary.

Combinational Logic using casez module priority_casez(input [3:0] a, output reg [3:0] y); always @(*) begin casez(a) 4'b1???: y = 4'b1000; // ? = don’t care 4'b01??: y = 4'b0100; 4'b001?: y = 4'b0010; 4'b0001: y = 4'b0001; default: y = 4'b0000; endcase end endmodule

Blocked vs. Non-Blocked Assignments Blocked Assignment: One statement completes before next one completed. Statements are sequential so the statement order makes a difference. Use = operator Non-Blocked Assignment: Statements execute in parallel (so the order does not affect the outcome) Use <= operator

Blocked vs. Non-Blocked Assignments Example: Shift Register (ref p 159) – Using blocked assignment statements module shift_reg(E, A, rst, clk); output E; input A, rst, clk; reg A, B, C, D; always @ (posedge clk or posedge rst) begin if (rst) begin A=0; B=0; C=0; D=0; end else A = B; B = C; C = D; D = E; end # of if end // of always endmodule

Rules for Signal Assignment Use always @ (posedge clk) and nonblocking assignments to model synchronous sequential logic always @ (posedge clk) q <= d; // nonblocking Use continuous assignments to model simple combinational logic. assign y = a & b; Use always @ (*) and blocking assignments to model more complicated combinational logic where the always statement is helpful. Do not make assignments to the same signal in more than one always statement or continuous assignment statement.

Finite State Machines (FSMs) Finite state machines are Synchronous sequential circuits drawn in a form as shown below. The name FSM is used because k registers (sets of flip-flops) can have 2n states. An FSM has M inputs, N outputs, and k bits of states. FSM receives a clock and may be a reset also. On each clock edge, the FSM moves to the next state. Two types of FSMs are: Mealy and Moore.

Finite State Machines (FSMs) Besides registers, there are two combinational blocks in an FSM: Next state logic Output logic So in Verilog, we can three blocks of code next state logic state register output logic

FSM Example: Divide by 3 The double circle indicates the reset state

// ---- output logic ---- FSM in Verilog module divideby3FSM (input clk, input reset, output y); reg [1:0] state, nextstate; parameter S0 = 2'b00; parameter S1 = 2'b01; parameter S2 = 2'b10; // ---- state register ---- always @ (posedge clk, posedge reset) begin if (reset) state <= S0; else state <= nextstate; end end // always // ---- next state logic ---- always @ (*) begin case (state) S0: nextstate <= S1; S1: nextstate <= S2; S2: nextstate <= S0; default: nextstate <= S0; endcase end // always // ---- output logic ---- always (posedge clk) begin if (state = = S0) y = 1; else y = 0; endmodule