waarom vaak "omgekeerde" logica

trix

Golden Member

hallo,
een beetje meer een algemene digitale vraag.
het valt mij op dat er vaak een 1 staat waar je een 0 verwacht en andersom. als concreet voorbeeld:

als een geheugen (RAM) leeg is verwacht ik als leek allemaal 0'en maar er staan allemaal 1'en.

dit is een beetje tegen je "natuurlijke" denkwijze" in.
heeft dit iets te maken met het fysieke gedeelte van een chip, of geeft dit programeer voordelen ?

eigenwijs = ook wijs

Een Flash bevat FF als ie leeg ge-cleared is. En dat komt door z'n interne structuur ja. Bij een RAM is dat normaal niet zo. Op zich boeit het ook helemaal niet want zodra je het gaat gebruiken staat er wat je wilt. Het stuk dat je niet gebruikt mag random data bevatten want je gebruikt het immers toch niet.

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

Voor sommige toepassingen zit er een voordeel in.
Indien nodig kan je er de volgende betekenis aan toekennen:
0x00 = 0
0x01 = 1
0x02 = 2
..
..
..
0xFE = 254
0xFF = nooit gebruikt, waarde onbekend.
Dit is vooral bij initialisatieroutines handig.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Hoe meer logische 1-en het geheugen bevat, hoe lager het energieverbruik, doordat de rustroom (quiescent) die door elke cel stroomt iets lager is.

RES

De inhoud van een ram is inderdaad random bij opstarten...
Bij de e(e)prom en flash is het omgekeerd, omdat het met de eprom nu eenmaal ooit zo begonnen is door de opbouw van de cellen.

[Bericht gewijzigd door Arco op 8 juni 2019 22:12:56 (56%)]

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

@RES,da's onzin. Dat hangt volledig van de gebruikte technologie af. Zal voor sommige geheugens wel zo zijn, maar voor andere weer net niet.

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

Op 8 juni 2019 21:48:20 schreef Arco:
De inhoud van een ram is inderdaad random bij opstarten...

Niet helemaal, de inhoud is ongedefinieerd, random zou betekenen dat het volledig onvoorspelbaar is, en bruikbaar om bijvoorbeeld cryptografische sleutels mee te genereren.

Welke staat je 1 noemt en welke 0 is in mijn beleving arbitrair, dus ze hadden die ook kunnen verwisselen, waarmee gewist dus altijd 0x00 zou zijn, in plaats van 0xFF.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Als je een RAM chip aanzet, heb ik in een heel ver verleden wel eens gekeken naar de inhoud. Je ziet bij sommige chips correlaties met adres bitjes. Welke dat zullen zijn hangt van de specifieke chip af.

Voor een "chip select" lijn wordt vaak voor laag-actief gekozen. Ik denk dat de oorsprong hier in de jaren 60 en 70 ligt, omdat ze toen een signaal beter en sneller laag konden maken dan hoog. Dus als je de ram chip wilt selecteren opdat ie data gaat ophalen voor je, dan is het zaak dat ie zo snel mogelijk nadat je het startsein hebt gegeven gaat beginnen. Mocht je daarna de ROM chip activeren dan is het afschakelen van de RAM chip niet zo belangrijk en als dat een paar nanoseconden langer duurt, niet zo'n probleem: Je zit toch op de ROM chip te wachten.

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

Een ram kun je niet wissen. Die heeft altijd data, en de betekenis van die data hangt af van de software die de data interpreteert. Dat kan zomaar voor elke byte weer anders zijn.

Flash en eprom kun je wel wissen, soms per sector, soms per byte, soms per chip. Alle gewiste bits komen dan in een bekende positie, meestal '1'. Bij het schrijven kun je dan alleen bits veranderen van '1' naar '0', maar niet andersom. Van '0' naar '1' kan alleen dmv een erase commando of met UV belichting.

Op 9 juni 2019 13:32:12 schreef deKees:
Een ram kun je niet wissen.

Volgens mij wist een ram zichzelf als je de voedingsspanning uitschakelt.

Dat hangt van de definitie van woorden als "leeg" en "gewist" af.
Ik zeg dat het ram leeg is na:

code:


for (i=0;i<MAX_RAM;i++)
   ram[i] = 0;
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

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