VHDL

Witam, jestem poczatkujacy w VHDL'u. Pracuje na webPacku Xilina i ModelSim'ie do symulacji. Mam problem nastepujacy. Chcialem zrobic takie cos:

architecture Behavioral of przerzutniki is signal wynik : bit_vector (1 downto 0); signal temp : bit; begin process (zegar, x, y, wybierz, wynik) begin if (zegar = '0') then case wybierz is when "00" => wynik(1) <= x or (not y and wynik(1)); wynik(0) <= not wynik(1); when "01" => wynik(1) <= (not wynik(1) and x) or (not y and wynik(1)); wynik(0) <= not wynik(1); when "10" => wynik(1) <= x; wynik(0) <= not wynik(1);

when "11" => wynik(1) <= wynik(1) xor x; wynik(0) <= not wynik(1); end case; else wynik <= "00"; end if; Q <= wynik(1); nieQ <= wynik(0); end process; end Behavioral;

Co tu jest zle, sadzis sie cos o sygnal wynik, ze cos nie jest kompatybilne. Takie mam bledy: ERROR:HDLParsers:808 - "F:/Moje Dokumenty/VHDL - projects/przerzutniki/przerzutniki.vhd" Line 22. and can not have such operands in this context. ERROR:HDLParsers:808 - "F:/Moje Dokumenty/VHDL - projects/przerzutniki/przerzutniki.vhd" Line 23. and can not have such operands in this context. ERROR:HDLParsers:808 - "F:/Moje Dokumenty/VHDL - projects/przerzutniki/przerzutniki.vhd" Line 23. and can not have such operands in this context. ERROR:HDLParsers:800 - "F:/Moje Dokumenty/VHDL - projects/przerzutniki/przerzutniki.vhd" Line 24. Type of wynik is incompatible with type of x. ERROR:HDLParsers:808 - "F:/Moje Dokumenty/VHDL - projects/przerzutniki/przerzutniki.vhd" Line 25. xor can not have such operands in this context. ERROR:HDLParsers:812 - "F:/Moje Dokumenty/VHDL - projects/przerzutniki/przerzutniki.vhd" Line 25. A value is missing in case. ERROR:HDLParsers:800 - "F:/Moje Dokumenty/VHDL - projects/przerzutniki/przerzutniki.vhd" Line 30. Type of Q is incompatible with type of wynik. ERROR:HDLParsers:800 - "F:/Moje Dokumenty/VHDL - projects/przerzutniki/przerzutniki.vhd" Line 31. Type of nieQ is incompatible with type of wynik.

Jestem poczatkujacy wybaczcie.

Fraktal ...

Reply to
fraktal
Loading thread data ...

ja tez :)

jakbys sie przelaczyl na verilog, to moze bylbym bardziej pomocny;

skompilowalem ten twoj kod pod quartusem altery, dopisujac taki poczatek:

ENTITY przerzutnik IS PORT ( zegar, y, x : IN bit; --STD_LOGIC; wybierz : IN STD_LOGIC_VECTOR(1 DOWNTO 0); Q, nieQ : OUT bit --STD_LOGIC ); END przerzutnik;

gdy poczatkowo bylo 'STD_LOGIC' tez mialem bledy; czemu - nie mam pojecia, vhdl znam tylko z widzenia; wyglada na to, ze typy sie nie zgadzaja;

JA

Reply to
JA

Na sam początek daj:

library IEEE; use IEEE.std_logic_1164.all;

entity przerzutniki is port( zegar, y, x: in BIT; wybierz: in STD_LOGIC_VECTOR(1 downto 0); Q, nieQ: out BIT ); end przerzutniki;

To jest nieużywane: signal temp : bit;

Za ostatnim przypadkiem w case dopisz: when others => wynik <="00"; -- te zera to przykład wstaw co tam uważasz

I właściwie powinno ruszyć. Z tym że tu jest błąd, symulacja zostaje przerwana, zgadnij dlaczego: when "11" => wynik(1) <= wynik(1) xor x;

Reply to
Tomasz Maciąg

a dlaczego ? skoro 'case' wyczerpuje wszystkie mozliwosci, po co jeszcze 'others' ?

czemu ? ja nie zgadne :(

JA

Reply to
JA

ENTITY jest napisne, przekopiowalem tylko ten kod który mi sie wywala. Zaraz to poprawie i zobaczymy czy to dziala.

Reply to
fraktal

Dnia 28-05-2006 o 01:26:42 JA <j_andr snipped-for-privacy@freeent.de napisał:

Nie wyczerpuje - przypominam, że STD_LOGIC pracuje na dziewięciowartościowej logice, więc zostaje jeszcze kupa możliwości typu "ZZ", "LH", "0-", itd... Nie szkodzi, że niektóre nie mają znaczenia sprzętowego. Niezła zmyłka, nie?

Reply to
Tomasz Maciąg

no tak, zapomnialem juz, ze mozna 'robic' fpga, ale mozna tez mozna symulowac [fpga na przyklad];

ale - poczatkujacym ku uwadze, jesli akurat ktos poczatkujacy to czyta - z 'others', jesli to ma byc kod pracujacy w fpga, trzeba uwazac; wyobrazmy sobie FSM o kilkunastu stanach, zakodowana jako 'one-hot' [co akurat w przypadku fpga jest kodowaniem zalecanym]; uzywanych stanow jest kilkanascie, a 'others'

2^kilkanascie, sama FSM zamiast kilkunastu komorek moze zajac pol cyclone;

JA

Reply to
JA

No i teraz się na mnie gromy chyba posypią !! Jestem stary jak baobab , programy też piszę (głownie numeryka) , natomiast w projektowaniu hardware'owym korzystam z :

1) Edytor schematów ( wspomagany LogiBlox + Core Generator ) 2) Stany maszynowe załatwiam poprzez 'State Machine Editor'

Ostatnio 64-ro RISC'a jakiegoś tam własnego pomysłu ( z własnym 'duperelnym' ) assemblerem uruchomiłem w 2 dni .

Gorąco polecam XILINX-ISE

MH

Reply to
Mariusz Hajduk

a czemu ?

a czemu ? :)

JA

Reply to
JA

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.