Wyświetlacz siedmiosegmentowy

Podobne dokumenty
Technika cyfrowa projekt: Sumator 4 bitowy równoległy

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Systemy Czasu Rzeczywistego FPGA

Programowalne układy logiczne

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Systemy Czasu Rzeczywistego FPGA

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Systemy Czasu Rzeczywistego FPGA

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Bramki logiczne Instrukcja do ćwiczeń laboratoryjnych

Projekt prostego procesora

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

Kodery, dekodery, transkodery Synteza sprzętu przy pomocy VHDL

Specyfika projektowania Mariusz Rawski

Krótkie wprowadzenie do ModelSim i Quartus2

Instrukcja nr 9. Zegarek cyfrowy. AGH Zespół Mikroelektroniki Układy Elektroniczne J. Ostrowski, P. Dorosz Lab 9.1

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Sposoby projektowania systemów w cyfrowych

Projektowanie Urządzeń Cyfrowych

Tranzystor JFET i MOSFET zas. działania

Architektura komputerów ćwiczenia Bramki logiczne. Układy kombinacyjne. Kanoniczna postać dysjunkcyjna i koniunkcyjna.

KURS Hexcalcul (2) Implementacja kalkulatora kodu BCD na Hex w układzie programowalnym

Systemy Czasu Rzeczywistego FPGA

Organizacja laboratorium. Zadania do wykonania w czasie laboratorium z części PSPICE

AKADEMIA MORSKA KATEDRA NAWIGACJI TECHNICZEJ

SML3 październik 2008

Laboratorium Wykorzystanie kalkulatora Windows do obliczania adresów sieciowych

SML3 październik

DOKUMENTACJA PROJEKTU

Projektowanie Systemów Wbudowanych

LABORATORIUM OPTOELEKTRONIKA I SENSORYKA Oprogramowanie bariery podczerwieni w układzie CPLD

x x

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Systemy wbudowane. Wprowadzenie. Nazwa. Oznaczenia. Zygmunt Kubiak. Sterowniki PLC - Wprowadzenie do programowania (1)

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

Modelowanie logiki rewersyjnej w języku VHDL

Układy reprogramowalne i SoC Język VHDL (część 4)

Przetworniki AC i CA

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Katedra Sterowania i InŜynierii Systemów Laboratorium elektrotechniki i elektroniki. Badanie podstawowych bramek logicznych. 2.2 Bramka AND.

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. Automaty stanów

Języki opisu sprzętu VHDL Mariusz Rawski

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

Ćwiczenie 29 Temat: Układy koderów i dekoderów. Cel ćwiczenia

Podstawowe układy cyfrowe

Modelowanie złożonych układów cyfrowych (1)

Badanie układów średniej skali integracji - ćwiczenie Cel ćwiczenia. 2. Wykaz przyrządów i elementów: 3. Przedmiot badań

Mikrokontrolery AVR Wprowadzenie

Temat 7. Dekodery, enkodery

Architektura systemów komputerowych Laboratorium 10 Symulator SMS32 Urządzenia wejścia i wyjścia

Układy cyfrowe. Najczęściej układy cyfrowe służą do przetwarzania sygnałów o dwóch poziomach napięć:

Automatyka. Treść wykładów: Multiplekser. Układ kombinacyjny. Demultiplekser. Koder

Ćwiczenie 28. Przy odejmowaniu z uzupełnieniem do 2 jest wytwarzane przeniesienie w postaci liczby 1 Połówkowy układ

Rys. 2. Symbole dodatkowych bramek logicznych i ich tablice stanów.

Automatyzacja i robotyzacja procesów produkcyjnych

Projektowanie hierarchiczne Mariusz Rawski

Wielkość analogowa w danym przedziale swojej zmienności przyjmuje nieskończoną liczbę wartości.

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Ćwiczenie 1 Program Electronics Workbench

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016

F&F Filipowski Sp. J Pabianice, ul. Konstantynowska 79/81 tel KARTA KATALOGOWA

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

1. Synteza układów opisanych w języku VHDL Xilinx ISE Design Suite 10.1 VHDL 2. Obsługa przetwornika CA Project Add source...

Projektowanie układów na schemacie

Ćw. 1: Systemy zapisu liczb, minimalizacja funkcji logicznych, konwertery kodów, wyświetlacze.

L6.1 Systemy liczenia stosowane w informatyce

Ćwiczenie 25 Temat: Interfejs między bramkami logicznymi i kombinacyjne układy logiczne. Układ z bramkami NOR. Cel ćwiczenia

Technika cyfrowa. Laboratorium nr 7. Liczniki synchroniczne. Mirosław Łazoryszczak. Temat:

Synteza układów kombinacyjnych metodą tablic Karnaugha - ćwiczenie 10

Laboratorium z podstaw techniki cyfrowej Studia inżynierskie niestacjonarne/stacjonarne, II rok III semestr, 2016/2017. W ramach laboratorium używamy:

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Moduł 2 Zastosowanie systemów liczbowych w informacji cyfrowej

Programowanie Niskopoziomowe

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Jednostki miar stosowane w sieciach komputerowych. mgr inż. Krzysztof Szałajko

Pracownia elektryczna i elektroniczna. Elektronika cyfrowa. Ćwiczenie nr 5.

Funkcja Boolowska a kombinacyjny blok funkcjonalny

Układy kryptograficzne z uŝyciem rejestrów LFSR

Układy kombinacyjne Y X 4 X 5. Rys. 1 Kombinacyjna funkcja logiczna.

PRZED PRZYSTĄPIENIEM DO ZAJĘĆ PROSZĘ O BARDZO DOKŁADNE

Programowalne układy logiczne

PRZED PRZYSTĄPIENIEM DO ZAJĘĆ PROSZĘ O BARDZO DOKŁADNE

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Krótkie przypomnienie

STANOWISKO DO BADANIA AKUMULACJI I PRZETWARZANIA ENERGII ELEKTRYCZNEJ (analiza energetyczna)

Znaki w tym systemie odpowiadają następującym liczbom: I=1, V=5, X=10, L=50, C=100, D=500, M=1000

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Zadania do wykładu 1, Zapisz liczby binarne w kodzie dziesiętnym: ( ) 2 =( ) 10, ( ) 2 =( ) 10, (101001, 10110) 2 =( ) 10

Ćwiczenie nr 1 Temat: Ćwiczenie wprowadzające w problematykę laboratorium.

f we DZIELNIKI I PODZIELNIKI CZĘSTOTLIWOŚCI Dzielnik częstotliwości: układ dający impuls na wyjściu co P impulsów na wejściu

Transkrypt:

Wyświetlacz siedmiosegmentowy autorzy: Tomasz Perek Tomasz Biernat Projekt: Układ, który liczbę podaną w postaci binarnej wyświetla w systemie szesnastkowym, ósemkowym oraz dziesiętnym. Wyświetlacz siedmiosegmentowy jest powszechnie stosowany do prezentacji cyfr, liter. Składa się z siedmiu segmentów oznaczonych literami a-g (tak jak na rysunku), które mogą być zapalone lub nie. Kolejne cyfry i litery wyglądają następująco: 1.

Symulacja w programie Multisim załącznik: 7seg.ms10 Układ zrealizowany w programie Multisim składa się z następujących elementów: 1. Wejście - ośmiobitowy przełącznik 2. Podukład zamieniający 8-bitową liczbę binarną na dwie 4-bitowe liczby binarne, odpowiadające dziesiętnym cyfrom liczby wejściowej 3. Podukłady kodujące liczbę dziesiętną 0-9 do wyświetlacza siedmiosegmentowego 4. Podukłady kodujące liczbę ósemkową 0-7 do wyświetlacza siedmiosegmentowego 5. Podukłady kodujące liczbę szesnastkową 0-F do wyświetlacza siedmiosegmentowego 6. Podukłady wybierające odpowiednią reprezentację liczby 7. Wyjście - dwa wyświetlacze siedmiosegmentowe 8. Wejście przyciski do wyboru reprezentacji 8 2

Opis poszczególnych elementów: 1. Wejście - ośmiobitowy przełącznik Jest to układ ośmiu przełączników, za pomocą których ustawiamy wejściową liczbę binarną. Przełącznik znajdujący się najwyŝej odpowiada najbardziej znaczącemu bitowi. 2. Podukład zamieniający 8-bitową liczbę binarną na dwie 4-bitowe liczby binarne, odpowiadające dziesiętnym cyfrom liczby wejściowej Układ posiada 8 wejść A - H, odpowiadających ośmiu bitom liczby wejściowej. Wyjścia c11 - c14 odpowiadają bitom pierwszej cyfry dziesiętnej, a c21 - c24 drugiej cyfry. Dodatkowe wyjście ok informuje, czy liczba dziesiętna nie jest większa od 99. Na przykład, dla wejścia A-H -> 00111011 (59) otrzymamy: c11-c14 -> 0101 (5) c21-c24 -> 1001 (9) ok -> 0 Nie zamieszczamy wszystkich tabel prawdy, gdyŝ w tym przypadku mają one 100 wierszy, a tablice Karnaugh mają wymiary 8x16. Schematycznie, zminimalizowane i uproszczone funkcje przedstawiają się następująco: 3

4

3. Podukłady kodujące liczbę dziesiętną 0-9 do wyświetlacza siedmiosegmentowego Wejście układu stanowią 4 bity cyfry dziesiętnej d1 - d4, oraz ok informacja, czy liczba wejściowa nie jest większa od 99. Wyjścia a - g odpowiadają poszczególnym segmentom wyświetlacza. Jeśli ok=0, to na wyjściach kodowana jest odpowiednia cyfra, a jeśli ok=1, to wyjście ustawiane jest tak aby na wyświetlaczu pojawiła się pozioma kreseczka, np: d1-d4 = 0100 (4), ok=0 -> a-g = 0110011 d1-d4 = 1001 (9), ok=1 -> a-g = 0000001 Tabela prawdy: d1 d2 d3 d4 a b c d e f g 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 Tablica Karnaugh, przykładowo dla segmentu e: e = d2d4 + d1d 3d 4 5

Schemat: 4. Podukłady kodujące liczbę ósemkową 0-7 do wyświetlacza siedmiosegmentowego Wejście układu stanowią 3 bity cyfry ósemkowej o1 - o3, oraz ok informacja, czy liczba wejściowa nie jest większa od 63. Wyjścia a - g odpowiadają poszczególnym segmentom wyświetlacza. Jeśli ok=1, to na wyjściach kodowana jest odpowiednia cyfra, a jeśli ok=0, to wyjście ustawiane jest tak aby na wyświetlaczu pojawiła się pozioma kreseczka, np: o1-o3 = 101 (5), ok=1 -> a-g = 1011011 o1-o3 = 001 (1), ok=0 -> a-g = 0000001 Tabela prawdy jest identyczna jak w punkcie 3, tylko pomniejszona o dwa ostatnie wiersze. Schemat przedstawia się następująco: 5. Podukłady kodujące liczbę szesnastkową 0-F do wyświetlacza siedmiosegmentowego Wejście układu stanowią 4 bity cyfry/liczby szesnastkowej h1 - h4. Wyjścia a - g odpowiadają poszczególnym segmentom wyświetlacza.. Przykładowo: h1-h4 = 1011 (B) -> a-g = 0011111 h1-h4 = 0011 (3) -> a-g = 1111001 Tabela prawdy jest taka jak w punkcie trzecim, tylko powiększona o wiersze: d1 d2 d3 d4 a b c d e f g 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 6

1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 Schemat: 6. Podukłady wybierające odpowiednią reprezentację liczby Tych układów jest w projekcie 14, po jednym dla kaŝdego wejścia wyświetlacza. Wejście d to stan odpowiedniego segmentu przy systemie dziesiętnym, o ósemkowym, h szesnastkowym. PBo podłączone jest do przycisku wyboru systemu ósemkowego, a PBd do przycisku wyboru systemu dziesiętnego. Wyjście seg to stan odpowiedniego segmentu, w wybranej za pomocą przycisków reprezentacji. Funkcja wybierająca jest prosta: seg = PBo PBd o + PBo PBd d + PBo PBd h 7. Wyjście - dwa wyświetlacze siedmiosegmentowe W programie Multisim wybraliśmy wyświetlacze w konfiguracji wspólnej anody, kaŝde wejście podłączone jest przez rezystor 100Ω oraz przez bramkę NOT, poniewaŝ segment zapala się przy 0 logicznym. 8. Wejście przyciski do wyboru reprezentacji Dwa przyciski push-button ustalające w jakiej reprezentacji ma byś pokazywana liczba. Standardowo wyświetlana jest liczba w systemie szesnastkowym, przy wciśniętym przycisku okt w ósemkowym, przy wciśniętym przycisku dec w dziesiętnym. Przy przyciskach wciśniętych naraz na wyświetlaczu nic się nie pojawia. 7

2. Symulacja w programie Quartus II Układ zbudowany jest na podobnej zasadzie jak w programie Multisim, załącznik zawiera projekt zrealizowany w programie Quartus II - schematy, oraz pliki vhdl. załącznik: 7seg.zip 3. Projekt w języku VHDL konwersja.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY work; ENTITY konwersja IS PORT ( A : IN STD_LOGIC; B : IN STD_LOGIC; C : IN STD_LOGIC; D : IN STD_LOGIC; E : IN STD_LOGIC; F : IN STD_LOGIC; G : IN STD_LOGIC; H : IN STD_LOGIC; c24 : OUT STD_LOGIC; c23 : OUT STD_LOGIC; c22 : OUT STD_LOGIC; c21 : OUT STD_LOGIC; c14 : OUT STD_LOGIC; c13 : OUT STD_LOGIC; c12 : OUT STD_LOGIC; c11 : OUT STD_LOGIC; ok : OUT STD_LOGIC END konwersja; ARCHITECTURE bdf_type OF konwersja IS NB : STD_LOGIC; NC : STD_LOGIC; ND : STD_LOGIC; NE : STD_LOGIC; NF : STD_LOGIC; NG : STD_LOGIC; BEGIN NB <= NOT(B NC <= NOT(C ND <= NOT(D NE <= NOT(E NF <= NOT(F NG <= NOT(G c24 <= H; 8

c23 <= (C AND ND AND E AND G) OR (C AND E AND F AND G) OR (B AND ND AND E AND NG) OR (C AND ND AND NE AND NG) OR (B AND E AND F AND NG) OR (C AND NE AND F AND NG) OR (NC AND ND AND E AND F AND NG) OR (C AND D AND E AND NF AND NG) OR (NB AND NC AND D AND E AND NF AND G) OR (NB AND NC AND D AND NE AND NF AND NG) OR (NB AND NC AND ND AND NE AND G) OR (NC AND D AND NE AND F AND G) OR (B AND NC AND NE AND NF AND G C22 <= (B AND D AND NE AND F) OR (B AND D AND F AND G) OR (NB AND NC AND D AND E AND NF) OR (C AND D AND NE AND F AND G) OR (B AND ND AND E AND F AND NG) OR (NB AND NC AND D AND NF AND NG) OR (NB AND C AND ND AND NE AND NF AND G) OR (C AND ND AND E AND F) OR (NB AND NC AND ND AND F AND G) OR (B AND NC AND ND AND NF AND G) OR (NB AND ND AND NE AND F AND NG) OR (C AND D AND E AND NF AND NG) OR (B AND ND AND NE AND NF AND NG C21 <= (B AND C AND G) OR (B AND ND AND E AND F AND G) OR (C AND ND AND NE AND F AND G) OR (C AND D AND E AND NF AND G) OR (B AND ND AND NE AND F AND NG) OR (B AND D AND E AND NF AND NG) OR (C AND D AND NE AND NF AND NG) OR (NB AND NC AND D AND NE AND NF AND G) OR (NB AND NC AND D AND E AND F AND NG) OR (NB AND NC AND ND AND E AND NF AND NG C14 <= (B AND ND AND E) OR (C AND ND AND NE) OR (B AND E AND F) OR (C AND NE AND F) OR (B AND E AND G) OR (NC AND ND AND E AND F) OR (C AND D AND E AND NF) OR (NC AND ND AND E AND G) OR (B AND ND AND F AND G) OR (NC AND E AND F AND G) OR (NB AND NC AND D AND NE AND NF) OR (NB AND D AND NE AND NF AND G C13 <= (B AND NC AND ND) OR (NB AND NC AND D AND E) OR (NB AND C AND ND AND NE) OR (NB AND NC AND D AND F) OR (C AND D AND E AND F C12 <= (C AND D) OR (C AND E) OR (B AND NC AND ND C11 <= (B AND C) OR (B AND D OK <= ((D OR E OR F) AND B AND C) OR A; END bdf_type; --------------------------------------------------------------------------- dec_seg.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY work; ENTITY dec_seg IS PORT ( d1 : IN STD_LOGIC; d2 : IN STD_LOGIC; d3 : IN STD_LOGIC; d4 : IN STD_LOGIC; ok : IN STD_LOGIC; a : OUT STD_LOGIC; b : OUT STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC; e : OUT STD_LOGIC; f : OUT STD_LOGIC; g : OUT STD_LOGIC END dec_seg; ARCHITECTURE bdf_type OF dec_seg IS Nd2 : STD_LOGIC; Nd3 : STD_LOGIC; 9

Nd4: STD_LOGIC; Nok : STD_LOGIC; BEGIN Nd2 <= NOT(d2 Nd3 <= NOT(d3 Nd4 <= NOT(d4 Nok <= NOT(ok a <= ((d3 AND d4) OR (d2 AND d3 AND Nd4) OR (d2 AND Nd3 AND d4) OR (Nd2 AND Nd4) OR d1) AND Nok; b <= ((Nd2 AND Nd3) OR (d3 AND d4) OR (Nd3 AND Nd4) OR (Nd2 AND Nd4)) AND Nok; c <= ((Nd2 AND Nd3) OR (d3 AND d4) OR (Nd3 AND Nd4) OR (d2 AND d3 AND Nd4) OR (d2 AND Nd3 AND d4)) AND Nok; d <= ((Nd2 AND d3) OR (d2 AND d3 AND Nd4) OR (d2 AND Nd3 AND d4) OR (Nd2 AND Nd4) OR d1) AND Nok; e <= ((d2 AND d3 AND Nd4) OR (Nd2 AND Nd4)) AND Nok; f <= ((Nd3 AND Nd4) OR (d2 AND d3 AND Nd4) OR (d2 AND Nd3 AND d4) OR d1) AND Nok; g <= ((d2 AND Nd4) OR (Nd2 AND d3) OR (d2 AND Nd3 AND d4) OR d1) OR ok; END bdf_type; --------------------------------------------------------------------------- okt_seg.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY work; ENTITY okt_seg IS PORT ( o1 : IN STD_LOGIC; o2 : IN STD_LOGIC; o3 : IN STD_LOGIC; ok : IN STD_LOGIC; a : OUT STD_LOGIC; b : OUT STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC; e : OUT STD_LOGIC; f : OUT STD_LOGIC; g : OUT STD_LOGIC END okt_seg; ARCHITECTURE bdf_type OF okt_seg IS No1 : STD_LOGIC; No2 : STD_LOGIC; No3 : STD_LOGIC; Nok: STD_LOGIC; BEGIN No1 <= NOT(o1 10

No2 <= NOT(o2 No3 <= NOT(o3 Nok <= NOT(ok a <= ((o2 AND o3) OR (o1 AND No2 AND o3) OR (o1 AND o2 AND No3) OR (No1 AND No3)) AND Nok; b <= ((No1 AND No2) OR (o2 AND o3) OR (No2 AND No3) OR (No1 AND No3)) AND Nok; c <= ((No1 AND No2) OR (o2 AND o3) OR (No2 AND No3) OR (o1 AND No2 AND o3) OR (o1 AND o2 AND No3)) AND Nok; d <= ((No1 AND o2) OR (o1 AND No2 AND o3) OR (o1 AND o2 AND No3) OR (No1 AND No3)) AND Nok; e <= ((o1 AND o2 AND No3) OR (No1 AND No3)) AND Nok; f <= ((No2 AND No3) OR (o1 AND No2 AND o3) OR (o1 AND o2 AND No3)) AND Nok; g <= ((o1 AND No3) OR (No1 AND o2) OR (o1 AND No2 AND o3)) OR ok; END bdf_type; --------------------------------------------------------------------------- hex_seg.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY work; ENTITY hex_seg IS PORT ( h1 : IN STD_LOGIC; h2 : IN STD_LOGIC; h3 : IN STD_LOGIC; h4 : IN STD_LOGIC; a : OUT STD_LOGIC; b : OUT STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC; e : OUT STD_LOGIC; f : OUT STD_LOGIC; g : OUT STD_LOGIC END hex_seg; ARCHITECTURE bdf_type OF hex_seg IS Nh1 : STD_LOGIC; Nh2 : STD_LOGIC; Nh3 : STD_LOGIC; Nh4: STD_LOGIC; BEGIN Nh1 <= NOT(h1 Nh2 <= NOT(h2 Nh3 <= NOT(h3 Nh4 <= NOT(h4 a <= (Nh1 AND h3 AND h4) OR (Nh1 AND h3 AND Nh4) OR (Nh1 AND h2 AND Nh3 AND h4) OR (h1 AND h2 AND h3) OR (Nh2 AND Nh3 AND Nh4) OR (h1 AND h2 AND Nh4) OR (h1 AND Nh2 AND Nh3) OR (h1 AND Nh2 AND Nh4 11

b <= (Nh1 AND Nh3 AND Nh4) OR (Nh1 AND h3 AND h4) OR (Nh2 AND Nh3) OR (Nh1 AND Nh2 AND h3) OR (h1 AND h2 AND Nh3 AND h4) OR (h1 AND Nh2 AND Nh4 c <= (Nh1 AND h3 AND h4) OR (Nh2 AND Nh3) OR (Nh1 AND h2 AND Nh4) OR (h1 AND h2 AND Nh3 AND h4) OR (h1 AND Nh2 AND h3 AND h4) OR (Nh1 AND h2 AND Nh3 AND h4) OR (h1 AND Nh2 AND Nh4 d <= (Nh1 AND Nh2 AND h3) OR (Nh1 AND h3 AND Nh4) OR (h1 AND h2 AND Nh3 AND h4) OR (h1 AND Nh2 AND h3 AND h4) OR (Nh1 AND h2 AND Nh3 AND h4) OR (Nh2 AND Nh3 AND Nh4) OR (h1 AND h2 AND Nh4) OR (h1 AND Nh2 AND Nh3 e <= (Nh1 AND h3 AND Nh4) OR (h1 AND h2 AND Nh3 AND h4) OR (h1 AND Nh2 AND h3 AND h4) OR (h1 AND h2 AND h3) OR (Nh2 AND Nh3 AND Nh4) OR (h1 AND h2 AND Nh4) OR (h1 AND Nh2 AND Nh4 f <= (Nh1 AND h2 AND Nh4) OR (h1 AND Nh2 AND h3 AND h4) OR (Nh1 AND h2 AND Nh3 AND h4) OR (h1 AND h2 AND h3) OR (Nh2 AND Nh3 AND Nh4) OR (h1 AND h2 AND Nh4) OR (h1 AND Nh2 AND Nh3) OR (h1 AND Nh2 AND Nh4 g <= (Nh1 AND Nh2 AND h3) OR (Nh1 AND h2 AND Nh4) OR (h1 AND h2 AND Nh3 AND h4) OR (h1 AND Nh2 AND h3 AND h4) OR (Nh1 AND h2 AND Nh3 AND h4) OR (h1 AND h2 AND h3) OR (h1 AND Nh2 AND Nh3) OR (h1 AND Nh2 AND Nh4 END bdf_type; --------------------------------------------------------------------------- wybor.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY work; ENTITY wybor IS PORT ( d : IN STD_LOGIC; o : IN STD_LOGIC; PBo : IN STD_LOGIC; PBd : IN STD_LOGIC; h : IN STD_LOGIC; seg : OUT STD_LOGIC END wybor; ARCHITECTURE bdf_type OF wybor IS NPBo : STD_LOGIC; NPBd : STD_LOGIC; BEGIN NPBo <= NOT(PBo NPBd <= NOT(PBd seg <= (NPBo AND PBd AND o) OR (NPBd AND PBo AND d) OR (PBo AND PBd AND h END bdf_type; --------------------------------------------------------------------------- 12

tc.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY work; ENTITY TC IS PORT ( A : IN STD_LOGIC; B : IN STD_LOGIC; C : IN STD_LOGIC; D : IN STD_LOGIC; E : IN STD_LOGIC; F : IN STD_LOGIC; G : IN STD_LOGIC; H : IN STD_LOGIC; oct : IN STD_LOGIC; dec : IN STD_LOGIC; a1 : OUT STD_LOGIC; b1 : OUT STD_LOGIC; c1 : OUT STD_LOGIC; d1 : OUT STD_LOGIC; e1 : OUT STD_LOGIC; f1 : OUT STD_LOGIC; g1 : OUT STD_LOGIC; a2 : OUT STD_LOGIC; b2 : OUT STD_LOGIC; c2 : OUT STD_LOGIC; d2 : OUT STD_LOGIC; e2 : OUT STD_LOGIC; f2 : OUT STD_LOGIC; g2 : OUT STD_LOGIC END TC; ARCHITECTURE bdf_type OF TC IS COMPONENT konwersja PORT(A : IN STD_LOGIC; B : IN STD_LOGIC; C : IN STD_LOGIC; D : IN STD_LOGIC; E : IN STD_LOGIC; F : IN STD_LOGIC; G : IN STD_LOGIC; H : IN STD_LOGIC; c24 : OUT STD_LOGIC; c23 : OUT STD_LOGIC; c22 : OUT STD_LOGIC; c21 : OUT STD_LOGIC; c14 : OUT STD_LOGIC; c13 : OUT STD_LOGIC; c12 : OUT STD_LOGIC; c11 : OUT STD_LOGIC; ok : OUT STD_LOGIC END COMPONENT; COMPONENT dec_seg 13

PORT(d1 : IN STD_LOGIC; d2 : IN STD_LOGIC; d3 : IN STD_LOGIC; d4 : IN STD_LOGIC; ok : IN STD_LOGIC; a : OUT STD_LOGIC; b : OUT STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC; e : OUT STD_LOGIC; f : OUT STD_LOGIC; g : OUT STD_LOGIC END COMPONENT; COMPONENT okt_seg PORT(o1 : IN STD_LOGIC; o2 : IN STD_LOGIC; o3 : IN STD_LOGIC; ok : IN STD_LOGIC; a : OUT STD_LOGIC; b : OUT STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC; e : OUT STD_LOGIC; f : OUT STD_LOGIC; g : OUT STD_LOGIC END COMPONENT; COMPONENT hex_seg PORT(h1 : IN STD_LOGIC; h2 : IN STD_LOGIC; h3 : IN STD_LOGIC; h4 : IN STD_LOGIC; a : OUT STD_LOGIC; b : OUT STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC; e : OUT STD_LOGIC; f : OUT STD_LOGIC; g : OUT STD_LOGIC END COMPONENT; COMPONENT wybor PORT(PBo : IN STD_LOGIC; PBd : IN STD_LOGIC; o : IN STD_LOGIC; d : IN STD_LOGIC; h : IN STD_LOGIC; seg : OUT STD_LOGIC END COMPONENT; NA : STD_LOGIC; NB : STD_LOGIC; NC : STD_LOGIC; ND : STD_LOGIC; NE : STD_LOGIC; 14

NF : STD_LOGIC; NG : STD_LOGIC; NH : STD_LOGIC; okt_ok : STD_LOGIC; d1a : STD_LOGIC; d1b : STD_LOGIC; d1c : STD_LOGIC; d1d : STD_LOGIC; d1e : STD_LOGIC; d1f : STD_LOGIC; d1g : STD_LOGIC; d2a : STD_LOGIC; d2b : STD_LOGIC; d2c : STD_LOGIC; d2d : STD_LOGIC; d2e : STD_LOGIC; d2f : STD_LOGIC; d2g : STD_LOGIC; o1a : STD_LOGIC; o1b : STD_LOGIC; o1c : STD_LOGIC; o1d : STD_LOGIC; o1e : STD_LOGIC; o1f : STD_LOGIC; o1g : STD_LOGIC; o2a : STD_LOGIC; o2b : STD_LOGIC; o2c : STD_LOGIC; o2d : STD_LOGIC; o2e : STD_LOGIC; o2f : STD_LOGIC; o2g : STD_LOGIC; h1a : STD_LOGIC; h1b : STD_LOGIC; h1c : STD_LOGIC; h1d : STD_LOGIC; h1e : STD_LOGIC; h1f : STD_LOGIC; h1g : STD_LOGIC; h2a : STD_LOGIC; h2b : STD_LOGIC; h2c : STD_LOGIC; h2d : STD_LOGIC; h2e : STD_LOGIC; h2f : STD_LOGIC; h2g : STD_LOGIC; dec_ok : STD_LOGIC; c11 : STD_LOGIC; c12 : STD_LOGIC; c13 : STD_LOGIC; c14 : STD_LOGIC; c21 : STD_LOGIC; c22 : STD_LOGIC; c23 : STD_LOGIC; c24 : STD_LOGIC; a1 : STD_LOGIC; b1 : STD_LOGIC; c1 : STD_LOGIC; d1 : STD_LOGIC; e1 : STD_LOGIC; f1 : STD_LOGIC; 15

g1 : STD_LOGIC; a2 : STD_LOGIC; b2 : STD_LOGIC; c2 : STD_LOGIC; d2 : STD_LOGIC; e2 : STD_LOGIC; f2 : STD_LOGIC; g2 : STD_LOGIC; BEGIN NA <= NOT(A NB <= NOT(B NC <= NOT(C ND <= NOT(D NE <= NOT(E NF <= NOT(F NG <= NOT(G NH <= NOT(H b2v_inst : konwersja PORT MAP(A => NA, B => NB, C => NC, D => ND, E => NE, F => NF, G => NG, H => NH, c24 => c24, c23 => c23, c22 => c22, c21 => c21, c14 => c14, c13 => c13, c12 => c12, c11 => c11, ok => dec_ok b2v_inst8 : dec_seg PORT MAP(d1 => c11, d2 => c12, d3 => c13, d4 => c14, ok => dec_ok, a => d1a, b => d1b, c => d1c, d => d1d, e => d1e, f => d1f, g => d1g b2v_inst9 : dec_seg PORT MAP(d1 => c21, d2 => c22, d3 => c23, d4 => c24, 16

ok => dec_ok, a => d2a, b => d2b, c => d2c, d => d2d, e => d2e, f => d2f, g => d2g okt_ok <= NA OR NB; b2v_inst10 : okt_seg PORT MAP(o1 => NC, o2 => ND, o3 => NE, ok => okt_ok, a => o1a, b => o1b, c => o1c, d => o1d, e => o1e, f => o1f, g => o1g b2v_inst11 : okt_seg PORT MAP(o1 => NF, o2 => NG, o3 => NH, ok => okt_ok, a => o2a, b => o2b, c => o2c, d => o2d, e => o2e, f => o2f, g => o2g b2v_inst13 : hex_seg PORT MAP(h1 => NA, h2 => NB, h3 => NC, h4 => ND, a => h1a, b => h1b, c => h1c, d => h1d, e => h1e, f => h1f, g => h1g b2v_inst14 : hex_seg PORT MAP(h1 => NE, h2 => NF, h3 => NG, h4 => NH, a => h2a, 17

b => h2b, c => h2c, d => h2d, e => h2e, f => h2f, g => h2g b2v_inst15 : wybor o => o1a, d => d1a, h => h1a, seg => a1 b2v_inst16 : wybor o => o1b, d => d1b, h => h1b, seg => b1 b2v_inst17 : wybor o => o1c, d => d1c, h => h1c, seg => c1 b2v_inst18 : wybor o => o1d, d => d1d, h => h1d, seg => d1 b2v_inst19 : wybor o => o1e, d => d1e, h => h1e, seg => e1 b2v_inst20 : wybor o => o1f, d => d1f, h => h1f, seg => f1 18

b2v_inst21 : wybor o => o1g, d => d1g, h => h1g, seg => g1 b2v_inst22 : wybor o => o2a, d => d2a, h => h2a, seg => a2 b2v_inst23 : wybor o => o2b, d => d2b, h => h2b, seg => b2 b2v_inst24 : wybor o => o2c, d => d2c, h => h2c, seg => c2 b2v_inst25 : wybor o => o2d, d => d2d, h => h2d, seg => d2 b2v_inst26 : wybor o => o2e, d => d2e, h => h2e, seg => e2 b2v_inst27 : wybor o => o2f, d => d2f, h => h2f, 19

seg => f2 b2v_inst28 : wybor o => o2g, d => d2g, h => h2g, seg => g2 a1 <= NOT(a1 b1 <= NOT(b1 c1 <= NOT(c1 d1 <= NOT(d1 e1 <= NOT(e1 f1 <= NOT(f1 g1 <= NOT(g1 a2 <= NOT(a2 b2 <= NOT(b2 c2 <= NOT(c2 d2 <= NOT(d2 e2 <= NOT(e2 f2 <= NOT(f2 g2 <= NOT(g2 END bdf_type; 20