|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
maxwell Neznanec
Pridružen-a: Ned 08 Jan 2012 14:48 Prispevkov: 7 Aktiv.: 0.05 Kraj: Kranj
|
Objavljeno: Ned Jan 08, 2012 4:06 pm Naslov sporočila: vhdl pomoč |
|
|
Zdravo, prosil bi za pomoč pri nalogi:
V vhdl moram opisati delovanje sinhronega števca po modulu 5 (0,1,2,3,4,0,1...) (s stavkoma process in if...then)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity stevec is
Port ( clk : in STD_LOGIC;
q : out STD_LOGIC_VECTOR(1 downto 0));
end stevec;
architecture Behavioral of stevec is
begin
process()
begin
if (clk'event and clk='1') then
q<=q+1;
end if;
end process;
end Behavioral;
Nekaj kode imam že podane le kar je krepko napisano sem dopisal. Ne vem ali je prav? In če imam modul 5 a ne potrebujem potem tri spremenljivke, v nalogi je pa q definiran kot dve spremenljivki.. |
|
Nazaj na vrh |
|
|
RUros Član
Pridružen-a: Čet 09 Mar 2006 22:26 Prispevkov: 1030 Aktiv.: 4.67
|
Objavljeno: Ned Jan 08, 2012 4:43 pm Naslov sporočila: |
|
|
Verjetno si že sam ugotovil, da ti koda verjetno ne dela oz. se pravilno ne prevede. To je zato, ker je q definiran kot izhod, v priredilnem stavku pa ga uporabljaš tudi kot vhod. Če želiš tako zapisati, moraš uporabiti spremenljivko tipa "signal". npr.:
Koda: |
signal q: std_logic_vector(1 downto 0) |
Kasneje pa izhodu to vrednost prirediš: izhod<=q (to stori izven procesa).
Kodo si sicer pravilno zapisal, povedati moraš še kdaj se ti naj števec resetira. Torej znotraj tvojega procesa v katerem povečuješ števec, vedno tudi poglej, kdaj je števec enak 5 in ga, če je enak 5, tudi pobriši na 0. Tako boš dobil štetje po tvojem modulu.
Opozoriti pa te moram, da si definiral tvoj izhodni signal q kot dvobitni števec in boš z njim štel lahko z največ do 4. Tako da ta vektor ustrezno povečaj (2 downto 0). |
|
Nazaj na vrh |
|
|
maxwell Neznanec
Pridružen-a: Ned 08 Jan 2012 14:48 Prispevkov: 7 Aktiv.: 0.05 Kraj: Kranj
|
Objavljeno: Ned Jan 08, 2012 6:25 pm Naslov sporočila: |
|
|
aha, hvala
sedaj sem popravil kodo vendar mi še vedno javi napako in ne morem odkriti kaj je narobe (mogoče prazen oklepaj pri process?)..
Line 33. parse error, unexpected CLOSEPAR, expecting IDENTIFIER or STRING_LITERAL
...
architecture Behavioral of stevec is
signal a:std_logic_vector(1 downto 0);
begin
process() -- line 33
begin
if (clk'event and clk='1') then
a<=a+1;
else if a='5' then
a<='0';
end if;
end process;
q<=a;
end Behavioral; |
|
Nazaj na vrh |
|
|
tozir Član
Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.95 Kraj: Celje
|
Objavljeno: Ned Jan 08, 2012 6:28 pm Naslov sporočila: |
|
|
Sintaksa za else if v VHDL je elsif.
EDIT: Pa Clock dodaj v sensitivity list -> Process(Clock) _________________ http://www.rielektronika.comule.com/ |
|
Nazaj na vrh |
|
|
RUros Član
Pridružen-a: Čet 09 Mar 2006 22:26 Prispevkov: 1030 Aktiv.: 4.67
|
Objavljeno: Ned Jan 08, 2012 7:55 pm Naslov sporočila: |
|
|
tozir je napisal/a: |
Sintaksa za else if v VHDL je elsif.
EDIT: Pa Clock dodaj v sensitivity list -> Process(Clock) |
Tako je, če napišeš tako:
Koda: |
if pogoj then
naredi nekaj;
elsif pogoj_2 then
naredi drugo stvar;
end if; |
Potem imaš na koncu samo en end if, drugače pa moraš vsak if stavek posebej zaključiti kar zna biti zoprno pri daljših zapisih:
Koda: |
if pogoj then
naredi nekaj;
else if pogoj_2 then
naredi drugo stvar;
end if;
end if; |
V občutljivostno listo pa dodaj clock kot je omenil tozir. Pa prevajalnik ti bo verjetno javil error tudi tam ko gledaš kdaj je a='5', ker nikoli ne bo, ker je to 2 bitni vektor in je lahko maksimalno 4.
Aja, pa še to: pred začetkom procesa (točneje pred besedo process(clock)) moraš nekako poimenovati ta proces (znak in potem dvopičje). Za primer:
Koda: |
P1: process(clock)
begin
.......
end process; |
|
|
Nazaj na vrh |
|
|
tozir Član
Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.95 Kraj: Celje
|
Objavljeno: Ned Jan 08, 2012 8:20 pm Naslov sporočila: |
|
|
Glede na to da ima samo en proces (zaenkrat), mu ni treba dodajati imena. Sicer pa priporočam pri veliko procesih dodati na koncu:
end process ime_procesa; _________________ http://www.rielektronika.comule.com/ |
|
Nazaj na vrh |
|
|
maxwell Neznanec
Pridružen-a: Ned 08 Jan 2012 14:48 Prispevkov: 7 Aktiv.: 0.05 Kraj: Kranj
|
Objavljeno: Ned Jan 08, 2012 8:50 pm Naslov sporočila: |
|
|
tako sedaj pa je koda brez napak, hvala
še nekaj, ker google kar veliko najde o vhdl-u, me zanima če je kakšna spletna stran ali knjiga ki jo še posebej priporočate. Hvala:) |
|
Nazaj na vrh |
|
|
RUros Član
Pridružen-a: Čet 09 Mar 2006 22:26 Prispevkov: 1030 Aktiv.: 4.67
|
Objavljeno: Ned Jan 08, 2012 9:06 pm Naslov sporočila: |
|
|
Ja obstaja tudi kar nekaj literature, v slovenščini pa jo lahko dobiš na FE jo je letos v prenovljeni verziji izdal prof. Andrej Trost. Točnega naslova knjige ne vem, je pa nekaj v smislu uvod v VHDL ali nekaj podobnega. |
|
Nazaj na vrh |
|
|
aly Član
Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 42.22 Kraj: Kranj - struževo
|
Objavljeno: Ned Jan 08, 2012 9:11 pm Naslov sporočila: |
|
|
Tu poišči literaturo:
http://lniv.fe.uni-lj.si/ _________________ I'm going to stand outside, so if anyone asks, I'm outstanding |
|
Nazaj na vrh |
|
|
tozir Član
Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.95 Kraj: Celje
|
Objavljeno: Ned Jan 08, 2012 9:34 pm Naslov sporočila: |
|
|
Za samo sintakso zadnje čase precej uporabljam Language templates v Xilinx ISE WebPack. _________________ http://www.rielektronika.comule.com/ |
|
Nazaj na vrh |
|
|
kornjace Član
Pridružen-a: Pon 05 Sep 2011 23:26 Prispevkov: 421 Aktiv.: 2.74 Kraj: Goriška Brda
|
Objavljeno: Ned Jan 08, 2012 10:31 pm Naslov sporočila: |
|
|
pozdravljeni,
mene samo zanima kak program vi uporabljate (ali priporočate) za kompajlanje kode VHDL?
Lp |
|
Nazaj na vrh |
|
|
Sadida Član
Pridružen-a: Pet 17 Apr 2009 12:53 Prispevkov: 636 Aktiv.: 3.48 Kraj: Zasavje
|
Objavljeno: Ned Jan 08, 2012 11:13 pm Naslov sporočila: |
|
|
RUros je napisal/a: |
Ja obstaja tudi kar nekaj literature, v slovenščini pa jo lahko dobiš na FE jo je letos v prenovljeni verziji izdal prof. Andrej Trost. Točnega naslova knjige ne vem, je pa nekaj v smislu uvod v VHDL ali nekaj podobnega. |
Načrtovanje digitalnih vezij v jeziku vhdl |
|
Nazaj na vrh |
|
|
aly Član
Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 42.22 Kraj: Kranj - struževo
|
Objavljeno: Ned Jan 08, 2012 11:25 pm Naslov sporočila: |
|
|
Za Xilinx - ISE WebPack.
Ostali proizvajalci čipovja imajo svoja orodja oz. "toolchain".
Ker ne gre samo za kompajlanje, ampak je postopek mnooogo bolj kompliciran da zadeva na čipu "špila".
Če je projekt malo bolj obsežen, lahko celotno prevajanje traja tudi 15 minut ali več. _________________ I'm going to stand outside, so if anyone asks, I'm outstanding |
|
Nazaj na vrh |
|
|
kornjace Član
Pridružen-a: Pon 05 Sep 2011 23:26 Prispevkov: 421 Aktiv.: 2.74 Kraj: Goriška Brda
|
Objavljeno: Ned Jan 08, 2012 11:47 pm Naslov sporočila: |
|
|
ok. hvala |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 70 dni
Powered by phpBB © 2001, 2005 phpBB Group
|