george mason university ece 448 – fpga and asic design with vhdl vhdl coding for synthesis ece 448...

51
George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

Upload: alvin-strickland

Post on 17-Jan-2018

239 views

Category:

Documents


0 download

DESCRIPTION

3ECE 448 – FPGA and ASIC Design with VHDL Non-synthesizable VHDL

TRANSCRIPT

Page 1: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

George Mason UniversityECE 448 – FPGA and ASIC Design with VHDL

VHDL Coding for Synthesis

ECE 448Lecture 12

Page 2: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

2ECE 448 – FPGA and ASIC Design with VHDL

Required reading

• S. Lee, Advanced Digital Logic Design, Chapter 4.4, Synthesis Heuristics (handout)

Page 3: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

3ECE 448 – FPGA and ASIC Design with VHDL

Non-synthesizable VHDL

Page 4: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

4ECE 448 – FPGA and ASIC Design with VHDL

Delays

Delays are not synthesizable

Statements, such as wait for 5 ns a <= b after 10 nswill not produce the required delay, and should not be used in the code intendedfor synthesis.

Page 5: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

5ECE 448 – FPGA and ASIC Design with VHDL

Initializations

Declarations of signals (and variables)with initialized values, such as SIGNAL a : STD_LOGIC := ‘0’;cannot be synthesized, and thus shouldbe avoided.If present, they will be ignored by thesynthesis tools. Use set and reset signals instead.

Page 6: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

6ECE 448 – FPGA and ASIC Design with VHDL

Dual-edge flip-flops

PROCESS ( Clk ) BEGIN IF rising_edge(Clk) or falling_edge(CLk) THEN Q <= D ; END IF ; END PROCESS ;

Dual-edge flip-flops and registers not synthesizable using FPGA tools

Page 7: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

7ECE 448 – FPGA and ASIC Design with VHDL

Reports and assertsReports and asserts, such as report "Initialization complete"; assert initial_value <= max_value report "initial value too large" severity error;cannot be synthesized, but theycan be freely used in the code intended forsynthesis.

They will be used during simulation andignored during synthesis.

Page 8: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

8ECE 448 – FPGA and ASIC Design with VHDL

Floating-point operations

Operations on signals (and variables)of the type realare not synthesizable by the current generation of synthesis tools.

Page 9: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

9ECE 545 – Introduction to VHDL

Floating-Point Types

Page 10: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

10ECE 545 – Introduction to VHDL

Floating point types

• Used to represent real numbers• Numbers are represented using a significand

(mantissa) part and an exponent part• Conform to the IEEE standard 754 or 854

Minimum size of representation that must besupported by the implementation of the VHDLstandard:

VHDL-2001: 64-bit representationVHDL-87, VHDL-93: 32-bit representation

Page 11: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

11ECE 545 – Introduction to VHDL

Real literals - examples

23.1 23.146E5 46 105

1E+12 1 1012 1.234E09 1.234 109 34.0e-08 34.0 10-8

2#0.101#E5 0.1012 25 =(2-1+2-3) 25

8#0.4#E-6 0.48 8-6 = (4 8-1) 8-6

16#0.a5#E-8 0.a516 16-8 =(1016-1+516-2) 16-8

Page 12: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

12ECE 545 – Introduction to VHDL

The ANSI/IEEE standard floating-point number representation formats

Page 13: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

13ECE 545 – Introduction to VHDL

User-defined floating-point types - Examples

type input_level is range -10.0 to +10.0

type probability is range 0.0 to 1.0;

constant max_output: real := 1.0E6;constant min_output: real := 1.0E-6;type output_range is max_output downto min_output;

Page 14: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

14ECE 448 – FPGA and ASIC Design with VHDL

Synthesizable VHDL

Page 15: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

15ECE 448 – FPGA and ASIC Design with VHDL

Register Transfer Level (RTL) Design Description

Combinational Logic

Combinational Logic

Registers

Page 16: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

16ECE 448 – FPGA and ASIC Design with VHDL

VHDL Design Styles

Components andinterconnects

structural

VHDL Design Styles

dataflow

Concurrent statements

behavioral

• Registers• Shift registers• Counters• State machines

Sequential statements

and moreif you are careful

synthesizable

Page 17: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

17ECE 448 – FPGA and ASIC Design with VHDL

Combinational Logic Synthesisfor

Beginners

Page 18: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

18ECE 448 – FPGA and ASIC Design with VHDL

• concurrent signal assignment ()• conditional concurrent signal assignment (when-else)• selected concurrent signal assignment (with-select-when)• generate scheme for equations (for-generate)

Simple rules for beginners

For combinational logic,use only concurrent statements

Page 19: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

19ECE 448 – FPGA and ASIC Design with VHDL

• concurrent signal assignment ()

Simple rules for beginners

For circuits composed of - simple logic operations (logic gates) - simple arithmetic operations (addition, subtraction, multiplication) - shifts/rotations by a constantuse

Page 20: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

20ECE 448 – FPGA and ASIC Design with VHDL

Simple rules for beginners

For circuits composed of - multiplexers - decoders, encoders - tri-state buffersuse

• conditional concurrent signal assignment (when-else)• selected concurrent signal assignment (with-select-when)

Page 21: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

21ECE 448 – FPGA and ASIC Design with VHDL

Left vs. right side of the assignment

<=<= when-elsewith-select <=

Left side Right side

• Internal signals (defined in a given architecture)• Ports of the mode - out - inout

Expressions including:• Internal signals (defined in a given architecture)• Ports of the mode - in - inout

Page 22: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

22ECE 448 – FPGA and ASIC Design with VHDL

Arithmetic operations

Synthesizable arithmetic operations:• Addition, +• Subtraction, -• Comparisons, >, >=, <, <=• Multiplication, *• Division by a power of 2, /2**6

(equivalent to right shift)• Shifts by a constant, SHL, SHR

Page 23: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

23ECE 448 – FPGA and ASIC Design with VHDL

Arithmetic operations

The result of synthesis of an arithmeticoperation is a - combinational circuit - without pipelining.

The exact internal architecture used (and thus delay and area of the circuit)may depend on the timing constraints specifiedduring synthesis (e.g., the requested maximumclock frequency).

Page 24: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

24ECE 448 – FPGA and ASIC Design with VHDL

Operations on Unsigned NumbersFor operations on unsigned numbers

USE ieee.std_logic_unsigned.alland signals of the typeSTD_LOGIC_VECTOR

OR

USE ieee.numeric_std.alland signals of the typeUNSIGNED

Page 25: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

25ECE 448 – FPGA and ASIC Design with VHDL

Operations on Signed NumbersFor operations on signed numbers

USE ieee.std_logic_signed.alland signals of the type STD_LOGIC_VECTOR

OR

USE ieee.numeric_std.all,signals of the type SIGNED,and conversion functions: std_logic_vector(), unsigned()

Page 26: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

26ECE 448 – FPGA and ASIC Design with VHDL

Signed and Unsigned Types

Behave exactly like STD_LOGIC_VECTORplus, they determine whether a given vectorshould be treated as a signed or unsigned number.Require USE ieee.numeric_std.all; (recommended) or USE ieee.std_logic_arith.all;

Page 27: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

27ECE 448 – FPGA and ASIC Design with VHDL

Integer Types

Operations on signals (variables)of the integer types: INTEGER, NATURAL,and their sybtypes, such as TYPE day_of_month IS RANGE 1 TO 31;are synthesizable in the range

-(231-1) .. 231 -1 for INTEGERs and their subtypes 0 .. 231 -1 for NATURALs and their subtypes

Page 28: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

28ECE 448 – FPGA and ASIC Design with VHDL

Integer Types

Operations on signals (variables)of the integer types: INTEGER, NATURAL,are less flexible and more difficult to control than operations on signals (variables) of the type

STD_LOGIC_VECTORUNSIGNEDSIGNED, and thus

are recommened to be avoided by beginners.

Page 29: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

29ECE 448 – FPGA and ASIC Design with VHDL

Addition of Unsigned Numbers (1)

LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.std_logic_unsigned.all ;

ENTITY adder16 ISPORT ( Cin : IN STD_LOGIC ;

X, Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ;Cout : OUT STD_LOGIC ) ;

END adder16 ;

ARCHITECTURE Behavior OF adder16 IS SIGNAL Sum : STD_LOGIC_VECTOR(16 DOWNTO 0) ;

BEGINSum <= ('0' & X) + Y + Cin ;S <= Sum(15 DOWNTO 0) ;Cout <= Sum(16) ;

END Behavior ;

Page 30: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

30ECE 448 – FPGA and ASIC Design with VHDL

Addition of Unsigned Numbers (2)

LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.numeric_std.all ;

ENTITY adder16 ISPORT ( Cin : IN STD_LOGIC ;

X, Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ;Cout : OUT STD_LOGIC ) ;

END adder16 ;

Page 31: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

31ECE 448 – FPGA and ASIC Design with VHDL

Addition of Unsigned Numbers (3)

ARCHITECTURE Behavior OF adder16 IS SIGNAL Xs : UNSIGNED(15 DOWNTO 0); SIGNAL Ys : UNSIGNED(15 DOWNTO 0);

SIGNAL Sum : UNSIGNED(16 DOWNTO 0) ;BEGIN

Xs <= unsigned(X); Ys <= unsigned(Y);

Sum <= ('0' & X) + Y + Cin ;S <= std_logic_vector(Sum(15 DOWNTO 0)) ;Cout <= Sum(16) ;

END Behavior ;

Page 32: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

32ECE 448 – FPGA and ASIC Design with VHDL

Addition of Signed Numbers (1)LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.std_logic_signed.all ;

ENTITY adder16 ISPORT ( Cin : IN STD_LOGIC ;

X, Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ;

Overflow : OUT STD_LOGIC ) ;END adder16 ;

ARCHITECTURE Behavior OF adder16 IS SIGNAL Sum : STD_LOGIC_VECTOR(16 DOWNTO 0) ;

BEGINSum <= ('0' & X) + Y + Cin ;S <= Sum(15 DOWNTO 0) ;Overflow <= Sum(16) XOR X(15) XOR Y(15) XOR Sum(15) ;

END Behavior ;

Page 33: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

33ECE 448 – FPGA and ASIC Design with VHDL

Addition of Signed Numbers (2)

LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.numeric_std.all ;

ENTITY adder16 ISPORT ( Cin : IN STD_LOGIC ;

X, Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ;Overflow : OUT STD_LOGIC ) ;

END adder16 ;

Page 34: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

34ECE 448 – FPGA and ASIC Design with VHDL

Addition of Signed Numbers (3)

ARCHITECTURE Behavior OF adder16 IS SIGNAL Xs : SIGNED(15 DOWNTO 0); SIGNAL Ys : SIGNED(15 DOWNTO 0);

SIGNAL Sum : SIGNED(16 DOWNTO 0) ;BEGIN

Xs <= signed(X); Ys <= signed(Y);

Sum <= ('0' & X) + Y + Cin ;S <= std_logic_vector(Sum(15 DOWNTO 0)) ;Overflow <= Sum(16) XOR X(15) XOR Y(15) XOR Sum(15) ;

END Behavior ;

Page 35: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

35ECE 448 – FPGA and ASIC Design with VHDL

Addition of Signed Numbers (3)

ENTITY adder16 ISPORT ( X, Y : IN INTEGER RANGE -32768 TO 32767 ;

S : OUT INTEGER RANGE -32768 TO 32767 ) ;END adder16 ;

ARCHITECTURE Behavior OF adder16 IS BEGIN

S <= X + Y ;END Behavior ;

Page 36: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

36ECE 448 – FPGA and ASIC Design with VHDL

Multiplication of signed and unsigned numbers (1)

LIBRARY ieee;USE ieee.std_logic_1164.all; USE ieee.numeric_std.all ;

entity multiply is port( a : in STD_LOGIC_VECTOR(7 downto 0); b : in STD_LOGIC_VECTOR(7 downto 0); cu : out STD_LOGIC_VECTOR(15 downto 0); cs : out STD_LOGIC_VECTOR(15 downto 0) );

end multiply;

architecture dataflow of multiply is

SIGNAL sa: SIGNED(7 downto 0);SIGNAL sb: SIGNED(7 downto 0);SIGNAL sc: SIGNED(15 downto 0);

SIGNAL ua: UNSIGNED(7 downto 0);SIGNAL ub: UNSIGNED(7 downto 0); SIGNAL uc: UNSIGNED(15 downto 0);

Page 37: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

37ECE 448 – FPGA and ASIC Design with VHDL

Multiplication of signed and unsigned numbers (2)

begin

-- signed multiplicationsa <= SIGNED(a);sb <= SIGNED(b);sc <= sa * sb;cs <= STD_LOGIC_VECTOR(sc);

-- unsigned multiplicationua <= UNSIGNED(a);

ub <= UNSIGNED(b); ures <= ua * ub;cu <= STD_LOGIC_VECTOR(uc);

end dataflow;

Page 38: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

38ECE 448 – FPGA and ASIC Design with VHDL

Combinational Logic Synthesisfor

Intermediates

Page 39: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

39ECE 448 – FPGA and ASIC Design with VHDL

Describing combinational logic using processes

LIBRARY ieee ;USE ieee.std_logic_1164.all ;ENTITY dec2to4 IS

PORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;En : IN STD_LOGIC ;y : OUT STD_LOGIC_VECTOR(0 TO 3) ) ;

END dec2to4 ;

ARCHITECTURE Behavior OF dec2to4 ISBEGIN

PROCESS ( w, En )BEGIN

IF En = '1' THENCASE w IS

WHEN "00" => y <= "1000" ;WHEN "01" => y <= "0100" ;WHEN "10" => y <= "0010" ;WHEN OTHERS => y <= "0001" ;

END CASE ;ELSE

y <= "0000" ;END IF ;

END PROCESS ;END Behavior ;

Page 40: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

40ECE 448 – FPGA and ASIC Design with VHDL

Describing combinational logic using processes

LIBRARY ieee ;USE ieee.std_logic_1164.all ;ENTITY seg7 IS

PORT ( bcd : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;leds : OUT STD_LOGIC_VECTOR(1 TO 7) ) ;

END seg7 ;ARCHITECTURE Behavior OF seg7 ISBEGIN

PROCESS ( bcd )BEGIN

CASE bcd IS -- abcdefgWHEN "0000" => leds <= "1111110" ;WHEN "0001" => leds <= "0110000" ;WHEN "0010" => leds <= "1101101" ;WHEN "0011" => leds <= "1111001" ;WHEN "0100" => leds <= "0110011" ;WHEN "0101" => leds <= "1011011" ;WHEN "0110" => leds <= "1011111" ;WHEN "0111" => leds <= "1110000" ;WHEN "1000" => leds <= "1111111" ;WHEN "1001" => leds <= "1110011" ;WHEN OTHERS => leds <= "-------" ;

END CASE ;END PROCESS ;

END Behavior ;

Page 41: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

41ECE 448 – FPGA and ASIC Design with VHDL

Describing combinational logic using processes

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY compare1 ISPORT ( A, B : IN STD_LOGIC ;

AeqB : OUT STD_LOGIC ) ;END compare1 ;

ARCHITECTURE Behavior OF compare1 ISBEGIN

PROCESS ( A, B )BEGIN

AeqB <= '0' ;IF A = B THEN

AeqB <= '1' ;END IF ;

END PROCESS ;END Behavior ;

Page 42: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

42ECE 448 – FPGA and ASIC Design with VHDL

Incorrect code for combinational logic- Implied latch (1)

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY implied ISPORT ( A, B : IN STD_LOGIC ;

AeqB : OUT STD_LOGIC ) ;END implied ;

ARCHITECTURE Behavior OF implied ISBEGIN

PROCESS ( A, B )BEGIN

IF A = B THENAeqB <= '1' ;

END IF ;END PROCESS ;

END Behavior ;

Page 43: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

43ECE 448 – FPGA and ASIC Design with VHDL

Incorrect code for combinational logic- Implied latch (2)

A B AeqB

Page 44: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

44ECE 448 – FPGA and ASIC Design with VHDL

Describing combinational logic using processes

Rules that need to be followed:

1. All inputs to the combinational circuit should be included in the sensitivity list2. No other signals should be included

in the sensitivity list3. None of the statements within the process

should be sensitive to rising or falling edges4. All possible cases need to be covered in the internal

IF and CASE statements in order to avoid implied latches

Page 45: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

45ECE 448 – FPGA and ASIC Design with VHDL

Covering all cases in the IF statement

Using ELSE

Using default values

AeqB <= '0' ;IF A = B THEN

AeqB <= '1' ;

IF A = B THENAeqB <= '1' ;

ELSEAeqB <= '0' ;

Page 46: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

46ECE 448 – FPGA and ASIC Design with VHDL

Covering all cases in the CASE statement

Using WHEN OTHERS

Using default values

CASE y IS WHEN S1 => Z <=

"10"; WHEN S2 => Z <=

"01"; WHEN OTHERS => Z

<= "00";END CASE;

Z <= "00";CASE y IS WHEN S1 => Z <=

"10"; WHEN S2 => Z <=

"10";END CASE;

CASE y IS WHEN S1 => Z <=

"10"; WHEN S2 => Z <=

"01"; WHEN S3 => Z <=

"00"; WHEN OTHERS => Z

<= "--";END CASE;

Page 47: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

47ECE 448 – FPGA and ASIC Design with VHDL

Sequential Logic Synthesisfor

Beginners

Page 48: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

48ECE 448 – FPGA and ASIC Design with VHDL

For BeginnersUse processes with very simple structure onlyto describe - registers - shift registers - counters - state machines.Use examples discussed in class as a template.Create generic entities for registers, shift registers, andcounters, and instantiate the corresponding components ina higher level circuit using GENERIC MAP PORT MAP.Supplement sequential components with combinational logic described using concurrent statements.

Page 49: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

49ECE 448 – FPGA and ASIC Design with VHDL

Sequential Logic Synthesisfor

Intermediates

Page 50: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

50ECE 448 – FPGA and ASIC Design with VHDL

For Intermmediates

1. Use Processes with IF and CASE statements only. Do not use LOOPS or VARIABLES.

2. Sensitivity list of the PROCESS should include only signals that can by themsleves change the outputs of the sequential circuit (typically, clock and asynchronous set or reset)

3. Do not use PROCESSes without sensitivity list(they can be synthesizable, but make simulation inefficient)

Page 51: George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12

51ECE 448 – FPGA and ASIC Design with VHDL

For Intermmediates (2)

Given a single signal, the assignments to this signal should only be made within a single process block in order to avoidpossible conflicts in assigning values to this signal.

Process 1: PROCESS (a, b)BEGIN y <= a AND b;END PROCESS;

Process 2: PROCESS (a, b)BEGIN y <= a OR b;END PROCESS;