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

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

Sposoby projektowania systemów w cyfrowych

Systemy Czasu Rzeczywistego FPGA

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

Projekt prostego procesora

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

Programowalne układy logiczne

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

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

Specyfika projektowania Mariusz Rawski

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Wyświetlacz siedmiosegmentowy

Projektowanie Urządzeń Cyfrowych

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

Projektowanie hierarchiczne Mariusz Rawski

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Systemy Czasu Rzeczywistego FPGA

Języki opisu sprzętu VHDL Mariusz Rawski

Krótkie wprowadzenie do ModelSim i Quartus2

Projektowanie automatów z użyciem VHDL

PUCY Kolos 2: Reloaded

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Systemy Czasu Rzeczywistego FPGA

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

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

Układy kombinacyjne 1

Elementy języka VHDL. obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne. PUE-w3 1

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

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

DOKUMENTACJA PROJEKTU

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

Projektowanie w VHDL

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

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

Systemy Czasu Rzeczywistego FPGA

Układy reprogramowalne i SoC Testbenches. Symulacja sterowana zdarzeniami.

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005

Realizacja logiki kombinacyjnej Mariusz Rawski

MMfpga01. MMfpga11. Instrukcja konfiguracji środowiska, przykładowy projekt oraz programowanie układu

Synteza strukturalna

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Układy Cyfrowe laboratorium

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

VHLD Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL)

Programowalne układy logiczne

Programowalne układy logiczne

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

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

Programowanie Układów Logicznych kod kursu: ETD6203. Komunikacja z układami cyfrowymi W dr inż. Daniel Kopiec

Elementy języka VHDL

SPIS TREŚCI. 2. Arytmetyka rozproszona Symulacja układu programowalnego Realizacja algorytmu cyfrowego filtrowania

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska,

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

Realizacja algorytmu wyznaczania wyrazów ciągu w języku VHDL z zastosowaniem podziału projektu na moduły: FSM i Data Path.

XC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type

Język VHDL podstawy Mariusz Rawski

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

Metoda Newtona przyjmuje następujące założenia dla funkcji :

Przykład realizacji ćwiczenia nr 8.

Podstawy techniki cyfrowej zima 2017 Rafał Walkowiak Synteza strukturalna wyższego poziomu

Układy reprogramowalne i SoC Implementacja w układach FPGA

Modelowanie logiki rewersyjnej w języku VHDL

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

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

VHDL. Zebrał i opracował R.Walkowiak PTC wykład 2013/2014

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Ćwiczenie 27 Temat: Układy komparatorów oraz układy sumujące i odejmujące i układy sumatorów połówkowych i pełnych. Cel ćwiczenia

Quartus. Rafał Walkowiak IIn PP Wer

Programowanie Układów Logicznych kod kursu: ETD6203. VHDL, ISE WebPACK, Plan Ahead, Impact W

Temat 7. Dekodery, enkodery

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

Wprowadzenie do laboratorium komputerowego część I

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

Projektowanie układów kryptograficznych Mariusz Rawski

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

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

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Ćwiczenie Digital Works 003 Układy sekwencyjne i kombinacyjne

CZ1. Optymalizacja funkcji przełączających

Projektowanie hierarchiczne Mariusz Rawski

WYTYCZNE I ZALECENIA DO PRZYGOTOWANIA PRAC DYPLOMOWYCH INSTYTUTU INFORMATYKI I AUTOMATYKI KIERUNKU INFORMATYKA

Projektowanie systemów cyfrowych w językach opisu sprzętu. Studium Zaoczne IV rok kierunek Elektronika i Telekomunikacja. Wykład 2

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

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.

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

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Zapis liczb binarnych ze znakiem

Technika Cyfrowa Wprowadzenie do laboratorium komputerowego

PAMIĘĆ RAM. Rysunek 1. Blokowy schemat pamięci

Architektura systemów komputerowych. Ścieżka danych

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

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

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

Realizacja stopera na układzie Spartan-II przy uŝyciu pakietu Xilinx ISE

Cyfrowe przetwarzanie sygnałów Mariusz Rawski

Transkrypt:

Technika cyfrowa projekt: Sumator 4 bitowy równoległy Autorzy: Paweł Bara Robert Boczek Przebieg prac projektowych: Zadany układ dostaje na wejściu dwie czterobitowe liczby naturalne, sumuje je, po czym co najwyżej pięciobitowy wynik wyprowadza na siedmiosegmentowy wyświetlacz. Całość oparta jest o półsumator i trzy sumatory pełne: a) półsumator: A B S P 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 A i B dwa bity S wynik (A xor B) P bit przeniesienia (A and B) W ten sposób otrzymujemy najmłodszy bit wyniku i pierwszy bit przeniesienia. b) sumator pełny: A i B i P i 1 S i P i 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

i = 2, 3, 4 Wejście: A i i ty bit liczby a B i i ty bit liczby b P i 1 poprzedni bit przeniesienia Wyjście S i i ty bit sumy (A i xor B i xor P i 1 ) P i kolejny bit przeniesienia (A i * B i + (A i xor B i ) * P i 1 ) Cała operacja przebiega następująco: P 4 P 3 P 2 P 1 A 4 A 3 A 2 A 1 + B 4 B 3 B 2 B 1 S 5 S 4 S 3 S 2 S 1 Korzystając z narzędzia Quartus przenosimy złożony układ na płytkę UP2. Osiem przełączników FLEX_SWITCH reprezentuje bity liczb wejściowych. Wynik przekazujemy na wyświetlacz siedmiosegmentowy FLEX_DIGIT zaprogramowany odpowiednią funkcją w języku VHDL przekształcającą cztery pierwsze bity wyniku na czytelną postać szesnastkową. Najstarszy bit wyniku reprezentujemy kropką dziesiętną, oznaczającą zwiększenie wyświetlanej liczby o 16.

Rys. 1. Schemat blokowy w Multisimie. Rys. 2. Schemat bloku w Quartusie.

W programie Quartus wykonaliśmy dwie wersje układu jedną w całości w języku VHDL, drugą z wykorzystaniem bloczka I/O, kodu VHDL i zestawu bramek. Kod wyświetlający liczby szesnastkowe na wyświetlaczu: ARCHITECTURE mojbolok_architecture OF mojbolok IS SIGNAL LED: std_logic_vector(6 downto 0); BEGIN process(c1,c2,c3,c4) if (not c1 and not c2 and not c3 and c4)='1' then LED <= "1111001"; 1 elsif (not c1 and not c2 and c3 and not c4)='1' then LED <= "0100100"; 2 elsif ( not c1 and not c2 and c3 and c4 )='1' then 3 LED <= "0110000"; 3 elsif ( not c1 and c2 and not c3 and not c4 )='1' then 4 LED <= "0011001"; 4 elsif ( not c1 and c2 and not c3 and c4 )='1' then 5 LED <= "0010010"; 5 elsif ( not c1 and c2 and c3 and not c4 )='1' then 6 LED <= "0000010"; 6 elsif ( not c1 and c2 and c3 and c4 )='1' then 7 LED <= "1111000"; 7 elsif ( c1 and not c2 and not c3 and not c4 )='1' then 8 LED <= "0000000"; 8 elsif ( c1 and not c2 and not c3 and c4 )='1' then 9 LED <= "0010000"; 9 elsif ( c1 and not c2 and c3 and not c4 )='1' then A LED <= "0001000"; A elsif ( c1 and not c2 and c3 and c4 )='1' then b LED <= "0000011"; b elsif ( c1 and c2 and not c3 and not c4 )='1' then C LED <= "1000110"; C elsif ( c1 and c2 and not c3 and c4 )='1' then d LED <= "0100001"; d elsif ( c1 and c2 and c3 and not c4 )='1' then E LED <= "0000110"; E elsif ( c1 and c2 and c3 and c4 )='1' then F LED <= "0001110"; F else 0 LED <= "1000000"; end if; process (LED)

a<=led(0); b<=led(1); c<=led(2); d<=led(3); e<=led(4); f<=led(5); g<=led(6); END mojbolok_architecture; Wersja napisana wyłącznie w języku VHDL ma postać: LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY robercik IS PORT( a1, a2, a3, a4, b1, b2, b3, b4 : IN STD_LOGIC; a,b,c,d,e,f,g, p : OUT STD_LOGIC ); END robercik; ARCHITECTURE sumator of robercik IS signal c1, c2, c3, c4, c5: STD_LOGIC; signal tmp: STD_LOGIC_VECTOR ( 2 downto 0); signal LED : STD_LOGIC_VECTOR ( 6 downto 0); BEGIN process (tmp) tmp(0) <= ( not a4 and not b4 ); tmp(1) <= (((not a3 xor not b3) and (tmp(0))) or (not a3 and not b3)); tmp(2) <= (((not a2 xor not b2) and (tmp(1))) or (not a2 and not b2)); bit przeniesienia p <= not (((not a1 xor not b1) and (tmp(2))) or (not a1 and not b1)); c4 <= (not b4 xor not a4); c1 <= ((not a1 xor not b1) xor tmp(2)); c2 <= ((not a2 xor not b2) xor tmp(1)); c3 <= ((not a3 xor not b3) xor tmp(0));

process(c1,c2,c3,c4) if (not c1 and not c2 and not c3 and c4)='1' then LED <= "1111001"; 1 elsif (not c1 and not c2 and c3 and not c4)='1' then LED <= "0100100"; 2 elsif ( not c1 and not c2 and c3 and c4 )='1' then 3 LED <= "0110000"; 3 elsif ( not c1 and c2 and not c3 and not c4 )='1' then 4 LED <= "0011001"; 4 elsif ( not c1 and c2 and not c3 and c4 )='1' then 5 LED <= "0010010"; 5 elsif ( not c1 and c2 and c3 and not c4 )='1' then 6 LED <= "0000010"; 6 elsif ( not c1 and c2 and c3 and c4 )='1' then 7 LED <= "1111000"; 7 elsif ( c1 and not c2 and not c3 and not c4 )='1' then 8 LED <= "0000000"; 8 elsif ( c1 and not c2 and not c3 and c4 )='1' then 9 LED <= "0010000"; 9 elsif ( c1 and not c2 and c3 and not c4 )='1' then A LED <= "0001000"; A elsif ( c1 and not c2 and c3 and c4 )='1' then b LED <= "0000011"; b elsif ( c1 and c2 and not c3 and not c4 )='1' then C LED <= "1000110"; C elsif ( c1 and c2 and not c3 and c4 )='1' then d LED <= "0100001"; d elsif ( c1 and c2 and c3 and not c4 )='1' then E LED <= "0000110"; E elsif ( c1 and c2 and c3 and c4 )='1' then F LED <= "0001110"; F else 0 LED <= "1000000"; end if; process (LED) a<=led(0); b<=led(1); c<=led(2); d<=led(3); e<=led(4); f<=led(5); g<=led(6);

END sumator; Porty a, b, c, d, e, f i g to odpowiednie segmenty wyświetlacza FLEX_DIGIT. Port p to z kolei bit przeniesienia w naszym układzie jest nią kropka dziesiętna wyświetlacza. Po odpowiednim przypisaniu portów za pomocą Assignment Editora układ jest gotowy. Wystarczy skompilować kod i za pomocą Programmera zaprogramować płytkę.