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:)
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
Moderatorzy:Jacek Bogusz, Moderatorzy
-
- -
- Posty:3
- Rejestracja:4 mar 2010, o 16:58
- Lokalizacja:nowy dwor maz
-
- -
- Posty:22
- Rejestracja:1 lut 2009, o 20:07
- Lokalizacja:Wejherowo
Witam,
możesz ta drugą część zrobić w taki sposób:
w entity dać
następnie w architekturze:
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
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)
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));
Pozdrawiam
Piotr Czak
-
- -
- Posty:3
- Rejestracja:4 mar 2010, o 16:58
- Lokalizacja:nowy dwor maz
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości