COE 405 Design Methodology Based on VHDL

Similar documents
Hardware Description Language VHDL (1) Introduction

Abi Farsoni, Department of Nuclear Engineering and Radiation Health Physics, Oregon State University

ELCT 501: Digital System Design

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

C-Based Hardware Design

Lecture 3: Modeling in VHDL. EE 3610 Digital Systems

Review of Digital Design with VHDL

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

Digital Systems Design

ECE 3401 Lecture 10. More on VHDL

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

Contents. Appendix D VHDL Summary Page 1 of 23

Basic Language Concepts

Control and Datapath 8

IT T35 Digital system desigm y - ii /s - iii

Logic and Computer Design Fundamentals VHDL. Part 1 Chapter 4 Basics and Constructs

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

Embedded Systems CS - ES

CSCI Lab 3. VHDL Syntax. Due: Tuesday, week6 Submit to: \\fs2\csci250\lab-3\

!"#$%&&"'(')"*+"%,%-".#"'/"'.001$$"

EECE-4740/5740 Advanced VHDL and FPGA Design. Lecture 3 Concurrent and sequential statements

BASIC VHDL LANGUAGE ELEMENTS AND SEMANTICS. Lecture 7 & 8 Dr. Tayab Din Memon

Advanced Training Course on FPGA Design and VHDL for Hardware Simulation and Synthesis. 26 October - 20 November, 2009

Getting Started with VHDL

VHDL: A Crash Course

Computer-Aided Digital System Design VHDL

UNIT I Introduction to VHDL VHDL: - V -VHSIC, H - Hardware, D - Description, L Language Fundamental section of a basic VHDL code Library :

Concurrent Signal Assignment Statements (CSAs)

5. 0 VHDL OPERATORS. The above classes are arranged in increasing priority when parentheses are not used.

310/ ICTP-INFN Advanced Tranining Course on FPGA and VHDL for Hardware Simulation and Synthesis 27 November - 22 December 2006

A bird s eye view on VHDL!

Outline CPE 626. Advanced VLSI Design. Lecture 4: VHDL Recapitulation (Part 2) Signals. Variables. Constants. Variables vs.

ACS College of Engineering. Department of Biomedical Engineering. Logic Design Lab pre lab questions ( ) Cycle-1

VHDL Examples Mohamed Zaky

ECE 448 Lecture 3. Combinational-Circuit Building Blocks. Data Flow Modeling of Combinational Logic

ECE4401 / CSE3350 ECE280 / CSE280 Digital Design Laboratory

CPE/EE 422/522. Chapter 8 - Additional Topics in VHDL. Dr. Rhonda Kay Gaede UAH. 8.1 Attributes - Signal Attributes that return a value

VHDL. Douglas L. Perry. Third Edition

ENGIN 241 Digital Systems with Lab

ECE 448 Lecture 3. Combinational-Circuit Building Blocks. Data Flow Modeling of Combinational Logic

ECE 545 Lecture 5. Data Flow Modeling in VHDL. George Mason University

VHDL And Synthesis Review

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

CprE 583 Reconfigurable Computing

Design units can NOT be split across different files

Outline. CPE/EE 422/522 Advanced Logic Design L07. Review: JK Flip-Flop Model. Review: VHDL Program Structure. Review: VHDL Models for a MUX

Writing VHDL for RTL Synthesis

Hardware Modeling. VHDL Syntax. Vienna University of Technology Department of Computer Engineering ECS Group

VHDL Structural Modeling II

Building Blocks. Entity Declaration. Entity Declaration with Generics. Architecture Body. entity entity_name is. entity register8 is

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

EE 459/500 HDL Based Digital Design with Programmable Logic. Lecture 4 Introduction to VHDL

ECE 545 Lecture 8. Data Flow Description of Combinational-Circuit Building Blocks. George Mason University

The VHDL Hardware Description Language

VHDL Part 2. What is on the agenda? Basic VHDL Constructs. Examples. Data types Objects Packages and libraries Attributes Predefined operators

Introduction to the VHDL language. VLSI Digital Design

Chapter 2 Basic Logic Circuits and VHDL Description

Lecture 1: VHDL Quick Start. Digital Systems Design. Fall 10, Dec 17 Lecture 1 1

Lattice VHDL Training

Introduction to VHDL #1

FPGA BASED SYSTEM DESIGN. Dr. Tayab Din Memon Lecture 9 & 10 : Combinational and Sequential Logic

VHDL. Official Definition: VHSIC Hardware Description Language VHISC Very High Speed Integrated Circuit

ECOM4311 Digital Systems Design

JUNE, JULY 2013 Fundamentals of HDL (10EC45) PART A

Performance Engineering of Real-Time and Embedded Systems. Introduction to VHDL

Outline CPE 626. Advanced VLSI Design. Lecture 3: VHDL Recapitulation. Intro to VHDL. Intro to VHDL. Entity-Architecture Pair

Lecture 12 VHDL Synthesis

What Is VHDL? VHSIC (Very High Speed Integrated Circuit) Hardware Description Language IEEE 1076 standard (1987, 1993)

VHDL BASIC ELEMENTS INTRODUCTION

ECE U530 Digital Hardware Synthesis. Course Accounts and Tools

What is Verilog HDL? Lecture 1: Verilog HDL Introduction. Basic Design Methodology. What is VHDL? Requirements

Lecture Topics. Announcements. Today: Integer Arithmetic (P&H ) Next: continued. Consulting hours. Introduction to Sim. Milestone #1 (due 1/26)

Introduction to VHDL

VHDL Objects. Lecture 8: VHDL (2) Variables. VHDL Objects - Constant. Files. EE3109 Gopi K. Manne Fall 2007

Digital Design with FPGAs. By Neeraj Kulkarni

Digital Systems Design

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

SRI SUKHMANI INSTITUTE OF ENGINEERING AND TECHNOLOGY, DERA BASSI (MOHALI)

VHDL: RTL Synthesis Basics. 1 of 59

Inthis lecture we will cover the following material:

1. Using the for-generahon scheme, concurrent statements can be replicated a predetermined number of times.

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

Introduction to VHDL. Main language concepts

Modeling Complex Behavior

Introduction to VHDL. Yvonne Avilés Colaboration: Irvin Ortiz Flores Rapid System Prototyping Laboratory (RASP) University of Puerto Rico at Mayaguez

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

Modeling Sequential Circuits in Verilog

CCE 3202 Advanced Digital System Design

Digital Systems Design

Lecture 10 Subprograms & Overloading

2/14/2016. Hardware Synthesis. Midia Reshadi. CE Department. Entities, Architectures, and Coding.

Department of Electronics & Communication Engineering Lab Manual E-CAD Lab

VHDL VS VERILOG.

Architecture des Ordinateurs I

COE 405 Behavioral Descriptions in VHDL

Contents. Chapter 9 Datapaths Page 1 of 28

Hardware Modeling. VHDL Basics. ECS Group, TU Wien

HDL. Hardware Description Languages extensively used for:

Field Programmable Gate Array

Subprograms, Packages, and Libraries

Transcription:

COE 405 Design Methodology Based on VHDL Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Outline Elements of VHDL Top-Down Design Top-Down Design with VHDL Serial Adder Design Subprograms Controller Description Moore sequence detector VHDL Operators 2-2 1 1

Interface and Architectural Specifications Entity component_name IS input and output ports physical and other parameters END component_name; Architecture identifier of component_name IS declarations BEGIN specification of the functionality of the component in terms its inputs & influenced by physical and other parameters. END identifier; 2-3 Packages Packages are used to encapsulate information that is to be shared among multiple design units. A package is used by the USE clause e.g. Use work.package_name.all Package package_name IS component declarations sub-program parameters END package_name; Package Body package_name IS type definitions sub-programs END package_name; 2-4 2 2

Package Examples Standard Package Defines primitive types, subtypes, and functions. e.g. Type Boolean IS (false, true); e.g. Type Bit is ( 0, 1 ); TEXTIO Package Defines types, procedures, and functions for standard text I/O from ASCII files. 2-5 Design Libraries VHDL supports the use of design libraries for categorizing components or utilities. Applications of libraries include Sharing of components between designers Grouping components of standard logic families Categorizing special-purpose utilities such as subprograms or types Exiting libraries STD Library Contains the STANDARD and TEXTIO packages Contains all the standard types & utilities Visible to all designs WORK library Root library for the user 2-6 3 3

Design Libraries IEEE library Contains VHDL-related standards Contains the std_logic_1164 (IEEE 1164.1) package Defines a nine values logic system To make a library visible to a design LIBRARY libname; The following statement is assumed by all designs LIBRARY WORK; To use the std_logic_1164 package LIBRARY IEEE USE IEEE.std_logic_1164.ALL 2-7 Design Binding Using Configuration, VHDL allows Binding of Entities and Architectures. binding of subcomponents of a design to elements of various libraries. Configuration config_name of component_name IS binding of Entities and Architectures specifying parameters of a design binding components of a library to subcomponents END config_name; 2-8 4 4

Top-Down Design Top-down design process uses a divide-and-conquer strategy Top-down design involves recursive partitioning of a system into subcomponents until all subcomponents are manageable design parts Design of a component is manageable if the component is Available as part of a library Can be implemented by modifying an already available part Can be described for a synthesis program or an automatic hardware generator. 2-9 Recursive Partitioning Procedure Parition (system) IF HardwareMappingOf(system) is done Then SaveHardwareof(system) ELSE FOR EVERY Functionally-Distinct Part_I of System Partition (Part_I) END FOR; END Parition; Mapping to hardware, depends on target technology, available libraries, and available tools. 2-10 5 5

Top-Down Design, Bottom-Up Implementation Design System Under Design SSC1 SSC2 SSC3 SSC4 SSC31 SSC3n SSC41 SSC42 SSC311 SSC312 SSC3n1 SSC3n2 Implementation SSC: system sub-component 2-11 Design Verification Initially, a behavioral description of system under design (SUD) must be simulated to verify design. After first level of partitioning A behavioral description of each of the subcomponents must be developed A structural hardware model of the SUD is formed by wiring subcomponents behavioral descriptions Simulating the new model and comparing it with original SUD description verifies correctness of first level of partitioning 2-12 6 6

Verifying First Level of Partitioning Behavioral Model Compare System Under Design SSC1 SSC2 SSC3 SSC4 Interconnection of Behavioral Models 2-13 Verifying Hardware Implementation of SSC1 and SSC2 Behavioral Model Compare System Under Design SSC1 SSC2 SSC3 SSC4 Mixed Level Model 2-14 7 7

Verifying the Final Design Compare Behavioral Model System Under Design SSC1 SSC2 SSC3 SSC4 SSC31 SSC3n SSC41 SSC42 SSC311 SSC312 SSC3n1 SSC3n2 Hardware Level Model 2-15 Verifying Hardware Implementation of SSC3 Behavioral Model Compare SSC3 SSC31 SSC3n SSC311 SSC312 SSC3n1 SSC3n2 Hardware Level Model 2-16 8 8

Verifying the Final Design Compare Behavioral Model System Under Design SSC1 SSC2 SSC3 SSC4 Mixed Level Model SSC41 SSC42 Back Annotation: Behavioral models of subcomponents can be adjusted to mimic properties of hardware-level models. 2-17 Top Down Design of Serial Adder Serial data is synchronized with clock and appear on a and b inputs Valid data bits on a and b appear after a synchronous pulse on start After eight clock pulses, the addition of a and b will appear on result The ready output is set to 1 to indicate that the result of addition is ready and remains one until another start pulse is applied a 8 b result start Serial Adder ready clock 2-18 9 9

Design Assumptions Synthesis tools: Capable of synthesizing logic expressions to combinational logic blocks Design Library: A 2x1 multiplexer with active high inputs and outputs A synchronous D-FF with synchronous active high reset input VHDL models of library elements are provided Parts from previous designs Divide-by-8 counter (3-bit counter) Synchronous reset Single bit output remains high as long as the circuit is counting; it goes to low when reset is pressed or 8 clock edges are counted 2-19 VHDL Model of 2x1 Multiplexer Entity mux2_1 IS Generic (dz_delay: TIME := 6 NS); PORT (sel, data1, data0: IN BIT; z: OUT BIT); END mux2_1; Architecture dataflow OF mux2_1 IS z <= data1 AFTER dz_delay WHEN sel= 1 ELSE data0 AFTER dz_delay; sel END dataflow; S1 data1 data0 1D 0D Z z 2-20 10 10

VHDL Model of D-FF Entity flop IS Generic (td_reset, td_in: TIME := 8 NS); PORT (reset, din, clk: IN BIT; qout: OUT BIT := 0 ); END flop; Architecture behavioral OF flop IS reset Process(clk) din IF (clk = 0 AND clk Event ) Then IF reset = 1 Then qout <= 0 AFTER td_reset ; ELSE qout <= din AFTER td_in ; END process; END behavioral ; 1R Q 1D 1C clk qout 2-21 Divide-by-8 Counter Entity counter IS Generic (td_cnt: TIME := 8 NS); PORT (reset, clk: IN BIT; counting: OUT BIT := 0 ); Constant limit: INTEGER :=8; END counter ; Architecture behavioral OF counter IS Process(clk) Variable count: INTEGER := limit; IF (clk = 0 AND clk Event ) THEN IF reset = 1 THEN count := 0 ; ELSE IF count < limit THEN count:= count+1; IF count = limit Then counting <= 0 AFTER td_cnt; ELSE counting <= 1 AFTER td_cnt; END process; END behavioral ; 2-22 11 11

Serial Adder Behavioral Description Entity serial_adder IS PORT (a, b, start, clock: IN BIT; ready: OUT BIT; result: BUFFER Bit_Vector (7 downto 0)); END serial_adder ; Architecture behavioral OF serial_adder IS Process(clock) Variable count: INTEGER := 8; Variable sum, carry: BIT; IF (clock = 0 AND clock Event ) THEN IF start = 1 THEN count := 0 ; carry:= 0 ; ELSE IF count < 8 THEN count:= count+1; sum := a XOR b XOR carry; carry := (a AND b) OR (a AND carry) OR (b AND carry); result <= sum & result(7 downto 1); IF count = 8 Then ready <= 1 ; ELSE ready <= 0 ; END process; END behavioral; 2-23 Serial Adder First Level of Partitioning Serial Adder Full_adder Flip_flop shifter counter Can be synthesized Available in library & previous designs 2-24 12 12

General Layout of Serial Adder Counter counting a b Adder sum en si Shifter carry_in carry_out Flop clock 2-25 Full-Adder VHDL Description Entity fulladder IS port (a, b, cin: IN bit; sum, cout: OUT bit); END fulladder; Architecture behavioral OF fulladder IS sum <= a xor a xor cin; cout <= (a and b) or (b and cin) or (a and cin); END behavioral ; 2-26 13 13

Shifter VHDL Description Entity shifter IS port (sin, reset, enable, clk: IN bit; parout: BUFFER Bit_Vector(7 downto 0)); END shifter ; Architecture dataflow OF shifter IS sh: BLOCK (clk= 0 AND NOT clk STABLE) parout <= GUARDED 00000000 WHEN reset= 1 ELSE sin & parout(7 downto 1) WHEN enable= 1 ELSE parout; - -could use here UNAFFECTED (VHDL 93) END BLOCK; END dataflow ; 2-27 Structural Description of Serial Adder Entity serial_adder IS PORT (a, b, start, clock: IN BIT; ready: OUT BIT; result: OUT Bit_Vector (7 downto 0)); END serial_adder ; Architecture structural OF serial_adder IS Component counter IS Generic (td_cnt: TIME := 8 NS); PORT (reset, clk: IN BIT; counting: OUT BIT := 0 ); END component ; Component shifter IS port (sin, reset, enable, clk: IN bit; parout: BUFFER Bit_Vector(7 downto 0)); END component ; Component fulladder IS port (a, b, cin: IN bit; sum, cout: OUT bit); END component ; Component flop IS Generic (td_reset, td_in: TIME := 8 NS); PORT (reset, din, clk: IN BIT; qout: Buffer BIT := 0 ); END component ; 2-28 14 14

Structural Description of Serial Adder SIGNAL sum, carry_in, carry_out, counting: BIT; u1: fulladder port map (a, b, carry_in, sum, carry_out); u2: flop port map (start, carry_out, clock, carry_in); u3: counter port map (start, clock, counting); u4: shifter port map (sum, start, counting, clock, result); u5: ready <= NOT counting; END structural ; 2-29 Second Level of Partitioning: Partitioning Shifter Shifter needs eight flip-flops with synchronous reset and clock enabling (der_flop) der_flop cannot be directly implemented with given tools and library Shifter der_flop der_flop der_flop der_flop der_flop der_flop der_flop der_flop 2-30 15 15

Behavioral Model of der_flop Entity der_flop IS PORT (din, reset, enable, clk: IN BIT; qout: Buffer BIT := 0 ); END der_flop; Architecture behavioral OF der_flop IS Process(clk) IF (clk = 0 AND clk Event ) Then IF reset = 1 Then qout <= 0 ; ELSE IF enable= 1 Then qout <= din; END process; END behavioral ; 2-31 Structural Description of Shifter Entity shifter IS port (sin, reset, enable, clk: IN bit; parout: BUFFER Bit_Vector(7 downto 0)); END shifter ; Architecture structural OF shifter IS Component der_flop IS PORT (din, reset, enable, clk: IN BIT; qout: Buffer BIT := 0 ); END component; b7: der_flop port map (sin, reset, enable, clk, parout(7)); b6: der_flop port map (parout(7), reset, enable, clk, parout(6)); b5: der_flop port map (parout(6), reset, enable, clk, parout(5)); b4: der_flop port map (parout(5), reset, enable, clk, parout(4)); b3: der_flop port map (parout(4), reset, enable, clk, parout(3)); b2: der_flop port map (parout(3), reset, enable, clk, parout(2)); b1: der_flop port map (parout(2), reset, enable, clk, parout(1)); b0: der_flop port map (parout(1), reset, enable, clk, parout(0)); END structural ; 2-32 16 16

Partitioning der_flop mux2_1 der_flop flop din enable reset S1 dff_in 1D Z 0D 1R Q 1D 1C clk qout 2-33 Structural Description of der_flop Entity der_flop IS PORT (din, reset, enable, clk: IN BIT; qout: Buffer BIT := 0 ); END der_flop; Architecture structural OF der_flop IS Component flop IS Generic (td_reset, td_in: TIME := 8 NS); PORT (reset, din, clk: IN BIT; qout: Buffer BIT := 0 ); END component ; Component mux2_1 IS Generic (dz_delay: TIME := 6 NS); PORT (sel, data1, data0: IN BIT; z: OUT BIT); END component ; Signal dff_in: BIT; mx: mux2_1 port map (enable, din, qout, dff_in); ff: flop port map (reset, dff_in, clk, qout); END structural ; 2-34 17 17

Complete Design of Serial Adder Serial Adder Full_adder Flip_flop Shifter counter der_flop der_flop der_flop der_flop der_flop der_flop der_flop der_flop mux2_1 flop 2-35 Synthesizable Serial Adder Entity serial_adder IS PORT (a, b, start, clock: IN BIT; ready: OUT BIT; result: BUFFER Bit_Vector (7 downto 0)); END serial_adder ; Architecture syn OF serial_adder IS Process(clock) subtype CNT8 IS INTEGER Range 0 to 8; Variable count: CNT8 := 8; Variable sum, carry: BIT; IF (clock = 0 AND clock Event ) THEN IF start = 1 THEN count := 0 ; carry:= 0 ; ELSE IF count < 8 THEN count:= count+1; sum := a XOR b XOR carry; carry := (a AND b) OR (a AND carry) OR (b AND carry); result <= sum & result(7 downto 1); IF count = 8 Then ready <= 1 ; ELSE ready <= 0 ; END process; END syn; 2-36 18 18

Subprograms VHDL allows the use of functions and procedures Most of high-level behavioral constructs in VHDL can be used in body of functions and procedures Subprograms can be declared, defined, and invoked as in software languages Functions can be used to represent Boolean equations for type conversions for delay value calculations Procedures can be used for type conversion description of counters outputting internal binary data in integer form 2-37 Procedure Example Type Byte ARRAY (7 Downto 0) of BIT; Procedure byte_to_integer(ib: IN Byte; oi: OUT Integer) IS Variable result: Integer :=0; For I IN 0 To 7 Loop IF ib(i) = 1 Then result := result + 2**I; END Loop; oi := result; END byte_to_integer; 2-38 19 19

Function Example Entity fulladder IS Port (a, b, cin: IN BIT; sum, cout: OUT BIT); END fulladder; Architecture behavioral OF fulladder IS Function fadd(a, b, c : IN BIT) RETURN Bit_Vector IS variable sc: Bit_Vector(1 downto 0); sc(1) := a XOR b XOR c; sc(0) := (a AND b) OR (a AND c) OR (b AND c); Return sc; END; (sum, cout) <= fadd(a, b, cin); END behavioral ; 2-39 Controller Description Moore Sequence Detector Detection sequence is 110 x clk IF 110 found on x Then Z gets 1 Else z gets 0 End z 1 1 1 0 0 Reset /0 got1 /0 got11 /0 got110 /1 0 1 0 2-40 20 20

VHDL Description of Moore 110 Sequence Detector ENTITY moore_110_detector IS PORT (x, clk : IN BIT; z : OUT BIT); END moore_110_detector; ARCHITECTURE behavioral OF moore_110_detector IS TYPE state IS (reset, got1, got11, got110); SIGNAL current : state := reset; BEGIN PROCESS(clk) BEGIN IF (clk = '1' AND CLK Event) THEN CASE current IS WHEN reset => IF x = '1' THEN current <= got1; ELSE current <= reset; WHEN got1 => IF x = '1' THEN current <= got11; ELSE current <= reset; WHEN got11 => IF x = '1' THEN current <= got11; ELSE current <= got110; WHEN got110 => IF x = '1' THEN current <= got1; ELSE current <= reset; END CASE; END PROCESS; z <='1' WHEN current = got110 ELSE '0'; END behavioral; 2-41 VHDL Predefined Operators Logical Operators: NOT, AND, OR, NAND, NOR, XOR, XNOR Operand Type: Bit, Boolean, Bit_vector Result Type: Bit, Boolean, Bit_vector Relational Operators: =, /=, <, <=, >, >= Operand Type: Any type Result Type: Boolean Arithmetic Operators: +, -, *, / Operand Type: Integer, Real Result Type: Integer, Real Concatenation Operator: & Operand Type: Arrays or elements of same type Result Type: Arrays Shift Operators: SLL, SRL, SLA, SRA, ROL, ROR Operand Type: Bit or Boolean vector Result Type: same type 2-42 21 21