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

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

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

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

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

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

Projektowanie hierarchiczne Mariusz Rawski

Projekt prostego procesora

Projektowanie w VHDL

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

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

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.

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

Specyfika projektowania Mariusz Rawski

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

Języki opisu sprzętu VHDL Mariusz Rawski

Systemy Czasu Rzeczywistego FPGA

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2014 Katedra Elektroniki AGH 2

Krótkie wprowadzenie do ModelSim i Quartus2

Projektowanie automatów z użyciem VHDL

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

Systemy Czasu Rzeczywistego FPGA

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Sposoby projektowania systemów w cyfrowych

PRZEMYSŁAW SOŁTAN

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

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

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

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

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

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

Technika Cyfrowa. Wprowadzenie do laboratorium komputerowego część II

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

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

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

Programowalne układy logiczne

Projektowanie Urządzeń Cyfrowych

Systemy Czasu Rzeczywistego FPGA

Układy Cyfrowe laboratorium

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

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

Programowanie strukturalne

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

PUCY Kolos 2: Reloaded

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Programowalne układy logiczne

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

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

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

Programowalne układy 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...

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

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Synteza strukturalna

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

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

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

Wstęp do programowania 2

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

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

Programowanie systemów czasu rzeczywistego laboratorium. Ćwiczenie 2. Temat zajęć: pakiety, zadania, synchronizacja czasowa, mechanizm spotkań

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

Kurs języka VHDL Very High (Speed Integrated Circuits) Description Language

Pod o z d ia i ł a r yn y k n u k u ( 2004 r.). źródło: Gartner 3

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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 UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016

Realizacja logiki kombinacyjnej Mariusz Rawski

Język VHDL podstawy Mariusz Rawski

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

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

DOKUMENTACJA PROJEKTU

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie. Technika Cyfrowa. Wprowadzenie do laboratorium komputerowego część II

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

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

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

Przykład realizacji ćwiczenia nr 8.

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

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Synteza logiczna. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

Ilość cyfr liczby naturalnej

Bloki anonimowe w PL/SQL

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH

Systemy Czasu Rzeczywistego FPGA

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

Wyświetlacz siedmiosegmentowy

Projektowanie hierarchiczne Mariusz Rawski

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

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Architektura systemów komputerowych. Ścieżka danych

Inżynieria Układów Programowalnych

PROJEKTOWANIE UKŁADÓW CYFROWYCH Z WYKORZYSTANIEM PAKIETU MULTISIM 2001 ORAZ JĘZYKA OPISU SPRZĘTU VHDL

Instrukcje sekwencyjne

Quartus. Rafał Walkowiak IIn PP Wer

Język programowania PASCAL

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

Pliki. Ze względu na typ zawartych w nich danych rozróżnia się trzy podstawowe rodzaje plików:

Transkrypt:

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje. 1. W języku VHDL zdefiniowano mechanizm odczytywania i zapisywania danych z i do plików. Pliki te mogą być wykorzystywane do gromadzenia danych testowych lub do zapamiętywania wyników procesu symulacji w celu ich dalszej analizy. Przydatne funkcje umieszczone są w pakiecie textio biblioteki STD i pakiecie std_logic_textio biblioteki IEEE. 2. Odczyt z pliku. Aby odczytać dane testowe z pliku naleŝy zdefiniować następujące obiekty: a) uchwyt do pliku (ang. handle): file in_file : text is in "plik_we.txt" co oznacza: obiekt file, in_file - uchwyt do wejściowego (is in) pliku tekstowego (:text) o nazwie plik_we.txt b) linię: variable in_line : line; - zmienna in_line typu line. Odczyt z pliku następuje dwuetapowo: etap1: odczyt z pliku do linii readline(in_file,in_line); etap2: odczyt z linii do std_logic_vector read(in_line, signal); lub hread(in_line, signal); róŝnica pomiędzy read, a hread polega na tym, Ŝe hread odczytuje dane w notacji hexadecymalnej (wartość 1 w tym przypadku zostanie zapisana do std_logic_vector jako 0001 a F jako 1111 ) 3. Zapis do pliku. Przy zapisywaniu do pliku podobnie jak przy odczycie naleŝy zdefiniować uchwyt do pliku (tym razem wyjściowego - is out) oraz linię (zmienną typu line). Zapis do pliku równieŝ odbywa się dwuetapowo, tzn: etap1: zapis do linii, write(out_line, signal); etap2: zapis z linii do pliku, writeline(out_file, out_line); W przypadku zapisu do pliku istnieje konieczność konwersji typów. Do plików tekstowych powinny być zapisywane wartości typu character lub string, a nie std_logic czy std_logic_vector. W tym celu przed zapisaniem wartości sygnałów do linii poddaje je się konwersji typów. Wygodnie jest zdefiniować funkcje konwersji: funkcja conv_to_char (konwersja std_logic => character) : FUNCTION conv_to_char (sig: std_logic) RETURN character IS CASE sig IS END CASE; WHEN '1' WHEN '0' WHEN 'Z' END conv_to_char; => RETURN '1'; => RETURN '0'; => RETURN 'Z'; WHEN others => RETURN 'X';

funkcja conv_to_string (konwersja std_logic_vector => string) : FUNCTION conv_to_string (inp: std_logic_vector; length: integer) RETURN string IS VARIABLE s : string(1 TO length); FOR i IN 0 TO (length 1) LOOP s(length-i) := conv_to_char(inp(i)); END LOOP; RETURN s; END conv_to_string; 4. Przykładowa realizacja w języku VHDL a) pliki.vhd: library IEEE; use IEEE.std_logic_1164.all; entity pliki is port( a,b : in std_logic_vector(7 downto 0); x,z : out std_logic_vector(7 downto 0); clk : in std_logic; reset ); end pliki; : in std_logic architecture pliki_a of pliki is end pliki_a; signal c,d : std_logic_vector(7 downto 0); rejestr: process (reset,clk) if (reset = '0') then c <= (others => '0'); d <= (others => '0'); x <= (others => '0'); z <= (others => '0'); elsif (clk'event and clk='1') then c(7 downto 4) <= a (3 downto 0); c(3 downto 0) <= a (7 downto 4); x <= c; z <= d; end if; end process rejestr; d(7 downto 4) <= b (3 downto 0); d(3 downto 0) <= b (7 downto 4);

b) pliki_tb.vhd: library std, ieee; use ieee.std_logic_1164.all; use std.textio.all; use ieee.std_logic_textio.all; entity tb_pliki is end tb_pliki; architecture tb_pliki_a of tb_pliki is component pliki is port( a,b : in std_logic_vector(7 downto 0); x,z : out std_logic_vector(7 downto 0); clk : in std_logic; reset : in std_logic ); end component; -------- definicja stałych czasowych --------- constant period : time := 20 ns; constant p10 : time := period/10; constant edge : time := period-p10; -------- definicja sygnałów --------- signal s_a, s_b, s_x, s_z : std_logic_vector(7 downto 0); signal s_clk signal s_reset signal strobe -------- mapowanie portów --------- lut: pliki port map( s_a, s_b, s_x, s_z, s_clk, s_reset); -------- taktowanie układu proces: zegar --------- zegar :process s_clk <= '0'; wait for period/2; s_clk <= '1'; wait for period/2; end process zegar; -------- wczytywnie danych z pliku proces: input --------- input: process file infile :text is in "wejscie"; variable line_in :line; variable bytes :std_logic_vector(15 downto 0); s_reset <= '0'; s_a <= "00000000"; s_b <= "00000000"; wait for 1.5 * period; s_reset <= '1'; wait for 1.5 * period; wait until (s_clk'event and s_clk='0'); wait for p10; while not (endfile(infile)) loop readline(infile, line_in); hread(line_in, bytes); s_a <= bytes(15 downto 8); s_b <= bytes(7 downto 0); wait for 3*period; end loop; assert false severity failure; end process input;

-------- opóźnienie sygnału strobującego --------- strobe <= TRANSPORT s_clk AFTER edge; -------- zapis danych do pliku proces: output -------- output: PROCESS (strobe) variable str :string(1 to 40); variable lineout :line; variable init_file :std_logic := '1'; file outfile :text is out "wyjscie"; -------- funkcja konwersji: std_logic => character -------- FUNCTION conv_to_char (sig: std_logic) RETURN character IS CASE sig IS WHEN '1' => return '1'; WHEN '0' => return '0'; WHEN 'Z' => return 'Z'; WHEN others => return 'X'; END CASE; END conv_to_char; -------- funkcja konwersji: std_logic_vector => string -------- FUNCTION conv_to_string (inp: std_logic_vector; length: integer) RETURN string IS VARIABLE s : string(1 TO length); FOR i IN 0 TO (length-1) LOOP s(length-i) := conv_to_char(inp(i)); END LOOP; RETURN s; END conv_to_string; ------------------------------------- -------- nagłówek pliku wyjściowego (podział kolumn) -------- IF init_file = '1' THEN str:="clk "; str:=" reset "; str:=" a "; str:=" b "; str:=" x "; str:=" z "; str:=" "; init_file := '0'; END IF; -------- zapis danych do pliku wyjsciowego wyjscie -------- IF (strobe'event AND strobe='0') THEN str := (others => ' '); str(1) := conv_to_char(s_clk); str(2) := ' '; str(3) := conv_to_char(s_reset); str(4) := ' '; str(5 to 12) := conv_to_string(s_a,8); str(13) := ' '; str(14 to 21) := conv_to_string(s_b,8); str(22) := ' '; str(23 to 30) := conv_to_string(s_x,8); str(31) := ' '; str(32 to 39) := conv_to_string(s_z,8); str(40) := ' '; write(lineout,str); writeline(outfile,lineout); END IF; END PROCESS output; END tb_pliki_a;

3. Zadania do realizacji: a) Przeprowadzić symulację przykładowego kodu z wykorzystaniem plików (plik wejsciowy powinien znajdować się w katalogu głównym projektu, tam równieŝ znajdzie się plik wyjsciowy po przeprowadzeniu symulacji). b) Przeprowadzić symulację z wykorzystaniem plików dla układu z Laboratorium nr 2 (sumator 4-bitowy). Rew. 2007, P.M. Szecówka