Od 0 do mistrza Vhdla

background image

[01] Układy cyfrowe - informacje ogolne

Str 42.

Weryfikacja projektu:

symulacja funkcjonalna – zweryfikowanie poprawności logicznej
projektu, przeprowadzana przed etapem podziału (partitioning) i
rozmieszczenia (fitting)
symulacja czasowa – po etapie podziału i rozmieszczenia system
uzupełnia informacje o projekcie o dane na temat zależności
czasowych, co umożliwia dokładne przeanalizowanie projektu pod
względem niepożądanych efektów związanych z opóźnieniami
wprowadzanymi przez rzeczywiste struktury cyfrowe,

[02] Specyfika_projektowania

Konwerter kodu binarnego na kod BCD
• W kodzie BCD (Binary Coded Decimal) każda cyfra liczby zapisanej w
kodzie dziesiętnym jest przedstawiana czterobitową liczbą binarną
• Np. liczba 489 zostanie zapisana jako wektor binarny z wykorzystaniem
12 bitów (3 ´ 4 bity)
4 8 9
0100 1000 1001


Metoda „+3” str 6

[03] Reprezentacja_systemow_cyfrowych

Reprezentacja funkcjonalna (behavioral) str 5
• Opisuje funkcjonalność (zachowanie) systemu.
• System jest traktowany jako ”czarna skrzynka” bez uwzględnienia
wewnętrznej reprezentacji.
• Ten sposób reprezentacji systemu skupia się na zależności sygnałow
wyj
ściowych od sygnałow wejściowych, definiując odpowiedzi
systemu na konkretne wartości sygnałów wejściowych.
• Istnieje wiele sposobów na podanie charakterystyki wejsciowo-wyjściowej
systemu.

Reprezentacja strukturalna
• Opisuje wewnętrzną realizację (strukturę) systemu.
• Podana jest dokładna specyfikacji jakie komponenty zostały użyte i jak są
ze sobą połączone
• W mniejszym lub większym stopniu jest to schemat albo diagram
systemu.
• Stosuje się pojęcie netlist do reprezentacji schematu systemu.

background image

Reprezentacja fizyczna
• Opisuje fizyczną charakterystykę systemu.
• Rozszerza o dodatkowe informacje reprezentację strukturalną.
• Podany jest fizyczny rozmiar komponentów, fizyczne rozlokowanie
elementów na płytce krzemowej i ścieżek realizujących połączenia.
• Reprezentacja fizyczna dostarcza najbardziej dokładną informację o
systemie.
• Jest to ostateczna specyfikacja do wykorzystania w procesie wytwrzania.

Str 14,15,15

[!] -

Sumator

Str 19,20,21,22

[!]

– Kod U2 itp

Str 26

[!]

– dzialanie przerzutników =>

=> setup time –„jak wczesnie ustawic dane przed zatrzaśnięciem”
=> hold time – „jak długo tą wartośc trzeba trzymać”

[04] Jezyki_opisu_sprzetu_VHDL

Str 14 [!] – opis strukturalny - „z rysunku na VHDL”
- opis funkcjonalny

Testbench
• Jednym z podstawowych zastosowań języka VHDL jest symulacja, gdzie bada się
działanie układu dla zweryfikowania poprawności projektu.
• Symulację można porównać do badania fizycznego układu, którego wejścia
podłączamy do stymulatora (generatora testów) i obserwujemy wyjścia.
• Symulacja kodu VHDL to wykonywanie wirtualnego eksperymentu, w którym
fizyczny układ zastąpiono opisem VHDL.
• Dodatkowo można wykorzystać VHDL do opisu generatora testów i modułu
kolekcjonującego odpowiedzi układu i porównującego je ze wzorcem.
• Mechanizm taki nosi nazwę testbench

[05] Jezyk_VHDL_podstawym

Tryby portu
in – jednokierunkowy port wejściowy
out – jednokierunkowy port wyjściowy
buffer – port wyjściowy, który pozwala na odczytywanie pojawiających sie na nim wartości
wewnątrz projektowanego układu umożliwiając stosowanie wewnętrznego
sprzężenia zwrotnego (

UWAGA: może sprawiać problemy z kompatybilnością

)

inout – port dwukierunkowy umożliwiający stosowanie wewnętrznego sprzężenia
Zwrotnego

Str 15,16

[!]

– „Dlaczego to jest błędny zapis itp.”

Obiekty

Obiekty w języku VHDL to elementy posiadające nazwę i przechowujące
wartość określonego typu. Istnieje cztery rodzaje obiektów:
– sygnały (

signal

),

– zmienne (

variable

),

background image

– stałe (

constant

),

– pliki (

file

),

– aliasy (

alias

).

Zmienne
• Reprezentuje symboliczny element pamięciowy, w którym można
przechowywać i modyfikować wartości.
• Nie istnieje bezpośredniego odwzorowania zmiennych w realizowanym
układzie cyfrowym.
• Zmienna może być deklarowana i wykorzystywana jedyne w

procesach.

• Głównym zastosowanie zmiennych jest abstrakcyjny opis funkcjonowania
systemu.
• Sposób deklaracji jest następujący:

variable

nazwa_zmiennej1, nazwa_zmiennej2, … : typ_danych;

• Przypisanie wartości:
nazwa_zmiennej := wartość;
• Przypisanie wartości zmiennym odbywa się bez opóźnienia, stąd
nazywane jest też natychmiastowym (immediate assigment).

Operatory

Priorytet

Operatory

Najwyższy

** abs not
* / mod rem
+ - (identyczno
ć, negacja)
& + - (suma i ró
żnica)
sll srl sla sra rol ror
= /= < <= > >=

Najniższy

and or nand nor xor xnor


Operatory relacyjne
• Dla tablicy 1-D możliwe jest stosowanie operatorów relacyjnych
• Obydwa argumenty muszą mieć ten sam typ elementów
• Porównanie następuje element po elemencie zaczynając od lewej strony
• Jeśli jedna z tablic osiągnie wcześniej koniec jest uznawana z element
mniejszy
” 011” = ” 011” ”011” > ” 010 ” ” 011 ” > ” 00011” ” 0110 ” > ” 011”
• Dla:

signal

s1 : std_logic_vector (7

downto

0);

signal

s2 : std_logic_vector (3

downto

0);

if

(s1 = s2)

then

else

….
wyrażenie s1 = s2 jest zawsze fałszywe. Tego typu błąd jest trudny do
zlokalizowania.

Operatory konkatenacji i agregacja
• Bardzo przydatny operator dla manipulacji na tablicach 1-D
• Umożliwia łączenie elementów, małych tablic i fragmentów tablic w
większe tablice.

background image

• Przesunięcie w prawo o dwie pozycje i dołączenie dwóch zer na początku:
y <= ”00 ” & a(7

downto

2);

• Przesunięcie w prawo o dwie pozycje i dołączenie dwóch bitów o wartości takiej
jak MSB (arithmetic shift):
y <= a(7) & a(7) & a(7

downto

2);

• Rotacja w praco o dwie pozycje:
y <= a(1

downto

0) & a(7

downto

2);

• Agregacja nie jest operatorem
y <= "10100000”;
y <= (‘1’, ‘0’, ‘1’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’);
y <= (7 => ‘1’, 6 =>‘0’, 5 =>‘1’, 4 =>‘0’, 3 =>‘0’, 2 =>‘0’, 1 =>‘0’, 0 =>‘0’);
y <= (7|5 => ‘1’, 6|4|3|2|1|0 =>‘0’);
y <= (7|5 => ‘1’,

others

=>‘0’);

• Wyzerowanie całego wektora
y <= (

others

=> ‘0’);


Typy danych pakietu IEEE numeric_std
• Definiuje typy signed i unsigned jako tablica elementów std_logic
• Dla unsigned tablica jest interpretowana w kodzie NKB
• Dla signed tablica jest interpretowana w kodzie U2
• Deklaracja obiektów nowego typu jest identyczna jak std_logic_vector:

signal

s1 : signed(7

downto

0);

• Dla celów operacji na obiektach nowego typu przeciążono operatory: abs, *, /,
mod, rem, +,
• Operatory relacyjne także zostały przeciążone.
Przykład: ” 011” > ”1000” dla sygnałów typu:
– std_logic_vector

false

– pierwszy element ”011” jest mniejszy niż ”1000”

– unsigned

false

– 3 > 8

– signed

true

– 3 > – 8

[06] Realizacji_logiki_kombinacyjnej

Logika kombinacyjna
• 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
• W języku VHDL realizowane głownie
przy wykorzystaniu instrukcji
wspołbieżnych rownież procesow
• Przykładami funkcji kombinacyjnych są:
– dekodery,
– multipleksery
– sumatory

Instrukcje współbieżne

background image

• Wspołbieżne instrukcje przypisania sygnału (Concurrent Signal
Assignment Statements):
– podstawowe przypisanie do sygnału (simple signal assignment statement)
sygnał <= wyrażenie;
– warunkowe przypisanie do sygnału (conditional signal assignmenet statement)
sygnał <= wyrażenie1

when

wyrażenie_boolowskie1

else

wyrażenie2

when

wyrażenie_boolowskie2

else

wyrażenie3;
– selektywne przypisanie do sygnału (selected signal assignment statement)

with

expression

select

signal <= wyrażenie1

when

stała1,

wyrażenie2

when

stała2;

• Zachowanie układu jest niezależne od kolejności instrukcji
przyporządkowania sygnałow.
• Stosowane w specyfikacji typu „przepływ danych” (dataflow description).

Opis z wykorzystaniem instrukcji sekwencyjnych
• Proces (process) jest konstrukcją VHDL zawierającą zbior akcji wykonywanych
sekwencyjnie, znanych jaki instrukcje sekwencyjne.
• Proces sam w sobie jest instrukcją wspołbieżną.
• Może być interpretowany jako fragment układu zamknięty w czarnej skrzynce,
ktorego zachowanie można scharakteryzować instrukcjami sekwencyjnymi.
• Nie zawsze istnieje możliwość realizacji fizycznego układu działającego zgodnie z
opisanym zachowaniem.
• Wykonanie operacji wewnątrz procesu jest sekwencyjne, dlatego też kolejność
instrukcji ma znaczenie.
• Wiele instrukcji sekwencyjnych nie ma bezpośredniej reprezentacji w sprzęcie i są
trudne lub niemożliwe do realizacji.

Str 32

[!]

– funkcja std_match

Str 39,40

[!]

– lista czułości


Sekwencyjne przypisanie wartości sygnału
• Sekwencyjne przypisanie sygnału jest identyczne do
wspołbieżnego przypisania:
sygnał <= wyrażenie

W procesie nie można natomiast używać wspołbieżnej

instrukcji przypisania warunkowego i selektywnego

. (when else)

• Inaczej niż w wspołbieżnym przypisaniu wartości do
sygnału, w przypadku przypisania sekwencyjnego
wartość sygnałowi jest nadawana po zakończeniu

process

(a, b, c, d)

begin

y <= a

or

b;

y <= b

xor

c;

y <= a

and

d;

end process

;

procesu.
• Wewnątrz procesu sygnałowi może być przypisywana
wartość wielokrotnie. Tylko ostatnie przypisanie

background image

decyduje o wartości sygnału.
• Procesy przedstawione obok dadzą tą samą realizację.
• Z wyjątkiem szczegolnych sytuacji należy unikać
wielokrotnych przypisań do sygnału.


Instrukcja warunkowa – if => TYLKO W PROCESIE !!

Niekompletne gał
ęzie
• W instrukcji

if

tylko gałąź

then

jest wymagana. Co oznacza, że poniższy kod jest

poprawny:

process

(a, b)

begin
if (

a = b)

then

eq <= ‘1’;

end if

;

end;

• Gdy sygnał ‘a’ jest rowny ‘b’ sygnał ‘eq’ otrzymuje wartość ‘1’. Dla przypadku, gdy
‘a’ nie jest rowne ‘b’ nie umieszczono gałęzi

else

. Zgodnie z semantyką języka

VHDL oznacza to, że sygnał ‘eq’ się nie zmienia i podtrzymuje poprzednią
warto
ść.

process

(a, b)

begin
if (

a = b)

then

eq <= ‘1’;

else

eq <= q;

end if

;

end;


str 48 – niekompletne przypisanie sygnałów




Instrukcja warunkowa – case
• Konstrukcja

case

wykorzystuje wartość wyrażenia

expression do wybory instrukcji, ktore mają być
wykonane.
• Wartości jakie daję wyrażenie expression muszą
być typu dyskretnego albo muszą być w postaci
tablicy jednowymiarowej.
• Wybory choice_i są wartościami (lub zbiorami
wartości), do ktorych może się wyliczyć wyrażenie
expression.
• Każdy z wyborow może się pojawić tylko raz i
wszystkie możliwe wartości wyrażenia expression
muszą być uwzględnione.
• Słowo kluczowe

others

może być użyte jako ostatni

wybor dla uwzględnienia wszystkich

background image

niewymienionych wartości.

case

expression

is

when

choice_1 =>

statement_1;
statement_2;

when

choice_2 =>

statement_3;
statement_4;

●●●

when

choice_n =>

statement_k;
statement_k+1;

end case

;



+ str 56

Str 58

[!]

– ścieżka krytyczna



Przydatne kody:

-sterowanie wyświetlaczem str 8
-implementacja tablicy prawdy str 13
-multiplexer str 19
-demultiplexer str 54

[07] Realizacji_logiki_sekwencyjnej


Str 33

[!]

– automat Mealy’ego

Str 37

[!]

– automat Moore’a

Str od 44

[!]

- licznik


Logika sekwencyjna
• Logika jest sekwencyjna, gdy
wartość wyjść w danym momencie
czasu zależy od wartości wejść w
danej chwili i od wartości wejść w
chwilach poprzednich
• Logika sekwencyjna musi zawierać
elementy pamięciowe, zazwyczaj
przerzutniki
• Implementacja logiki sekwencyjnej
odbywa się zazwyczaj przy użyciu
automatow (maszyn stanow),
rejestrow lub zatrzaskow (latch)

-Przerzutnik D str 5

background image






Automaty
• Automat opisywany jest zazwyczaj przez podanie diagramu stanow lub
tablicy przejść-wyjść
• Realizacja automatu odbywa się przez opisanie części realizującej element
pamięciowy przechowujący stan wewnętrzny i części obliczającej stan
następny i wartość wyjść
• W opisie VHDL automatow wykorzystuje się symboliczne nazwy stanow.
• Możliwe jest wprowadzenie kodowania stanow
• Kompilator automatycznie dokonuje następujących operacji:
– wyboru liczby bitow dla kodowania
– doboru przerzutnikow D lub T
– kodowania stanow
– zastosowania syntezy logicznej do obliczenia funkcji wzbudzeń

Automaty mogą być podzielone na automaty Moore’a i automaty Mealy’ego.
• Wyjścia w automacie Moore’a zależą tylko i wyłącznie od stanu wewnętrznego automatu.
• Wyjścia w automacie Mealy’ego zależą od stanu wewnętrznego automatu i wartości wejść
automatu.
• Wyjścia Mealy’ego pozwalają generować szybsze odpowiedzi na pobudzenia niż wyjścia
Moore’a.
• Szerokość sygnału na wyjściach Mealy’ego uzależniona jest od warunkow na wejściach
podczas, gdy szerokość sygnałow na wyjściach Moore’a jest stała i zależna od częstotliwości
zegara.

**************************************

• Reset asynchroniczny sprowadza
automat do odpowiednio stanu
niezależnie od zegara
• Reset synchroniczny sprowadza
automat do odpowiednio stanu
pod wpływem zbocza zegara

str 29 –resety

str 40

[!]

– kodowanie stanów (one-hot)

Realizacja logiki sekwencyjnej – porady

• Wszystkie rejestry powinny być taktowane tym samym sygnałem
zegarowym.
• Należy oddzielać elementy pamięciowe i opisywać je w oddzielnych
segmentach.
• Należy unikać jednosegmentowego stylu opisu.
• Elementy pamięciowe powinny być opisywane w prosty sposob tak, aby

background image

narzędzia syntezy wykorzystywały elementy biblioteczne do ich realizacji.
• Reset asynchroniczny powinien być wykorzystywany jedynie do
inicjalizacji systemu.
• Do zerowania rejestrow w czasie pracy należy używać resetu
synchronicznego.

[08] Projekt_simpleUART

Asynchroniczna transmisja znakowa polega na przesyłaniu pojedynczych
znaków, które posiadają ściśle określony format.
– Początek znaku stanowi bit startu, jałowy z punktu widzenia przesyłanej
informacji i służący jedynie celom synchronizacyjnym.
– Po nim następuje pole danych, na które wprowadza się kolejne bity
stanowiące treść znaku.
– Bezpośrednio za polem danych przewidziano bit kontrolny, służący
zabezpieczeniu informacji znajdującej się na polu danych.
– Transmitowany znak kończy jeden lub dwa bity stopu.

Standard RS 232 (6)



W ramach jednostki informacyjnej bity przesyłane są synchronicznie -

zgodnie z taktem nadajnika. Natomiast poszczególne jednostki są
przesyłane asynchronicznie - ich wyprowadzanie nie jest synchronizowane
żadnym sygnałem, a więc odstęp pomiędzy nimi jest dowolny.


Czas trwania bitu w jednostce informacyjnej nazywa się odstępem

jednostkowym. Jego odwrotność określa szybkość transmisji w bodach (1
bd = 1 bit/s). Typowe wartości szybkości transmisji przy asynchronicznej
transmisji znakowej wynoszą: 1200, 2400, 4800, 9600 bd, co przy
założeniu 10-bitowej długości jednostki informacyjnej i przysłaniu znaków
bezpośrednio jeden za drugim odpowiada 120, 240, 480, 960 znakom na
sekundę.

[09] Projektowanie_z_wykorzystaniem_FSM

Automaty
• Automat FSM (Finite State Machine) opisywany jest zazwyczaj przez
podanie diagramu stanow lub tablicy przejść-wyjść
• Głownym zastosowaniem automatow FSM jest realizacja operacji, ktore
wykonywane są w sekwencji. Złożone systemy cyfrowe realizują
skomplikowane zadania lub algorytmy poprzez wykonywanie sekwencji
podstawowych operacji wykorzystując do tego informacje o stanie
systemu czy informacji z zewnątrz.
• Automat FSM działa jako układ sterowania US, ktorego zadaniem jest
koordynacja i zarządzanie operacjami wykonywanymi przez inne składowe
systemu – układ operacyjny UO.
• Automaty mogą być także wykorzystane w innych, prostych operacjach,
takich jak wykrywanie sekwencji w danych wejściowych czy generacja
zadanej sekwencji sygnałow wyjściowych

background image


[10] Projektowanie hierarchiczne

Str 18

[!]

– zapisz kod na podstawie rysunku

Str 58

[!]

– pojemność pamięci

Str 33 – wykrywanie sekwencji

[11] Projektowanie_RTL


Str 8 i dalej

[!]

– diagram ASM

Str 11 – algorytm Euklidesa

[12] Cyfrowe przetwarzanie sygnałów


Str 13

[!]

– sumator 1-bitowy

Str 42

[!]

– liczby w notacji stalopozycyjnej

[13] Synteza_strukturalna

Str 22

[!]

– ASM

Str 30

[!]

– ASDM

[14] Rozne_metody_projektowania

Str 11 – kodowanie stanów US
Str 23,24

[!]

– współdzielenie zasobów

Str 40

[!]

– polokowanie

[15] Projektowanie_ukladow_kryptograficznych

Runda algorytmu DES

• Jest to podstawowy element algorytmu DES. Jakość realizacji tego bloku będzie
decydować o szybkości działania całego algorytmu i wielkości zasobow
niezbędnych do realizacji algorytmu w sprzęcie.
• Blok ten składa się z permutacji rozszerzającej ext_perm, ośmiu skrzynek
selekcyjnych S-Box, permutacji p_perm, permutacji pc2_perm i blokow shl
realizujących przesunięcie w lewo o 1 lub 2


Wyszukiwarka

Podobne podstrony:
Od 0 do mistrza Vhdla
Pragmatyczny programista Od czeladnika do mistrza pragpr
Pragmatyczny programista Od czeladnika do mistrza pragpr
Pragmatyczny programista Od czeladnika do mistrza
Pragmatyczny programista Od czeladnika do mistrza pragpr
Pragmatyczny programista Od czeladnika do mistrza
Pragmatyczny programista Od czeladnika do mistrza 2
Angus McLeod Blogi od A do sławy i pieniędzy
przepisy rozne od 7 do miesiaca
Scenariusz zajęć Alfabet od H do K
HIGIENA JAMY USTNEJ DZIECI W WIEKU OD 3 DO 5 LAT
Liczby od 1 do 10 kolorowanka (eng)
mity od 1 do 50, ODK, Ikonografia Brus, Mity
Die Negation tworzenie przeczen, ✔ GRAMATYKA W OPISIE OD A DO Z
Homonimy, ✔ GRAMATYKA W OPISIE OD A DO Z

więcej podobnych podstron