to get the file

Transkrypt

to get the file
Projektowanie Urządzeń Cyfrowych
Laboratorium 4
Projektowanie w języku VHDL
Opracował:
mgr inż. Leszek Ciopiński
Wstęp:
Przykładowe moduły napisane w języku VHDL (źródło: http://pl.wikibooks.org/wiki/VHDL/Przyk
%C5%82ady_kodu):
Bramka NAND:
Zawartość pliku opisującego dwuwejściową bramkę NAND:
library ieee;
use ieee.std_logic_1164.all;
entity nand2 is
port (
a,b : in std_logic;
c : out std_logic
);
end nand2;
architecture logic of nand2 is
begin
c <= not (a and b);
end logic;
Bramka XOR:
Zawartość pliku opisującego dwu wejściową bramkę XOR:
library ieee;
use ieee.std_logic_1164.all;
entity xor2 is
port (
a,b : in std_logic;
c : out std_logic
);
end xor2;
PUC
Laboratorium 4
1
architecture behavioral of nand2 is
begin
c <= not (a and b);
end behavioral;
architecture logic of xor2 is
component nand2
port (
a, b : in std_logic;
c : out std_logic
);
end component nand2;
signal wew1,wew2,wew3 : std_logic;
begin
bramka1
bramka2
bramka3
bramka4
:
:
:
:
nand2
nand2
nand2
nand2
port
port
port
port
map
map
map
map
(a=>a, b=>b, c=>wew1 );
(a=>a, b=>wew1, c=>wew2 );
(a=>wew1, b=>b, c=>wew3 );
(a=>wew2, b=>wew3, c=>c );
end logic;
W powyższym przykładzie należy zauważyć, że do połączenia zewnętrznego komponentu
z wewnętrznymi sygnałami opisywanego modułu niezbędne jest użycie „port map”.
Przerzutnik typu D:
Zawartość pliku opisującego gotowy do symulacji i syntezy logicznej, przerzutnik typu D z
Resetowaniem synchronicznym.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity dffr is
-- dołączenie standardowej biblioteki IEEE
-- dołączenie pakietu 'STD_LOGIC_1164' z
biblioteki IEEE
-- definiującego popularne stany logiczne
-- opis interfejsu przerzutnika (połączeń z
otoczeniem)
port(
CLK
RESET
DIN
DOUT
);
end dffr;
:
:
:
:
in
in
in
out
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC
-----
wejście
wejście
wejście
wyjście
zegarowe
kasowania
danych
danych
architecture behavior of dffr is
begin
-- opis wnętrza przerzutnika (w tym przypadku
-- jest to opis behawioralny)
dffar: process (CLK, RESET)
begin
if rising_edge(CLK) then
if RESET='1' then
DOUT <= '0';
else
DOUT <= DIN;
-- proces z listą czułości (sensitivity list)
end if;
PUC
-- wykrywanie aktywnego zbocza zegara
-- kasowanie stanem wysokim wejścia RESET
-- przypisanie stałej to sygnału wyjściowego
-- przypisanie stanu wejścia do sygnału
wyjściowego
Laboratorium 4
2
end if;
end process;
end behavior;
Przydatne funkcje i moduły
•
•
•
PUC
falling_edge() - jest przeciwieństwem rising_edge(), to znaczy, że zwraca
wartość true, jeśli wykryta została zmiana stanu sygnału podanego jako parametr tej
funkcji z wysokiego na niski
Instrukcja “case” służy do wprowadzania rozejścia na różne drogi. Instrukcje tą stosuje się
wyłącznie wewnątrz procesu.
case kod_instrukcji is
when x”00”
=> dodawanie;
when x”01” | x”10”
=> czekanie;
when others
=> nieznany_kod;
end case;
use IEEE.STD_LOGIC_UNSIGNED.all; - biblioteka, której dodanie powoduje, że
wszystkie sygnały w projektowanym module będą traktowane jako wartości
całkowitoliczbowe bez znaku. Umożliwia to używanie tych sygnałów zarówno w sposób
klasyczny (np. odwoływanie się do konkretnych bitów), jak i wykonywanie na nich działań
arytmetycznych (używamy ich wówczas tak samo jak zwykłych zmiennych, np.:
syg1 <= syg2 + syg3)
Laboratorium 4
3
Zadania:
Celem ćwiczenia jest praktyczne wykorzystanie informacji o języku VHDL przekazanych
w ramach wykładów:
1. Zaprojektuj, skompiluj i wykonaj symulację cyfrowego dzielnika częstotliwości na cztery.
Układ ten powinien na swoim wyjściu generować stan wysoki po czwartym impulsie
podanym na wejście układu. Stan wysoki na wyjściu powinien trwać tyle samo, co jeden
impuls na wejściu układu.
(4 punkty)
2. Zaprojektuj układ komparatora, który ma dwa wejścia 8-bitowe i jedno wyjście 3-bitowe.
Wejście A
Wejście B
Wyjście
większe
mniejsze
100
równe
równe
010
mniejsze
większe
001
(4 punkty)
3. Zaprojektuj plik czterech rejestrów 8-bitowych. Plik powinien mieć pięć wejść:
• 8-bitowe wejście danych
• 2-bitowe wejście adresu rejestru do zapisu
• 2-bitowe wejście adresowe do odczytu
• 1-bitowe wejście zapisu – sygnał '1' oznacza, że należy zapisać dane do rejestru z
wejścia danych, w przeciwnym razie nie należy do rejestrów nic zapisywać
Dodatkowo układ powinien posiadać jedno wyjście danych.
(4 punkty)
4. Napisz sumator czterobitowy o dwóch jednobitowych wejściach danych i jednym wejściu
zegarowym, przez które wprowadzane są kolejne bity wartości do zsumowania. Wynik
wystawiany jest na szynę czterobitową.
(4 punkty)
5. Wykonaj moduł, który będzie pobierał dwie wartości ośmiobitowe. Jeśli wartość podana na
pierwsze wejście będzie większa od wartości podanej na drugie wejście, to na wyjściu
układu podana zostanie różnica wartości wejściowych. W przeciwnym przypadku na
wyjście układu wystawiona zostanie suma wartości wejściowych.
(4 punkty)
6. Zaprojektuj bramkę AND5 korzystając z komponentu AND2. Układ powinien być napisany
w postaci strukturalnej oraz bez używania operatora and na sygnałach.
(5 punkty)
PUC
Laboratorium 4
4

Podobne dokumenty