Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
9 views76 pages

Lecture06 ProgrammableLogicDevices

The document outlines a lab session focused on implementing a 1-bit and 4-bit Full-Adder using VHDL, emphasizing modular design and structural modeling. It details the process of component declaration, instantiation, and the necessary connections between components. Additionally, it introduces Programmable Logic Devices (PLDs) and various types of ROM, including PROM, EPROM, and PLA, highlighting their programming and functional characteristics.

Uploaded by

heisonlee14
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views76 pages

Lecture06 ProgrammableLogicDevices

The document outlines a lab session focused on implementing a 1-bit and 4-bit Full-Adder using VHDL, emphasizing modular design and structural modeling. It details the process of component declaration, instantiation, and the necessary connections between components. Additionally, it introduces Programmable Logic Devices (PLDs) and various types of ROM, including PROM, EPROM, and PLA, highlighting their programming and functional characteristics.

Uploaded by

heisonlee14
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 76

Lab Session 2

Objectives
• Learn the modular design flow
• Implement a 1-bit Full-Adder using VHDL
• Implement a 4-bit Full-Adder using VHDL
1-bit Full-Adder

1
Components and Instantiation
• Structural modeling: Modular design of a complex
project
• When designing a complex project, we can split it
into two or more simple designs (sub-modules/sub-
circuits/components)
• Example: A full adder (FA) contains of 2 half adders
(HAs); Half adder can be modeled by a component

2
Structural Modeling
• Structural modeling or modular design allows us to pack
low-level functionalities into modules
• Allows a designed module to be reused without the
need to reinvent and re-test the same
functions/modules every time
• To include a component into a module, we need to
(1) declare the component
(2) instance the component
in architecture

3
Component Declaration
• An architecture may contain multiple components and
they must be declared first
architecture [name] …
[signal]

component XX -- Component declaration



end component;

component YY -- Component declaration



end component;

begin
… -- Component instantiation
end [name];

4
Inputs Outputs
Half Adder a b c s
0 0 0 0
Create the sub-module of half adder first 0 1 0 1
1 0 0 1
sum = 𝑎𝑎 ⊕ 𝑏𝑏 carry = 𝑎𝑎 � 𝑏𝑏 = 𝑎𝑎𝑎𝑎
1 1 1 0

--sub module(half adder) entity declaration


entity halfadder is
port (a : in STD_LOGIC;
b : in STD_LOGIC;
sum : out STD_LOGIC;
carry : out STD_LOGIC
);
end halfadder;

architecture Behavioral of halfadder is


begin
sum <= a xor b;
carry <= a and b;
end Behavioral;
5
Full Adder
- Create the component entity halfadder
- Create the module entity fulladder
- Determine the number of components (i.e. 2 halfadder
in this case) used in the design
- Define signals for inter-connections between halfadder
- Provide each component a different name
- Then instantiates the declared component

6
Full Adder
--top module(full adder) entity declaration
entity fulladder is
port (a : in std_logic;
b : in std_logic;
cin : in std_logic;
sum : out std_logic;
carry : out std_logic
);
end fulladder;

--top module architecture declaration


architecture behavior of fulladder is

component halfadder
port(
a : in std_logic;
b : in std_logic;
sum : out std_logic; --sub-module(half adder) is
carry : out std_logic declared as a component
); before the keyword "begin“
end component;
7
Component Instantiation
Differences between a component and an entity
declaration:
• Entity declaration declares a circuit model containing
one or multiple architectures
• Component declaration declares a virtual circuit
template, which must be instantiated to take effect
during the design
• Instantiation – To map the signals in the entity with the
input/output of the component
• Port map is required for component instantiation
8
Full Adder
• Two HAs are needed
• Internal signals s1,c1,c2 are used to connect the two Has
• In HA, we define port (a:in STD_LOGIC; b:in STD_LOGIC;
sum:out STD_LOGIC; carry:out STD_LOGIC);

signal s1,c1,c2 : std_logic:='0’; --declare internal signal

begin

--Provide a different name for each half adder.


--instantiate and do port map for the half adders.

HA1 : halfadder port map (a,b,s1,c1);


HA2 : halfadder port map (s1,cin,sum,c2);
carry <= c1 or c2; --final carry calculation

end;
9
Component Instantiation
For Creating connections between components and ports
3 steps in VHDL instantiation:
• Label: identify a unique instance of component
• Component type: select a targeted declared component
• Port Map: Connect component to signals

Signals must be of the same data type for the connecting


pins 10
Component Instantiation
signal s1,c1,c2 : std_logic:='0’; --declare internal signal

begin

--Provide a different name for each half adder.


--instantiate and do port map for the half adders.

HA1 : halfadder port map (a,b,s1,c1);


HA2 : halfadder port map (
a => s1,
b => cin,
sum => sum,
carry => c2
);
carry <= c1 or c2; --final carry calculation

end;

11
Port Map
Module FA
entity halfadder is
Port ( a : in STD_LOGIC;
Module HA
b : in STD_LOGIC;
a
sum : out STD_LOGIC;
carry : out STD_LOGIC b
); sum
end halfadder; carry

Port name of Halfadder (a,b,sum,carry)

Module HA
begin a
b
--Provide a different name for each half adder.
--instantiate and do port map for the half adders. sum
carry
HA1 : halfadder port map (a,b,s1,c1);
HA2 : halfadder port map (s1, cin,sum,c2);
carry <= c1 or c2; --final carry calculation

end; 12
Half-Adder 1
HA1 : halfadder port map (a,b,s1,c1);

a sum s1
HA1: halfadder
a b carry c1 sum
b
cin a sum
HA2: halfadder carry
b carry

13
Half-Adder 2
HA2 : halfadder port map (s1,cin,sum,c2);

a sum s1
HA1: halfadder
a b carry c1 sum
b
cin a sum
HA2: halfadder carry
b carry c2

carry <= c1 or c2; 14


1-bit Full-Adder

15
4-bit Full-Adder

16
4-bit Full-Adder

17
RTL Analysis – Show the Flow of Data

18
Simulation

19
Hardware

• SW0-SW3 as input i_A, SW4-SW7 as input i_B,


push button BTNL as input i_Ci
• LD0-LD3 as o_S, LD4 as o_Cout
20
Results

21
EE2000 Logic Circuit Design

Lecture 6 – Programmable Logic


Devices

mouser.com
Outline
6.1 Programmable Logic Devices
6.2 Programmable Read-only Memory (PROM)
6.3 Programming Logic Array (PLA)
6.4 Programming Array Logic (PAL)
6.5 Field Programmable Gate Array Logic (FPGA)

23
6.1 Programmable Logic Devices
• Logic circuits constructed using discrete logic gates
for a fixed function are not reconfigurable/
programmable
• Programmable Logic Devices (PLDs) are integrated
circuit chips that have undefined function at the
time of manufacture
• It has to be programmed by user to implement the
desired function
• For design and prototyping

24
General Structure of PLD
To implement two-level combinational logic in
Sum of Products Form

25
PLD Notation
Fusible link Hard-wired connection

All fuses are intact

26
PLD Notation
𝑥𝑥 𝑦𝑦 𝑧𝑧
Closed connection

× Open connection

Fixed connection at factory

× All connected
× × ×
𝑓𝑓 𝑔𝑔 ℎ 𝑖𝑖 27
6.2 Programmable Read-Only Memory
• Has fixed AND array and programmable OR array
• n inputs require 2n AND gates and can be
implemented using n × 2n decoder.

𝑥𝑥 𝑦𝑦

× × × ×
× × × ×
× × × ×
× × × ×

𝑓𝑓 𝑔𝑔 ℎ 𝑖𝑖
28
Example (8 × 4 PROM)
Realize the following functions with a 8 × 4 PROM
𝑓𝑓3 a, b, c = ∑𝑚𝑚(2, 3, 5) 𝑓𝑓1 a, b, c = ∑𝑚𝑚(1, 2, 4, 5, 6)
𝑓𝑓2 a, b, c = ∑𝑚𝑚(0, 1, 3, 6, 7) 𝑓𝑓0 a, b, c = ∑𝑚𝑚(1, 3, 5, 6)

29
Why it is called as memory?

• An essential memory device in which permanent binary


information is stored (even when the power is turned off, the
information is still there).
• k-bit address inputs and n-bit data outputs
Inputs: address for the memory
Outputs: the word (n data bits) stored in ROM selected by the k-
bit input address
30
Types of ROM
• PROM: Programmed by user only once; non-
reprogrammable.
• EPROM (Erasable & Programmable Read-Only
Memory): Possible to erase it by exposing it to
UV light. Charge is stored during programming
can dissipated upon UV exposure.
• EEPROM (Electrically EPROM):
Reprogrammable using voltage (10K times)

31
6.3 Programmable Logic Array (PLA)
• PLA: Both AND and OR array are programmable
• For PROM, Realize a Boolean Function based on
minterm canonical expression. No minimization!
• For PLA, AND gates are programmable
– Based on sum-of-product but may not be
canonical
– Logic designer is bounded by the number of
product terms available in the AND-array
– Simplification is necessary!

32
Example
𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = ∑𝑚𝑚 0, 1, 2, 6
𝑓𝑓2 (𝑎𝑎, 𝑏𝑏, 𝑐𝑐) = ∑𝑚𝑚(1, 2, 3, 4, 6)

𝑓𝑓1 𝑓𝑓2

1 1 1 1 1 1

1 1 1

𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = 𝑎𝑎′ 𝑏𝑏 ′ + 𝑏𝑏𝑏𝑏𝑏 Four distinct


𝑓𝑓2 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = 𝑎𝑎′ 𝑐𝑐 + 𝑏𝑏𝑏𝑏𝑏 + 𝑎𝑎𝑎𝑎𝑎 product term
33
Example
𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = 𝑎𝑎′ 𝑏𝑏 ′ + 𝑏𝑏𝑏𝑏𝑏
𝑓𝑓2 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = 𝑎𝑎′ 𝑐𝑐 + 𝑏𝑏𝑏𝑏𝑏 + 𝑎𝑎𝑎𝑎𝑎
𝑎𝑎 𝑏𝑏 𝑐𝑐

× × × 𝑎𝑎′ 𝑏𝑏′

× × × × 𝑏𝑏𝑏𝑏𝑏

× × × 𝑎𝑎′ 𝑐𝑐

× × × 𝑎𝑎𝑎𝑎𝑎

𝑓𝑓1 𝑓𝑓2
34
Exercise
𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = ∑𝑚𝑚 0, 2, 3, 6
𝑓𝑓2 (𝑎𝑎, 𝑏𝑏, 𝑐𝑐) = ∑𝑚𝑚(3, 6, 7)
𝑎𝑎 𝑏𝑏 𝑐𝑐
𝑓𝑓1

𝑓𝑓2

𝑓𝑓1 𝑓𝑓2
35
Exercise
𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = ∑𝑚𝑚 0, 2, 3, 6
𝑓𝑓2 (𝑎𝑎, 𝑏𝑏, 𝑐𝑐) = ∑𝑚𝑚(3, 6, 7)
𝑎𝑎 𝑏𝑏 𝑐𝑐
𝑓𝑓1

𝑓𝑓2

𝑓𝑓1 𝑓𝑓2
36
Additional Features
• Addition of XOR gate after OR gate
• To provide flexibility for either a true output or a
complemented output
• One of the input is connected to ground when the
fuse is intact
• If blown, the input is 1

𝑓𝑓1
× 𝑓𝑓1 ⨁ 0 = 𝑓𝑓1
𝑓𝑓2 ⨁ 1 = 𝑓𝑓2′
𝑓𝑓2

37
Example
Implement the following functions with a PLA
𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = 𝑎𝑎𝑏𝑏 ′ + 𝑎𝑎𝑎𝑎 + 𝑎𝑎′ 𝑏𝑏𝑐𝑐 ′ 𝑓𝑓2 𝑎𝑎, 𝑏𝑏, 𝑐𝑐 = (𝑎𝑎𝑎𝑎 + 𝑏𝑏𝑏𝑏)′

PLA Programming Table


Product terms Input Output
𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑓𝑓1 𝑓𝑓2
𝑎𝑎𝑏𝑏′ 1 0 - 1 -
𝑎𝑎𝑎𝑎 1 - 1 1 1
𝑎𝑎 ′ 𝑏𝑏𝑐𝑐 ′ 0 1 0 1 -
𝑏𝑏𝑏𝑏 - 1 1 - 1
T/C T C

38
Example
Product terms Input Output
𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑓𝑓1 𝑓𝑓2
𝑎𝑎𝑏𝑏′ 1 0 - 1 -
𝑎𝑎𝑎𝑎 1 - 1 1 1
𝑎𝑎 ′ 𝑏𝑏𝑐𝑐 ′ 0 1 0 1 -
𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑏𝑏𝑏𝑏 - 1 1 - 1
T/C T C

× × × 𝑎𝑎𝑏𝑏′

× × × × 𝑎𝑎𝑎𝑎

× × × 𝑎𝑎′ 𝑏𝑏𝑐𝑐 ′
×
× × × 𝑏𝑏𝑏𝑏

𝑓𝑓2

× 𝑓𝑓1 39
Exercise
Simplify the following functions and their complements.
𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = ∑𝑚𝑚 0, 2, 3, 5, 7, 8, 10, 12, 13, 15
𝑓𝑓2 (𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑) = ∑𝑚𝑚(0, 4, 6, 7,8, 10, 14, 15)

𝑓𝑓1 𝑓𝑓2

𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 =


𝑓𝑓2 (𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑) =
40
Exercise
Simplify the following functions and their complements.
𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = ∑𝑚𝑚 0, 2, 3, 5, 7, 8, 10, 12, 13, 15
𝑓𝑓2 (𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑) = ∑𝑚𝑚(0, 4, 6, 7,8, 10, 14, 15)

𝑓𝑓1 𝑓𝑓2

𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 =


𝑓𝑓2 (𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑) =
41
Product Input Output
Exercise terms 𝑎𝑎 𝑏𝑏 c 𝑑𝑑 𝑓𝑓1 𝑓𝑓2
𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑑𝑑

T/C

𝑓𝑓2
𝑓𝑓1
42
6.4 Programmable Array Logic (PAL)
• PAL: The OR array is fixed
• PLA is a general design for implementing sum-of-
product terms, whereas the PAL has fixed sum-of-
product terms
• Design for PAL device is easier, but not as flexible as
that for PLA

43
PAL Diagram I
𝑎𝑎 𝑏𝑏 𝑐𝑐

• 3 inputs
• 2 outputs
• Each output can
have the most 2
product terms

𝑓𝑓1 𝑓𝑓2

44
PAL Diagram II
𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑑𝑑

𝑓𝑓1

𝑓𝑓2

𝑓𝑓3

45
𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = 𝑎𝑎𝑎𝑎𝑐𝑐 ′ + 𝑎𝑎′ 𝑏𝑏 ′ 𝑐𝑐𝑐𝑐𝑐
Example 𝑓𝑓2 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = 𝑎𝑎 + 𝑏𝑏𝑏𝑏𝑏𝑏

𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑑𝑑 𝑓𝑓3 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = 𝑎𝑎′ 𝑏𝑏 + 𝑐𝑐𝑐𝑐 + 𝑏𝑏 ′ 𝑑𝑑𝑑

× × ×
× × × × 𝑓𝑓1

×
×
× × × 𝑓𝑓2

×
× ×
× × 𝑓𝑓3

× ×
46
Limitation 𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = 𝑎𝑎𝑎𝑎𝑐𝑐 ′ + 𝑎𝑎′ 𝑏𝑏 ′ 𝑐𝑐𝑑𝑑 ′ + 𝑎𝑎𝑎𝑎 + 𝑎𝑎𝑎𝑎𝑎
𝑓𝑓2 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = 𝑎𝑎 + 𝑏𝑏𝑏𝑏𝑏𝑏
𝑏𝑏 𝑐𝑐 𝑑𝑑
𝑎𝑎
What if we need
more than 3
product terms?
𝑓𝑓1

𝑓𝑓2

𝑓𝑓3

47
Solution: Feedback 𝑓𝑓1 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑
= 𝑎𝑎𝑎𝑎𝑐𝑐 ′ + 𝑎𝑎′ 𝑏𝑏 ′ 𝑐𝑐𝑑𝑑 ′ + 𝑎𝑎𝑎𝑎 + 𝑎𝑎𝑎𝑎𝑎
𝑓𝑓2 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = 𝑎𝑎 + 𝑏𝑏𝑏𝑏𝑏𝑏
𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑑𝑑

× × ×
× × × ×
× ×
×
× × 𝑓𝑓1

×
×
× × × 𝑓𝑓2

×
48
Exercise
Implement the following functions with the PAL shown in
next slide.
𝑥𝑥 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = ∑𝑚𝑚 2, 12, 13
𝑦𝑦(𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑) = ∑𝑚𝑚(7, 8, 9, 10 , 11, 12, 13, 14, 15)
𝑧𝑧(𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑) = ∑𝑚𝑚(1, 2, 8, 12, 13)
𝑥𝑥 𝑦𝑦 𝑧𝑧

49
Exercise
𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑑𝑑

50
Exercise
Implement the following functions with the PAL shown in
next slide.
𝑥𝑥 𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑 = ∑𝑚𝑚 2, 12, 13
𝑦𝑦(𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑) = ∑𝑚𝑚(2, 5, 8, 9, 10,11, 12, 13)
𝑧𝑧(𝑎𝑎, 𝑏𝑏, 𝑐𝑐, 𝑑𝑑) = ∑𝑚𝑚(1, 2, 8, 12, 13)
𝑥𝑥 𝑦𝑦 𝑧𝑧

51
Exercise
𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑑𝑑

52
PAL16R6

27 mm × 7.6 mm 9 mm × 9 mm

• A PAL device with 16 inputs, 6


outputs with D-latch (1-bit memory
device), and 2 un-buffered outputs
• (8 inputs are feedback from outputs)
• This device can be used for designing
sequential circuit (Lecture 7)
53
Summary
Fixed Programmable
Inputs Programmable Outputs
AND array
(decoder) Connections OR array

(a) Programmable read-only memory (PROM)

Programmable Programmable Fixed


Inputs Outputs
Connections AND array OR array

(b) Programmable array logic (PAL) device

Programmable Programmable Programmable Programmable


Inputs Outputs
Connections AND array Connections OR array

(c) Programmable logic array (PLA) device

54
Given in Test and Exam

55
6.5 Field Programmable Gate Array
Logic
I/O block
• FPGAs consist of a large Configurable Switch box
number of logic blocks Logic Block
with programmable Connection
interconnects in matrix box
form.

• Three basic components


 Configurable Logic Block: To create logic circuit
 I/O Block: To connect the external inputs/outputs
 Switch/Connection Box: For interconnection
between CLB and I/Os. 56
Configurable Logic Block
• A configurable logic block (CLB) consists of a look-up-
table (LUT)
• The LUT is for implementing the truth table of a logic
function (e.g., 4-input Boolean function)
• Additional elements are for control or other functions:
D-FF (store output), MUX (select output)

57
Look-up Tables (LUTs)
Commercial FPGAs
• Xilinx: 6-LUT
• Altera: 6-LUT
• Microsemi: 4-LUT

For x-input LUT, the number of


memory locations is 2x
• 2-LUT: 22 = 4
• 4-LUT: 24 = 16

58
Look-up Tables (LUTs)

59
Example (AND gate)

60
Example (OR gate)

61
Exercise (XOR)

62
Features of LUTs
• An n-LUT can implement any n-input logic functions
• Logic minimization: Reduce the number of inputs

Why not a large LUT?


• LUTs grow exponentially based on the number of inputs
 64 inputs and 1 output → 264 memory bits
• Large LUT → long delay, less flexible
• Small LUTs: Design components that can be reused
(transforming a complex circuit into simpler circuits)

63
Solution for Large Inputs
Map circuits onto multiple LUTs
 Example: Use 2-input LUTs

64
Example (4-input LUT)

65
Interconnects
• FPGAs use switch matrices to provide interconnects
for logic blocks and I/Os
• Each switch is controlled by the SRAM cell

66
I/O Standards
• FPGA output may be connected to device with different
electrical requirements
• The FPGA pin I/O standard must be specified
• I/O Standards:
• LVTTL: low-voltage transistor-transistor logic; 3.3-V
standard that can tolerate 5-V signals.
• LVCMOS: low-voltage complementary metal-oxide
semiconductor; LVCMOS2, a 2.5-V standard that can
tolerate 5-V signals.
• …

67
FPGA Design Flow
1. Source Code: Create a model
of the design in a hardware
description language such as
VHDL or Verilog
2. Simulation: Simulate and
debug the design
3. Synthesis: Analyze the VHDL
code and implement the
described logic
4. Technology Mapping:
Transform the logic network
to the LUT network

68
FPGA Design Flow
5. Placement/Routing: Place
and interconnect all LUTs,
I/Os, etc.
6. Bitstream Generation:
Create a configuration file
for all SRAM cells (logic and
interconnect)
7. Program the FPGA based on
the bitstream configuration
file

Input: VHDL Source Codes


Output: Configuration bitstream
69
FPGA Top Down Design
• FPGA is particular suitable for digital system design
• A complex system can be made simpler by using
hierarchical approach
• Split the design in two or more simple design in order to
easily handle the complexity
Top Level

Design1 Design2
Sub- Sub- Sub-
design1 design2 design3 Sub-design4
Sub- Sub-
design5 design6

70
FPGA Top Down Design
Use VHDL module to describe each simple design

Complex Design

Simple
Design 2
Simple
Design N
Simple
Design 1
Simple
Design 3
71
VHDL Module

ENTITY

Architecture 4

Architecture 1

Architecture 3
Architecture 2
Hybrid
Data Flow

Structural
Behavioral

72
VHDL Modelling Styles

• Dataflow (design equations): Data flow modeling


can be described based on the Boolean expression
• It shows how the data flows from input to output
• It works on Concurrent execution

architecture dataflow of half_adder is


begin
sum <= a xor b;
carry_out <= a and b;
end dataflow;

73
VHDL Modelling Styles
• Behavioral (explain behavior): Behavioral modeling
is used to execute statements sequentially
architecture behavior of half_adder is
• It shows that how the begin
system performs ha: process (a, b)
begin
according to the if a = ‘1’ then
current statement sum <= not b;
carry_out <= b;
• May contain Process else
sum <= b;
statements and carry_out <= ‘0’;
Sequential statements end if;
end process ha;

end behavior;
74
VHDL Modelling Styles
Structural (Connection of sub modules): Structural modeling
is used to specify a set of interconnected components
architecture structure of half_adder is
component xor_gate
port (i1, i2: in std_logic;
o1: out std_logic);
end component;

component and_gate
port (i1, i2: in std_logic;
o1: out std_logic);
end component;

begin
u1: xor_gate port map (i1 => a, i2 => b, o1 => sum);
u2: and_gate port map (i1 => a, i2 => b, o1 => carry_out);
end structure;
75
FGPA System on Chip (SoC)
Advanced FPGA chip is
integrated with CPU
and peripheral
controllers for advanced
system design.

Programmable logic is
provided for customer
design.

Zynq-7000 (with two ARM


Cortex-A9 processors)

76

You might also like