VHDL/Xilinx - raporty kompilacji

Dyskusje ogólne na temat "cyfrówki" czyli wszystko o TTL/CMOS, językach VHDL i VERILOG, bramkach, rejestrach, przerzutnikach... Dobre miejsce na pytania odnośnie uniwersalnych programatorów (np. Willem) a także podłączania własnych peryferiów do komputera PC.
ODPOWIEDZ
Awatar użytkownika
Zenerek
Użytkownik
Posty: 336
Rejestracja: 21 lip 2006, 11:23
Lokalizacja: Bydgoszcz
Kontakt:

VHDL/Xilinx - raporty kompilacji

Post autor: Zenerek » 27 wrz 2012, 15:56

Witam serdecznie!
Dostałem polecenie, aby porównać raporty kompilacji, a w szczególności wygenerowane równania dla dwóch, zamieszczonych niżej kodów VHDL.
Oba kody wykonują to samo zadanie, za pomocą innych instrukcji.
Polecenie pochodzi z książki "Język VHDL" Kevin Skahill (ćw. 4.1).
Dodam, że w tej książce autor korzystał z narzędzia WARP, który generował czytelny raport, w którym faktycznie zawarte było równanie opisanego układu. Przykładowe równanie: step = addr(3) * addr(2) * addr(1) * addr(0) + step.
Problem w tym, że u mnie to narzędzie opisane w książce uruchamia się z błędami - książka ma 11lat i narzędzie może nie współpracuje z nowymi systemami.
Używam za to środowiska Xilinx.

Moje pytanie brzmi - czy xilinx generuje raport, z którego można wyłuskać podobne równanie?
Gdzie takiego raportu szukać i ewentualnie czy istnieją inne narzędzia generujące takie raporty?

Kod: Zaznacz cały

library IEEE;
use IEEE.std_logic_1164.all;
entity break1 is
port(
	a,b,c,d : in std_logic;
	j,k : in std_logic;
	x : out std_logic);
end break1;
architecture conditional of break1 is
	signal func1, func2, func3, func4 : std_logic;
begin
		func1 <= j or k;
		func2 <= j and k;
		func3 <= j xor k;
		func4 <= j xnor k;
p1: process(a, b, c, d, j, k)
	begin
		if a='1' then
			x <= func1;
		elsif b='1' then
			x <= func2;
		elsif c='1' then
			x <= func3;
		elsif d='1' then
			x <= func4;
		else
			x <= '-';
		end if;
	end process;
end;

Kod: Zaznacz cały

library IEEE;
use IEEE.std_logic_1164.all;
entity break1 is
port(
	a,b,c,d : in std_logic;
	j,k : in std_logic;
	x : out std_logic);
end break1;
architecture exclusive of break1 is
	signal func1, func2, func3, func4 : std_logic;
begin
		func1 <= j or k;
		func2 <= j and k;
		func3 <= j xor k;
		func4 <= j xnor k;
p1: process(a, b, c, d, j, k)
	subtype select_type is std_logic_vector(3 downto 0);
	begin
	case select_type' (a & b & c & d) is -- wyrażenie uściślające
		when "1000" => X <= func1;
		when "0100" => X <= func2;
		when "0010" => X <= func3;
		when "0001" => X <= func4;
		when others => X <= '-';
	end case;
	end process;
end;

alaris
Użytkownik
Posty: 531
Rejestracja: 21 lut 2006, 14:56
Lokalizacja: Gorzow/Poznan

Post autor: alaris » 27 wrz 2012, 17:17

Wygeneruj sobie RTLa, kliknij dwukrotnie na modułach, aby je rozwinąć i masz strukturę logiczną układu.
Tak nawiasem mówiąc stosujesz nieadekwatne słownictwo w tej dziedzinie, nie ma tu programu jako takiego, tylko opis sprzętu. Poza tym nie kompilujesz go tylko robisz syntezę, względnie syntezujesz. Nie żebym się czepiał, po prostu desperacko staram się bronić jako takiego poziomu języka technicznego. Jak zobaczysz kiedyś w gazecie tekst: "zabił go prąd o napięciu 230V" i podobne durnoty, zrozumiesz o co mi chodzi:)
Załączniki
rtl.png

Awatar użytkownika
Zenerek
Użytkownik
Posty: 336
Rejestracja: 21 lip 2006, 11:23
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: Zenerek » 27 wrz 2012, 22:40

alaris, wielkie dzięki! :wink:

widać ładnie różnice między dwoma strukturami.

Za nieadekwatne słownictwo przepraszam, nie jestem w tej dziedzinie obyty i co do słowa program zamiast opis sprzętu przepraszam, a różnicę rozumiem.
Co do kompilacji - taki termin pojawił się w w/w książce, stąd bez zastanowienia go użyłem. Choć ściślej mówiąc w książce autor napisał "wykonaj kompilację i syntezę". Wnioskuję z tego, że następuje proces kompilacji do jakiejś postaci a później synteza na konkretny układ czy też do konkretnego układu. Nie wiem czy dobrze rozumiem? I przepraszam za mały off-topic.

alaris
Użytkownik
Posty: 531
Rejestracja: 21 lut 2006, 14:56
Lokalizacja: Gorzow/Poznan

Post autor: alaris » 28 wrz 2012, 10:32

>>Za nieadekwatne słownictwo przepraszam
Nie krytykuję Cię, domyśliłem się, że zaczynasz zapoznawać się z tą tematyką. Traktuj to co powiedziałem po prostu jako życzliwą poradę. Sporo osób popełnia ten błąd, zostaniesz zawsze zrozumiany, ale jeżeli kiedyś trafisz na ludzi, którzy siedzą w tym temacie bardzo mocno, to od razu stwierdza, że nie do końca czujesz ten temat. Być może będziesz pisał jakąś pracę czy coś, którą potem ktoś przeczyta i oszczędzisz sobie złośliwości jak trafi ona do jakiegoś złośliwca ;)
A co do samej terminologii - różnica wynika z samej budowy i działania. Zauważ, że procesor wykonuje swoją pracę sekwencyjnie, instrukcja po instrukcji, w logiczny, ułożony sposób i dlatego mówimy o programie. Kompilacja natomiast przekłada kod napisany przez programistę na język maszynowy, łączy go z bibliotekami, etc.
Układy programowalne nie wykonują programów, one realizują określoną funkcję. Masz zbiór zasobów logicznych (bramki, przerzutniki, pamięć), które należy odpowiednio połączyć, aby osiągnąć założony efekt. I tu dochodzimy do sedna - nie piszesz programu, tylko opisujesz jak te elementy mają być połączone, czyli opisujesz sprzęt. Sugeruje to już sama nazwa języków HDL - Hardware Description Language. A proces syntezy na podstawie opisu sprzętu określa sposób połączenia wewnętrznych zasobów. W ISE możesz sobie narysować schemat i go potem syntezować, dla procesorów takiej opcji zasadniczo nie ma.
A co do treści książki - musiałbym zobaczyć cały kontekst. Nie jestem specjalistą od języka, niemniej zawsze warto dążyć do jak najlepszej poprawności:)

Awatar użytkownika
Zenerek
Użytkownik
Posty: 336
Rejestracja: 21 lip 2006, 11:23
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: Zenerek » 30 wrz 2012, 22:05

Teraz chyba wytłumaczyłeś to wyczerpująco :wink:
Jestem wdzięczny za pomoc!
Bardzo dziękuję!
I jak najbardziej, dążmy do poprawności! Po to są konkretne pojęcia, aby ułatwić orientowanie się w zagadnieniach. Mieszanie ze sobą pojęć strasznie potrafi namącić i zagmatwać.

Awatar użytkownika
tymon_x
-
Posty: 64
Rejestracja: 14 wrz 2010, 16:48
Lokalizacja: Gdańsk

Post autor: tymon_x » 01 paź 2012, 21:52

Powiedzcie to samo programistom Altera od narzędzi Quartus II:

ODPOWIEDZ