PROGRAMMABLE LOGIC DEVICES “ Hardware make softer, software make harder “
•Perkembangan Teknologi Logic Device •Definisi PLD •Konsep Dasar PLD •Jenis-jenis PLD : PAL, PLA, GAL •Memprogram dan men-develop pogram PLD •Jenis PLD yang lain : FPLA, FPGA, CPLD •Mengenal VHDL programmable logic devices
1
Perkembangan Teknologi Logic Devices Source: Dataquest
Logic
Standard Logic Programmable Logic Devices
(PLDs)
SPLDs (PALs)
ASIC
Gate Arrays
Cell-Based ICs
CPLDs
Full Custom ICs
FPGAs
Acronyms SPLD = Simple Programmable Logic Device PAL = Programmable Array of Logic CPLD = Complex PLD FPGA = Field Programmable Gate Array ASIC = Application –Specific Integrated Circuit
programmable logic devices
2
Definisi PLD Æ sebuah IC yang terdiri dari banyak gate / gerbang logika (terdiri dari gerbang AND, OR, NOT, register dan flip-flop), yang saling diinterkoneksikan di dalam IC tersebut. Programmable Æ untuk membuat sebuah fungsi pada PLD tersebut, seorang disainer harus membuat program yang nantinya akan menyebabkan terjadinya proses “fuse blowing” pada interkoneksi gerbang, flip-flop maupun register, sehingga didapatkan pola rangkaian seperti yang diinginkan. programmable logic devices
3
Konsep Dasar A
B AND array
A
A
B
B AB AB AB
Product lines
AB Fuse 1
4
OR array
Input lines
programmable logic devices
Sum of Product Output
4
D
Arsitektur PROM untuk PLD
C
B
A
OR array (programmable)
1 2 3
x x x x
x x x x
x x x x
x x x x
x x x x
x x x x
x x x x
x x x x
15
x x x x
x x x x
x x x x
x x x x
16
xxx x
4
Contoh :
5 6
AM27S13 -PROM dengan konfigurasi 512x4 -Ada 512 address -Dengan 9 jalur address input -Ada 4 data output
7 8 9 10 11 12 13 14
AND array (hard wired) programmable logic devices
xxx x xxx x xxx x
Fuse 3 2 1 0 tersedia O3 O2 O1 O0 OUTPUT
5
Fuse “blown” untuk mendapatkan output sesuai fungsi yang diinginkan D
C
B
O3 = AB + CD O2 = ABC O1 = ABCD + ABCD O0 = A + BD + CD C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
A 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
O3 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1
3
x x x
4
x
1 2
Tabel Kebenaran untuk output O3 D 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
A
5 6
DCBA DCBA DCBA DCBA
7 8
DCBA
x DCBA x DCBA xx x x x x
x
x DCBA
DCBA DCBA DCBA
11
x
13
x
14
DCBA
DCBA
programmable logic devices
DCBA
x DCBA
15 16
Fuse “blown”
DCBA
x DCBA
9
12
DCBA
x
10
DCBA
DCBA DCBA
x
DCBA DCBA
3 2 1 0
O3 O2 O1 O0
6
D
Programmable Array Logic (PAL) Arsitektur mirip dengan PROM, di bagian AND array adalah programmable, sedangkan di bagian OR array adalah hard wired Kelebihan dibandingkan dengan PROM, hanya fungsi AND yang diinginkan saja yang diprogram, dan output masing-masing AND disambungkan ke array OR Output OR merupakan fungsi jumlahan dari fungsi-fungsi AND yang diinginkan
C
B
A
OR array (hard wired)
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
1
x x x x x x x x x x x x x x x x x x x x x x x x
5
x x x x x x x x x x x x x x x x x x x x x x x x
8
2 3 4
6 7
9 10
x x x x x x x x x x x x x x x x
11
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
13
12
14 15 16 3 2 1 0
AND array (programmable) programmable logic devices
O3 O2 O1 O0 OUTPUT7
PAL diprogram sesuai fungsi yang diinginkan D
C
B
A
• Setiap OR maksimum hanya dapat menjumlahkan x x 4 buah minterm (dengan konfigurasi di samping). x x • Jika sebuah OR hanya terisi kurang dari 4 minterm, x x xx x x x x maka minterm / AND array yang tidak digunakan x x xx x x x x diberi nilai “0” O3 = AB + CD + 0 + 0 = AB + CD O2 = ABC + 0 + 0 + 0 = ABC O1 = ABCD + ABCD O0 = A + BD + CD + 0 = A + BD + CD
xx xx xx x x xx xx x
x xx xx xx x x xx xx
AB
1 2
CD
3
0
4
0
x xx xx xx x
5
ABC
x x xx xx xx xx x x
10
x xx xx xx x
x x x x xx x x x x
0 0
6 7 8 9
11
0 ABCD ABCD 0 0
12
A
13
BD
14
CD
15
0
16 3 2 1 0
programmable logic devices
O3 O2 O1 O0 8
Field Programmable Logic Array (FPLA) Lebih kompleks dari PAL. Juga terdiri dari array programmable input AND dan array output OR. Mempunyai fleksibilitas untuk memprogram input OR
Complex Programmable Logic Devices (CPLD) Merupakan PLD dalam kapasitas lebih besar. Terdiri dari beberapa PLD (multiple PLD)
Struktur CPLD programmable logic devices
9
Field Programmable Gate Array (FPGA) • • • • •
Dikonfigurasi oleh End User Tidak memerlukan proses Fabrikasi Tersedia solusi yang mendukung chip customized VLSI Mampu menimplementasikan logic circuit, instant manufacturring, very-low cost prototype Pemrograman yang singkat untuk fungsi dan kemampuan yang setara dengan ASIC
Struktur FPGA programmable logic devices
10
Struktur Dasar FPGA
CLB
Slew Rate Control
CLB
Switch Matrix
D
CLB
Q
Passive Pull-Up, Pull-Down
Vcc
Output Buffer
Pad
Input Buffer
CLB Q
Programmable Interconnect
D
Delay
I/O Blocks (IOBs)
C1 C2 C3 C4 H1 DIN S/R EC S/R Control
G4 G3 G2 G1
DIN
G Func. Gen.
SD
F'
H'
EC RD
1
F4 F3 F2 F1
H Func. Gen. F Func. Gen.
Y
G' H' S/R Control
DIN
SD
F'
D
G'
Q
H'
1 H'
K
Q
D
G'
F'
EC RD
X
Configurable Logic Blocks (CLBs) programmable logic devices
11
Memprogram PLD START Develop circuit logic equation
Send fuse map and test data to programmer
A Run program development software
Program the PLD
Works ?
A
Test the PLD in its actual circuit
Works ?
Software generate fuse map and test data
Check design equations
Y
Test the PLD
Input logic equation
N
N
Troubleshoot
Y DONE
Flow Chart Mendisain, Memprogram dan mengetes PLD programmable logic devices
12
Beberapa peralatan yang diperlukan untuk mendisain dan membangun rangkaian menggunakan PLD : •Personal Computer (PC) •PLD Development Software •Programming fixture •Software untuk men-drive programming fixture •Programmable Logic Device
PLD Development Software
Programming Software ZIF = Zero-insertion Force PC Programming Fixture Serial Cable
ZIF Socket
programmable logic devices
13
Programmable Logic - Design Flow 1
2
3
Design Entry dengan cara schematic, ABEL, VHDL, dan/atau Verilog. Implementation yaitu Placement & Routing dan bitstream generation. Juga, analyze timing, view layout, .
Download meng-upload bitstream ke Hardware (FPGA chip)
XC4000 XC4000
programmable logic devices
XC4000
14
Digambarkan dalam blok diagram :
programmable logic devices
15
Flowchart siklus developing PLD Design
Create JEDEC file
Create source file
Program PLD
Compile
In-circuit test
Edit source file Y
Errors? N
Identify design flaw
Simulate
Works ? Y DONE
Y Troubleshoot
N
Problems? N
programmable logic devices
16
Verilog HDL / VHDL – Verilog HDL / VHDL adalah Bahasa Pendeskripsi Perangkat Keras / Hardware Description Language (HDL). – Hardware Description Language adalah bahasa yang dapat digunakan untuk mendeskripsikan sebuah sistim digital, misal, sebuah komputer atau komponen dari komputer programmable logic devices
17
Apakah Verilog HDL / VHDL? • Verilog adalah salah satu HDL yang digunakan oleh disainer hardware dalam industri maupun sekolah. • HDL yang lain adalah VHDL (Very High-speed Integrated Circuit HDL) • VHDL dibuat dengan standart IEEE pada tahun 1987, sedangkan Verilog pada tahun 1995. • Verilog sangat menyerupai C, dan para insinyur elektronika dan komputer sudah familiar dengan bahasa C. • VHDL menyerupai EDA (Electronic Digital Assembler) . programmable logic devices
18
Struktur Pemrograman VHDL • Entity dan Architecture • Modeling: Behavior , Structure dan data Flow
programmable logic devices
19
Ada tiga cara untuk mendiskripsikan Rangkaian 1. Structural – Didesain berdasarkan perkomponen dan “merangkai komponen tersebut
2. Dataflow (RTL) – Didesain berdasarkan alur register data
3. Behavioural – Didesain berdasarkan Algorithma
programmable logic devices
20
• Entity Declaration – Spesifikasi eksternal dari rangkaian • Architecture Body – Fungsi sesungguhnya dari rangkaian • Disain deskripsi minimum VHDL terdiri dari : – Paling sedikit satu entity dan satu Architecture Body Architecture Body
Entity Declaration programmable logic devices
21
Entity Konstruksi “Entity” berfungsi memodelkan interface eksternal
External Interface d0 d1 d2 d3 en clk
REG_4 Internal Functionality
programmable logic devices
q0 q1 q2 q3
22
Entity name Port
Port name
entity reg4 is port (do,d1,d2,d3,en,clk : in bit; qo,q1,q3,q4: out bit;); end entity reg4; Port mode
“port” VHDL membentuk model data input/output. ENTITY entity-name IS [PORT(interface-signal-declaration);] END [ENTITY] [entity-name]; programmable logic devices
23
Rangkaian 1 (8-bit Comparator) A[8]
B[8]
8-bit Comparator
EQ
Deklarasi Entity : ENTITY compare IS PORT(a, b: IN bit_vector(0 TO 7); eq: OUT bit); END compare;
programmable logic devices
24
Architecture Body • Fungsi sesungguhnya dari circuit
ARCHITECTURE arch-name OF entity-name IS [declarations] BEGIN architecture body END [ARCHITECTURE] [arch-name]; programmable logic devices
25
Architecture body dari rangkaian 1 adalah :
ARCHITECTURE compare1 OF compare IS BEGIN eq <= ‘1’ WHEN (a=b) ELSE ‘0’; END compare1;
programmable logic devices
26
HDL total dari rangkaian 1 adalah : ENTITY compare IS PORT(a, b: IN bit_vector(0 TO 7); eq: OUT bit); END compare; ARCHITECTURE compare1 OF compare IS BEGIN eq <= ‘1’ WHEN (a=b) ELSE ‘0’; END compare1;
programmable logic devices
27
x y cin
Rangkaian 2 (Full Adder)
sum
cout ENTITY fulladder IS PORT(x, y, cin: IN bit; cout, sum: OUT bit); END fulladder; ARCHITECTURE concurrent OF fulladder IS BEGIN sum <= x XOR y XOR cin; cout <= (x AND y) OR (x AND cin) OR (y AND cin); END concurrent; programmable logic devices
28
Behavioral Description LIBRARY ieee; USE ieee.std_logic_1164.ALL ENTITY eqcomp4 IS PORT( a, b: IN std_logic_vector(3 DOWNTO 0); equals: OUT std_logic); END eqcomp4; ARCHITECTURE behavioral OF eqcomp4 IS BEGIN comp: PROCESS (a, b) BEGIN IF a = b then equals <= ‘1’; ELSE equals <= ‘0’; END IF; END PROCESS comp; END behavioral; programmable logic devices
29
Dataflow(RTL) Description LIBRARY ieee; USE ieee.std_logic_1164.ALL ENTITY eqcomp4 IS PORT( a, b: IN std_logic_vector(3 DOWNTO 0); equals: OUT std_logic); END eqcomp4; ARCHITETURE dataflow OF eqcomp4 IS BEGIN equals <= ‘1’ WHEN (a=b) ELSE ‘0’; END dataflow; programmable logic devices
30
Dataflow(RTL) Description LIBRARY ieee; USE ieee.std_logic_1164.ALL ENTITY eqcomp4 IS PORT( a, b: IN std_logic_vector(3 DOWNTO 0); equals: OUT std_logic); END eqcomp4; ARCHITETURE bool OF eqcomp4 IS BEGIN equals <= NOT(a(0) XOR b(0)) AND NOT(a(1) XOR b(1)) AND NOT(a(2) XOR b(2)) AND NOT(a(3) XOR b(3)) ; END bool; programmable logic devices
31