Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

VHDL - 3 pytania

Moderatorzy: Jacek Bogusz, Moderatorzy

anderson20
-
-
Posty: 26
Rejestracja: 15 gru 2008, o 14:07
Lokalizacja: Poznań

VHDL - 3 pytania

Postautor: anderson20 » 17 lut 2010, o 06:37

Mam 3 pytania z VHDLa.
1.)
Czy można definiować w taki sposób zmienne:
VARIABLE wektor: std_logic_vector(3 DOWNTO 0) := (z2, z5, z6, z7);
gdzie z1-z7 to sygnały wejściowe zdefiniowane w jednostce projektowej. Pytam ponieważ po uruchomieniu Generate Post-Synthesis Simulation powyskakiwały mi komunikaty, że wejścia z1-z7 są nigdy nieużywane.

2.) Dotyczy też pierwszego pytania.
Po powyższym przypisaniu wektor(0) to będzie z7, wektor(1) to z6, wektor(2) to z5 i wektor(3) to z2. Czy to prawda? Czy na odwrót?

3.)
Czy lepiej używać '-' czy 'X' czy to obojętnie bo jedno i drugie oznacza stan nieokreślony? Bo zauważyłem w pewnych przykładowych zadaniach, że dla stanów nieokreślonych dają 'X' a przecież rownie dobrze mogliby i dać '-'.

Piotr Czak
-
-
Posty: 22
Rejestracja: 1 lut 2009, o 20:07
Lokalizacja: Wejherowo

Postautor: Piotr Czak » 22 lut 2010, o 10:26

Cześć,

1. to co jest po := stanowi wartość początkowa tej zmiennej i prawdopodobnie dlatego pojawiają się warningi. Moje pytanie po co takie coś robisz, co chciałbyś uzyskać.

2. tak wektor(0) to z7

3. Najlepiej nie używać stanów nieokreślonych. No chyba, że robisz jakiś specjalny dekoder np dekodera priorytetów przerwań to tak. Natomiast sygnałom lub zmiennym lepiej nie przypisywać takich sygnałów.

Pozdrawiam
Piotr

anderson20
-
-
Posty: 26
Rejestracja: 15 gru 2008, o 14:07
Lokalizacja: Poznań

Postautor: anderson20 » 24 lut 2010, o 05:56

Chcę coś takiego uzyskać:

Kod: Zaznacz cały

entity projektos is port(z1, z2, z3, z4, z5, z6, z7 : in std_logic; wyjscie : out std_logic); end projektos; architecture .... pomijam deklaracje architetkury A1: process(z1, z5, z6, z7) variable wektor: std_logic_vector(3 DOWNTO 0) := (z1, z5, z6, z7); variable zmienna: std_logic; begin case wektor is when "0000" => zmienna := '0'; when "0001" => zmienna := '0'; when "0010" => zmienna := '1'; when "0011" => zmienna := '0'; when "0100" => zmienna := '1'; when "1---" => zmienna := '1'; when others => zmienna := '-'; end case; wyjscie <= zmienna; end process A1; A2: itd.
Czyli dzięki temu 1 instrukcja when => zmienna załatwia mi użycie 4 if-ów i ładniejszy dla oka kod jest. To można tak czy nie można? A jak nie to jak inaczej? Bo zgodnie z książka wydaje się być dobrze.
Czyli znak - mam zastąpić X????
Z góry dziękuję za odpowiedź. Zależy mi na czasie.
TestBencha wykonać nie mogę, bo podczas próby Generate Expected Simulation Results bądź Simulate Behavioral Model wyskakuje mi error ERROR:Simulator:222 - Generated C++ compilation was unsuccessful. Płytki tez nie mam by sprawdzić czy te warningi to pic na wode i będzie hulać czy nie?:)

Piotr Czak
-
-
Posty: 22
Rejestracja: 1 lut 2009, o 20:07
Lokalizacja: Wejherowo

Postautor: Piotr Czak » 25 lut 2010, o 08:12

Witam,

odpowiedź przesłałem w wiadomości ze skrzynki.
Tak "case" załatwia użycie "if'a"
- moze być
W jakim programie to jest??

Pozdrawiam
Piotr Czak

anderson20
-
-
Posty: 26
Rejestracja: 15 gru 2008, o 14:07
Lokalizacja: Poznań

Postautor: anderson20 » 25 lut 2010, o 14:11

w XILINXIE. Dziękuję za informację.

Wróć do „PLD/FPGA i inne zagadnienia techniki cyfrowej”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 103 gości