Kysymys:
Miksi reunan liipaisu on suositeltavampi kuin tason liipaisu?
avi
2013-04-13 09:18:24 UTC
view on stackexchange narkive permalink

Yritän ymmärtää, miksi reunan liipaisu on suositeltavampi kuin tason liipaisu. Kirjassani sitä ei selitetä selkeästi. Haettuani verkosta sain tietää, että reunan laukaisu on epäherkkä häiriöille, kun taas tason laukaisu on herkkä. Mitä se tarkoittaa?

En myöskään pysty ymmärtämään seuraavaa: "Jos kello on tasoherkkä, uusi \ $ Q_n \ $ voi syöksyä logiikkaverkon läpi ja muuttaa tulosta. Tämän välttämiseksi tarvitsemme lyhyen pulssi tuloksen sieppaamiseksi ja pitämiseksi vakiona. Mutta tällaista lyhyttä pulssia ei ole helppo luoda, joten käytämme reunan laukaisua. Palauteongelma ratkaistaan, koska uudella lähdöllä ei ole riittävästi aikaa palata takaisin tuloon tietyn ajan kuluessa. yksi nouseva reuna "

En ymmärtänyt, miksi lähtö ei kiirehdi tason laukaisussa ja miksi tarvitsemme lyhyen pulssin tuotoksen pitämiseksi.

Toiseksi, palauteongelma, koska tason laukaisun kesto on pitkä verrattuna reunan laukaisuun, edellisen tapauksessa lähtö syötettäisiin takaisin takaisin tuloon ja se jatkaa tätä niin kauan kuin kello on aktiivinen. Mikä on palauteongelma?

Mutta miten se ratkaistaan ​​reunan laukaisussa? Jos putoamisen tai nousun aika on hyvin lyhyt, kuinka tuotos pystyy etenemään kaikkien porttien läpi? Onko se, kun reunan liipaisu on käytössä, lähtö etenee kaikkien porttien läpi ja seuraavat tulot otetaan huomioon vain seuraavalla kellon reunalla?

"kun reunan liipaisu on käytössä, lähtö etenee kaikkien porttien läpi ja seuraavia tuloja pidetään vasta seuraavalla kellon reunalla" - bullseye !!
Viisi vastused:
Kaz
2013-04-23 00:12:30 UTC
view on stackexchange narkive permalink

Vaikka reuna on hyvin määritelty ajankohta, ei ole totta sanoa, että tason käynnistämisellä ei myöskään ole tarkasti määriteltyä ajanhetkeä. Se tekee. Kellon taso laskee, kun kellon taso laskee, on tarkoin määritelty hetki, kellotetun piirin tuloista otetaan näytteet, eikä tulojen muutoksia voida enää hyväksyä.

Tason laukaisussa on kyse siitä, että kun kellotaso on korkea, tulot muuttavat lähtöjä. Piireissä, joissa on palautetta (lähdöt kytketään takaisin sisääntuloihin), tason laukaisu aiheuttaa kaaosta, koska taso on riittävän leveä (puoli kellojaksoa), jotta lähtö voi syöttää takaisin tuloihin saman ajanjakson aikana.

Joten siihen mennessä, kun tarkasti määritelty hetki tapahtuu, kun kello laskee ja jokaisen laitteen on tarkoitus ottaa tilannekuva ja pitää se tilassa, kunnes seuraava taso on, kaaos on jo tapahtunut ja piirit ovat arvaamattomissa tiloissa. Tätä ei voida hyväksyä. Peräkkäisissä piireissä haluamme, että kellojakson \ $ t \ $ tuotokset otetaan huomioon vain kellojakson \ $ t + 1 \ $ tilojen laskemisessa. Haluamme myös mukavan ominaisuuden, jonka voimme hidastaa kelloa, eikä meillä ole peräkkäistä virrankatkaisua. Tason laukaisussa kellon hidastaminen toimii meitä vastaan. Mitä enemmän hidastamme kelloa, sitä enemmän aikaa annamme rajoittamattomalle palautteelle.

Ensimmäinen ilmeinen ratkaisu, joka ehdottaa itsensä lyhentävän tasoa siihen pisteeseen, että ei-toivottua palautetta on mahdotonta (ja pitää "päällä" -taso lyhyenä, vaikka hidastaisimme mielivaltaisesti kellojaksoa). Oletetaan, että pulssimme kelloa 0: sta 1: een ja takaisin 0: een niin nopeasti, että kellotetut laitteet hyväksyvät tulonsa, mutta lähdöillä ei ole tarpeeksi aikaa juosta takaisinkytkentäsilmukan läpi näiden tulojen muuttamiseksi. Tämän ongelmana on, että kapeat pulssit ovat epäluotettavia ja vaativat periaatteessa vastausta, joka voi olla useita suuruusluokkia nopeampi kuin kellotaajuus. Saatamme huomata, että tarvitsemme pulssin, joka on nanosekunnin leveä, vaikka järjestelmä toimii vain 1 Mhz: llä. Joten silloin meillä on ongelma jakaa puhtaita, teräviä, riittävän korkeita nanosekunnin pituisia pulsseja väylälle, joka on suunniteltu 1 Mhz: lle.

Seuraava looginen vaihe on sitten saada laitteet tuottamaan kapea pulssi itseään kellon reunan aikajohdannaiseksi. Kun kello siirtyy tasolta toiselle, laitteet itse voivat luoda sisäisesti lyhyen pulssin, joka aiheuttaa tulojen näytteenoton. Meidän ei tarvitse jakaa tätä pulssiä itse kelloväylän kautta.

Joten voit pohjimmiltaan pitää kaiken lopulta tason laukaisemana. Reunan liipaisu on temppu, jonka avulla laitteet voivat luoda erittäin hienon tason liipaisimen, joka on nopeampi kuin kaikki ulkoiset takaisinkytkentäsilmukat, jolloin laitteet voivat hyväksyä tulot nopeasti ja sulkea sisäänkäynnin ajoissa, ennen kuin niiden muuttuvat lähdöt muuttavat tulojen arvoja .


Voimme myös tehdä analogisen "aktivointisignaalin" (tason laukaisema kello) ja veneen oven, joka pitää ilmanpainetta, välillä. Tason laukaisu on kuin oven avaaminen, jolloin ilma pääsee poistumaan. Voimme kuitenkin rakentaa ilmalukon, joka koostuu kahdesta (tai useammasta) ovesta, jotka eivät ole auki samanaikaisesti. Näin tapahtuu, jos jaamme tason kellon useaan vaiheeseen.

Yksinkertaisin esimerkki tästä on isäntä-orja-kiikku . Tämä koostuu kahdesta tason laukaisemasta D-varvastossusta, jotka on kaskadoitu yhteen. Mutta kellosignaali on käänteinen, joten toisen tulo on käytössä, kun taas toinen on pois käytöstä ja päinvastoin. Tämä on kuin ilmalukon ovi. Kokonaisuudessaan kiikku ei ole koskaan auki, jotta signaali voi kulkea vapaasti. Jos meillä on palautetta kiikun lähdöstä takaisin tuloon, ei ole ongelmaa, koska se siirtyy eri kellovaiheeseen. Lopputuloksena on, että isäntä-orja-kiikku käyttäytyy reunojen laukaisemana! On hyödyllistä tutkia isäntä-orja-kiikettä, koska sillä on jotain sanottavaa tason ja reunan laukaisun suhteesta.

Tasoherkät monivaiheiset kellot välttävät "kaaos" -ongelman, jos mikään salvan lähtö ei syöty takaisin sisääntuloon käymättä läpi salvan, joka on näytteistetty eri kellovaiheessa. Tällaisilla malleilla voi olla joitain etuja, kun prosessorit liitetään esimerkiksi asynkronisten muistien kanssa, koska yhden kellovaiheen etureunan ja seuraavan takareunan välinen aika voidaan jakaa mielivaltaisesti osoitteen reitittämiseen ja tulostamiseen tarvittavaan aikaan, RAM-muistin aika ja prosessorin tietojen syöttöaika.
@supercat Tuntevana esimerkkinä isäntä-orja-kiikettä voidaan pitää esimerkkinä monivaiheisesta kellotuksesta. Isäntä ja orja ovat vastakkaisissa vaiheissa, joten sama ehto pätee, jos palautetta on: se siirtyy toiseen vaiheeseen. Minun pitäisi lisätä tämä vastaukseen, jotta voin pyöristää sen.
+1 ilmalukon analogia. En ole koskaan kuullut kenenkään selittävän sitä tällä tavalla, mutta se on täysin järkevää.
@ajs410: Toinen analogia, josta pidän, on kellorakenne. Heiluri on kytketty kahteen varteen, joista kukin voi joko sallia pakoputken liikkua vapaasti tai estää sen seuraavalla kerralla, kun se saavuttaa tietyn "vaiheen". Oikean toiminnan varmistamiseksi varret on säädettävä siten, että ei ole aikaa, jolloin molemmat varret antaisivat vaihteen pyöriä. Ilman tätä rajoitusta mekanismi pyöri villisti käsistä.
ajs410
2013-04-23 02:27:25 UTC
view on stackexchange narkive permalink

Ymmärtääksesi, miksi reunan laukaisu on suositeltavaa, kuvittele 8-bittinen summain, joka on kytketty rekisteriin, lisäämällä jatkuvasti 1 rekisterin arvoon, painikkeella, joka on kytketty rekisterin aktivointitappiin.

Jos rekisterin aktivointitappi on tasoherkkä, rekisterin sisältö kasvaa jatkuvasti painikkeen painamisen ajan. Rekisterin seuraava tila ei ole määräävä tietylle painikkeen painallukselle. Tämä johtuu siitä, että summain voi lisätä rekisteriä monta kertaa ennen kuin voit poistaa sormesi - toisin sanoen palaute poistuu rekisteristä ja tekee sen takaisin takaisin summaimeen liian nopeasti.

Jos aktivointitappi oli reuna -herkkä, rekisterin sisältö kasvaisi täsmälleen kerran joka kerta, kun painiketta painettiin riippumatta siitä, kuinka kauan painiketta painettiin (olettaen, että syötteestä ilmoitetaan oikein). Rekisterin tuloksen olisi mahdotonta saada se takaisin summaimeen ajoissa mitään determinististä käyttäytymistä varten.

Olen taistellut noin kahden päivän ajan selvittääkseen / miksi / tarvitsemme reunan laukaisemat piirit.Tämä oli viesti, joka sai minut alkamaan ymmärtää miksi.Kiitos paljon!Ainoa asia, jonka lisäisin, on jotain "deterministisen" osan miksi - toisin sanoen et koskaan pysty luomaan yhtenäistä "lisää yksi" -operaatiota.
supercat
2013-04-22 22:55:35 UTC
view on stackexchange narkive permalink

Reunan liipaisu on hyvä kelloille, koska se sallii salvan antaman vasteen yhdelle (esim. nousevalle) kellareunalle laskettaessa, mitä sen pitäisi tehdä seuraavalla nousevalla kellon reunalla. Jos rakennetaan peräkkäinen piiri, kuten laskuri, käyttämällä useita reunan laukaisemia salpoja, voidaan mielivaltaisesti sekoittaa nopeita ja hitaita logiikkakomponentteja edellyttäen, että jokaisella mahdollisella polulla etenemisaika miinus määrä, jolla vastaanottavan salvan kello viivästyy lähettäjän, taataan olevan suurempi kuin vastaanottimen pitoaika, ja sykliaika plus määrä, jolla vastaanottavan salvan kello viivästyttää lähettäjiä, vähennettynä etenemisajalla, taataan olevan suurempi kuin vastaanottimen asetusaika.

Sitä vastoin piirin rakentaminen laskemaan pulssit yhdelle tulolle käyttämättä reunan laukaisemia salpoja edellyttäisi tiettyjä takuita piirin joidenkin osien suhteellisista nopeuksista. Tavallinen tapa oli muuntaa saapuva kellosignaali (ClkIn) ei-päällekkäisiksi parikellosignaaleiksi (Phi1 ja Phi2). Phi1 on totta, kun ClkIn on korkea ja on ollut korkea jonkin taatun vähimmäisajan ajan. Phi2 on korkea, kun ClkIn on matala ja on ollut matala jonkin taatun vähimmäisaikojen ajan . Kun ClkIn vaihtaa matalasta suureksi, Phi2 laskee matalaksi ennen kuin Phi1 nousee korkealle; samoin kun se vaihtaa korkealta matalalle. Laskurin voisi rakentaa omistamalla kaksi salpajoukkoa (joita kutsun Count1 ja Count2). Aina kun Phi1 on korkea, Count1 lukitsee Count2: n. Aina kun Phi2 on korkea, Count2 lukittuu (Count1 + 1). Jos Phi1 ja Phi2 menisivät molemmat korkealle kerralla tai jos niiden välillä olisi liian vähän aikaa, laskurin arvo muuttuisi määrittelemättömäksi, mutta edellyttäen, että asianmukainen erotus ylläpidetään, laskuri toimii erittäin hyvin. Kaksivaiheisissa kellojärjestelmissä on usein melko runsas määrä erotusta; edellyttäen, että kaikki on tarpeeksi nopeaa, tällaisella erottamisella voidaan välttää kellon vinoutumisongelmat.

Monia reuna-laukaisemia salpoja voidaan ajatella isäntä / orja-pariksi, jotka on kytketty niin, että isäntä salpaa syötteen aina, kun kello on reunaa edeltävässä tilassa, ja orja lukitsee isännän, kun kello on tilassa jälkeen. Kahta salpaa syöttävillä signaaleilla on oltava sopiva suhde, mutta jos ne tuotetaan samassa läheisyydessä kuin salvat, ei tarvitse ylisuunnitella erotuksen määrää melkein niin paljon kuin olisi tarpeen, jos kaksi kellovaihetta lähetetään laajemmalle alueelle.

Huomaa, että vaikka reunan laukaisu on hyvä kelloille, on myös muita tarkoituksia, joihin se ei ole yhtä hyvä. Se on joskus edullista jaksoittaisille tapahtumille keskeytyksiksi edellyttäen, että kahdella tapahtumalla ei ole samaa reunan laukaisemaa signaalia. Reunojen liipaisu on hankalaa jaetuille keskeytyksille, ja joissakin tapauksissa se voi olla ongelmallista myös jakamattomien kanssa, ellei ole tapaa kysyä keskeytysjohdon tilaa. Tason liipaisu voi olla hyödyllistä myös tapauksissa, joissa välähdyssignaali on aktiivinen samalla syklillä kuin jotkut tiedot, jotka tulisi lukita, mutta joissa informaatiolla on pidempi laskentareitti kuin välkkymällä. Jos tiedot ovat jotain asynkronisen muistisirun osoitteen kaltaisia, niiden saattaminen saataville joskus kellojakson aikana voi olla parempi kuin niiden odottaminen seuraavan kellojakson alkuun.

ironstein
2016-03-13 08:47:40 UTC
view on stackexchange narkive permalink

Vaikka muut vastaukset ovat käsittäneet melkein kaiken mitä kysymyksellesi on sanottavaa, olen tehnyt siitä muutaman kaavion ja lyhyen selityksen.

Kuvittele, että haluat suunnitella piirin, joka sisältää jonkinlainen palaute. Sano A = A.B (pohjimmiltaan AND-portti, jolla on palaute). Jos toteutat sen yksinkertaisella tasoherkällä salvalla, joka tallentaa A: n arvon, piiri näyttää tältä tältä. enter image description here

Tämä voi aiheuttaa ongelman. Kun kello on korkea, salpa tulee läpinäkyväksi, ja AND-portti laskee uuden koodin A ja B . Mutta arvo syötetään takaisin salpaan, ja koska salpa on edelleen läpinäkyvä (CLK on edelleen korkea), uusi arvo A AND B lasketaan. Tätä kutsutaan yleisesti kilpailutilaksi , joka luo mainitsemasi häiriöt (odottamattomat ylä- ja alamäet tuloksessa).

Yksi ratkaisu tähän ongelmaan olisi pidä CLK-pulssi hyvin lyhyt, riittävän lyhyt, että kun AND-portin ulostulo on muodostettu, salpa deaktivoidaan ennen kuin arvo syötetään takaisin takaisin tuloon. Sen pitäisi olla intuitiivista ymmärtää, miksi tätä voi olla vaikea saavuttaa. Se riippuu salvan kytkentänopeudesta (lopuksi salpa tehdään myös yhdistelmäportista), langan pituudesta ja sadoista muista parametreista.

Toinen toteutettavissa oleva vaihtoehto on käytä reunaherkkää elementtiä (tässä tapauksessa kiikku), joka on pohjimmiltaan pari salpaa, jotka on kytketty erittäin älykkäästi.

enter image description here

Kun CLK -signaali on korkea, salpa U1 on läpinäkyvä, mikä tuo A-tulon loogisen arvon salvan U1 lähtöön, kun CLK signaali on MATALA, salpa U2 muuttuu läpinäkyväksi ja lasketaan uusi arvo A AND B . Mutta tämä arvo etenee AND-portin sisääntuloon vain, kun salpa U1 muuttuu läpinäkyväksi (CLK on KORKEA) ja sen seurauksena salpa U1 tulee läpinäkyväksi (CLK on LOW). Mikä vastaa pohjimmiltaan sanomista, että piiri on nyt reunaherkkä (lähtöarvo muuttuu vain kellon negatiivisella reunalla).

Tämä välttää kilpailutilanteen ongelman selityksen aikaisemmin, ja siksi tason liipaisu on suositeltava reunan laukaisuun verrattuna.

Kiitos!Ensimmäisessä esimerkissä ongelmana on, että ne ovat silmukka: Kun ensimmäinen AND on laskettu, se menee A: han ja tallennetaan salpaan, ja salpa syöttää sitten uuden syötteen AND-porttiin, joka menee kohtaan A ja tallennetaan salpaan, ja salpa sitten ... kuinka kauan kellosykli on?
quantum231
2013-04-22 21:24:07 UTC
view on stackexchange narkive permalink

Kuten muutkin sanoivat, reuna on hyvin tarkka hetki. Tiedämme kaikki, että digitaaliset piirit voivat käydä läpi häiriöitä, joissa portin lähtö on väärä, koska vain muutama sen tulo on saavuttanut sen, muut signaalit ovat matkalla ja vievät kauemmin pidemmän polun takia (sähkö kulkee melko nopeasti mutta silti 3x10 ^ 8 m / s vie vähän aikaa langojen kiertämiseen). Jos meillä on taso-ohjattava yksikkö, sen tuotos tapahtuu häiriöillä. Kun asiat saadaan aikaan reunan laukaisemana, meillä on hyvin kapea ikkuna ajassa, jossa "asioita voi tapahtua", toisin sanoen piiri muuttaa tilaansa (piirin sisällä olevien eri johtimien arvot, mukaan lukien lähtö) vain tietyissä tarkasti määritellyissä tilanteissa aika. Huomaa lause "hetkessä ajoissa" alaspäin, koska tämä määrittelee varvasista koostuvan peräkkäisen piirin käyttäytymisen.

Tässä vaiheessa et tiedä jotain, jota kutsutaan "ajoitusanalyysiksi", mutta selitän vähän. Kun teemme digitaalisia piirejä, haluamme simuloida niitä nähdäksemme, miten he käyttäytyvät ja sopiiko tämä käyttäytyminen haluamallemme tavalla. Ajastusanalyysissä tarkistamme, pystyvätkö signaalit saavuttamaan tietyn piirin kohdan vaaditun ajan kuluessa. Jos ne viivästyvät liikaa, piiri ei toimi oikein. Käyttämällä reunan laukaisemia piirilohkoja tason laukaisemien sijasta, ajoitusanalyysi tulee erittäin helpoksi, koska tiedämme tarkalleen milloin piirissä voi tapahtua asioita. Tämä tarkoittaa, että myös piirin suunnittelu helpottuu. Muista, että todellisessa maailmassa kohtaat hyvin harvinaisia ​​liipaisimia.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...