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 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*/
modrem+– 
• 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