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ę

projektowaniw w VHDL

Grzesieks1987
-
-
Posty:3
Rejestracja:4 mar 2010, o 16:58
Lokalizacja:nowy dwor maz
projektowaniw w VHDL

Postautor: Grzesieks1987 » 4 mar 2010, o 17:02

Witam, mam mały problem z techniką cyfrową. Muszę wyspecyfikować układ w języku vhdl w specyfikacji funkcjinalnej w standardzie std logic wektor. Układ:
y2= ( nie x4+nie x2 +x1)(x3 +x2) ( x4 + nieX1)
y1= x4x2x1 + niex3niex1 + niex4x3
udało mi się to zrobić w standart logic jako:
entity uklad 1 is
port(
x1,x2,x3,x4: in STD_LOGIC;
y1,y2: out STD_LOGIC end uklad 1;
architecture ......
Y2 <= ( not x4 or not x2 or x1) and (x3 or x2) and (x4 or not x1);
Y1 <= (x4 and x2 and x1) or ( not x3 and not x1) or (not x4 and x3);
Jak zrobić taki układ w standardzie STD logic wektor??
Jak sprawdzić czy dane przebiegi zgadzają się z rzeczywistymi??
za każdą pomoc dziękuję, specyfikacje te robiłem w acitv HDL.

Udało mi się dojść do czegoś takiego:
entity uklad3 is
port (
x1: in STD_LOGIC_VECTOR (0 to 0);
x2: in STD_LOGIC_VECTOR (0 to 0);
x3: in STD_LOGIC_VECTOR (0 to 0);
x4: in STD_LOGIC_VECTOR (0 to 0);
y1: out STD_LOGIC_VECTOR (0 to 0);
y2: out STD_LOGIC_VECTOR (0 to 0)
);
end uklad3;

--}} End of automatically maintained section

architecture uklad3 of uklad3 is
begin
y2 <= (not x4 or not x2 or x1) and (x3 or x2) and (x4 or not x1);
y1 <= (x4 and x2 and x1) or (not x3 and not x1) or (not x4 and x3);
-- <<enter your statements here>>
end uklad3;

nie jestem pewny czy to jest dobrze( przebiegi zgadzają się ) ale czy jest możlie zeby było coś takiego:
1: in STD_LOGIC_VECTOR (0 to 0);
x: in STD_LOGIC_VECTOR (3 to 0);

y1: out STD_LOGIC_VECTOR (0 to 0);
y2: out STD_LOGIC_VECTOR (0 to 0)
i później nie wiem jak w architekturze wypisać funkcje.
dzięki za pomoc z góry:)

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

Postautor: Piotr Czak » 5 mar 2010, o 11:11

Witam,

możesz ta drugą część zrobić w taki sposób:
w entity dać

Kod: Zaznacz cały

x : in std_logic_vector(3 downto 0); y : out std_logic_vector(1 downto 0)
następnie w architekturze:

Kod: Zaznacz cały

y(0) <= ( not x(4) or not x(2) or x(1)) and (x(3) or x(2)) and (x(4) or not x(1)); y(1) <= (x(4) and x(2) and x(1)) or ( not x(3) and not x(1)) or (not x(4) and x(3));
Aby sprawdzić czy działa prawidłowo polecam napisać jednostkę testową, która dla obu przypadków będzie generować dokładnie takie same pobudzenia. Wartości tych pobudzeń jaki i wyniki "Y" albo zapisywać do pliku albo wyświetlać na waveformie. Pozniej można pliki lub waveformy porównać ze sobą.

Pozdrawiam
Piotr Czak

Grzesieks1987
-
-
Posty:3
Rejestracja:4 mar 2010, o 16:58
Lokalizacja:nowy dwor maz

Postautor: Grzesieks1987 » 5 mar 2010, o 11:23

Dzięki Wielkie:) Życie mi uratowałeś
Pozdrawiam Grzesiek Socha

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 3 gości