Toon posts:

Programma dat zelf binare logica ontwerpt

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben op zoek naar een programma dat zelf een logische schakeling kan bouwen op basis van bepaalde overdrachtsregels die ingegeven worden.

Er is sprake van een 'black box' men N inputbits en M outputbits. De relatie tussen input en output wordt beschreven door een bepaalde matrix.

Ik ben benieuwd of zoiets mogelijk is. Alvast bedankt.

  • osx
  • Registratie: Mei 2004
  • Laatst online: 11-02-2025

osx

Als N en M redelijk klein is (zeg kleiner dan 8 ) zou je alles in een ouderwetse eprom kunnen zetten. Dan hoef je alleen je matrix uit te lezen en in een hexeditor oid te plaatsen. Je input lijnen worden op de adreslijnen aangesloten en bepalen zo wat uitgelezen moet worden, de inhoud ervan ervan is je output en staat op de datalijnen.

Misschien te simpel gedacht. Kan TS misschien aangeven hoe groot die matrix en/of een voorbeeld geven voor de duidelijkheid.

Verwijderd

Topicstarter
N = 6 en M =4. De tabel zelf is opgebouwd als volgt:

Stel x1,..,x6 zijn de N inputbits. Als x1x6 = 01 en x2x3x4x5 = 0110 dan wordt y1y2y3y4 (de output) gegeven door de 1e (01) rij en de 6e (0110) kolom van de matrix, die 4 x 16 is.

Het doel is dus om deze matrix in logica te vatten. Voor 1 of 2 kolommen lukt dit nog wel (uit het hoofd) maar daarna wordt het erg moeilijk.

  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 27-08 15:41
Waarom een matrix?

Het is en blijft een simpele geheugenbank van 2N regels en M kolommen.

De inputbits bepalen dus welk woord (regel) er wordt geselecteerd.

vb..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Adres (N)       Waarde (M)
============    =======
0 0 0 0 0 0  -> 0 1 0 1
0 0 0 0 0 1  -> 1 0 1 0
0 0 0 0 1 0  -> 1 1 0 0
.
.
.
0 0 1 1 1 1  -> 1 1 0 1
0 1 0 0 0 0  -> 0 0 1 0
0 1 0 0 0 1  -> 1 0 1 1
0 1 0 0 1 0  -> 1 1 1 1
.
.
.


01 en 0001 wordt dus 010001 geeft als waarde 1011 :)

[ Voor 18% gewijzigd door Xiphalon op 14-09-2004 12:51 . Reden: iets duidelijker voorbeeld, N2 -> 2N ]


Verwijderd

Topicstarter
darkmage schreef op 14 september 2004 @ 12:49:
....

01 en 0001 wordt dus 010001 geeft als waarde 1011 :)
01 en 0001 zou 000011 worden want x1 en x6 bepalen het rijnummer en x2..x5 het kolomnummer.

Maar enig idee hoe ik dit naar logica zou kunnen vertalen?

Voorbeeld. De vier inputwaarden (x1..x6) die 0001 als output opleveren zijn:

010000
011001
110010
101011

Dit is gemakkelijk in logica te vatten (een paar OR en NOT poorten). Maar er zijn nog 15 x 4 andere mogelijkheden voor (x1..x6) die 0010, 0011, ... , 1111 opleveren. Dit is m.i. niet meer te doen uit het hoofd.

Verwijderd

move CME > SA

  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 27-08 15:41
Wat je het beste kan doen (volgens mij, heb het lang niet meer gedaan, tegenwoordig doe ik alles met een LUT (look-up-table, dus stuk geheugen zoals ik al liet zien)) is zo'n tabel maken.
Daarna stop je die in excell ofzo en sorteer je per kolom (dus eerst de 1e, dan de 2e etc), en kijk je wat het gevolg is in de resultaatlijst. Vaak zie je toch wat patronen ontstaan als je alle sorteercombinaties uitprobeerd.

Voor de rest -> tellen en proberen.

Vaak helpt het als je eerst een resultaatkolom maakt, dan de 2e erbij, en dan de 3e.

[edit]
waar is het eigenlijk voor? misschien dat je het probleem van de verkeerde kant aanpakt... Zelf kom ik dit soort dingen alleen tegen bij ingewikkelde FPGA's...

[ Voor 15% gewijzigd door Xiphalon op 16-09-2004 16:50 ]


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 27-08 17:04

Super_ik

haklust!

op school hadden wij er wel programmatjes voor, k zal morgen een kijken hoe ze heettee...

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 27-08 15:51

Janoz

Moderator Devschuur®

!litemod

Dat kun je zelfs met de hand nog wel uitschrijven. Dat heb ik zelf nog wel eens gedaan voor een digit. Deze kreeg een 4 bits getal binnen en had 7 uitgangen (7 ledjes van een cijfer display). Gewoon uitschrijven voor elke output voor welke combinaties deze hoog is. Overal waar deze onafhankelijk is kun je die bit negeren.


VOORBEELDJE:

Het bovenste horizontale ledje staat aan bij de volgende waarden:
0-0000
2-0010
3-0011
5-0101
6-0110
7-0111
8-1000
9-1001

Eerste iteratie:
0000 -> !1 ^ !2 ^ !3 ^ !4
001x -> !1 ^ !2 ^ 3
0101 -> !1 ^ 2 ^ !3 ^ 4
011x -> !1 ^ 2 ^ 3
100x -> 1 ^ !2 ^ !3

[ Voor 31% gewijzigd door Janoz op 16-09-2004 17:00 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • 12_0_13
  • Registratie: April 2004
  • Laatst online: 12-02 13:19
Voor elk bit aan de output kant schrijf je dit:

y1 = (x1 AND x2 ..... ) OR (NOT x1 AND x2) OR (.... )

dit werkt iig

Verder kan je natuurlijk bepaalde dingen optimaliseren, door middel van (automatisch) herschrijven van bovenstaande logica regels.

edit1:Ah.. er schiet me iets te binnen. Dit automatische kan doormiddel van Karnaugh maps !! (leer je bij een eerste jaars techinsche informatica vak). Google maar eens :)

edit2: Ach ik ben in een goeie bui:
http://www.seas.upenn.edu/~cse370/cse372/manual/node2.html

edit3: is dit stiekem misschien niet iets meer voor p&w ??

edit4: het kan niet op:
http://maui.theoinf.tu-il...naugh/embed_karnaugh.html
(klik op engels ;) )

[ Voor 53% gewijzigd door 12_0_13 op 16-09-2004 17:20 ]


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 27-08 17:04

Super_ik

haklust!

k weet nu hoe t heet: minilog, eens ff kijken of t ook ergens te downloaden is :)

tadaa: programma en manual, hier gevonden. :)

[ Voor 58% gewijzigd door Super_ik op 17-09-2004 13:49 ]

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Verwijderd

Topicstarter
Iedereen hartelijk bedankt voor de reacties! Ik was een paar dagen op vakantie, vandaar dat ik niet eerder gereageerd heb.
darkmage schreef op 16 september 2004 @ 16:48:
waar is het eigenlijk voor? misschien dat je het probleem van de verkeerde kant aanpakt... Zelf kom ik dit soort dingen alleen tegen bij ingewikkelde FPGA's...
Het gaat om de S-boxen van het DES encryptie-algoritme. Ik had van het weekend wat over DES gelezen en ik kan maar niet begrijpen waarom de S-boxen van DES niet in logische termen te beschrijven zouden zijn (volgens de auteur).

Voor meer info over DES (zie pagina 69 t/m 71 voor de S-boxen):

Hoofdstuk 3 uit "Fundamentals of Computer Security" (PDF)
Pagina: 1