EITF35: Introduction to Structured VLSI Design

Similar documents
EITF35: Introduction to Structured VLSI Design

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

Sequential Circuit Design: Principle

Sequential Circuit Design: Principle

VHDL And Synthesis Review

Sequential Logic - Module 5

In our case Dr. Johnson is setting the best practices

Part 4: VHDL for sequential circuits. Introduction to Modeling and Verification of Digital Systems. Memory elements. Sequential circuits

VHDL. VHDL History. Why VHDL? Introduction to Structured VLSI Design. Very High Speed Integrated Circuit (VHSIC) Hardware Description Language

COE 405, Term 062. Design & Modeling of Digital Systems. HW# 1 Solution. Due date: Wednesday, March. 14

Sequential Statement

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

Two HDLs used today VHDL. Why VHDL? Introduction to Structured VLSI Design

VHDL for Synthesis. Course Description. Course Duration. Goals

SEQUENTIAL CIRCUIT DESIGN: PRINCIPLE

Lecture 12 VHDL Synthesis

VHDL in 1h. Martin Schöberl

CSE 260 Introduction to Digital Logic and Computer Design. Exam 1. Your name 2/13/2014

DESCRIPTION OF DIGITAL CIRCUITS USING VHDL

Timing in synchronous systems

[VARIABLE declaration] BEGIN. sequential statements

VHDL Examples Mohamed Zaky

Schedule. ECE U530 Digital Hardware Synthesis. Rest of Semester. Midterm Question 1a

Verilog for High Performance

Assignment. Last time. Last time. ECE 4514 Digital Design II. Back to the big picture. Back to the big picture

The CPU Bus : Structure 0

EITF35: Introduction to Structured VLSI Design

Inferring Storage Elements

Overview. Ram vs Register. Register File. Introduction to Structured VLSI Design. Recap Operator Sharing FSMD Counters.

FSM Components. FSM Description. HDL Coding Methods. Chapter 7: HDL Coding Techniques

Modeling Synchronous Logic Circuits. Debdeep Mukhopadhyay IIT Madras

Case Study AM2901. Hierarchy in Large Designs

Used to perform operations many times. See previous Parallel to Serial Example

VHDL: RTL Synthesis Basics. 1 of 59

Lecture 9. VHDL, part IV. Hierarchical and parameterized design. Section 1 HIERARCHICAL DESIGN

Hardware Description Languages. Modeling Complex Systems

קורס VHDL for High Performance. VHDL

Midterm Exam Thursday, October 24, :00--2:15PM (75 minutes)

COVER SHEET: Total: Regrade Info: 5 (14 points) 7 (15 points) Midterm 1 Spring 2012 VERSION 1 UFID:

VHDL: Code Structure. 1

OUTLINE SYSTEM-ON-CHIP DESIGN. GETTING STARTED WITH VHDL September 3, 2018 GAJSKI S Y-CHART (1983) TOP-DOWN DESIGN (1)

Luleå University of Technology Kurskod SMD152 Datum Skrivtid

Computer-Aided Digital System Design VHDL

Lecture 7. Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits. Hardware Description Language)

ECE 545 Lecture 7. Modeling of Circuits with a Regular Structure. Aliases, Attributes, Packages. Mixing Design Styles. George Mason University

Control and Datapath 8

DIGITAL LOGIC WITH VHDL (Fall 2013) Unit 3

Summary of FPGA & VHDL

DIGITAL LOGIC DESIGN VHDL Coding for FPGAs Unit 3

ECE 448 Lecture 4. Sequential-Circuit Building Blocks. Mixing Description Styles

1 ST SUMMER SCHOOL: VHDL BOOTCAMP PISA, JULY 2013

Altera s Avalon Communication Fabric

SEQUENTIAL CIRCUIT DESIGN: PRACTICE

COE 405 Design Methodology Based on VHDL

VHDL for Logic Synthesis

VHDL Modeling Behavior from Synthesis Perspective -Part B - EL 310 Erkay Savaş Sabancı University

VHDL 2 Combinational Logic Circuits. Reference: Roth/John Text: Chapter 2

ECE 545 Lecture 6. Behavioral Modeling of Sequential-Circuit Building Blocks. George Mason University

ECE 545 Lecture 9. Modeling of Circuits with a Regular Structure. Aliases, Attributes, Packages. George Mason University

Concurrent & Sequential Stmts. (Review)

SEQUENTIAL STATEMENTS

Luleå University of Technology Kurskod SMD098 Datum Skrivtid

CMPT 250: Computer Architecture. Using LogicWorks 5. Tutorial Part 1. Somsubhra Sharangi

VHDL for FPGA Design. by : Mohamed Samy

Field Programmable Gate Array

TKT-1212 Digitaalijärjestelmien toteutus. Lecture 7: VHDL Testbenches Ari Kulmala, Erno Salminen 2008

Counters. Counter Types. Variations. Modulo Gray Code BCD (Decimal) Decade Ring Johnson (twisted ring) LFSR

Verilog for Synthesis Ing. Pullini Antonio

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

Lecture 5: State Machines, Arrays, Loops. EE 3610 Digital Systems

EL 310 Hardware Description Languages Midterm

ELCT 501: Digital System Design

Sign here to give permission to return your test in class, where other students might see your score:

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences

CSE 260 Introduction to Digital Logic and Computer Design. Exam 1 Solutions

The University of Alabama in Huntsville ECE Department CPE Final Exam Solution Spring 2016

CSE 260 Digital Computers: Organization and Logical Design. Exam 2 Solutions

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

ECE Digital Design Laboratory. Lecture 3 Finite State Machines!

The University of Alabama in Huntsville ECE Department CPE Midterm Exam Solution March 2, 2006

Tutorial 4 HDL. Outline VHDL PROCESS. Modeling Combinational Logic. Structural Description Instantiation and Interconnection Hierarchy

APPLICATION NOTE. A CPLD VHDL Introduction. Introduction. Overview. Entity. XAPP 105 January12, 1998 (Version 1.0) 0 4* Application Note

VHDL Testbench. Test Bench Syntax. VHDL Testbench Tutorial 1. Contents

EEL 4712 Digital Design Test 1 Spring Semester 2008

HIERARCHICAL DESIGN. RTL Hardware Design by P. Chu. Chapter 13 1

Outline HIERARCHICAL DESIGN. 1. Introduction. Benefits of hierarchical design

VHDL. ELEC 418 Advanced Digital Systems Dr. Ron Hayne. Images Courtesy of Cengage Learning

HDL. Hardware Description Languages extensively used for:

Mridula Allani Fall Fall

Synthesis from VHDL. Krzysztof Kuchcinski Department of Computer Science Lund Institute of Technology Sweden

CS232 VHDL Lecture. Types

Introduction to VHDL #3

Digital Systems Design

The University of Alabama in Huntsville ECE Department CPE Midterm Exam Solution Spring 2016

Multi-valued Logic. Standard Logic IEEE 1164 Type std_ulogic is ( U, uninitialized

DESIGN AND IMPLEMENTATION OF MOD-6 SYNCHRONOUS COUNTER USING VHDL

ENGR 5865 DIGITAL SYSTEMS

Finite State Machines (FSM) Description in VHDL. Review and Synthesis

Introduction to Computer Design

EEL 4712 Digital Design Test 1 Spring Semester 2007

Transcription:

EITF35: Introduction to Structured VLSI Design Part 2.2.2: VHDL-3 Liang Liu liang.liu@eit.lth.se 1

Outline Inference of Basic Storage Element Some Design Examples DFF with enable Counter Coding Style: Segment Variables in Sequential Circuit Poor Design Examples 2

Inference of Basic Storage Elements VHDL code should be clear so that the pre-designed cells can be inferred As an architecture designer, you need to be very familiar with the available elements VHDL code of storage elements Positive edge-triggered D FF Negative edge-triggered D FF D FF with asynchronous reset D Latch (DON T USE) 3

Positive edge-triggered D FF No else branch Note the sensitivity list (only clk) rising_edge(clk) 4

Negative edge-triggered D FF falling_edge(clk ) 5

D FF with Async. Reset 6

D Latch (Learn How to Avoid) Bad1: process(sa,sb,a,b) if sa= 1 then z<=a; elsif sb= 1 then z<=b; end if; end process Bad1; Bad2: process(sa,a,b) if sa= 1 then f<=a; end if; end process Bad2; a b sa sb L OR z Bad3: process(i3,i2,i1,i0,s) -- use case statement case S is when "00" => O <= I0; when "01" => O <= I1; when "10" => O <= I2; end case; end process Bad3; 7

Exercise c1: process(clk) if (clk event and clk = 1 )then q<= 1 ; end if; end process c1; c2: process(clk) if (clk = 1 )then q<= 1 ; end if; end process c2; What is the corresponding circuits? c3: process(clk) if (clk = 1 )then q<= 1 ; else q<= 0 ; end if; end process c3; 1 q 0 clk 8

Outline Inference of Basic Storage Element Some Design Examples DFF with enable Counter Coding Style: Segment Variables in Sequential Circuit Poor Design Examples 9

Design Examples: D FF with sync enable Sync Enable Means the enable signal is controlled by clock function circuit 10

Design Examples: D FF with sync enable architecture two_seg_arch of dff_en is signal q_reg:std_logic; signal q_next:std_logic; -- D FF process (clk, reset) if (reset= l ) then q_reg <= 0 ; elsif (clk event and c1k= l ) then q_reg <= q_next; end if ; end process; -- next-state logic q_next <= d when en = l else q_reg; -- output logic q <= q_reg; end two_seg_arch; Multi-Segment Recommended! 11

Design Examples: Binary Counter Binary Counter Circulates through a sequence that resembles the unsigned binary number Count from 0 to 15 and repeat Set a flag when counting to 15 12

Design Examples: Binary Counter entity binary_counter4_pulse is port( clk, reset: in std_logic; max_pulse: out std_logic; q: out std_logic_vector (3 downto 0); end binary_counter4_pulse ; architecture two_seg_arch of binary_counter4_pulse is signal r_reg : unsigned (3 downto 0) ; signal r_next : unsigned (3 downto 0) ; process (clk, reset) if (reset= 1') then r_reg <= ( others=> '0') ; elsif (clk'event and clk= 1') then r_reg <= r_next; end if; end process; r_next <= r_reg + 1; -- incrementor q <= std_logic_vector(r_reg); r_reg; max_pulse <= 1' when r_reg= 1111 else 0 ; -- output end two_seg_arch; 13

Design Examples: Binary Counter How to wrap around: 1111->0000 Poor code ( Wrong code) bad:r_next <= (r_reg + 1) mod 16 In the IEEE numeric_std package, + on the unsigned data type is modeled after a hardware adder Wrap around automatically when the addition result exceeds the range. Mod operation may cannot be synthesized Good:r_next <= (r_reg + 1) How to wrap if we count from 0 to 9? 14

Outline Inference of Basic Storage Element Some Design Examples DFF with enable Register shifter Counter Coding Style: Segment Variables in Sequential Circuit Poor Design Examples 15

Coding Style: Segment One-segment Describe storage and combinational logic in one process May appear compact for certain simple circuit But it can be error-prone Is integration always better??? 16

Segment: D FF with sync enable architecture one_seg_arch of dff_en is process (clk,reset) if (reset= 1 ) then q < = 0 ; elsif (clk event and clk= 1 ) then if (en= 1 ) then q <= d; end if; end if ; end process; end one_seg_arch; 17

Segment: Binary Counter What will be the circuit? 18

Segment: Binary Counter A 1-bit register is inferred for the max_pulse signal. The register works as a buffer and delays the output by one clock cycle, and thus the max_pulse signal will be asserted when r_reg="0000". 19

Segment: Summary Two-segment code Separate storage segment from the rest Has a clear mapping to hardware component Is preferred and recommended One-segment code Mix memory segment and next-state logic/output logic Can sometimes be more compact No clear hardware mapping Error prone 20

Segment: Summary Keep the hardware and the corresponding coding rule in mind and then go ahead! Signals inside the clk'event and clk= 1' branch are referred as registers 21

Outline Inference of Basic Storage Element Some Design Examples DFF with enable Register shifter Counter Coding Style: Segment Variables in Sequential Circuit Poor Design Examples 22

Variables in Sequential Circuit Signals always imply an FF under clk event and clk= 1 condition When you don t want to infer an FF in a one-segment process Variable is local in a process and is not needed outside Variable may imply differently Variable is used after it is assigned: get a value every time when the process is invoked no register is inferred Variable is used before it is assigned: use the value from the previous process execution FF or register need to be inferred 23

Variables in Sequential Circuit: Example architecture arch of varaible_ff_demo is signal tmp_sigl: std_logic; process (clk) if (clk event and clk= 1 ) then tmp_sig1 <= a and b; ql <= tmp_sigl; end if ; end process; Registers are inferred q1 is one clock later than tmp_sig1 24

Variables in Sequential Circuit: Example architecture arch of varaible_ff_demo is process (clk) variable tmp_var2: std_logic; -- declare in process if (clk event and clk= 1 ) then tmp_var2 := a and b; -- notice assignment format ql <= tmp_var2; end if ; end process; Use variable tmp_sig2 is used after it is assigned Just a hard wire, no Reg. is inferred 25

Variables in Sequential Circuit: Example architecture arch of varaible_ff_demo is process (clk) variable tmp_var2: std_logic; -- declare in process if (clk event and clk= 1 ) then ql <= tmp_var2; tmp_var2 := a and b; -- change the assignment order end if ; end process; tmp_var2 2min: Draw the corresponding circuits No Variables! 26

Outline Inference of Basic Storage Element Some Design Examples DFF with enable Register shifter Counter Coding Style: Segment Variables in Sequential Circuit Poor Design Examples 27

Poor Design 1: Misuse of asynchronous reset Example: a mod-10 counter: 0,1,2,7,8,9, 0,1,2, 7,8,9,0 How to wrap from 9 to 0? 28

Poor Design 1: Misuse of asynchronous reset entity modl0_counter is port(clk,reset: in std_logic; q:out std_logic_vector (3 downto 0)); end modl0_counter; architecture poor_async_arch of mod10_counter is signal r_reg: unsigned (3 downto 0) ; signal r_next: unsigned (3 downto 0) ; signal async_clr: std_logic; process (clk,async_clr) if (async_clr= 1') then r_reg <= (others=> 0'); elsif(clk'event and clk= 1 ) then r_reg<=r_next; end if ; end process; async_clr <='1' when (reset='l or r_reg="1010") else 0 ; r_next <= r_reg + 1; q <= std_logic_vector(r_reg); end poor_async_arch; 29

Poor Design 1: Misuse of asynchronous reset Problems Glitch in counter: r_reg goes to 10 and then reset, due to the delay of comparator Glitches in aync_clr can reset the counter mistakenly Finish the output timing diagram in 2 min 30

Poor Design 1: Misuse of asynchronous reset Remedy architecture two_seg of mod10_counter is signal r_reg: unsigned (3 downto 0) ; signal r_next: unsigned (3 downto 0) ; process (clk,reset) if (reset = 1') then r_reg <= (others=> 0'); elsif(clk'event and clk= 1 ) then r_reg<=r_next; end if ; end process; r_next <= (others=> 0 ) when (r_reg=9) else r_reg+1; q <= std_logic_vector(r_reg); end two_seg; asynchronous reset should ONLY be used for initialization! 31

Something to remember Strictly follow the synchronous design methodology; i.e., all registers in a system should be synchronized by a common global clock signal (otherwise special circuits are needed) The memory components should be coded clearly so that a predesigned cell can be inferred from the device library. Isolate the memory components from the VHDL description and code them in a separate segment. One-segment coding style is not advisable. Asynchronous reset, if used, should be only for system initialization. It should not be used to clear the registers during regular operation 32 Unless there is a compelling reason, a variable should not be used to infer a memory component.

Reading advice RTL Hardware Design Using VHDL: P213-P254 33

Thanks 34