www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

vhdl - osnove
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> FPGA in CPLD programabilna vezja
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1270
Aktiv.: 6.07
Kraj: glej fogl

PrispevekObjavljeno: Čet Okt 27, 2011 8:13 am    Naslov sporočila:  vhdl - osnove Odgovori s citatom

Gledam eno kodo, kjer so vhodi in izhodi definirani kot
PORT (
a : IN std_logic_vector(31 DOWNTO 4);

Ima ta (31 DOWNTO 4) kakšno funkcijo, ali je to isto kot std_logic_vector(27 DOWNTO 0)?

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
GopherB
Član
Član



Pridružen-a: Čet 10 Mar 2011 11:44
Prispevkov: 90
Aktiv.: 0.57
Kraj: Lj

PrispevekObjavljeno: Čet Okt 27, 2011 8:42 am    Naslov sporočila:   Odgovori s citatom

Efekt je enak.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
David2204
Član
Član



Pridružen-a: Pon 03 Nov 2008 0:01
Prispevkov: 997
Aktiv.: 5.32
Kraj: Ljubljana - Nova Gorica

PrispevekObjavljeno: Čet Okt 27, 2011 4:09 pm    Naslov sporočila:   Odgovori s citatom

Manjka ti še en zaklepaj tam. Wink
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1270
Aktiv.: 6.07
Kraj: glej fogl

PrispevekObjavljeno: Čet Nov 03, 2011 9:38 am    Naslov sporočila:   Odgovori s citatom

Bom kar tukaj nadaljeval... še nekaj mi ni jasno, zakaj mi tole javi napako:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

signal izbor : std_logic_vector(1 downto 0);

case izboris
when "00" => blabla1;
when "01" => blabla2;
when 2 => blabla3;
when 3 => blabla4;
end case;

ERROR:HDLParsers:800 - Type of izbor is incompatible with type of 2.
ERROR:HDLParsers:800 - Type of izbor is incompatible with type of 3.



Če enako naredim z if stavki, pa ni problem, ali ta signal primerjam npr z "00" ali 0.

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
GopherB
Član
Član



Pridružen-a: Čet 10 Mar 2011 11:44
Prispevkov: 90
Aktiv.: 0.57
Kraj: Lj

PrispevekObjavljeno: Čet Nov 03, 2011 1:33 pm    Naslov sporočila:   Odgovori s citatom

Citiram:

when "00" => blabla1;
when "01" => blabla2;
when 2 => blabla3;
when 3 => blabla4;


da lahko pises v hex = x"0~F", moras prej popravit Izbor :
signal IZBOR : std_logic_vector(3 downto 0);
...

when "0000" => blabla1;
when "0001" => blabla2;
when x"2" => blabla3;
when x"3" => blabla4;


v izogib zmedi priporocam:

signal IZBOR : std_logic_vector(1 downto 0);
...

when "00" => blabla1;
when "01" => blabla2;
when "10" => blabla3;
when "11" => blabla4;

ali

signal IZBOR : std_logic_vector(3 downto 0);
...

when x"0" => blabla1;
when x"1" => blabla2;
when x"2" => blabla3;
when x"3" => blabla4;

Citiram:
Če enako naredim z if stavki, pa ni problem, ali ta signal primerjam npr z "00" ali 0.

Mi je pa zanimivo, da ti debugger prebavi tole... Si zadevo poskusil tudi skompajlat? Pa Multisim (ali kaj je ze tisti embedded simulator) ti normalno prebere primerjanje z 0?
Jaz bi se tega izogibal in bi uporabljal '0' ali "00" ali x"0", tudi ce ti nic ne zajamra.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.98
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Čet Nov 03, 2011 1:54 pm    Naslov sporočila:   Odgovori s citatom

gopherB : ta VHDL je res cuden - a zato da lahko uporabljas desetiski zapis, moras porabiti stiri bite, ceprav bi rad uporabljal vrednosti le do 3?? Kaj pa naredi z ostalimi stanji? Sicer ne poznam prevec dobro VHDL-ja, a v verilogu bi s taksnim stavkom (niso definirana vsa stanja in manjka default) dobil latch.

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Čet Nov 03, 2011 2:07 pm    Naslov sporočila:   Odgovori s citatom

chaos je napisal/a:
gopherB : ta VHDL je res cuden - a zato da lahko uporabljas desetiski zapis, moras porabiti stiri bite, ceprav bi rad uporabljal vrednosti le do 3??
Če uporabljaš desetiški zapis, je vendar samo po sebi umevno, da so zanj potrebni 4 biti. Kako pa naj zadeva ve, da bi rad štel samo do 3 ?

Če veš, da bo šlo samo do 3, uporabiš dvobiten std_logic_vector(1 downto 0).
chaos je napisal/a:
Kaj pa naredi z ostalimi stanji? Sicer ne poznam prevec dobro VHDL-ja, a v verilogu bi s taksnim stavkom (niso definirana vsa stanja in manjka default) dobil latch.
Kolikor se spominjam (cca 10 let), obstaja rezervirana beseda "other" ali "others" za vsa ostala stanja. Malo poglej Help.
when "000" => blabla1;
when "001" => blabla2;
;recimo, da 010 izpustimo
when "011" => blabla4;
when "100" => blabla5;
when "other" => blabla6; To velja za vsa stanja (010, 101, 110, 111), ki niso izrecno definirana pri naštevanju.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.98
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Čet Nov 03, 2011 2:17 pm    Naslov sporočila:   Odgovori s citatom

igo: ni samo po sebi umevno, to je bil moj point. V verilogu preprosto reces 2'd3 - 2 bita, desetiska stevilka 3. Sicer pa po tvoji logiki tudi stirje biti niso dovolj - kako bos zapisal devet (9)? Kvecjemu bi bilo to res za sestnajstiski zapis.

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Čet Nov 03, 2011 2:28 pm    Naslov sporočila:   Odgovori s citatom

chaos je napisal/a:
igo: ni samo po sebi umevno, to je bil moj point. V verilogu preprosto reces 2'd3 - 2 bita, desetiska stevilka 3.
To je šminka od prevajalnika. Zadaj ti definira vektor (1 downto 0), pri VHDL ga pa pač moraš sam.
chaos je napisal/a:
Sicer pa po tvoji logiki tudi stirje biti niso dovolj - kako bos zapisal devet (9)? Kvecjemu bi bilo to res za sestnajstiski zapis.
Verjetno si mislil, da 3 biti niso dovolj (111= 7).
9 = 1001, torej 4 biti.

Še vedno poglej "other". Verjetno ima podoben bonbonček tudi Verilog.
DODANO: Aha, to je verjetno tisti "default", ki si ga omenil zgoraj.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9406
Aktiv.: 42.36
Kraj: Kranj - struževo

PrispevekObjavljeno: Čet Nov 03, 2011 8:32 pm    Naslov sporočila:   Odgovori s citatom

VHDL compiler ima zelo močno optimizacijo.
Če določen vektor nikoli ne pride do števila večjega od 3 in tudi ni možnosti da bi kakšna večja številka kdaj prišla gor, bo neaktivne DFFje in povezave enostavno pobrisal stran.

Zaradi tega se včasih zgodi, da se kak projekt lepo skompajla ampak za hudiča nikakor ne dela. Takrat se splača detajlno branje reporta od prevajanja - dostikrat najdeš da ti je pomembne signale enostavno pobrisal - zaradi neke majhne napake v programu.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1270
Aktiv.: 6.07
Kraj: glej fogl

PrispevekObjavljeno: Pet Nov 04, 2011 3:28 pm    Naslov sporočila:   Odgovori s citatom

Ampak še vedno ne vidim logike. Tole (spodaj) je kot vem identično case stavku, pa ne javi nobene napake. A ni to bolj podobno hrošču?

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

signal izbor : std_logic_vector(1 downto 0);

if izbor = 0 then blabla0;
elseif izbor = 1 then blabla1;
elseif izbor = 2 then blabla2;
elseif izbor = 3 then blabla3;
end if;

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9406
Aktiv.: 42.36
Kraj: Kranj - struževo

PrispevekObjavljeno: Pet Nov 04, 2011 10:43 pm    Naslov sporočila:   Odgovori s citatom

Škoda se ustavljati na takih podrobnostih. Uporabiš tisto opcijo ki zanesljivo dela Smile
_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1270
Aktiv.: 6.07
Kraj: glej fogl

PrispevekObjavljeno: Sob Nov 05, 2011 11:57 am    Naslov sporočila:   Odgovori s citatom

Problem je, da sem hotel naredit en generic modul, kjer se dolžina vektorja "izbor" lahko spreminja. V tem primeru (z desetiškimi vrednostmi) mi potem ne bi bilo treba ročno popravljati dolžine zapisa.
_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
davide
Član
Član



Pridružen-a: Pet 10 Sep 2010 16:45
Prispevkov: 149
Aktiv.: 0.90
Kraj: Savinjska

PrispevekObjavljeno: Pon Mar 05, 2012 6:08 pm    Naslov sporočila:   Odgovori s citatom

čisto osnovno vprašanje, kako napisati kodo v vhdl-u ali v verilogu za zaznavanje pozitivne fronte pritisnjene tipke, kjer ob pritisku na tipko npr. zažene števec, ko pride števec npr. do določene vrednosti se vse ustavi in spet čakamo na ponovni pritisk tipke??
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Dorijan
Član
Član



Pridružen-a: Ned 22 Jun 2008 10:48
Prispevkov: 2481
Aktiv.: 12.93
Kraj: južnoprimorska

PrispevekObjavljeno: Pon Mar 05, 2012 8:20 pm    Naslov sporočila:   Odgovori s citatom

Koda:
Key: process(TIPKA)
begin

if rising_edge(TIPKA) then

--koda

end if;
end process;

_________________
Če nekaj deluje, razstavi in ugotovi zakaj.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> FPGA in CPLD programabilna vezja Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group