-
Notifications
You must be signed in to change notification settings - Fork 0
/
Komunikacijska vezja in naprave.tex
508 lines (460 loc) · 22.9 KB
/
Komunikacijska vezja in naprave.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
\documentclass[12pt]{article}
\usepackage[
a4paper,
margin=2.5cm]{geometry}
\usepackage[utf8]{inputenc} % UTF8 enkodiranje
\usepackage[slovene]{babel} % Slovenščina
\usepackage[
pdfusetitle,
hidelinks,
unicode]{hyperref} % Nastavi atribute PDF-ja, ne označuj povezav
\usepackage{microtype} % Izboljšave za tipografijsko perfekcijo :)
\usepackage{enumitem} % Seznami za člene
\usepackage{graphicx} % Vključitev slik
\usepackage{dirtytalk} % Citat
\usepackage{listings} % Kodni blok
\usepackage{fancyvrb}
\usepackage[font=]{caption} % Required for specifying captions
\usepackage[normalem]{ulem} % Krašanje enot v enačbi
\usepackage{times} % Times New Roman pisava
\usepackage{tikz}
\usepackage[european]{circuitikz} % Električna vezja
\usepackage{datetime} % Datum
\usepackage{csquotes}
\usepackage{braket}
\usepackage{amsmath} % matematika ki izgleda lepo
\usepackage{amsfonts} % množice
\usepackage[style=ieee, maxbibnames=3, minbibnames=1,
maxcitenames=1, mincitenames=1, sorting=nyt]{biblatex} % Navajanje virov
\bibliography{viri}
\urlstyle{rm}
\setlength{\parindent}{0em}
\setlength{\parskip}{1ex}
\setcounter{secnumdepth}{5}
\setcounter{tocdepth}{4}
\renewcommand{\baselinestretch}{1.5}
\renewcommand{\thesection}{\arabic{section}}
\renewcommand{\thesubsection}{\thesection.\arabic{subsection}}
\renewcommand{\thesubsubsection}{\thesubsection.\arabic{subsubsection}}
\renewcommand{\theparagraph}{\thesubsubsection.\arabic{paragraph}}
\renewcommand{\thesubparagraph}{\theparagraph.\arabic{subparagraph}}
\renewcommand{\labelnamepunct}{\addcomma\space}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[online]{title}{\mkbibemph{#1}}
\DefineBibliographyStrings{slovene}{
andothers = {et. al\adddot},
urlseen = {dostopano:}
}
\newdateformat{MMYYYYdate}{\monthname[\THEMONTH] \THEYEAR}
\title{Komunikacijska vezja in naprave}
\author{Jaka Kovač, G 4. b}
\begin{document}
\pagenumbering{arabic}
\begin{center}
\thispagestyle{empty}
\includegraphics[scale=1]{slike/logotip_vegova_leze_brezokvirja.png}
\\
\textbf{Vegova ulica 4, 1000 Ljubljana}
\vspace{\fill}
Seminarska naloga pri predmetu elektrotehnika
\Huge{\textbf{Komunikacijska vezja in naprave}}
\normalsize
\vspace{\fill}
Mentor: Anton Orehek, uni. dipl. inž. \hfill Avtor: Jaka Kovač S51JK,
G 4. b\\
Ljubljana, december 2022 – \MMYYYYdate\today
\end{center}
\newpage
\thispagestyle{empty}
\null
\newpage
\thispagestyle{empty}
%If I had more time I would have written a shorter letter - Mark Twain
\section*{Povzetek}
Seminarska naloga opisuje matematični vidik delovanja cyclic redundancy check-a,
ob tem pa na kratko opiše tudi matematične pojme, kot so konča polja in polinomi.
Prikazan je tudi primer izvedbe CRC z logičnim vezjem.\\
\\
\textbf{Ključe besede:} CRC, končna polja, polinomi, logična vezja, digitalna
komunikacija\\
\vfill
\vfill
% KAZALO
\newpage
\thispagestyle{empty}
\tableofcontents
\begingroup
\makeatletter
\section*{Slike}
\@starttoc{lof}
\let\clearpage\relax
\makeatother
\endgroup
\thispagestyle{empty}
\newpage
\section{Uvod}
Dandanes se vsi zanašamo na digitalno komunikacijo. Pa naj bo pogovor z ljubljeno
osebo, kratkočasenje z uporabo interneta ali pa plačevanje z bančno kartico.
Potrebno je zagotoviti pravilni prejem sporočila. Motnje so lahko zelo različne.
Kot ponavadi si lahko pomagamo z matematiko, saj je bilo iznajdenih že kar nekaj
matematičnih algoritmov, kot so Hammingov kod in Cyclic Redundancy Check (CRC).
Matematična kompleksnost prej omenjenega algoritma in preprostost
implementacije z diskretnimi logičnimi enotami sta nasprotujoča. CRC se
uporablja pri internetni komunikaciji, WiFi, mobilnih podatkih ipd.
\section{Analogna komunikacija}
\subsection{Zgodovina radia}
Prav vsi poznamo radio. To je tista majhna naprava v avtu, ki
voznikom (in potnikom) krajša čas, ki so ga prisiljeni preživeti za
volanom. Veliko ljudi pa se ne zaveda, da je radio mnogo več. Slovar
slovenskega knjižnega jezika s prvim pomenom definira radio
kot: "\textit{naprava za oddajanje in sprejemanje električnih
impulzov, signalov po radijskih valovih}". \cite{SSKJ-radio}\\
Leta 1895 \cite{ppt} je potekal prvi prenos sporočila z uporabo
radijskih valov, osem let kasneje pa prva uspešna (enosmerna)
komunikacija iz ZDA v Združeno kraljestvo. Leta 1920 sta v ZDA in
Veliki Britaniji pričeli delovati prvi radiodifuzni\footnote{
radiodifuzija – oddajanje radijskih signalov namenjenih poslušanju}
postaji, leta 1928 pa je Radio Ljubljana postala prva radiodifuzna
postaja v Sloveniji.
\subsection{Analogni signali}
Analogni signali so tisti signali, ki lahko zavzamejo vse vrednosti
na določenem intervalu. Čas je primer analogne vrednosti, ker mu ne
moremo določiti najmanjše enote, za katero bi se spremenil. Urin
kazalec se premika s stalno hitrostjo. To pomeni, da se v neskončno
majhnem intervalu časa vseeno spremeni za nek delež stopinje, vendar
pa ljudje tega navadno ne opazimo.\\
Digitalni signali pa so tisti signali, ki lahko zavzamejo samo
določene vrednosti. Na primer digitalna ura. "Kazalci" na taki uri
(številke) ne morejo zavzeti katerekoli pozicije med dvema
številkama, ampak samo celoštevilčne vrednosti med njima.\\
Če imamo torej dve uri, eno analogno in eno digitalno, ki prikazuje
samo ure, lahko na analogni uri vseeno razberemo, kako blizu
naslednje ure smo, na digitalni pa tega žal ne bomo mogli doseči.
\subsection{Prednosti in slabosti analognih komunikacij}
Analogni signali so močno nagnjeni k popačenju. Vsi signali so sicer
dovzetni za motnje, vendar lahko digitalne signale rekonstruiramo v
prvotno obliko, medtem ko tega pri analognih žal ne moremo. Glavna
prednost analognih signalov pa je večja gostota podatkov v primerjavi z
digitalnimi signali.
\newpage
\section{Digitalna komunikacija}
\subsection{Prednosti in slabosti digitalne komunikacije}
Ker lahko digitalni signali zavzamejo le vnaprej določeno število
pozicij, so manj dovzetni za motnje, saj lahko predpostavimo, da je
prava tista vrednost, ki je najbližja prebrani. Ravno zaradi tega pa se
zmanjša količina informacij, ki jih lahko prenesemo s signalom dane
frekvence.
\subsection{Problemi digitalnih komunikacij}
Digitalni signali so načeloma prepoznani kot bolj zanesljivi, vendar pa
so še vedno dovzetni za različne motnje.
\subsubsection{Bitflips}
Bit je najmanjša količina informacij, ki jih lahko signal prenese.
Načeloma jih označujemo z nič (logično stanje: nepravilno) in ena
(logično stanje: pravilno). Bitflip je dogodek, ko se nič spremeni v
ena ali ena v nič. To se lahko zgodi zaradi zunanjih vplivov, na
primer inducirane napetosti zaradi bližine drugega vodnika, ki
prenaša signal ali zaradi kozmičnega sevanja
\cite{veritasium_computers}.
\subsection{Pretvorba sporočila}
Ko so se pričele digitalne komunikacije, je bilo potrebno ustvariti
standard za prenos sporočil. Eden izmed takih standardov je tudi ASCII
(American Standard Code for Information Interchange). Danes pa se
večinoma uporablja sistem UTF-8, ki je bolj vsestranski, saj podpira
skoraj 300 000 alfanumeričnih, nadzornih ipd. znakov.
\newpage
\subsection{Error correction}
Odpravljanje napak (ang.: error correction) je skupek načeloma
matematičnih algoritmov, s katerimi lažje opazimo in popravimo napake
pri prenosu sporočila.
Eden izmed prvih načinov prepoznave in odprave napak je Hammingov kod.
Sporočilo je potrebno razdeliti na dele velikosti $2^n - n - 1$,
kjer večji $n$ poveča učinkovitost, saj se zmanjša delež paritetnih
bitov v oddanem sporočilu, hkrati pa se poveča verjetnost, da bo prišlo
do nepopravljive napake.
\subsubsection{Matematični uvod}
Cyclic redundancy check ali CRC je bolj napredna metoda. Da bi jo
lažje razložil, je najprej potrebno vpeljati nekaj matematičnih
pojmov.
\paragraph{Končna polja} \label{sec:polja} \mbox{}\\
V algebri je polje ali univerzalna množica množica vseh števil,
s katerimi operiramo. Navadno so to realna števila, pogosto tudi
kompleksna. Moč obeh teh množic je neskončno. Poglejmo si primer
končne univerzalne množico. \\
Definirajmo univerzalno množico, tako
da vsebuje le dva elementa $U = \set{0, 1}$.\\
Poskusimo definirati seštevanje in odštevanje:
\begin{table}[h!]
\centering
\begin{tabular}{l p{0.2\linewidth}}
$0 + 0 = 0$ & $0 - 0 = 0$ \\
$0 + 1 = 1$ & $0 - 1 = 1$ \\
$1 + 0 = 1$ & $1 - 0 = 1$ \\
$1 + 1 = 0$ & $1 - 1 = 0$ \\
\end{tabular}
\end{table}
ter množenje in deljenje:
\begin{table}[h!]
\centering
\begin{tabular}{l p{0.2\linewidth}}
$0 * 0 = 0$ & \\
$0 * 1 = 0$ & $0 / 1 = 0$\\
$1 * 0 = 0$ & $1 / 1 = 1$\\
$1 * 1 = 1$ & \\
\end{tabular}
\end{table}
Lahko se je prepričati, da sta tako seštevanje kot množenje
asociativna in komutativna. Prav tako veljata identiteti (0 je
nevtralni element za seštevanje, 1 za množenje). Še vedno velja
zakon o združevanju, prav tako pa lahko določimo nasprotne in
obratne vrednosti.
\paragraph{Polinomi} \mbox{}\\
Polinom je linearna kombinacija potenčnih funkcij, ki imajo
nenegativne cele eksponente.
\begin{equation}
p_n (x) = \sum_{k=0}^n a_kx^k
\end{equation}
Med polinomi lahko izvajamo matematične operacije. Za izračun
CRC bomo potrebovali seštevanje in deljenje.
\paragraph{Kodiranje sporočila kot polinom} \mbox{}\\
Začnimo s primerom.\footnote{Za vse nadaljnje odstavke bom
uporabil isti primer, ki ga bom označil z $m(x)$}
Predpostavimo, da želimo poslati sporočilo: "Oj!". Najprej ga je
potrebno pretvoriti v binarni zapis, kar lahko storimo z ASCII
tabelo.\\
Naše sporočilo sedaj izgleda:
\begin{table}[h!]
\centering
\begin{tabular}{ccc}
O & j & ! \\
01001111 & 01101010 & 00100001
\end{tabular}
\end{table}
Vendar pa še vedno potrebujemo polinom. Za koeficiente uporabimo
binarne števke. Polinom $m(x)$ za naše sporočilo bi torej bil:
\begin{equation}
\begin{split}
m(x) = 0 \cdot x^{23} + 1 \cdot x^{22} + 0 \cdot x^{21}
+ 0 \cdot x^{20} & + 1 \cdot x^{19} + 1 \cdot x^{18} +
+ 1 \cdot x^{17} + 1 \cdot x^{16} + 0 \cdot x^{15}\\
+ \: 1 \cdot x^{14} + 1 \cdot x^{13} + 0 \cdot x^{12}
+ 1 \cdot x^{11} & + 0 \cdot x^{10} + 1 \cdot x^{9}
+ 0 \cdot x^{8} + 0 \cdot x^{7} + 0 \cdot x^{6} \\
+ \:1 \cdot x^{5} + 0 \cdot x^{4} + 0 \cdot x^{3} &
+ 0 \cdot x^{2} + 0 \cdot x^{1} + 1 \cdot x^{0}\\
\end{split}
\end{equation}
oziroma, če malo uredimo
\begin{equation}
\begin{split}
m(x) = x^{22} + x^{19} + x^{18} + x^{17} + x^{16} +
x^{14} + x^{13} + x^{11} + x^{9} + x^{5} + x^{0}
\end{split}
\end{equation}
\paragraph{Osnovni izrek o deljenju (za polinome)} \mbox{}\\
Osnovni izrek o deljenju naravnih števil lahko zapišemo kot:
\begin{equation}
a = k \cdot b + r; a,b,k,r \in \mathbb{N}
\end{equation}
Rečemo lahko tudi, da $b$ deli $a$ natanko tedaj, ko je $r=0$.
Tudi pri deljenju polinomov lahko zapišemo podobno:
\begin{equation}
p(x) = k(x) \cdot q(x) + r(x)
\end{equation}
Polinom $p(x)$ je deljiv s polinomom $q(x)$ samo, če je
$r(x)=0$.
\subsubsection{Cyclic redundancy check}
\paragraph{Generiranje CRC} \mbox{}\\
Za uporabo CRC algoritma moramo najprej določiti generatorski
polinom $g(x)$. Za primer vzemimo: $g(x)=x^{16}+x^{12}+x^5+1$.
Poskusimo naše sporočilo $m(x)$ deliti z $g(x)$, pri tem pa
upoštevajmo definicije iz \ref{sec:polja}.
Ker želimo sporočilo na koncu tudi poslati, ga seveda ne želimo
uničiti. To zagotovimo tako, da na koncu sporočila dodamo toliko
bitov, kolikor bitni CRC uporabljamo. Za primer uporabljamo 16-bitni
CRC, saj je stopnja generatorskega polinoma 16 ($st(g)=16$).
Matematično gledano to pomeni, da naše sporočilo pomnožimo z
$x^{16}$
\begin{equation}
\begin{split}
(m(x) \cdot x^{16})/g(x) =\\
(x^{38} + x^{35} + x^{34} + x^{33} + x^{32} +
x^{30} + x^{29} + x^{27} + x^{25} + x^{21} + x^{16})\\
/(x^{16} +x^{12} + x^5 + 1)=\\
x^{22} + x^{19} + x^{17} + x^{16} + x^{15} +
x^{14} + x^{12} + x^{11} + x^{10} + x^{9} + x^{7} +
x^{6} + x^{5} + x^{4} + x^{3}\\ + x^{2} + x^{1}\\
, ost.: x^{15} + x^{14} + x^{13} + x^8 + x^5 + x^4 + x^3 +
x^2 + x^1 \quad (=r(x))
\end{split}
\end{equation}
Ugotovili smo, da $m(x)$ ni deljiv z $g(x)$. Lahko bi rekli, da je
naše sporočilo za ostanek ($r(x)$) preveliko, da bi bilo deljivo.
Od našega sporočila lahko torej odštejemo ostanek.\footnote{Zaradi
uporabe končnega polja sta seštevanje in odštevanje zamenljivi
operaciji in izgleda, kot da sta se polinoma seštela}
\begin{equation}
\begin{split}
s(x) = & m(x) - r(x)\\
= & (x^{38} + x^{35} + x^{34} + x^{33} + x^{32} +
x^{30} + x^{29} + x^{27} + x^{25} + x^{21} + x^{16})\\
+ & \: (x^{15} + x^{14} + x^{13} + x^8 + x^5 + x^4 + x^3 +
x^2 + x^1)
\end{split}
\end{equation}
S tem smo zagotovili, da je sporočilo, ki ga bomo oddali $s(x)$
deljivo z $g(x)$.\footnote{Za oddajo sporočila polinom seveda
pretvorimo nazaj v bite, naše sporočilo pa se glasi\\
10011110110101000100001110000100111110}
\paragraph{Validacija CRC} \mbox{}\\
Ko prejmemo sporočilo, ki je bilo zavarovano s CRC, lahko prejeto
sporočilo spet delimo z generatorskim polinomom, ostanek pri
deljenju pa mora biti sedaj 0. Če ni tako, smo lahko prepričani,
da se je pri prejemu sporočila zgodila napaka. Žal ne moremo
ugotoviti, kje se je napaka zgodila.
\newpage
\section{Empirični del – Digitalno vezje}
\subsection{Delovanje vezja}
Najprej je potrebno naš tok bitov shraniti. To storimo z D pomnilnimi
celicami. Izhod prve vežemo na vhod druge. Signal tako potuje od prve
proti zadnji. Število $a$ lahko delimo s številom $b$ samo, če je število
$a$ večje od $b$. To pomeni, da moramo obrniti bite na pravih mestih
samo, če je izhod zadnje pomnilne celice 1. Logična vrata, ki nam to
omogočajo, so vrata XALI. Pravilnostna tabela XALI vrat:
\begin{table}[!h]
\centering
\begin{tabular}{c|c||c}
A & B & A $\bigoplus$ B\\
\cline{1-3}
0 & 0 & 0\\
0 & 1 & 1\\
1 & 0 & 1\\
1 & 1 & 0\\
\end{tabular}
\end{table}
Iz pravilnostne tabele lahko vidimo, da je izhod vrat enak vhodu B, če
je vhod A enak 0 in da je izhod negirana vrednost vhoda B, če je vhod A
enak 1. V vhod A priključimo izhodni bit zadnje pomnilne celice in v
vhod B izhod pomnilne celice, ki ga želimo nadzirati. Ker je deljenje v
izbranem končnem polju enako negiranju bitov, so XALI vrata prava izbira.
Postavimo jih pred bite, ki jih želimo obrniti. Zadnjega ni potrebno
obračati, saj gre z naslednjim ciklom časovnika v pozabo.
Ker želimo na koncu ostanek prebrati, pred A vhode XALI vrat postavimo
IN vrata, ki nastavijo izhod na 1 samo če sta oba vhoda tudi 1. Če je
torej eden izmed vhodov vedno 1, bo vrednost izhoda enaka drugemu vhodu,
če pa bo vrednost enega izmed vhodov enaka 0, je izhod tudi 0 neodvisno
od drugega vhoda. Če torej v en vhod IN vrat pripeljemo signal s katerim
povemo, da želimo samo brati ostanek, lahko s signalom READ preskočimo
negiranje bitov v ostanku.
\newpage
\subsection{Shema vezja}
\begin{figure}[h!]
\begin{center}
\begin{circuitikz}[/tikz/circuitikz/bipoles/length=1.1cm] \draw
% inicializacija vseh komponent
(0, 0.84) node[european xor port](X1){}
(X1.in 2) node[anchor=east]{DIN}
(1.6, 0) node[latch](D1){}
(4.6, 0) node[latch](D2){}
(7.6, 0) node[latch](D3){}
(10.6, 0) node[latch](D4){}
(13.6, 1.5) node[european xor port](X2){}
(0, -5) node[latch](D5){}
(3, -5) node[latch](D6){}
(6, -5) node[latch](D7){}
(9, -5) node[latch](D8){}
(12, -5) node[latch](D9){}
(0, -10) node[latch](D10){}
(3, -10) node[latch](D11){}
(6.8, -9.16) node[european xor port](X3){}
(9, -10) node[latch](D12){}
(12, -10) node[latch](D13){}
(0, -15) node[latch](D14){}
(3, -15) node[latch](D15){}
(6, -15) node[latch](D16){}
(10, -14.388) node[european and port](A1){}
(8, -15) node[european not port, rotate=90](N1){}
% pot vhodnega signala
(X1.out) -| (D1.pin 1)
(D1.pin 6) -| (D2.pin 1)
(D2.pin 6) -| (D3.pin 1)
(D3.pin 6) -| (D4.pin 1)
(D4.pin 6) -| (X2.in 2)
(X2.out) -| ++(0, -4) -| (D5.pin 1)
(D5.pin 6) -| (D6.pin 1)
(D6.pin 6) -| (D7.pin 1)
(D7.pin 6) -| (D8.pin 1)
(D8.pin 6) -| (D9.pin 1)
(D9.pin 6) -| ++(0.7, -3.5) -| (D10.pin 1)
(D10.pin 6) -| (D11.pin 1)
(D11.pin 6) -| (X3.in 2)
(X3.out) -| (D12.pin 1)
(D12.pin 6) -| (D13.pin 1)
(D13.pin 6) -| ++(0.7, -4) -| (D14.pin 1)
(D14.pin 6) -| (D15.pin 1)
(D15.pin 6) -| (D16.pin 1)
% poveži CLK
(D1.pin 3) to (D1.pin 3 -| X1.in 2) node[anchor=east](CLK){CLK}
(D1.pin 3 -| X1.in 2) -| ++(0, -1) node[anchor=east](CLK_H1){}
(CLK_H1) -| (D2.pin 3)
(CLK_H1) -| (D3.pin 3)
(CLK_H1) -| (D4.pin 3)
(D5.pin 3) to (D5.pin 3 -| CLK.east) node[anchor=east]{}
(D1.pin 3 -| X1.in 2) -| ++(0, -6) node[anchor=east](CLK_H2){}
(CLK_H2) -| (D6.pin 3)
(CLK_H2) -| (D7.pin 3)
(CLK_H2) -| (D8.pin 3)
(CLK_H2) -| (D9.pin 3)
(D10.pin 3) to (D10.pin 3 -| CLK.east) node[anchor=east]{}
(D1.pin 3 -| X1.in 2) -| ++(0, -11) node[anchor=east](CLK_H3){}
(CLK_H3) -| (D11.pin 3)
(CLK_H3) -| (D12.pin 3)
(CLK_H3) -| (D13.pin 3)
(D14.pin 3) to (D14.pin 3 -| CLK.east) node[anchor=east]{}
(D1.pin 3 -| X1.in 2) -| ++(0, -16) node[anchor=east](CLK_H4){}
(CLK_H4) -| (D15.pin 3)
(CLK_H4) -| (D16.pin 3)
% branje/pisanje
(D16.pin 6) -| (A1.in 1)
(A1.out) -| ++(4.3, 0) node[anchor=west](A1_H1){}
(A1_H1.west) -| ++(0, 6) -| ++(-7, 0) -| (X3.in 1)
(A1_H1.west) -| ++(0, 17) -| ++(-1,0) node[anchor=west](A1_H2){}
(A1_H2.west) -| (X2.in 1)
(A1_H2.west) -| (X1.in 1)
(A1.in 2) -| (N1.out)
(N1.in) |- ++(-9.5,-2) node[anchor=east]{READ}
% output
(D16.pin 6) -| ++(0.2,0) |- ++(-8.8,-3.5) node[anchor=east]{OUT}
;
\end{circuitikz}
\caption{Vezje logičnih enot za računanje 16-bitnega CRC in
polinomom $x^{16} + x^{12} + x^5 + 1$}
\label{fig:vezje1}
\end{center}
\end{figure}
\newpage
\section{Zaključek}
V seminarski nalogi sem se poglobil v razumevanje in delovanje komunikacijskih vezij,
zlasti analizi (in implementaciji) vezja za izračun CRC (Cyclic Redundancy Check).
Raziskal in opisal sem teoretične osnove in praktično uporabo v komunikacijskih sistemih.
Narisal sem logično vezje za izračun CRC. Naloga poudarja pomembnost temeljitega
razumevanja osnov matematike in njene uporabe v komunikacijski tehnologiji in njenega
vpliva na sodobne komunikacijske sisteme.
\newpage
\begingroup
\makeatletter
\section{Viri in literatura}
\nocite{*}
\printbibliography[heading=none]
\makeatother
\endgroup
\newpage
\begin{samepage}
\thispagestyle{empty}
\section*{Izjava o avtorstvu}
Izjavljam, da je seminarska naloga v celoti moje avtorsko delo, ki sem ga
izdelal samostojno s pomočjo navedene literature in pod vodstvom mentorja.
\vfill
\today \hfill Jaka Kovač
\vspace{3 cm}
\end{samepage}
\end{document}