układy reprogramowalne i soc” „specjalizowane moduły...

39
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAPrezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnychPrezentacja dystrybuowana jest bezpłatnie Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAPrezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnychPrezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 www.kapitalludzki.p.lodz.pl

Upload: others

Post on 17-Jul-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

„Układy reprogramowalne i SoC”„Specjalizowane moduły FPGA”

Prezentacja jest współfinansowana przez Unię Europejską w ramach

Europejskiego Funduszu Społecznego w projekcie pt.

„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do

zatrudniania osób niepełnosprawnych” Prezentacja dystrybuowana jest bezpłatnie

„Układy reprogramowalne i SoC”„Specjalizowane moduły FPGA”

Prezentacja jest współfinansowana przez Unię Europejską w ramach

Europejskiego Funduszu Społecznego w projekcie pt.

„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do

zatrudniania osób niepełnosprawnych” Prezentacja dystrybuowana jest bezpłatnie

Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83www.kapitalludzki.p.lodz.pl

Page 2: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 2

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Specjalizowane moduły układów Spartan 3

• Oprócz układów CLB, pozwalających na implementację układów logicznych ogólnego przeznaczenia, rodzina układów Spartan 3 zawiera również zasoby specjalizowane:– Digital Clock Managers (DCMs)– Block RAM– Układy mnożące 18x18 bit

• Pozwalają one na implementację wybranych funkcji w bardziej wydajny sposób, niż za pomocą CLB

Page 3: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 3

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Sygnały zegarowe i ich dystrybucja

Page 4: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 4

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Drzewo zegarowe

Clock signal fromoutside world

Clocktree

Flip-flops

Special clockpin and pad

Page 5: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 5

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Clock Manager

Clock signal fromoutside world

Special clockpin and pad

Daughter clocksused to drive

internal clock treesor output pins

ClockManager

etc.

Page 6: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 6

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Clock jitter

Ideal clock signal

1 2 3 4

Real clock signal with jitter

Cycle 1

Cycle 2

Cycle 3

Cycle 4

Superimposed cycles

Page 7: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 7

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Digital Clock Manager

• Moduły DCM pozwalają na:– Eliminację przesunięć fazowych zegara (clock

skew), wewnątrz układu FPGA lub w stosunku do elementów zewnętrznych

– Przesunięcie fazowe zegara o ustaloną lub regulowaną część okresu

– Generację zegara o częstotliwości pomnożonej przez iloraz dwóch liczb

– Generację zegara o współczynniku wypełnienia 50% na podstawie zegara nie spełniającego tego warunku

Page 8: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 8

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Digital Clock Manager

• DCM składa się z czterech komponentów:– Delay Locked Loop (DLL)– Digital Frequency

Synthesizer (DFS)– Phase Shift (PS)– Status Logic

Page 9: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 9

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Synteza częstotliwości

1.0 x original clock frequency

2.0 x original clock frequency

.5 x original clock frequency

Page 10: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 10

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Przesunięcie fazowe

0o Phase shifted

90o Phase shifted

180o Phase shifted

270o Phase shifted

Page 11: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 11

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Usuwanie clock skew

Main (mother) clock

Untreated daughter clock

De-skewed daughter clock

1 2 3 4

1 2 3 4

1 2 3

Clock signal fromoutside world

Special clockpin and pad

De-skewed daughterclocks used to driveinternal clock trees

or output pins

Daughter clock (monitoreddownstream of the clock manager)

fed back to special input

Page 12: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 12

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Pamięci w FPGA

Page 13: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 13

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Typy pamięci

Memory

RAM ROM

Single port Dual port

With asynchronous read

With synchronous read

Memory

Memory

Page 14: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 14

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Typy pamięci

Memory

Distributed (MLUT-based)

Block RAM-based(BRAM-based)

Inferred

Memory

Manually Using Core Generator

Instantiated

Page 15: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 15

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Distributed RAM/ROM

Page 16: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 16

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

CLB SliceCOUT

D Q

CK

S

REC

D Q

CK

REC

O

G4G3G2G1

Look -UpTable

Carry&

ControlLogic

YB

Y

F4F3F2F1

XB

X

Look -UpTable

F5IN

BYSR

S

Carry&

ControlLogic

CINCLKCE SLICE

Page 17: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 17

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Xilinx Multipurpose LUT

16-bit SR

16 x 1 RAM

4-input LUT

Page 18: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 18

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Distributed RAM

• CLB LUT configurowalny jako Distributed RAM

– LUT to 16x1 RAM– LUTy można połączyć, zwiększając

obszar RAM

• Synchroniczny zapis• Asynchroniczny odczyt

– Używając dodatkowych przerzutników, można czytać synchronicznie

– Bez dodatkowych zabiegów, odczyt rozproszonej pamięci RAM jest asynchroniczny

• Z dwóch LUTów może powstać:– 32 x 1 single-port RAM– 16 x 2 single-port RAM– 16 x 1 dual-port RAM

RAM16X1S

O

DWE

WCLKA0A1A2A3

RAM32X1S

O

DWEWCLK

A0A1A2A3A4

RAM16X2S

O1

D0

WEWCLKA0A1A2A3

D1

O0

=

=LUT

LUT lub

LUT

RAM16X1D

SPO

DWE

WCLKA0A1A2A3DPRA0 DPODPRA1DPRA2DPRA3

lub

RAM16X1S

O

DWE

WCLKA0A1A2A3

O

DWE

WCLKA0A1A2A3

RAM32X1S

O

DWEWCLK

A0A1A2A3A4

O

DWEWCLK

A0A1A2A3A4

O

DWEWCLK

A0A1A2A3A4

RAM16X2S

O1

D0

WEWCLKA0A1A2A3

D1

O0O1

D0

WEWCLKA0A1A2A3

D1

O0O1

D0

WEWCLKA0A1A2A3

O1

D0

WEWCLKA0A1A2A3

D1

O0

=

=LUTLUT

LUTLUT

LUTLUT

RAM16X1D

SPO

DWE

WCLKA0A1A2A3DPRA0 DPODPRA1DPRA2DPRA3

SPO

DWE

WCLKA0A1A2A3DPRA0 DPODPRA1DPRA2DPRA3

Page 19: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 19

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Block RAM/ROM

Page 20: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 20

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Block RAM

• Najefektywniejsza implementacja pamięci– Wykorzystuje specjalizowane bloki FPGA

• Idealne dla większości zastosowań– 3 do 126 bloków pamięci

• 18 kbits = 18,432 bits per block (16 k bez bitów parzystości)

– Większe pamięci używają wielu bloków• Single i dual-port RAMs• Synchroniczny zapis i odczyt (inaczej niż w

pamięci rozproszonej)•

Page 21: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 21

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Bloki RAM i mnożarki w strukturze FPGA

RAM blocks

Multipliers

Logic blocks

Page 22: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 22

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Block RAM w rodzinie układów Spartan 3A

Family Device RAM Columns

XC3SD1800A 4 20-22 84 1,548,288 1,512KXC3SD3400A 5 24-26 126 2,322,432 2,268KXC3S50A/AN 1 3 3 55,296 54KXC3S200A/AN 2 8 16 294,912 288KXC3S400A/AN 2 10 20 368,640 360KXC3S700A/AN 2 10 20 368,640 360KXC3S1400A/AN 2 16 32 589,824 576K

RAM Blocks Per Column

Total RAM Blocks

Total RAM Bits

Total RAM Kbits

Extended Spartan-3A FPGAs

Page 23: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 23

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Konfiguracje pamięci Block RAM

0

16,383

1

4,095

40

8,191

20

2047

8+10

1023

16+20

16k x 1

8k x 2 4k x 4

2k x (8+1)

1024 x (16+2)

Page 24: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 24

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Konfiguracje pamięci Block RAM

Page 25: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 25

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Single-Port Block RAM

Page 26: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 26

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Dual-Port Block RAM

Page 27: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 27

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Inference vs. Instatiation

• Istnieją dwie metody umieszczenia pamięci RAM:– Wywnioskowane przez syntezer (inferred)

• Przenośny kod– Jawnie umieszczone przez projektanta

(instantiated)• Najbardziej efektywne wykorzystanie zasobów w danej

technologii• Wspiera wszystkie rodzaje pamięci RAM

Page 28: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 28

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Distributed RAM

LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all; entity raminfr is generic ( bits : integer := 32; -- number of bits per RAM word addr_bits : integer := 8); -- 2^addr_bits = number of words in RAM port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(addr_bits-1 downto 0); di : in std_logic_vector(bits-1 downto 0); do : out std_logic_vector(bits-1 downto 0)); end raminfr;

architecture behavioral of raminfr is type ram_type is array (2**addr_bits-1 downto 0) of std_logic_vector (bits-1 downto 0); signal RAM : ram_type; begin process (clk) begin if (clk'event and clk = '1') then if (we = '1') then RAM(conv_integer(unsigned(a))) <= di; end if; end if; end process; do <= RAM(conv_integer(unsigned(a))); end behavioral;

Logic Utilization: Number of 4 input LUTs: 656 out of 11,776 5%Logic Distribution: Number of occupied Slices: 332 out of 5,888 5% Number of Slices containing only related logic: 332 out of 332 100% Number of Slices containing unrelated logic: 0 out of 332 0% *See NOTES below for an explanation of the effects of unrelated logic. Total Number of 4 input LUTs: 656 out of 11,776 5% Number used as logic: 144 Number used for 32x1 RAMs: 512 (Two LUTs used per 32x1 RAM) Number of bonded IOBs: 74 out of 372 19% Number of BUFGMUXs: 1 out of 24 4%

Page 29: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 29

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Block RAM - wersja 1

LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all; entity raminfr is generic ( bits : integer := 32; -- number of bits per RAM word addr_bits : integer := 8); -- 2^addr_bits = number of words in RAM port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(addr_bits-1 downto 0); di : in std_logic_vector(bits-1 downto 0); do : out std_logic_vector(bits-1 downto 0)); end raminfr;

architecture behavioral of raminfr is type ram_type is array (2**addr_bits-1 downto 0) of std_logic_vector (bits-1 downto 0); signal RAM : ram_type; begin process (clk) begin if (clk'event and clk = '1') then if (we = '1') then RAM(conv_integer(unsigned(a))) <= di; end if; do <= RAM(conv_integer(unsigned(a)));

end if; end process; end behavioral;

Logic Utilization:Logic Distribution: Number of Slices containing only related logic: 0 out of 0 0% Number of Slices containing unrelated logic: 0 out of 0 0% *See NOTES below for an explanation of the effects of unrelated logic. Number of bonded IOBs: 74 out of 372 19% Number of BUFGMUXs: 1 out of 24 4% Number of RAMB16BWEs: 1 out of 20 5%

Page 30: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 30

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Block RAM - wersja 2LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all; entity raminfr is generic ( bits : integer := 32; -- number of bits per RAM word addr_bits : integer := 8); -- 2^addr_bits = number of words in RAM port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(addr_bits-1 downto 0); di : in std_logic_vector(bits-1 downto 0); do : out std_logic_vector(bits-1 downto 0)); end raminfr;

architecture behavioral of raminfr is type ram_type is array (2**addr_bits-1 downto 0) of std_logic_vector (bits-1 downto 0); signal RAM : ram_type; signal read_a : std_logic_vector(addr_bits-1 downto 0);

begin process (clk) begin if (clk'event and clk = '1') then if (we = '1') then RAM(conv_integer(unsigned(a))) <= di; end if; read_a <= a;

end if; end process; do <= RAM(conv_integer(unsigned(read_a)));end behavioral;

Logic Utilization:Logic Distribution: Number of Slices containing only related logic: 0 out of 0 0% Number of Slices containing unrelated logic: 0 out of 0 0% *See NOTES below for an explanation of the effects of unrelated logic. Number of bonded IOBs: 74 out of 372 19% Number of BUFGMUXs: 1 out of 24 4% Number of RAMB16BWEs: 1 out of 20 5%

Page 31: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 31

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Dual Port RAM - distributed

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity raminfr is generic ( bits : integer := 32; -- number of bits per RAM word addr_bits : integer := 8); -- 2^addr_bits = number of words in RAM port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(addr_bits-1 downto 0); dpra : in std_logic_vector(addr_bits-1 downto 0); di : in std_logic_vector(bits-1 downto 0); spo : out std_logic_vector(bits-1 downto 0); dpo : out std_logic_vector(bits-1 downto 0)); end raminfr;

architecture syn of raminfr is type ram_type is array (2**addr_bits-1 downto 0) of std_logic_vector (bits-1 downto 0); signal RAM : ram_type; begin process (clk) begin if (clk'event and clk = '1') then if (we = '1') then RAM(conv_integer(unsigned(a))) <= di; end if; end if; end process; spo <= RAM(conv_integer(unsigned(a))); dpo <= RAM(conv_integer(unsigned(dpra))); end syn;

Logic Utilization: Number of 4 input LUTs: 1,584 out of 11,776 13%Logic Distribution: Number of occupied Slices: 800 out of 5,888 13% Number of Slices containing only related logic: 800 out of 800 100% Number of Slices containing unrelated logic: 0 out of 800 0% *See NOTES below for an explanation of the effects of unrelated logic. Total Number of 4 input LUTs: 1,584 out of 11,776 13% Number used as logic: 560 Number used for Dual Port RAMs: 1,024 (Two LUTs used per Dual Port RAM) Number of bonded IOBs: 114 out of 372 30% Number of BUFGMUXs: 1 out of 24 4%

Page 32: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 32

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Dual Port RAM - Block - wersja 1

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity raminfr is generic ( bits : integer := 32; -- number of bits per RAM word addr_bits : integer := 8); -- 2^addr_bits = number of words in RAM port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(addr_bits-1 downto 0); dpra : in std_logic_vector(addr_bits-1 downto 0); di : in std_logic_vector(bits-1 downto 0); spo : out std_logic_vector(bits-1 downto 0); dpo : out std_logic_vector(bits-1 downto 0)); end raminfr;

architecture syn of raminfr is type ram_type is array (2**addr_bits-1 downto 0) of std_logic_vector (bits-1 downto 0); signal RAM : ram_type; begin process (clk) begin if (clk'event and clk = '1') then if (we = '1') then RAM(conv_integer(unsigned(a))) <= di; end if; spo <= RAM(conv_integer(unsigned(a))); dpo <= RAM(conv_integer(unsigned(dpra))); end if; end process; end syn;

Logic Utilization:Logic Distribution: Number of Slices containing only related logic: 0 out of 0 0% Number of Slices containing unrelated logic: 0 out of 0 0% *See NOTES below for an explanation of the effects of unrelated logic. Number of bonded IOBs: 114 out of 372 30% Number of BUFGMUXs: 1 out of 24 4% Number of RAMB16BWEs: 1 out of 20 5%

Page 33: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 33

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Dual Port RAM - Block - wersja 2library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity raminfr is generic ( bits : integer := 32; -- number of bits per RAM word addr_bits : integer := 8); -- 2^addr_bits = number of words in RAM port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(addr_bits-1 downto 0); dpra : in std_logic_vector(addr_bits-1 downto 0); di : in std_logic_vector(bits-1 downto 0); spo : out std_logic_vector(bits-1 downto 0); dpo : out std_logic_vector(bits-1 downto 0)); end raminfr; architecture syn of raminfr is type ram_type is array (2**addr_bits-1 downto 0) of std_logic_vector (bits-1 downto 0); signal RAM : ram_type; signal read_a, read_dpra: std_logic_vector(addr_bits-1 downto 0);begin process (clk) begin if (clk'event and clk = '1') then if (we = '1') then RAM(conv_integer(unsigned(a))) <= di; end if; read_a <= a; read_dpra <= dpra; end if; end process; spo <= RAM(conv_integer(unsigned(read_a))); dpo <= RAM(conv_integer(unsigned(read_dpra))); end syn;

Logic Utilization:Logic Distribution: Number of Slices containing only related logic: 0 out of 0 0% Number of Slices containing unrelated logic: 0 out of 0 0% *See NOTES below for an explanation of the effects of unrelated logic. Number of bonded IOBs: 114 out of 372 30% Number of BUFGMUXs: 1 out of 24 4% Number of RAMB16BWEs: 1 out of 20 5%

Page 34: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 34

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

ROM - distributedLIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all; entity rominfr is generic ( bits : integer := 10; -- number of bits per ROM word addr_bits : integer := 3); -- 2^addr_bits = number of words in ROM port (a : in std_logic_vector(addr_bits-1 downto 0); do : out std_logic_vector(bits-1 downto 0)); end rominfr; architecture behavioral of rominfr is type rom_type is array (2**addr_bits-1 downto 0) of std_logic_vector (bits-1 downto 0); constant ROM : rom_type := ("0000110001", "0100110100", "0100110110", "0110110000", "0000111100", "0111110101", "0100110100", "1111100111"); begin do <= ROM(conv_integer(unsigned(a))); end behavioral;

Logic Utilization: Number of 4 input LUTs: 9 out of 11,776 1%Logic Distribution: Number of occupied Slices: 5 out of 5,888 1% Number of Slices containing only related logic: 5 out of 5 100% Number of Slices containing unrelated logic: 0 out of 5 0% *See NOTES below for an explanation of the effects of unrelated logic. Total Number of 4 input LUTs: 9 out of 11,776 1% Number of bonded IOBs: 13 out of 372 3%

Page 35: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 35

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Distributed RAM - instantiationlibrary IEEE;use IEEE.STD_LOGIC_1164.all;library UNISIM;use UNISIM.vcomponents.all;entity RAM_16X8_DISTRIBUTED is port(

CLK : in STD_LOGIC; WE : in STD_LOGIC; ADDR : in STD_LOGIC_VECTOR(3 downto 0); DATA_IN : in STD_LOGIC_VECTOR(7 downto 0); DATA_OUT : out STD_LOGIC_VECTOR(7 downto 0)

);end RAM_16X8_DISTRIBUTED;architecture RAM_16X8_DISTRIBUTED_STRUCTURAL of RAM_16X8_DISTRIBUTED isbeginGENERATE_MEMORY:for I in 0 to 7 generate

RAM_16x1_S_1: ram16x1s generic map (INIT => X"0000") port map (O => DATA_OUT(I), A0 => ADDR(0), A1 => ADDR(1), A2 => ADDR(2), A3 => ADDR(3), D => DATA_IN(I), WCLK => CLK, WE => WE );end generate;

end RAM_16X8_DISTRIBUTED_STRUCTURAL;

Page 36: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 36

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Block RAM Waveforms – WRITE_FIRST

Page 37: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 37

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Block RAM Waveforms – READ_FIRST

Page 38: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Układy reprogramowalne i SoC 38

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Block RAM Waveforms – NO_CHANGE

Page 39: Układy reprogramowalne i SoC” „Specjalizowane moduły FPGAneo.dmcs.p.lodz.pl/soc-pod/soc-wyk9.pdf · 2009. 5. 28. · Układy reprogramowalne i SoC 7 Projekt współfinansowany

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

„Układy reprogramowalne i SoC”„Specjalizowane moduły FPGA”

Prezentacja jest współfinansowana przez Unię Europejską w ramach

Europejskiego Funduszu Społecznego w projekcie pt.

„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do

zatrudniania osób niepełnosprawnych” Prezentacja dystrybuowana jest bezpłatnie

„Układy reprogramowalne i SoC”„Specjalizowane moduły FPGA”

Prezentacja jest współfinansowana przez Unię Europejską w ramach

Europejskiego Funduszu Społecznego w projekcie pt.

„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do

zatrudniania osób niepełnosprawnych” Prezentacja dystrybuowana jest bezpłatnie

Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83www.kapitalludzki.p.lodz.pl