Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika...

51
Programowanie Układów Logicznych kod kursu: ETD6203 VHDL, ISE WebPACK, Plan Ahead, Impact W2 – 06.03.2019 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Transcript of Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika...

Page 1: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Programowanie Układów Logicznych

kod kursu: ETD6203

VHDL, ISE WebPACK, Plan Ahead,

Impact

W2 – 06.03.2019

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Page 2: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Plan wykładu

2

• VHDL – powtórka ważniejszych zagadnień

• Architektura układów FPGA

• Ise WebPACK

• Plan Ahead

• Impact

• Podsumowanie

1

2

3

4

5

6

Page 3: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Geneza języka VHDL

• VHDL (VHSIC Hardware Descrption Language, gdzie VHSIC - Very High Speed

Integrated Circuit

• Symulacja układów cyfrowych – projekt Departamentu Obrony USA

• Rok 1987 zatwierdzony standard IEEE1076 (Institute of Electrical and

Electronics Engineers)

4

Standard języka VHDL był rewidowany trzykrotnie: w latach

1993, 2002 i 2008. Wersja z roku 1993 (IEEE 1076-1993) jest

obecnie najpopularniejsza - większość narzędzi jest zgodna

z tym standardem. Z początkiem roku 2009 opublikowano

najnowszą wersję standardu: IEEE 1076-2008.

Page 4: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Poziom abstrakcji systemów opisu

sprzętu

Page 5: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Cechy języka VHDL

• równoległość,

• strukturalność oznaczająca możliwość hierarchicznego opisywania

projektów.

• "redesign" - typowy projekt cyfrowego układu elektronicznego

zawiera w sobie do 80% fragmentów z innych projektów,

• możliwość wykonywania instrukcji sekwencyjnie,

• zdolność do jednolitego opisywania struktury,

• możliwość symulowania projektowanych układów; możliwość

tworzenia sekwencji sygnałów testujących, możliwość wbudowania

sygnałów testowych w projekt,

• "samodokumentowanie" osiągnięte dzięki prostej i przejrzystej

strukturze,

• modelowanie układów z uwzględnieniem upływającego czasu.

6

Page 6: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

VHDL - kodowanie

• Język VHDL nie interpretuje wielkości liter. Elementy języka posiadają

takie samo znaczenie niezależnie od tego czy pisane są małymi czy dużymi

literami.

• Znakiem komentarze jest podwójny ciąg znaków minus: '--'. Pojawienie

się tego ciągu w programie powoduje, że pozostała część linii programu

traktowana jest jako komentarz.

• Typowym rozszerzeniem plików zawierających programy w języku VHDL jest

*.vhd. Kompilatory języka na podstawie plików źródłowych tworzą pliki

binarne, które mogą służyć do symulacji lub programowania układów

programowalnych. Najmniejsza kompilowalna jednostka nosi nazwę

projektu.

• VHDL traktuje wektor jako zbiór elementów tego samego typu,

zgrupowanych razem dla wygody. Wektor (np. bitów) nie jest równoważny

żadnej liczbie. Dlatego nie można wykonywać na wektorze bitów operacji

arytmetycznych, a operacje relacyjne mają sens tylko wówczas gdy

wektory są tej samej długości. 7

Page 7: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Słowa kluczowe, identyfikatory,

obiekty danych (zastrzeżone)

8

abs

access

after

alias

all

and

architecture

array

assert

attribute

begin

block

body

buffer

bus

case

component

configuration

constant

disconnect

downto

else

elsif

end

entity

exit

file

for

function

generate

generic

group

guarded

if

impure

in

inertial

inout

is

label

library

linkage

literal

loop

map

mod

nand

new

next

nor

not

null

of

on

open

or

others

out

package

port

postponed

procedure

process

pure

range

record

register

reject

return

rol

ror

select

severity

signal

shared

sla

sli

sra

srl

subtype

then

to

transport

type

unaffected

units

until

use

variable

wait

when

while

with

xnor

xor

Page 8: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

VHDL – poziom abstrakcji

9

Page 9: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Poziom abstrakcji – diagram „Y”

10

Reprezentacja

strukturalna

Reprezentacja

funkcjonalna

Reprezentacja

fizyczna

algorytmy

operacje przesłań

międzyrejestrowych

równania Boolowskie

równania różniczkowe

procesor, pamięć,

interfejs

sumator, rejestr,

multiplekser

bramki, przerzutniki

tranzystory, rezystory,

kondensatory

rozkład tranzystorów

rozkład komórek rozkład bloków

funkcjonalnych

rozkład modułów IP

Page 10: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

VHDL – logika wielowartościowa

Logika wielowartościowa posiada więcej typów niż tylko „0” i „1” logiczne. Pakiet Std_Logic_1164

wchodzący w skład języka VHDL zawiera definicję typów std_logic (typ "resolved") oraz std_ulogic

(typ "unresolved") o podanych wyżej wartościach. 11

Page 11: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Operatory

12

Page 12: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Operatory przesunięć

13

Page 13: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Operatory

14

W wypadku równoprawnych operacji wykonywanie odbywa

się od lewej do prawej.

a + b – 1 > c or a < d

Wykorzystując nawiasy można ustalić kolejność

wykonywania operacji.

(a and b) or (a and d)

Page 14: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Wektory

• Wektory są jednowymiarowymi tablicami:

signal x : std_logic_vector (7 downto 0);

x <= "11001010";

• Powyższa linia jest równoważna z zapisem:

x(7) <= '1'; x(6) <= '1'; x(5) <= '0'; x(4) <= '0';

x(3) <= '1'; x(2) <= '0'; x(1) <= '1'; x(0) <= '0';

signal y : std_logic_vector (0 to 7);

• dla wektora x najbardziej znaczący bit MSB ma indeks 7 najmniej 0,

• dla wektora y najbardziej znaczący bit MSB ma indeks 0 najmniej 7.

Możliwy jest dostęp do poszczególnych elementów:

- x(7) – najbardziej znaczący bit MSB,

- x (3 downto 0) – najmłodsze 4 bity 15

Page 15: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

SEKWENCYJNE

Układy

KOMBINACYJNE

• logika jest logiką kombinacyjna jeśli

wartość wyjść w danej chwili zależy

wyłącznie od wartości wejść w

danej chwili,

• układ kombinacyjny nie posiada

wewnętrznej pamięci ani pętli

sprzężenia zwrotnego,

• przykładami funkcji

kombinacyjnych są: dekodery,

multipleksery, sumatory …

• stan wyjść y zależy od stanu wejść

x oraz od poprzedniego stanu,

zwanego stanem wewnętrznym,

pamiętanego w zespole rejestrów,

• synchroniczne, zmiana stanu

podyktowana sygnałem zegara,

• asynchroniczne, zmiana stanu

następuję natychmiast, podatne na

zjawisko hazardu i wyścigu,

• przykład: przerzutniki, rejestry,

liczniki …

16

Page 16: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Instrukcje

WSPÓŁBIERZNE (równoległe)

Zachowanie układu jest niezależne od

kolejności instrukcji

przyporządkowania sygnałów.

Stosowane w specyfikacji typu „data

flow description”

- instrukcje przypisanie sygnałów,

- realizacja procesu,

- konkretyzacja składnik,

- instrukcja „with select”,

- instrukcja „for”,

SEKWENCYJNE (krokowe)

Stosowane w specyfikacji

behawioralnej, przede wszystkim w

procesach. Porządek zapisu instrukcji

sekwencyjnych zmienia działanie

układu.

- instrukcja oczekiwania,

- instrukcja warunkowa „if”,

- instrukcja wyboru „case”,

- instrukcja pętli „while loop”.

17

Page 17: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Sygnał zegarowy

if (clk'event and clk = '1') then

if rising_edge(clk) then

if (clk'event and clk = '0') then

if falling_edge(clk) then

18

Page 18: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Struktura programu VHDL

19

Page 19: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

library IEEE; use IEEE.std_logic_1164.all;

Deklaracje bibliotek

deklaracja użycia

biblioteki IEEE,

- uczyń bibliotekę dostępną

użycie pakietu

std_logic_1164

all – użycie wszystkich

składników pakietu

Inne często używane biblioteki:

IEEE.std_logic_signed.all; IEEE.std_logic_unsigned.all; IEEE.std_logic_arith.all; IEEE.numeric_std.all; std.text_io.all;

20

Page 20: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

entity multiplexer is port ( s : in std_logic; x0, x1 : in std_logic_vector (7 downto 0); y : out std_logic_vector (7 downto 0) ); end entity multiplexer;

Definicja jednostki projektowej

• Każdy projekt musi składać się z co najmniej jednej jednostki projektowej

(entity),

• Jednostek może być więcej – zawsze jednak jest tylko jedna jednostka

nadrzędna (top-level), znajdująca się na szczycie hierarchii.

• std_logic - podstawowy typ opisujący sygnał logiczny („0” i „1”),

• std_logic_vector (7 downto 0) - wektorowa wersja sygnału std_logic

pozwalająca opisywać np. magistrale, podany zakres indeksów wektora ma

8-bitów, • in, out , inout, buffer, linkage - definicja wejść oraz wyjść,

• port odnosi się do końcówek I/O układu programowalnego.

21

Page 21: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Definicja architektury

architecture data_flow of multiplexer is begin y <= x1 when ( s = '1' ) else x0; end architecture data_flow;

nazwa architektury – często wiele mówi

o poziomie abstrakcji realizacji danej

architektury

ciało architektury,

- instrukcje przypisania,

- procesy, komponenty

• Możliwe jest zdefiniowanie kilku architektur dla każdej jednostki projektowej.

O tym, która z tych architektur jest następnie podana do syntezy czy symulacji

decydują tzw. konfiguracje.

• Ciało architektury zawiera opis sprzętu, który ma sens instrukcji realizowanych

współbieżnie. Kolejność umieszczenia tych instrukcji w ciele nie ma znaczenia. 22

Page 22: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Półsumator - realizacja

23

library IEEE; use IEEE.std_logic_1164.all; entity HALF_ADDER is port ( a, b : in std_logic; sum, carry : out std_logic ); end entity HALF_ADDER; architecture Behavioral of HALF_ADDER is begin sum <= a xor b; carry <= a and b; end architecture Behavioral;

Realizacja półsumatora

Page 23: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Licznik z resetem asynch.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity LED_blink is

Port ( CLK_50MHz: in std_logic;

LED : out std_logic

);

end LED_blink;

architecture Behavioral of LED_blink is

signal Counter: std_logic_vector (24 downto 0);

signal CLK_1Hz: std_logic := '0';

begin

Prescaler: process (CLK_50MHz) is

begin

if rising_edge(CLK_50MHz) then

if Counter < "111111111111111111111111"

then

Counter <= Counter + 1;

else

CLK_1Hz <= not CLK_1Hz;

Counter <=(others => '0');

end if;

end if;

end process Prescaler;

LED <= CLK_1Hz;

end Behavioral;

…a co z resetem ?

Prescaler: process (CLK_50MHz, nreset) is

begin

if (nreset = '0') then

Counter <=(others => '0');

CLK_1Hz <= '0’;

elseif rising_edge(CLK_50MHz) then

if Counter < "111111111111111111111111"

then

Counter <= Counter + 1;

else

CLK_1Hz <= not CLK_1Hz;

Counter <=(others => '0');

end if;

end if;

end process Prescaler;

LED <= CLK_1Hz;

end Behavioral;

Jeżeli model zawiera wiele procesów, wszystkie są

wykonywane współbieżnie • Instrukcje współbieżne

poza procesami są również wykonywane współbieżnie

• Instrukcje wewnątrz procesu wykonywane

sekwencyjnie 24

Page 24: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Zalecenia

25

• Każda instrukcja if jest kodowana jako enkoder priorytetowy.

Zagnieżdżanie instrukcji if zwiększa zajętość zasobów oraz zwiększa

opóźnienia. Zagnieżdżanie powinno być zastępowane instrukcją

case. Instrukcja case nie koduje warunków priorytetowo.

• Rejestry typu Latch, powstają najczęściej wskutek występowania

niekompletnych wyrażeń warunkowych.

LATCH: process (GATE, DATA) begin if (GATE = '1' ) then Q <= DATA; end if end process

D_REG: process (CLK, DATA) begin if (CLK’event and CLK = '1' ) then Q <= DATA; end if end process

Page 25: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Zalecenia

26

• Każda instrukcja if jest kodowana jako enkoder priorytetowy.

Zagnieżdżanie instrukcji if zwiększa zajętość zasobów oraz zwiększa

opóźnienia. Zagnieżdżanie powinno być zastępowane instrukcją

case. Instrukcja case nie koduje warunków priorytetowo.

• Rejestry typu Latch, powstają najczęściej wskutek występowania

niekompletnych wyrażeń warunkowych.

LATCH: process (GATE, DATA) begin if (GATE = '1' ) then Q <= DATA; end if ; end process;

D_REG: process (CLK, DATA) begin if (CLK’event and CLK = '1' ) then Q <= DATA; else Q <= ’0’; end if; end process;

Page 26: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

27

„Clock Enable” i „Gated Clocks”

• Zaleca się stosowanie globalnych sygnałów zegarowych jako wejść

zegarowych przerzutników,

- jeżeli nie jest to możliwe i sygnał zegarowy tworzony jest jako

funkcja innych sygnałów wykorzystuje się sygnały Clock Enable

GATECLK <= (IN1 and IN2 and CLK); GET_PR: process (GATECLK, DATA, LOAD) begin if (GATECLK’event and GATECLK = '1' ) then if (LOAD = '1' ) then OUT <= DATA; end if end if end process

ENABLE <= (IN1 and IN2 and LOAD); EN_PR: process (ENABLE, DATA, CLK) begin if (CLK’event and CLK = '1' ) then if (ENABLE = '1' ) then OUT <= DATA; end if end if end process

Tak nie robimy !!!

Page 27: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

28

Szkic architektury układów FPGA

PROCESOR,

MIKROKONTROLER

FPGA

FPGA – od środka

Page 28: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

29

FPGA – od środka

Page 29: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

FPGA – od środka

30

Page 30: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

CLB a pamięć

Skąd te liczby…. ktoś się orientuje ?

LUT: 8

ROM: 8LUT * 16 bitów = 128 bitów

Single-RAM: 4LUT * 16 bitów = 64 bity

Dual-RAM: 2LUT * 16 bitów = 32 bity

31

Page 31: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Realizacja w FPGA

Uproszczona struktura komórki

programowalnej - LUT Sposób dołączenie LUT-ów do

traktów połączeniowych

LUT – Look-Up Table, tablica

wartości funkcji, oraz multiplekser

wielowejściowy jako blok logiczny

32

Page 32: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

LUT – tablica wartości funkcji

Uproszczona struktura komórki programowalnej - LUT 33

Page 33: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

34

Schemat blokowy komórki

SLICEM z uwzględnieniem LUT źródło: http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf

Page 34: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

35

Page 35: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Architektura bloku logicznego

• Komórka zawiera kilka elementów:

– kombinacyjnych,

– sekwencyjnych (przerzutniki),

– pamięć konfigurowalną (RAM, ROM, FIFO),

• Specjalizowane funkcje

• Złożoność bloku: od komórki do matrycy

komórek

36

Page 36: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Oznaczenia układów Xilinx

Typ układu

Obudowa

Klasa szybkości

Zakres temperatur

Pin 1

znacznik

Kod maski

Kod wykonania

Proces technologiczny

Kod daty Kod partii

37

Page 37: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Zestawienie parametrów

Zestawienie najważniejszych parametrów układów z rodziny Spartan–3

38

Page 38: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Xilinx Ise WebPACK

Zintegrowane środowisko Xilinx Ise WebPACK:

- implementacja układów cyfrowych,

- oraz złożonych funkcjonalności.

39

Page 39: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Xilinx Ise WebPACK

40

Tworzenie opisu sprzętu na

podstawie:

- VHDL,

- Verilog,

- Schematu.

Testowanie funkcjonalności:

- Test Bench

Łączenie funkcjonalności:

- pakiety,

- moduły

- systemy wbudowane np.

PicoBlaze

Page 40: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Xilinx ISE – we/wy - Plan Ahead

Processes

User Constraints

I/O Pin Planning

Zintegrowane

środowisko

projektowania,

planowania rozkładu

pinów, analizy

czasowej , lokowania

zasobów 41

Page 41: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Plan Ahead - I/O Planner View

Rozmieszczenie pinów I/O układu,

- odwzorowanie rzeczywiste

Widok wnętrza struktury układu

FPGA, zasoby 42

Page 42: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Znaczenie symboli pinów I/O S

yg

nał

GN

D

Dystrybucja zegara: dedykowane linie i wejścia układu do dystrybucji szybkich

sygnałów zegarowych zapewniające minimalne nierównomierności czasów pojawienie

się zboczy zegara. Możliwy jest dostęp do linii zegarowych poprzez globalne bufory

z wyprowadzeń układu lub z linii połączeniowych ogólnego przeznaczenia

Zas

ila

nie

VC

C

Pin

og

óln

eg

o

prz

ezn

ac

zen

ia z

mo

żli

wo

ścią

dys

try

bu

cji

sy

gn

ału

zeg

aro

weg

o

Pin

og

óln

eg

o

prz

ezn

aczen

ia

Pin

ko

nfi

gu

racyjn

y

Pin

nie

po

dłą

czo

ny d

o

str

uktu

ry w

ew

nętr

zn

ej

Pin

in

terf

ejs

u J

TA

G

(TM

S,

TD

O,

TC

K,

TD

I)

43

Page 43: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Plan Ahead – RTL – diagram

Symboliczna reprezentacja zawartości

struktury programowalnej 44

Page 44: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Plan Ahead – konfiguracja I/O

Możliwe opcje konfiguracji portów, linii

wejścia/wyjścia

45

Page 45: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Poziomy logiczne I/O

Prąd wyjściowy dla

określonych standardów

46

Page 46: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Stany I/O

Możliwe opcje konfiguracji portów, linii

wejścia/wyjścia

Schemat połączeń wewnętrznych w

obrębie portów wejścia/wyjścia

Pin wejścia/wyjścia

- możliwość komunikacji ze

światem zewnętrznym

sterowalny „pull up”

sterowalny „pull down”

stan pływający

„weak keeper”

47

Page 47: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Opcje we/wy - Netlista

Wymagania dla projektu są zadawane w pliku UCF (User Constraints File):

- wyprowadzenia układu (który sygnał na której końcówce),

- wymagania czasowe (częstotliwość zegara, maksymalne opóźnienia),

- wymagania na rozmieszczenie komponentów. 48

Page 48: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Opcje we/wy - Netlista

49

Tworzenie netlisty: sieć połączeń wewnętrznych

NET – sygnał,

LOC – lokalizacja wewnątrz układu,

IOSTANDARD – standard sygnału wyjściowego itp.

PULLUP, PULDOWN … - sposób „podciągania” we/wy do potencjału

Page 49: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Xilinx ISE – programowanie - Impact

Programowanie:

• polega na zapisie tzw. bitstream’a do

pamięci konfiguracyjnej układu FPGA,

• tryby konfiguracyjne: slave serial,

master serial, slave parallel oraz

boundary-scan,

• boundary-scan umożliwia skanowanie

wszystkich we/wy układu,

• odczyt konfiguracji z pamięci FLASH lub

PROM,

• wykorzystanie protokołu JTAG, IEEE 1149

• readback – możliwość odczytania danych

konfiguracyjnych układu wraz ze stanem

wszystkich przerzutników, pamięci RAM,

LUT

50

Page 50: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Xilinx ISE – programowanie - JTAG

51

TDI – Test Data Input - szeregowe wejście danych do testowania i

konfiguracji

TMS – Test Mode Select - wejście sterujące pracą automatu TAP

TCK – Test Clock Input - wejście sygnału zegarowego

TRST – Test Reset - wejście asynchroniczne sygnału zerującego

automat TAP

TDO – Test Data Output - szeregowe wyjście danych z rejestru BST lub

pamięci konfiguracji

Page 51: Programowanie Układów Logicznychw12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W2-PUL.pdfVHDL – logika wielowartościowa Logika wielowartościowa posiada więcej typów niż tylko „0”

Przykładowe pytania

1. Na co wpływają priorytety operatorów

2. Znaczenie skrótu LUT

3. Różnica w układach sekwencyjnych a kombinacyjnych

4. Realizacja współbieżna a sekwencyjna

5. Poziomy sygnałów wyjściowych

6. Zadania NETLISTY

7. Konfiguracja rzeczywistego układu FPGA

8. Wyjaśnij znaczenie pojęcia REDBACK

9. Wyjaśnij znaczenie pojęcia Boundary-Scan 52