Zadání 1. úlohy pro cvičen

Transkript

Zadání 1. úlohy pro cvičen
Úloha číslo 1: KOM pro vysílač navigační bóje
Verze dokumentu 2016.V1.0 ze dne 30. září 2016
Obsah
Zadání ............................................................................................................................................................................ 1
Objasnění zadání na příkladu KOM obvodu pro maják EA ........................................................................................... 2
Řešený příklad s dlouhou posloupností MHL2 .............................................................................................................. 7
Návrh logické funkce ................................................................................................................................................. 7
Ověření ve vývojovém prostředí Quartus a na vývojové desce Altera DE2 ............................................................ 11
Dodatek: ...................................................................................................................................................................... 13
Zadání
Vytvořte kombinační obvod KOM, který překóduje posloupnost čísel binárního čítače na
jednobitovou posloupnost morseovky, takže se na výstupu Y obvodu KOM objeví Vámi
zadaná posloupnost nul a jedniček.
Ta odpovídá Morseovu kódu čtyřpísmenného identifikátoru odvozeného od Vašeho
jména (dle možností) jako zcela unikátního identifikátoru v rámci všech cvičení. Při jeho
návrhu se navíc přihlíželo i k přibližně stejné složitosti pro všechny studenty (relativní
složitost obvodu leží v intervalu <0,923; 1,077>).
Upozornění: Úlohu každý řeší zvlášť, protože každý má jinou posloupnost.
.Upřesnění požadavků
Start
Start-Stop Reset
Čítač
KOMx
Stop
Y Morseovka
Posuvný
registr
LED
diody
Pozn. V úloze navrhujete pouze KOM, ostatní obvody najdete v knihovně
Obrázek 1 - Principielní schéma





KOM vytvořte ve dvou verzích, jako KOM1 v jazyce VHDL (=soubor typu *.vhd), kde přímo
napíšete nalezené logické rovnice z Karnaughových map. Nic jiného než logické rovnice a definice
signálů se v bloku architektury VHDL u KOM1 nepovolují.
Teprve po odladění KOM1 vytvořte KOM2 jako samostatný Quartus II Block/Schematic File
(=soubor typu *.bdf), kde rovnice přepíšete do logického schématu. V úloze si tak dobře ujasníte
vztah mezi různými popisy logických obvodů a zjistíte, proč se pro obvody používá VHDL.
V KOM2 smíte použít libovolný počet obvodů NOT, AND, NAND, OR, NOR, a XOR, symbolů
pro vstupy (input), výstupy (output), logické 1 (VCC) a 0 (GND), avšak nejvýše jen jeden
čtyřvstupový multiplexor. Výhody skýtající použití multiplexoru najdete v řešeném příkladu a budou
i tématem 2. přednášky. Jiné typy obvodů než výše vyjmenované se v KOM2 nedovolují.
KOM1 i KOM2 vyzkoušejte napřed pomocí simulátoru.
Po vyzkoušené KOM1 i KOM2 udělejte i posuvný registr, takže Morseovka Vám poběží jako
světelný had, a připojte bzučák, abyste morseovku slyšeli také ve sluchátkách. Úlohu v této podobě
předveďte cvičícímu. Úloha musí obsahovat při předvádění jak KOM1, tak KOM2, mezi nimi
lze přepínat multiplexorem řízeným přepínačem.
Pozn. Není žádné omezení na testovací obvod pro předvedení KOM1 a KOM2. V něm lze použít cokoliv.
1
Objasnění zadání na příkladu KOM obvodu pro maják EA
Maják EA, který byl vysvětlený na 1. přednášce, má zadanou posloupnost 010001011100.
Čítač 0 1 2 3 4 5 6 7 8 9 10 11
KOMx-výstup STOP 0 0 0 0 0 0 0 0 0 0 0 1
Y vysílající morseovkou EA 0 1 0 0 0 1 0 1 1 1 0 0
Výstup KOM-STOP je v logické '1‘ jen v době posledního bitu posloupnosti, případně i v dalších
následujících, ale ty nás nezajímají, protože se tyto výstupy neuplatní.
Logické rovnice se navrhovaly na první přednášce.
Obrázek 2 - Maják EA z první přednášky
V nalezených rovnicích pouze přeznačíme D, C, B, A na X3, X2, X1, X0, aby se jasněji ukázalo, že bit je
nejnižším (X0). Napíšeme tedy
Y = (X0+X3).(X1'+X2);
K rovnici doplníme výstup STOP ve stavu 11, zde stačí pomocí operace spojit bity AND, které jsou při
stavu čítače 11 v logické jedničce, takový stav bude první.
STOP = X3 . X1 . X0;
Obvod nazveme KOM1ea, pro rozlišení od hlavní úlohy, a v jazyce VHDL napíšeme přímo jeho rovnice,
viz 2. přednáška (v následujícím kódu jde o tučně vyznačené řádky). Nezapomeňte, že závorky jsou ve
VHDL zcela nutné.
2
library ieee; use ieee.std_logic_1164.all;
entity KOM1ea is
port
(
X0,X1,X2,X3
: in std_logic;
STOP, Y : out std_logic );
end entity;
architecture behavioral of KOM1ea is
begin
Y <= (X0 or X3) and (not X1 or X2);
STOP <= X3 and X1 and X0;
end architecture;
Pro práci doma využijte s výhodou simulátoru - ten bude probrán na cvičení. Přeložíte samotný KOM1ea a
ten simulujete pomocí souboru typu University program VWF (*.wvf - Vector Waveform File).
Obrázek 3 - Výstup simulátoru
V laboratoři si můžete funkci KOM1ea vyzkoušet třeba v zapojení dole, kde vidíte i stav čítače. Hodiny si
generujete sami pomocí tlačítka KEY[2]. Hodiny mezi start_stop a čítačem jsou negované (NOT inst7
dole), aby se čítání provedlo při jedné hraně hodin (sestupné při stisku KEY[2]) a rozhodovalo se
o následném stavu RUN (řízení čítání) při druhé hraně hodin (náběžné při uvolnění KEY[2]). Zamezí se
tím zpoždění reakce start_stop o jeden hodinový cyklus, více přednášky.
Obrázek 4 - Ruční generování hodin
Pozor, pokud chcete použít KEY[3] místo KEY[2], můžete, ale musíte vložit i KEY[2], a nechat ho
nezapojený, protože v Quartusu nelze přeskakovat v podobných řadách "pinů" FPGA, typu YYY[x].
3
Obrázek 5 - Generování hodin pomocí KEY[3]
Jakmile jste odladili KOM1, překreslete rovnice do schematického editoru.
Obrázek 6 - KOM2 jako grafické vyjádření KOM1
Oba KOMx lze najednou otestovat v následujícím zapojení
Obrázek 7 - Testování KOM1 a KOM2 pomocí pomaloběžného děliče
Používá se zde již hodinový vstup 50 MHz, CLOCK_50, vydělený na pomaloběžné hodiny 1 Hz. Pro StartStop obvod se naopak používají rychlejší hodiny 2kHz, aby vstup reagoval i na krátké stisknutí. Výběr
signálů STOP z KOM1ea a KOM2ea se řídí multiplexorem.
4
Obrázek 8 - Finální schéma pro předvedení
Ve finálním zapojení zrychlíme frekvenci na 5 Hz, protože pomalá morseovka není příliš čitelná, přidáme
multiplexor i na výstup a dále posuvný registr a bzučák. V této formě lze již předvést vyučujícímu.
V návrhu je obvod shift18bus, který neexistuje v knihovně obvodů. Ten jsme si sestavili sami ze dvou
knihovních obvodů a uložili ho do svého projektu pod názvem shift18bus. Když k němu vygenerujeme
5
symbolický popis (menu File -> Create / Update -> Create Symbols Files for Current File... ), můžeme ho
vložit do schématu.
Obrázek 9 - Náš vlastní obvod shift18bus sestavený ze dvou obvodů
Obrázek 10 - Vložení našeho obvodu
6
Řešený příklad s dlouhou posloupností MHL2
Časování odpovídá normě pro Mezinárodní morseovku:
 tečka trvá 1 dobu;
 mezi tečkou a čárkou činí také 1 dobu;
 čárka má délku 3 doby;
 mezi znaky se klade pauza dlouhá též 3 doby.
Proč posloupnost začíná 0 a končí dvojicí 00?
Na začátku, ve stavu STOP, se nic nevysílá. Zato při trvalém běhu majáku (tlačítko START je
pořád stisknuté) se objeví správná pauza 3 doby, neboť Vaše binární posloupnost začíná 0
a končí 00, takže při nepřetržitém vysílání bude poslední znak oddělený od prvního mezerou
mezi znaky o délce tří dob, tj. 000.
Jak převést jinou posloupnost?
Běžně jsou známé různé mnemotechnické pomůcky: M jako mává, H jako hrachovina,
L lupíneček, či žertovné tabulky, jako třeba alkoholická morseovka. Pro čísla nic není, ale
jejich kódy mají jasnou strukturu. Zde nutno poznamenat, že mnemotechnické pomůcky se ve
skutečné radiotelegrafii nikdy nepoužívaly, protože operátory by jedině zpomalovaly, takže
jejich učení se naopak velmi přísně zakazovalo. Telegrafisté poslouchali morseovku podobně
jako hudbu a vnímali znaky jako jednotlivé tóny melodie.
Pro převod existují některé weby, např.
http://morseovka.pitevna.cz/prevodnik/
Návrh logické funkce
Pro zkrácení rovnic si zavedeme dočasné označení proměnných, abychom se vyhnuli psaní indexů, jejichž
opomenutím se dělají časté chyby. Budeme psát
KOM- označenívstupu: X0 X1 X2 X3 X4 X5
Naše tabulka: f
e
d c
b a
Nejdříve zadanou binární posloupnost přepíšeme do pravdivostní tabulky, viz další strana:
7
Stav
0
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
a
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
b
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
c
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
e
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
f
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Y (KOM výstup morsovky)
0
1
1
1
0
1
1
1
0
0
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
1
0
1
0
0
0
1
0
1
0
1
1
1
0
1
1
1
0
1
1
1
0
0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
výstup STOP)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Minimalizace logické funkce Karnaughovou mapou by byla velice složitá z tak velké pravdivostní tabulky.
Využijeme raději dva postupy pro její zjednodušení. Pro výstup Y použijeme Shannonovu expanzi, zatímco
pro STOP uplatníme znalost chování obvodu.
8
Začneme Shannonovou expanzí výstupu Beacon:
Pravdivostní tabulku rozdělíme na 4 menší pravdivostní tabulky ("Shannon cofactors") po 4 proměnných
s tím, že další dvě proměnné mají konstantní hodnotu, budou "splitting variables", viz 2. přednáška:
a = 0, b = 0
Stav
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
e
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
f
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Y (KOM výstup morsovky)
0
1
1
1
0
1
1
1
0
0
0
1
0
1
0
1
---------------------------------------------------------------------------------------------------------------------------------a = 0, b = 1
Stav
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
e
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
f
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Y (KOM výstup morsovky)
0
1
0
0
0
1
0
1
1
1
0
1
0
1
0
0
---------------------------------------------------------------------------------------------------------------------------------a = 1, b = 0
Stav
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
e
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
f
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Y (KOM výstup morsovky)
0
1
0
1
0
1
1
1
0
1
1
1
0
1
1
1
----------------------------------------------------------------------------------------------------------------------------------
9
a = 1, b = 1
Stav
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
e
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
f
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Y (KOM výstup morsovky)
0
0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Nyní již řešíme minimalizace logických funkcí pomocí jednoduchých Karnaughových map se 4
proměnnými pro výstup Y (KOM výstup morseovky), které označíme Yab = f(c,d,e,f), kde a b budou čísla
logických hodnot vstupů a, b.
Nemusím řešit kontradikce Y11 = 0
10
Po výstup STOP vyžijeme chování obvodu. Víme, že čítač bude čítat od nuly až ke stavu STOP, poté se
opět vynuluje. Náš stav STOP se generuje v čísle 49, které má kód:
4910 = 1100012 = 2^5 + 2^4 + 1
Číslo 49 musí být prvním číslem v číselné řadě 0 až 49, které bude mít jedničkové bity v 5., 4. a 0. bitu.
Žádné jiné se nemůže objevit dříve, protože jinak by bylo větší než 49, což je v rozporu s povahou
aritmetické číselné řady. Pro výstup Y (KOM výstup STOP) stačí tedy rovnice:
Ověření ve vývojovém prostředí Quartus a na vývojové desce Altera DE2
Rovnice napřed ověříme ve VHDL
Všimněte si, že v komentářích se nepoužívá diakritika, VHDL ji nezná!
library ieee; use ieee.std_logic_1164.all;
entity KOM1 is
port
(
X0, X1, X2, X3, X4, X5 : in std_logic;
STOP, Y : out std_logic
);
end entity;
architecture behavioral of KOM1 is
signal a, b, c, d, e, f : std_logic;
signal Y00, Y01, Y10, Y11 : std_logic;
begin
-- Preznacime signaly, na rozdil od programovani se tím v hardwaru nevytvori nove promenne!
a <= X5; b <= X4; c <= X3; d <= X2; e <= X1; f <= X0;
Y00 <= (e and f) or (not c and e) or (not c and f) or (d and f);
Y01 <= (not e and f) or (c and not d and f) or (not c and d and f)
or (c and not d and not e);
Y10 <= (c and e) or (d and e) or f;
Y11 <= '0';
-- Naprogramujeme multiplexor -Y <=
(not a and not b and Y00)
or (not a and b and Y01)
or (a and not b and Y10)
or (a and b and Y11);
-- Poznamka, VHDL zna i primy prikaz pro sestaveni multiplexoru,
-- ktery muzete pouzivat v dalsich ulohach. Zde jen pro zajimavost:
-- with std_logic_vector'(a & b) select
-Y <= Y00 when "00", Y01 when "01",Y10 when "10", Y11 when "11";
STOP <=
a and b and f;
end architecture;
11
Návrh vyzkoušíme v simulátoru
Obrázek 11 - Výstup simulátoru
Pro spojení jednotlivých tabulek v symbolickém KOM2 použijeme s výhodou rovněž multiplexor, na
jehož adresní vstupy přivedeme proměnné, podle nichž jsme prováděli Shannonovu expanzi, tedy a a b.
Jednotlivé tabulky vytvoříme jako jednoduché čtyřvstupové logické funkce Yab=f(c,d,e,f). Ty pojmenujeme
třeba podle hodnot a a b vstupů jako KOMa0b0, KOMa0b1 a KOMa1b0. Funkci KOMa1b1 nevytváříme, ta
se redukovala na 0, tedy na uzemnění. Každou funkci můžeme případně samostatně otestovat v simulátoru,
což je výhoda oproti nakreslení celé funkce v jednom schématu.
Nakonec vytvoříme symbolické soubory pro naše KOMa0b0, KOMa0b1 a KOMa1b0. Vložíme obvody do
nového schématu a pomocí multiplexoru z knihovny DCE/basic sestavíme výslednou funkci:
Jak jsme se zmínili v úvodu, v našem případě: X0 odpovídá f, X1 odpovídá e, X2 odpovídá d, X3 odpovídá
c, X4 odpovídá b, X5 odpovídá a. Kde provést změnu v symbolickém editoru? Stačí jen v označení
vývodů (pins) nahoře sestaveného obvodu KOM 
Vlastní zapojení pro vyzkoušení obvodu je stejné jako u majáku EA s jediným rozdílem, za Start-Stop
obvod zařadíme 8bitový čítač.
12
Dodatek:
Mohli jsme samozřejmě vytvořit KOMx pomocí jedné rovnice - vyšlo by nám něco podobného jako:
Po úpravách:
A z toho bychom dostali rozlehlé, nepřehledné schéma, takže jsme to radši vůbec nedělali:
~o~
13

Podobné dokumenty

Číslicová technika

Číslicová technika funkcí jednotlivých hradel, přičemž toto zapojení je možné využít skutečně pouze jen jako „náhradní,“ vzhledem k jeho velké ekonomické a prostorové náročnosti. Jedinou výjimkou, kdy je možné využít...

Více

5 až 25 bodů termín do 9. týdne cvičení, tj. do

5 až 25 bodů termín do 9. týdne cvičení, tj. do  VGA_BLANK - je v '0', pokud je neviditelná část obrazu, tj. zatemňovací pulzy, jinak zůstává v ‘1‘;  VGA_HS - je v '0' jen po dobu horizontálního synchronizačního pulzu, tj. jen po dobu 3.81 µs....

Více

Logické obvody a jejich zapojení 1

Logické obvody a jejich zapojení 1 zkoumat logické výstupy v závislosti na vstupech. Jednoduše řečeno, vidíme, jestli dioda svítí, nebo nesvítí2. Kombinací propojení zdířek L1 až L8 s napájením můžeme rozsvěcovat různé skupiny světe...

Více

Model Name MH684 Digital Projector Distance

Model Name MH684 Digital Projector Distance x2 (HDMI with MHL2.0 x1, HDMI x 1)

Více

Studijní text - MATEMATIKA online

Studijní text - MATEMATIKA online Mocninné řady jsou funkční řady, jejichž členy tvoří mocninné funkce s přirozeným exponentem (jsou tedy vlastně polynomy nekonečně velkého stupně). Oborem konvergence každé mocninné řady je buďto j...

Více

Zpráva o činnosti 2013 - Městská knihovna Jablonec nad Nisou, po

Zpráva o činnosti 2013 - Městská knihovna Jablonec nad Nisou, po uživatelům studijních míst pro práci na PC. Čtenářům s vlastní technikou jsme ke konci roku nabídli přístup na internet prostřednictvím wi-fi. V rámci výkonu regionálních funkcí proběhly dva aktivy...

Více

Apacer přichází s SSD+ Optimizer

Apacer přichází s SSD+ Optimizer zrychluje SSD, což se nám tedy moc nezdá. Ano, u HDD může velká fragmentace souborů opravdu výkon hodně zpomalit, ale u flash paměti? Zkrátka jde o to, že Apacer oznámil spolupráci se známou softwa...

Více