PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Porterweiterungen und synchrones Setzen



drylemon
12.04.2008, 00:12
Hallo Ihr,

ich habe ein großes Problem, ich möchte über meinen ATMega mehrere Digitale Ein- und Ausgänge realisieren. Ich möchte nämlich eine Steuerkarte für ein Experiment in meiner Masterthesis bauen, wo sehr genaues Timing notwendig ist. So müssen zum gleichen Zeitpunkt Ausgänge gesetzt und gelesen werden können. Ich möchte dabei einen Puls mit meinem Controller ausgeben, welches dann alle Ausgänge setzt und alle Eingänge speichert.

Für die Realisierung der Eingänge hatte ich an PIPO-Latches gedacht (PIPO=parallel in, parallel out), da könnte ich dann alle Set/Store-Pins mit einander verbinden und so gleichzeitig alle Eingänge speichern und dann getrennt über Output Enable auslesen.
Für die Ausgänge ist allerdings ein Latch nicht geeignet, ich bräuchte einen Baustein der zwei latches besitzt, wo ich zuerst meine Daten hineinladen kann und dann später am Ausgang setzen kann. Eine serielle Eingabe der Daten kommt allerdings aus Zeitgründen nicht in Frage, da die Ausgänge alle 10ys aktualisiert werden sollen. Kennt Ihr einen solchen CHIP ?

Vielen Dank schon einmal im Vorraus für Eure Hilfe :D

drylemon

MeckPommER
12.04.2008, 00:24
Hallo,

um gleich im Vorfeld unsinnge Vorschläge zu vermeiden: wieviele Ein- und Ausgänge brauchst du denn für dein Experiment?

Gruß MeckPommER

Bumbum
12.04.2008, 08:50
Hallo,

ich habe sowas mit dem 4094 gelöst. Ist seriell in, da sparst du dir Pins. Der hat 8 "gelatchte" Ausgänge plus zusätzlich den letzten im Schieberegister nicht "gelatcht". Somit brauchst du nur 3 Leitungen: Data, Clock und Latch. Du schiebst einfach alle Eingänge durch die Register und setzt dann alle Ausgänge mit parallel geschaltetem Latch-Impuls.

Viele Grüße
Andreas

_werwurm_
12.04.2008, 19:38
klingt nach einer aufgabe für CPLDs .. z.B. Xilinx xc 9572 oder xc95144

da könnte man die benötigten latches drin realisieren. die dinger muß man natürlich auch erst wieder "programmieren" .. aber das ist nicht ganz so furchtbar wenn man das prinzip einmal durchschaut hat..

drylemon
14.04.2008, 08:36
Danke für eure Antworten :)

Es wäre schön, wenn ich einen IC hätte, der 8 Ausgänge/Eingänge hätte, damit ich diese leicht über einen Port des Atmega ansteuern kann. Insgesamt sollte das relativ flexibel gehalten werden. Ich plane aber 16 oder 32 Eingänge und 16 oder 32 Ausgänge (@ MeckPommER).

Da ich meinen Atmega nur mit max 16 Mhz tackten kann, aber alle 10ys neue Ausgangszustände realisieren möchte, kann ich nicht auf eine serielle Datenübertragung zurückgreifen, da ich zum Aktualisieren nur 160 Tacktzyklen habe und ich den seriellen Port nicht mit 16 Mhz tackten kann (@ Bumbum)

Das mit den CPLDs hört sich toll an, allerdings habe ich da noch nie was damit gemacht. Ich habe gehört, dass man die jetzt auch mit C++ programmieren kann, gibts da was kostenloses ? Brauche ich spezielle Programmierhardware ? Mit was programmierst Du die denn und was für Schaltungen kann ich damit realisieren ? (@ _werwurm_)

Aber vielleicht hat ja einer von euch noch eine Idee für einen paralell in und parallel out IC mit doppeltem latch ?

Vielen Dank schon mal im Voraus für Eure Hilfe :D

Viele Grüße - Joost

_werwurm_
14.04.2008, 11:22
also CPLDs wären dafür optimal glaube ich da flexibel, schnell und jede menge io-leitungen möglich

programmiert werden die in einer hardwarebeschreibungssprache z.B. VHDL oder bei Xilinx kann man auch mit der kostenlosen software sich vorgefertigte latches oder register zusammenklicken (wie bei schematic software zum schaltplanerstellen) und das dann kompilieren lassen.. ist meist nicht genauso optimal wie in VHDL geschrieben aber schnell und einfach.

mit cpld kann man nur relativ einfache sachen wie latches und logische verknüpfungen und vielleicht noch nen zähler machen .. bei zu komplexen sachen reicht es dann nicht mehr aber für einfache porterweiterungen sind die optimal

programmierhardware kann man leicht selber zusammensetzen wenn ein parallelport am rechner vorhanden ist. das geht auch schon mal auf lochraster oder breadboard

http://www.fischl.de/thomas/elektronik/cpld/index.html
http://www.seas.upenn.edu/~ese201/foundation/SchCapFinal.GIF
http://de.wikipedia.org/wiki/CPLD

ich selber kenne nur Xilinx - gibt natürlich auch andere wie Altera und Lattice

Besserwessi
14.04.2008, 16:52
Ein CPLD hört sich einfach an, die Programmierung daert aber etwas bis man sich eingearbeitet hat. Mit normalen TTL D-Latches oder auch schieberegistern sollte das auch gehen.
Die Schieberegister kann man mit der Hardware SPI Schnittstelle verbinden und dann fast so schnell wie parallele Daten ansprechen (16 Zyken je Byte). Zum Ausgeben 74 HC595 zum einlesen HC166 ?. Alternativ natürlich eine schnellere low voltage version.

drylemon
16.04.2008, 18:33
Danke für die Links _werwurm_,
die werd ich mir gleich mal anschauen und versuchen so was in einem CPLD aufzubauen :) Du hast mir wirklich sehr geholfen, Danke :)

Leider kann ich keine SerialIn/ParallelOut benutzen, weil ich nur eine begrenzte Zeit habe um die Daten zu laden und zu verarbeiten. Aber Danke für die Idee und deine Hilfe :) (@Besserwessi)

Vielen Dank euch allen :)

Gruß - Joost