Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 09 19, 01:25. Visos datos yra GMT + 2 valandos.
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
Situacija tokia:
yra signalai A ir B. Jie abu gali būti tiek "1" tiek "0". Ko negali būti, tai abu vienu metu nebūna "1", visi kiti variantai (00 01 10) galimi.
Kaip užfiksuoti bet kurio iš signalų būsenos pasikeitimą?
Pasikeičiant bet kurio iš signalų būsenai turėtų išeiti vienas impulsas.
Pvz.: pradžioje A=1, B=0; po to A pasidarė 0. Išėjime turi atsirasti vienas impulsas, o ne pasikeisti išėjimo būsena.
Reikia loginės schemos...
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life!
Šitas variantas praeitų, jeigu pradinė būsena visada būtų vienoda (00 arba 01), bet jinai gali būti 00 01 10...
Iš esmės tai tiktų ir variantas, kad išėjime atsirastų priešingos reikšmės signalas pasikeitus bent vienam iš įėjimų, bet visada vienodai, pvz. default'e išėjime "0", pasiketus vienam iš įėjimų jis tampa "1". Tokį gautą rezultatą galima nesunkiai nuresetint išoriniu ckock'u. Po reset'o išėjime turim "0", bet pasikeitus vienam iš įėjimų, išėjime vėl turi iššokt "1".
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life!
jei reikia eliminuoti "neteisinga" busena 11 tai kaip minejo kolega, pradzioje apjungi OR, paskui XOR su to paties signalo delta
jei visgi reikia sugauditi abieju iejimu pasikeitimus, net jei jie pasidarytu 11 -
abu iejimai po savo XOR su to paties signalo delta
XOR isejimus apjungi OR arba AND, priklausomai ar invertuotas XOR
signala uzlaikyti gali RC grandinele, pvz TTL tinka 100om + 100p iki virs 5MHz
RC grandines gali pakeisti keletu nuosekliai jungtu loginiu elementu.
abu iejimai po savo XOR su to paties signalo delta
...............................
Galima plačiau? Ta prasme, kas ta "delta"?
Jei gerai supratau, iėjimą išskirt, viena atšaka tiesiai į XOR, kita per kažkokį užlaikymą? Toks variantas kaip ir tiktų, bet reikia apseit be RC, padaryt reikia vien logika.
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life!
Gal ir ne į temą, bet kodėl nepanaudoti mikrovaldiklio, kokio nors ATtint4 ar PIC10F200? Kainuoja kaip logika, o plokštės vietą taupo. Nebent įtin didelės spartos reikia. . .
....................
Kas turi būti išėjime, jei tokia kombinacija (11) pasitaiko ? ...........
Neįmanoma tokia būsena.
Sauliucka rašo:
....................
p.s. O nafiga tau to reikia ? Aš ne smalsus, bet man kažkaip įdomu - kam ? Rolling Eyes...........
stebėti ar judinamas optinis encoder'is. Encoder'is dekoduojamas keliais loginiais elementais. Išėjime "up" ir "down" impulsai.
Šitoj vietoj reikia "pagauti" kada pajudintas encoder'is. Esmė ta, kad optinis (priešingai nei mechaninis) neturi tų sustojimo "duobučių" ir sustoti gali bet kurioje būsenoje (mechaninio duobutėse abu "0" būna). Taip gaunasi, kad už dekodavimo schemos galimi 3 variantai: 00 01 10.
Reikia, kad ranka pasukus encoder'į (pasikeitus "up" arba "down" būsenai) gautūsi vienas impulsiukas.
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life!
Gal ir ne į temą, bet kodėl nepanaudoti mikrovaldiklio, kokio nors ATtint4 ar PIC10F200? Kainuoja kaip logika, o plokštės vietą taupo. Nebent įtin didelės spartos reikia. . .
O kas sakė, kad lituosiu iš loginių mikrių, ar kad man plokštės vietos daugiau prireiks?
Čia viskas vyks cpld viduje, todėl RC atkrenta.
Taip pat atkrenta užlaikymo linijos iš loginių elementų, nes kaip supratau, ten kompiliuojant išmeta bereikalingai įdėtus komponentus
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life!
Turbut galeciau sugalvot kanors labiau optimizuoto, bet pirma mintis i galva yra edge detector'ius su dviel flip flopais ir dvieju state'u state machine. Pirmame detektuoji fronta, antrame state generuoji impulsa.
Na va: popieriaus lapas + tušinukas išsprendė problemą
Jei kam įdomu:
- nuo įėjimų 3vnt lygiagrečiai sujungtų dvigubų OR, dviems iš jų invertuota po vieną įėjimą.
- iš šitų OR eina 3 signalai į trijų D trigerių clk įėjimus. Trigerių D įėjimai į "1"
- trigerių išėjimai sumuojasi vienu trijų įėjimų OR
- trigubo OR išėjimas tai išėjimas ir asinchroninis trigerių resetinimas
Impulsiukas gaunasi vienas, trumpas (~10ns), bet pagaunamas
Ačiū bandžiusiems padėti
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life!
Padarei taip, kaip rekomenduojama nedaryti, t.y. panaudojai paprasta signala kaip taktini... Na bet jei tau veikia ir gerai, tai valio Su kitu CPLD gali jau ir nebeveikti.