waarom vaak "omgekeerde" logica


negatieve logica is er al héél lang, en dateert al van voor de emproms en dergelijke er kwamen.

Oorsprong zit hem in het feit dat je met één buis of transistor makkelijker een nor of een nand maakt. Ooit was dat belangrijk. (gezien het verbruik en afmetingen). Zoek maar eens op RTL logica of de norbit.

Dat is nog steeds belangrijk. Stel je kunt in een IC met 10^6 flipflops, elke FF met 1 transistor minder bouwen, dan scheelt dat best. Oppervlak=kostprijs.
Nou lijkt de term "negatieve logica" hier vooral te gaan over geheugen, en da's eigenlijk een ander mechanisme.
[edit] oh, "omgekeerde logica" heeft de TS het zelfs over.

[Bericht gewijzigd door flipflop op 9 juni 2019 18:21:55 (10%)]

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
trix

Golden Member

dan heeft het eigenlijk vooral een fysieke oorsprong, en in veel mindere mate een programeer voordeel.

eigenwijs = ook wijs

Voor de programmeur maakt het niks, nada, 0.0 uit. Hoe had het verschil moeten maken dan volgens jou?

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Je kunt wel meer verklaringen bedenken. Sommige logica heeft een sterkere 'sink' dan 'source' stroom, en als je dan bijvoorbeeld een LEDje wil aansturen doe je dat tussen de positieve voeding en de uitgang van je chip. Dan moet die wel een '0' zijn om de LED aan te zetten, dit gebeurt nog redelijk veel. Het heeft te maken met het feit dat elektronen mobieler zijn dan gaten, en NPN transistoren en N-FETs een voordeel hebben tegenover hun complementen. Er zullen vast nog wel meer en betere argumenten bestaan tegenover complementaire logica, maar het is in feite arbitrair.

Op 9 juni 2019 19:31:41 schreef trix:
dan heeft het eigenlijk vooral een fysieke oorsprong, en in veel mindere mate een programeer voordeel.

Yep,en vooral in de beginne maakte dat een reuze verschil. Computers waren toen reusachtig en als plaats en onderdelen kan besparen door negatieve logica (wat jij omgekeerde logica noemt) toe te passen, waarom niet. men wisselde ook wel tussen positieve en negatieve logica, naargelang het uitkwam op onderdelen besparen..

Jij interpreteert de vraag alsof ie negatieve logica bedoeld. De term die TS gebruikt lijkt erop. Echter, als ik de vraag lees heeft dat niets met negatieve logica te maken. Het gaat over geheugen inhoud, waarom dat soms FF is en soms 00, of willekeurig. Dat staat volledig los van het fenomeen negatieve logica.
Negatieve logica: 5V = '0', 0V = '1' (of zelfs negatieve spanningen kan ook geloof ik)

[Bericht gewijzigd door flipflop op 10 juni 2019 09:02:58 (12%)]

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 10 juni 2019 09:01:10 schreef flipflop:
Jij interpreteert de vraag alsof ie negatieve logica bedoeld. De term die TS gebruikt lijkt erop. Echter, als ik de vraag lees heeft dat niets met negatieve logica te maken.

omdat er een verband is. Had men positieve logica verkozen,dan zou een leeg geheugen 00 00 geven ipv FF FF,..

Nee. Het kan best zijn dat een geheugen met "signaal hoog" opkomt als de power er op gezet wordt. Je kan zeggen: "het signaal is toch nul als ie uitstaat, waarom zou dat 1 worden als de power er op gaat?". Right. Maar gewoon voor de leuk, ik heb mijn ramchipje aan de 5V hangen, maar hij staat uit: de GND van het chipje hangt los. Alle opslag bitjes staan op 5V, dus "1". Nu sluit ik ineens de GND aan. Vanuit het Ram chippie is er geen verschil. De bitjes willen net zo graag bij de +VCC rail blijven als bij de GND rail. Een voorkeur kan van de technologie afhangen, maar heeft niets met een specifieke keuze voor "negatieve logica" te maken.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Kris, het kan toch ook niet zo zijn dat bv de huidige Flash architecturen gebaseerd zijn op keuzes die men 50 jaar geleden maakte? Tegenwoordig zijn andere factoren 1000x belangrijker: snelheid, power, chip-oppervlak (en dus kosten), ... Die factoren bepalen de architectuur en dus de stand waarin het geheugen opkomt.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Op 10 juni 2019 10:09:46 schreef flipflop:
Kris, het kan toch ook niet zo zijn dat bv de huidige Flash architecturen gebaseerd zijn op keuzes die men 50 jaar geleden maakte?

uiteraard niet, en dat beweer ik ook niet :-) gaat niet over de architectuur, maar wat als "0" beschouwd wordt aan de uitgang . en das FF. met een invertor meer (of minder) in de uitgangsbuffer van de RAM/EPROM/EEPROM was het net andersom..
toen die geheugens er kwamen was de negatieve logica al ingeburgd. De reden in die periode was niet meer dezelfde dan in de jaren60. Met de komst van TTL poorten gebruikte men liever geen mix van or,and,nor,nand, zelfs al was er een poortje meer nodig. Met enkel nand kan je alles.

trix

Golden Member

Op 10 juni 2019 09:01:10 schreef flipflop:
Jij interpreteert de vraag alsof ie negatieve logica bedoeld. De term die TS gebruikt lijkt erop.

nee ik bedoelde inderdaad negatieve logica,....die term kwam toen even niet bij mij op :+

eigenwijs = ook wijs

E(eprom heeft niets met omgekeerde of negatieve logica te doen...
Enige wat speelt is dat de default state van een e(eprom cell na wissen '1' is, en niet '0'.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 10 juni 2019 18:33:40 schreef trix:
[...]

nee ik bedoelde inderdaad negatieve logica,....die term kwam toen even niet bij mij op :+

zat ik toch op het goede spoor.

denk nog even na over het volgende: een OR is een OR voor de nullen maar werkt als (N)AND voor de enen. Een AND was moeilijker te maken, maar evenzeer gewenst. Aangezien je van een OR een AND kan maken door het zaakje om te keren.. de rest is geschiedenis.

@Arco: de E(eprom)cel heeft op zich inderdaad niets met negatieve logica vandoen, maar men brengt ze ongeacht of een lege cel op celniveau 0 of 1 is, wel als een 1 naar buiten.

Voor mij is negatieve logica iets heel anders. Heeft niets te maken met de toestand van een gewist geheugen maar alles met logica.

Positieve logica:

code:


if (Pin1 == HIGH)
{ ..
}

Negatieve logica:

code:


if ( ! Pin1 == LOW)
{ ..
}

Beide ifs doen precies hetzelfde maar om een of andere reden zie ik de tweede veel vaker en dat kan erg ingewikkeld worden als er meerdere condities worden gecombineerd.

Op 10 juni 2019 19:45:39 schreef deKees:
Negatieve logica:

code:


if ( ! Pin1 == LOW)
{ ..
}

Dit zie ik ook veel te veel. Wat een ramp is dat. Het ontaardt meestal in een onbegrijpelijke brei code. Vooral als er ook nog kwistig met haakjes en accolades rondgestrooid wordt.
Ruim 40 jaar terug was bij mij op het werk 0V een logische "1" en -24V een logische "0". Alle logica werd toen gebouwd met (soms germanium) transistoren, weerstanden, dioden en condensatoren. Tijden werden ingesteld met potentiometers en tantaalcondensatoren. De "clock"-frequentie was 50Hz.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Op 10 juni 2019 19:45:39 schreef deKees:
Voor mij is negatieve logica iets heel anders. Heeft niets te maken met de toestand van een gewist geheugen maar alles met logica.

Juistem. Dat memory zet het hele topic op scherp. Heeft niks met pos/neg.logica te maken.
En je code snippet heeft ook niks met neg.logica van doen, sorry :-) Nogmaals, neg logica is alleen de codering van '0' en '1'. Wat noem je wat. Daar zal kris wel gelijk hebben, als je het slim kiest kun je met minder hardware toe.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Hoe zou je dit soort if construkties dan noemen?

Hoe zou je dit soort if construkties dan noemen?

We zien steeds meer dat de betekenis van allerlei termen mee verandert met de context.

Dus dan kun je 'negatieve logica' in een software context aanders definieren dan 'negatieve logica' in een hardware context.

Spanning in de bioscoop heeft ook niks te maken met spanning op een stopcontact.

Negatieve logica is voor mij logica die niet (goed) werkt... ;)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
EricP

mét CE

Manager-logic? :)

Wat TS natuurlijk bedoelt is dan in zijn beleving een logische 'true' een 1 of een hoog spanningsniveau zou moeten betekenen. Als je iets 'aan' zet, zou je er dan een '1' naar moeten schrijven.
Zeker bij fuses, is het nog wel eens andersom: als de bit clear is, dan is de functie 'actief' (in ene poging het eenduidig te verwoorden).
Maar het is ook niet ongebruikelijk om een (low power)LED aan een 8051 bijvoorbeeld aan de '+' te hangen. Je moet dus de betreffende output pin laag trekken om er licht uit te krijgen. En er dus een '0' naar schrijven.

We zijn inderdaad gewend geraakt dat fabrikanten de uitgangsstroom van de microcontrollers "symmetrisch" maakt (de uitgangen kunnen dan even goed sourcen als sinken), maar in werkelijkheid hebben NPN/N-kanaals transistoren betere geleidingseigenschappen, dus de meeste logica kan beter sinken dan sourcen, en dan heeft het zin gebruikers zo aan te sluiten.

Maar omdat de P-FETs groter en lomper moeten zijn (zo'n 5x als ik het goed heb) om de prestaties van de N-fet te benaderen, kan ie eventuele warmte over een groter oppervlak dissipieren dan z'n N-broertje... :-)

Tip: niet moeilijk over doen. Doe alsof het symmetrisch is. Dus als je happy wordt van postieve logica, maak dan gewoon hoog = led aan.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 16 juni 2019 10:47:13 schreef deKees:
Hoe zou je dit soort if construkties dan noemen?

Jouw voorbeeld van negatieve logica zou ik "krom programmeren" noemen. Je doet nl precies hetzelfde in beide gevallen. Je hebt nog het geval waarin je een pin test of ie '0' is waarbij er dan iets actief is. Bv een chip-enable van een memory, of het voorbeeld vd led hierboven. Dan heet zo'n signaal "laag-actief". Maar geen negatieve logica.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein