|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
trot Član
Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1270 Aktiv.: 6.04 Kraj: glej fogl
|
Objavljeno: Tor Jan 29, 2013 9:40 am Naslov sporočila: fpga - lpt port |
|
|
Fpga sem preko uporov povezal s pc lpt portom. Fpga bere podatke iz lpt porta. Branje imam narejeno tako da prebere ob spremenbi stanja. Problem je, da mi fpga občasno prebere napačno vrednost (bere cca 4000krat/s in enkrat na sekundo prebere napačno, včasih tudi večkrat). Nimam ideje kaj bi lahko bilo narobe... je možno da se stanje na izhodu lpt porta spremeni prepočasi in je napetost ob branju nekje na mejni vrednosti in zato pokaže enkrat nekaj drugič drugo? Frekvenca fpga-ja je 50 Mhz.
_________________ lp, Klemen |
|
Nazaj na vrh |
|
|
chaos Član
Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.96 Kraj: Zagorje ob Savi
|
Objavljeno: Tor Jan 29, 2013 1:16 pm Naslov sporočila: |
|
|
Kaksen protokol pa uporabljas - sinhron, asinhron, posiljas clock (takt), uporabljas zastavice, ...?
Na pamet lahko recem, da bi znal biti problem z metastabilnostjo, ce se PC in FPGA ne pogovarjata z istim ciklom. Verjetno bos rabil za podatkovno vodilo asinhroni FIFO z Greyevim stevcem.
LP!
|
|
Nazaj na vrh |
|
|
trot Član
Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1270 Aktiv.: 6.04 Kraj: glej fogl
|
Objavljeno: Tor Jan 29, 2013 2:34 pm Naslov sporočila: |
|
|
Nimam nobenega posebnega protokola, kot je to recimo rešeno z epp. Vse kar delam je, da z lpt potom spreminjam 3 pine, ki predstavljajo števec/naslov, poleg pa na ostale pine dodam še koristne podatke. Na fpga-ju pa samo sledim spremembi tega števca in ob spremembi preberem podatke.
Se pravi povezava med lpt portom in flga-jem je asinhrona. Bom poskusil naredit ta fifo... saj ti moduli so v ISE že poleg, če prav razumem?
_________________ lp, Klemen |
|
Nazaj na vrh |
|
|
chaos Član
Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.96 Kraj: Zagorje ob Savi
|
Objavljeno: Tor Jan 29, 2013 6:38 pm Naslov sporočila: |
|
|
Verjetno imas v FPGA-je neke registre (flipflope), ki tecejo z nekim svojim clockom. Problem nastane, ce se podatki na vhodu flipflopa spreminjajo ravno takrat, ko flipflop latcha svoj vhod, takrat lahko flipflop preide v stanje metastabilnosti in se za nekaj casa malo "zmede" - prebere napacno vrednost ali celo zaoscilira.
Taksni problemi se lahko pojavljajo povsod tam, kjer signali grejo iz ene clock domene v drugo, ali ko se gre iz asinhronega v sinhron del kode.
Za kaksne enobitne signale se to ponavadi resi tako, da se en za drugim dasta dva ali vec flipflopa, med katerima ni nobene kombinatorne logike, to sta potem t.i. sinhronizacijska flipflopa, ki skoraj iznicita moznost metastabilnosti.
Za vecbitne se uporabi asinhron FIFO (FIFO, ki ima na vsaki strani svoj clock), po vsej verjetnosti bos kaj taksnega nasel v tistem ISE wizardu.
LP!
|
|
Nazaj na vrh |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2066 Aktiv.: 9.27 Kraj: Ljubljana
|
Objavljeno: Tor Jan 29, 2013 7:11 pm Naslov sporočila: |
|
|
Če nimaš clock signala, kako FPGA ve, kdaj so podatki veljavni?
|
|
Nazaj na vrh |
|
|
chaos Član
Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.96 Kraj: Zagorje ob Savi
|
Objavljeno: Tor Jan 29, 2013 7:26 pm Naslov sporočila: |
|
|
Saj v tem je problem
Najbolje je, ce oba uporabljata isti clock. Lahko tudi del logike v FPGA-ju dela na zunanjem clocku, to je npr. ce imas kaksno standardno 8008/6800 vodilo, kot ga ima kaksen graficni LCD, kjer potem tisti CE signal uporabis kot clock. Ce pa prihajajo podatki od zunaj cisto asinhrono, je pa lahko velik problem, odvisno od razlike v hitrosti podatkov in hitrosti notranjega clocka. V vecini primerov se to da resiti, 100% pa ni, ker ce imas npr zelo hitro 16-bitno podatkovno vodilo, ne mores za vseh 16 flipflopov znotraj FPGA-ja zagotovit, da bodo v nulo natancno istem casu latch-ali svoj vhod, torej bi lahko prebrali napacne podatke, to se pa ne da resit tudi s sinhronizacijskimi flipflopi.
LP!
|
|
Nazaj na vrh |
|
|
andrej_s51mo Neznanec
Pridružen-a: Čet 29 Maj 2014 9:05 Prispevkov: 2 Aktiv.: 0.02
|
Objavljeno: Pon Jun 02, 2014 1:22 pm Naslov sporočila: |
|
|
///// ******** leto in pol kasneje *******************////
Si preveril ali ti vhod "zazvoni" pri spremebah stanja in fpga prebere več stanj?
|
|
Nazaj na vrh |
|
|
Dorijan Član
Pridružen-a: Ned 22 Jun 2008 10:48 Prispevkov: 2481 Aktiv.: 12.87 Kraj: južnoprimorska
|
Objavljeno: Pon Jun 02, 2014 1:34 pm Naslov sporočila: |
|
|
Poženi v FPGAju post-map simulation in boš videl kaj se dogaja v FPGAju pri "istočasni" spremembi nekaj bitnega vodila.
Ni veliko ampak tako zgleda znotraj FPGAja prehod stanj na 8bitnem portu, pa predstavljaj si kaj se bo dogajalo na tem prehodu v asinhronem vezju.
Opis: |
|
Velikost datoteke: |
3.36 KB |
Pogledana: |
16030 krat |
|
_________________ Če nekaj deluje, razstavi in ugotovi zakaj. |
|
Nazaj na vrh |
|
|
trot Član
Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1270 Aktiv.: 6.04 Kraj: glej fogl
|
Objavljeno: Tor Jun 03, 2014 2:43 pm Naslov sporočila: |
|
|
To sem potem rešil tako kot je predlagal chaos in potem ni bilo več problemov. Končni rezultat je bil krmilnik linearnega servomotorja in ta sedaj dela brez problema - klik
_________________ lp, Klemen |
|
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: 74 dni
Powered by phpBB © 2001, 2005 phpBB Group
|