ISE WebPack 1. ISE WebPack i VHDL Celem ćwiczenia jest szybkie

Transkrypt

ISE WebPack 1. ISE WebPack i VHDL Celem ćwiczenia jest szybkie
ISE WebPack
1. ISE WebPack i VHDL
Celem ćwiczenia jest szybkie zaznajomienie się ze środowiskiem projektowym Xilinx ISE Design
Suite 10.1 oraz językiem opisu sprzętu VHDL.
Tworzenie projektu
Uruchom program Project Navigator z grupy Xilinx ISE Design Suite 10.1
W menu File wybierz New Project...
Wpisz nazwę projektu w Project name. Top-level source type wybierz HDL.
Następnie kliknij Next.
1
ISE WebPack
Uzupełnij okno dialogowe tak, aby wyglądało jak poniżej, najważniejsze parametry to:
XC3S500E, FG320, -5. Gdzie XC3S500E określa programowany układ, natomiast FG320 określa
obudowę tego układu.
2
ISE WebPack
Klikaj Next dopóki nie pojawi się okno takie jak poniżej, gdzie należy kliknąć Finish.
2. Język opisu sprzętu VHDL.
Podczas laboratoriów należy się posługiwać językiem VHDL, który służy do opisu sprzętu.
Poniżej opisany jest układ logiczny w języku VHDL oraz jego odpowiednik w postaci symbolu
logicznego.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
3
ISE WebPack
--use UNISIM.VComponents.all;
entity sum is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
y : out STD_LOGIC);
end sum;
architecture Behavioral of sum is
begin
y <= a or b;
end Behavioral;
Krótki komentarz do wyżej zamieszczonego kodu.
Na samym początku deklarowane jest użycie bibliotek standardu, w których zdefiniowane są
podstawowe typy zmiennych oraz działania na nich wykonane.
entity sum – określa nazwę i deklarację modułu, w tym przypadku jest to sumator, więc wpisana
została skrócona nazwa sum
Port – definiuje jakie sygnały są sygnałami wchodzącymi do układu(in), a jakie
wychodzącymi(out), nazwy przed : to po prostu nazwy przypisane danym sygnałom
architecture – podaje rodzaj opisu jaki został wykorzystany czyli Behavioral dla układu sum, dalej
następuje definicja tego układ, między begin, a end Behavioral.
y<= a or b, oznacza wykonaj działanie a or b, czyli sumę logiczną dwóch bitów i prześlij jej wynik
do sygnału y.
Innymi podstawowymi operacjami na bitach jakie można użyć w kodzie VHDL są:
not – czyli negacja sposób użycia:
y <= not a;
and – mnożenie logiczne
y <= a and b;
xor – mnożenie logiczne
y <= a xor b;
4
ISE WebPack
3. Budowa sumatora dwubitowego.
Aby zbudować tak opisany układ, który by wykonał sumę logiczną kliknij w menu Project opcję
New Source...
Wybierz VHDL Module, w miejscu File name wpisz nazwę swojego układu.
5
ISE WebPack
Następnie w kolumnie Port name wpisz nazwy sygnałów wejściowych i wyjściowych użytych w
układzie logicznym, w kolumnie Direction wybierz rodzaj sygnału, wejściowy(in) lub
wyjściowy(out). Pozostałe opcje określają czy sygnał jest szyną danych oraz wyznaczają wielkość
szyny. Po wypełnieniu tabeli kliknij Next.
6
ISE WebPack
W następnym menu kliknij Finish, aby wygenerować szablon jednostki logicznej.
Zawartość wygenerowanego pliku powinna przypominać kod VHDL pokazany w punkcie 3 z tą
różnicą, że brak w nim wpisu y <= a or b, między begin, a end Behavioral należy uzupełnić opis
sprzętu o ten wpis. Dzięki temu uzyskano w pełni funkcjonalny sumator dwubitowy.
7
ISE WebPack
Aby sprawdzić poprawność składniową opisanego kodu w okienku Processes rozwiń opcję
Synthesize – XST i kliknij dwukrotnie Check Syntax.
8
ISE WebPack
4. Symulacja
Aby sprawdzić poprawność zaprojektowanego układu należy przeprowadzić symulację tego układu.
Środowisko ISE WebPack ma wbudowany symulator. Przed przystąpieniem do symulacji należy
zbudować tzw. Testbench, który określi wymuszenia testujące.
Aby zbudować plik testujący należy w menu Project wybrać New Source...:
W oknie wybrać VHDL Test Bench i wpisać nazwę pliku testującego w File name.
W kolejnym oknie należy wybrać układ dla którego tworzony będzie plik testujący.
Dalej kliknąć Next, następnie Finish.
9
ISE WebPack
Wynikiem tych działań będzie poniższy kod VHDL.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;
ENTITY TestBench IS
END TestBench;
ARCHITECTURE behavior OF TestBench IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT sum
PORT(
a : IN std_logic;
b : IN std_logic;
y : OUT std_logic
);
END COMPONENT;
--Inputs
signal a : std_logic := '0';
signal b : std_logic := '0';
--Outputs
signal y : std_logic;
BEGIN
10
ISE WebPack
-- Instantiate the Unit Under Test (UUT)
uut: sum PORT MAP (
a => a,
b => b,
y => y
);
-- No clocks detected in port list. Replace <clock> below with
-- appropriate port name
constant <clock>_period := 1ns;
<clock>_process :process
begin
<clock> <= '0';
wait for <clock>_period/2;
<clock> <= '1';
wait for <clock>_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100ms.
wait for 100ms;
wait for <clock>_period*10;
-- insert stimulus here
wait;
11
ISE WebPack
end process;
END;
Wygenerowany plik zawiera nadmiarowe informacje, które z punktu widzenia tego przykładu są
bezużyteczne. Ponadto uniemożliwi to działanie symulacji, bo symulator będzie generował błędy.
Aby poprawić plik należy usunąć linijki zawierające:
constant <clock>_period := 1ns;
<clock>_process :process
begin
<clock> <= '0';
wait for <clock>_period/2;
<clock> <= '1';
wait for <clock>_period/2;
end process;
Oraz
wait for <clock>_period*10;
12
ISE WebPack
Teraz należy zadać sygnały wymuszające potrzebne do przeprowadzenia testu.
Sygnały testujące zostaną nadane zgodnie z tabelą prawdziwości dla dwubitowego działania
logicznego or, czyli:
Wejścia Wyjście
a
b
y
0
0
0
0
1
1
1
0
1
1 1
1
Aby zadać sygnały testujące wg powyżej tabelki proces stim_proc należy uzupełnić w następujący
sposób:
stim_proc: process
begin
-- hold reset state for 100ms.
wait for 100ms;
a <= '0';
b <= '0';
wait for 100ms;
a <= '1';
b <= '0';
wait for 100ms;
a <= '0';
b <= '1';
wait for 100ms;
a <= '1';
13
ISE WebPack
b <= '1';
wait for 100ms;
-- insert stimulus here
wait;
end process;
Działanie tego procesu jest proste. Zmienia on wartości przypisane do danych sygnałów co 100 ms.
a<='0' oznacza przypisanie do sygnału a wartości bitowej '0'. wait for 100ms oznacza czekanie i
zarazem podtrzymanie sygnału przez 100 ms.
14
ISE WebPack
Konfigurowanie i uruchamianie symulacji.
W okienku Sources wybierz z Source for opcję Behavioral Simulation.
Następnie z okienka Processes rozwiń Xilinx ISE Simulator prawym przyciskiem wybierz
Simulate Behavioral Model i wybierz Properties....
Tu ustaw Simulation Time na 600 ms, tak jak jest to pokazane poniżej.
15
ISE WebPack
Kliknij dwukrotnie lewym przyciskiem myszy na Simulate Behavioral Model.
16
ISE WebPack
Po chwili powinno pokazać się okno podobne do niżej przedstawionego, zawierające wynik
symulacji.
Jak widać na przebiegu sygnałów pokazane są sygnały wymuszające a i b, widać, że a i b na
początku są bitowymi zerami, następnie a staje się bitową jedynką, b pozostaje bez zmian... Poniżej
widać sygnał y będący odpowiedzią układu na daną parę wymuszeń, dla a=0 i b=0 y=0, natomiast
dla a=1 i b=0 odpowiedź y=1, zgodnie z tabelą prawdziwości.
17
ISE WebPack
5. Zadanie
Na podstawie powyższych informacji i zebranego doświadczenia przedstaw poniższy schemat
układu logicznego w postaci języka opisu sprzętu VHDL i przeprowadź jego symulację.
Polecane kursy w internecie i literatura:
http://home.elka.pw.edu.pl/~pkaleta/vhdl/kurs/index.html
Józef Kalisz, Podstawy elektroniki cyfrowej
18

Podobne dokumenty