We think you have liked this presentation. If you wish to download it, please recommend it to your friends in any social system. Share buttons are a little bit lower. Thank you!
Presentation is loading. Please wait.
Published byCaroline Steady
Modified about 1 year ago
Copyright © 2007 Elsevier4- Sequential Logic in Verilog Taken From Digital Design and Computer Architecture David Money Harris and Sarah L. Harris
Copyright © 2007 Elsevier4- Sequential Logic Verilog uses certain idioms to describe latches, flip-flops and FSMs Other coding styles may simulate correctly but produce incorrect hardware
Copyright © 2007 Elsevier4- Always Statement General Structure: (sensitivity list) statement; Whenever the event in the sensitivity list occurs, the statement is executed
Copyright © 2007 Elsevier4- D Flip-Flop module flop(input clk, input [3:0] d, output reg [3:0] q); (posedge clk) q <= d; // pronounced “q gets d” endmodule Any signal 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.
Copyright © 2007 Elsevier4- module flopr(input clk, input reset, input [3:0] d, output reg [3:0] q); // synchronous reset (posedge clk) if (reset) q <= 4'b0; else q <= d; endmodule Resettable D Flip-Flop
Copyright © 2007 Elsevier4- module flopr(input clk, input reset, input [3:0] d, output reg [3:0] q); // asynchronous reset (posedge clk, posedge reset) if (reset) q <= 4'b0; else q <= d; endmodule Resettable D Flip-Flop
Copyright © 2007 Elsevier4- module flopren(input clk, input reset, input en, input [3:0] d, output reg [3:0] q); // asynchronous reset and enable (posedge clk, posedge reset) if (reset) q <= 4'b0; else if (en) q <= d; endmodule D Flip-Flop with Enable
Copyright © 2007 Elsevier4- module latch(input clk, input [3:0] d, output reg [3:0] q); (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. So if your synthesized hardware has latches in it, this indicates an error. Latch
Copyright © 2007 Elsevier4- 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!)
Copyright © 2007 Elsevier4- 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); // need begin/end because there is begin // 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.
Copyright © 2007 Elsevier4- Combinational Logic using assign (from Lecture 4)Lecture 4 module gates(input [3:0] a, b, output [3:0] y1, y2, y3, y4, y5); /* Five different two-input logic gates acting on 4 bit busses */ assign y1 = a & b; // AND assign y2 = a | b; // OR assign y3 = a ^ b; // XOR assign y4 = ~(a & b); // NAND assign y5 = ~(a | b); // NOR endmodule
7 Segment Display Copyright © 2007 Elsevier4-
7 Segment Display Design Copyright © 2007 Elsevier4-
7 Segment Display Schematic Copyright © 2007 Elsevier4-
Copyright © 2007 Elsevier4- Combinational Logic using case module sevenseg(input [3:0] data, output reg [6:0] segments); 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
Copyright © 2007 Elsevier4- 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.
Copyright © 2007 Elsevier4- Combinational Logic using casez module priority_casez(input [3:0] a, output reg [3:0] y); 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 endmodule
Copyright © 2007 Elsevier4- Blocking vs. Nonblocking Assignments <= is a “nonblocking assignment” –Occurs simultaneously with others = is a “blocking assignment” –Occurs in the order it appears in the file // Good synchronizer using // nonblocking assignments module syncgood(input clk, input d, output reg q); reg n1; clk) begin n1 <= d; // nonblocking q <= n1; // nonblocking end endmodule // Bad synchronizer using // blocking assignments module syncbad(input clk, input d, output reg q); reg n1; clk) begin n1 = d; // blocking q = n1; // blocking end endmodule
Copyright © 2007 Elsevier4- Rules for Signal Assignment Use clk) and nonblocking assignments (<=) to model synchronous sequential logic (posedge clk) q <= d; // nonblocking Use continuous assignments (assign …)to model simple combinational logic. assign y = a & b; Use (*) 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.
Copyright © 2007 Elsevier4- Finite State Machines (FSMs) Three blocks: –next state logic –state register –output logic
Copyright © 2007 Elsevier4- The double circle indicates the reset state FSM Example: Divide by 3
Copyright © 2007 Elsevier4- FSM in Verilog: Divide by 3 module divideby3FSM (input clk, input reset, output q); reg [1:0] state, nextstate; parameter S0 = 2'b00; parameter S1 = 2'b01; parameter S2 = 2'b10; // state register (posedge clk, posedge reset) if (reset) state <= S0; else state <= nextstate; // next state logic (*) case (state) S0: nextstate = S1; S1: nextstate = S2; S2: nextstate = S0; default: nextstate = S0; endcase // output logic assign q = (state == S0); endmodule
Copyright © 2007 Elsevier Moore vs. Mealy FSM Alyssa P. Hacker has a snail that crawls down a paper tape with 1’s and 0’s on it. The snail smiles whenever the last four digits it has crawled over are Design Moore and Mealy FSMs of the snail’s brain.
Snail Moore Machine snailMoore.v Copyright © 2007 Elsevier4-
- Verilog Tutorial Part - 2 Digital System Design-II (CSEB312)
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.
The Design Process, RTL, Netlists, and Verilog Erik Seligman CS 510, Lecture 3, January 2009.
HDL Programming Fundamentals UNIT 8: Synthesis Basics 10.1 Highlights of SYNTHESIS Facts Synthesis is mapping between the simulation (software) domain.
Giuseppe De Robertis - INFN Sez. di Bari 1 SEU – SET test structures.
HDL Programming Fundamentals UNIT 2: Data Flow description OBJECTIVES Understand the concept of data flow description Identify the basic statements and.
Recap : Always block module and_gate (out, in1, in2); inputin1, in2; outputout; regout; or in2) begin out = in1 & in2; end endmodule zAlways.
HDL Programming Fundamentals 6.1 Highlights of Procedures, Tasks, and Functions Facts Procedures, Tasks, and Functions are HDL tools to optimize the style.
HDL Programming Fundamentals 4.1 Highlights of Structural Description UNIT 4: Structural Description Structural description simulates the system by describing.
EDA Lab. Dept. of Computer Engineering C. N. U. 1 SYNTHESIS Issues in synthesizable VHDL descriptions (from VHDL Answers to FAQ by Ben Cohen)
ASIC 121: Practical VHDL Digital Design for FPGAs Tutorial 2 October 4, 2006.
Chapter 3 Gate-Level Minimization. 3.1 Introduction The purposes of this chapter –To understand the underlying mathematical description and solution of.
- Verilog Tutorial Part - 1 Digital System Design-II (CSEB312)
06/10/071 Security System Using VHDL. 06/10/072 Project Members Amal Shanavas Aneez I Ijas Rahim Renjith S Menon Sajid S Chavady.
VHDL Design of Multifunctional RISC Processor on FPGA A.Girish Pawan Kumar V.Raghavendran S.Sudarsan V.Swaminathan.
Finite State Machine (FSM) Quando a sequencia das ações no seu projeto dependem do estado de um elemento sequüencial, uma máquina de estados finitos (FSM)
The Software Lifecycle. Example Problem: Update a Checkbook Write a program that allows the user to enter a starting balance, a transaction type, D or.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 10: Testing and Inspecting to Ensure High Quality.
Slide: 1 interra confidential Synthesis in EDA Flow by: Saikat Bandyopadhyay © Interra Systems India Pvt Ltd.
©2008 The McGraw-Hill Companies, Inc. All rights reserved. Digital Electronics Principles & Applications Seventh Edition Chapter 7 Flip-Flops Roger L.
D-Type Flip Flops Benchmark Companies Inc PO Box Aurora CO
©2004 Brooks/Cole FIGURES FOR CHAPTER 10 INTRODUCTION TO VHDL Click the mouse to move to the next page. Use the ESC key to exit this chapter. This chapter.
Chapter 4: Combinational Logic Dr Mohamed Menacer Taibah University
Flip-Flops Basic concepts. A. Yaicharoen2 Flip-Flops A flip-flop is a bi-stable device: a circuit having 2 stable conditions (0 or 1) A flip-flop circuit.
Non-synthesizability in Verilog Presented by Pradip Mukhopadhyay ISL-MOD3(E)PR3.
The Use of General Purpose Software as a Teaching Tool in Electronic Engineering Presenter:Martin R. Varley University of Central Lancashire, UK Co-Authors:Michael.
Latch versus Register Latch stores data when clock is low D Clk Q D Q Register stores data when clock rises Clk D D QQ.
P.Rajasekar & C.M.T.Karthigeyan Asst.Professor SRM University, Kattankulathur 1.
Log System Spec 1 Logical Systems Specification Module Two stages in the module – Stage 4 - Technical Systems Options – Stage 5 - Logical Design Performed.
Chapter 20- Embedded Systems Lecture 1. Topics covered Embedded systems design Architectural patterns Timing analysis Real-time operating systems.
© 2016 SlidePlayer.com Inc. All rights reserved.