Hallo alle, ich lese mich gerade in das Thema ein und habe mal eine Frage. Ich habe an meinem Spartan 3E Starter Kit eine RS 232 Schnittstelle, die wohl am ehesten für die Verbindung in Frage kommt. An meinem PC habe ich diese aber nicht. Es gibt aber scheinbar auch USB-RS232 Adapter. Ich will mein FPGA mit VHDL in gang bekommen. Kann ich jetzt einfach so tun, als hätte mein PC eine RS 232 Scnittstelle, wenn ich den Adapter verwende, oder muss ich das jetzt anders programmieren? Ich hatte vor eine UART-Schnittstelle zu programmieren für die Übertragung der Daten. Wie ist jetzt die Verbindung zwischen der UART, die ich mit VHDL schreibe (habe gelesen es gibt da auch Hardware, die will/darf/soll ich aber nicht benutzen) und den Schnittstellen. Da ist noch ein kleines großes Fragezeichen in meinem Kopf :) Bin noch neu in dem Themengebiet und verstehe oft noch nicht ganz, was ich selbst machen muss und was automatisch funktioniert. Danke!
Für den FPGA ein Core, der RS232 kann und am PC einen USB2RS Converter. Das Protokoll bleibt gleich.
Hallo, also du kannst RS232 verwenden inklusive der Pegelwandler, oder ohne Pegelwandler. Mit Pegelwandler kannst du das danach einfach an die RS232 COM-Port Buchse vom PC anschließen, aber die ganz hohen Datenraten kannst du wohl vergessen, die allermeisten COM-Ports machen "nur" 115,2kBit/s. Ohne Pegelwandler Brauchst du irgendeinen Baustein, der das serielle UART TTL/CMOS Signal empfängt und auf eine andere Schnittstelle übersetzt. Z.B. den CP2102. Sehr günstige Adapter gibt es bei eBay. Der Adapter hat auf der einen Seite USB und auf der anderen eine serielle Schnittstelle bei der du aber nur RX, TX und GND benutzen musst. Wenn du am PS nur empfangen willst, sogar nur RX und GND. Die Pins kannst du direkt mit dem FPGA verbinden ohne Zusatzelektronik dazwischen. Am PC gibt es dann verschiedene Software wie Realterm (Windows) oder Cutecom (Linux) mit der du die ankommenden Daten sogar aufnehmen kannst in eine Datei. Beide Programme können auch höhere Datenraten wie 921,6kBit/s. Im FPGA brauchst du also nur einen UART zu beschreiben, ein Schieberegister. Und schon kannst du ziemlich einfach Daten an den PC schicken. -gb-
Gustl Buheitel schrieb: > die allermeisten COM-Ports machen "nur" 115,2kBit/s Ich habe schon 230k am PC empfangen und gesendet, bei Linux 460k.
Klar kommt vor und manche wenige können das. Ich habe hier einige verschiedene Dells, Compaqs und auch einige billige Adapter getestet und fast alle konnten maximal 115,2kBaud. Ein paar konnten mehr, und keiner konnte die von mir gewünschten 921600Baud. Ein recht teurer Adapter konnte das dann. Und dann habe ich die Pegelwandler weggelassen und habe die recht günstigen cp2102 Chips verwendet, die funktionieren super. FTDI habe ich nie getestet aber diese Profilic 2303 die auch echt günstig sind können auch 921600, das funktioniert auch, aber schickt man denen dauerhaft Daten, dann bekomme ich UART Overrun Fehler unter Windows und falsche Daten unter Linux.
> Und dann habe ich die Pegelwandler weggelassen und habe die recht > günstigen cp2102 Chips verwendet, die funktionieren super. Wieviel baud hast du bei den CP2102 rüberbekommen?
Hallo, 921600 mehr habe ich aber auch nicht getestet weil die meisten Terminal Programme, vor allem Realterm und Cutecom nicht mehr können. Zumindest kann man da nicht mehr einstellen. Aber 921600 funktioniert auch über sehr lange Zeit uns mit vielen Daten ohne Probleme oder Fehler.
Gustl Buheitel schrieb: > Hallo, > 921600 mehr habe ich aber auch nicht getestet weil die meisten Terminal > Programme, vor allem Realterm und Cutecom nicht mehr können. Zumindest > kann man da nicht mehr einstellen. Aber 921600 funktioniert auch über > sehr lange Zeit uns mit vielen Daten ohne Probleme oder Fehler. Das Beispiel uartassistant ist sehr einfach für Win und Linux umsetzbar. Es ist auch möglich höhere Baudraten zu setzen. Wäre mal interessant ob es mit QT sicher geht. http://docs.qextserialport.googlecode.com/git/1.2/examples-uartassistant.html void QextSerialPort::setBaudRate(BaudRateType baudRate) [slot] Sets the baud rate of the serial port to baudRate. Note that not all rates are applicable on all platforms. The following table shows translations of the various baud rate constants on Windows(including NT/2000) and POSIX platforms. Speeds marked with an * are speeds that are usable on both Windows and POSIX. RATE Windows Speed POSIX Speed ----------- ------------- ----------- BAUD50 X 50 BAUD75 X 75 *BAUD110 110 110 BAUD134 X 134.5 BAUD150 X 150 BAUD200 X 200 *BAUD300 300 300 *BAUD600 600 600 *BAUD1200 1200 1200 BAUD1800 X 1800 *BAUD2400 2400 2400 *BAUD4800 4800 4800 *BAUD9600 9600 9600 BAUD14400 14400 X *BAUD19200 19200 19200 *BAUD38400 38400 38400 BAUD56000 56000 X *BAUD57600 57600 57600 BAUD76800 X 76800 *BAUD115200 115200 115200 BAUD128000 128000 X BAUD230400 X 230400 BAUD256000 256000 X BAUD460800 X 460800 BAUD500000 X 500000 BAUD576000 X 576000 BAUD921600 X 921600 BAUD1000000 X 1000000 BAUD1152000 X 1152000 BAUD1500000 X 1500000 BAUD2000000 X 2000000 BAUD2500000 X 2500000 BAUD3000000 X 3000000 BAUD3500000 X 3500000 BAUD4000000 X 4000000
Vielen Dank! Die 921600 reichen mir aber. Ich übertrage darüber 9byte Packete mit Wert und Zeitstempel von radioaktiven Zerfällen. Ich schaffe also grob 10k Zerfälle/s mehr macht der Detektor sowieso nicht mit. Ich schreibe das derzeit in eine Datei mit Cutecom und baue später Spektren daraus. Wenn alles fertig ist soll ein Programm alles machen, also über Netzwerk den Messrechner finden, da die angeschlossenen Detektoren und dann schön remote Spektren bauen und so. Aber das Programm werde nicht ich schreiben, ich kann kein GUI ;-)
Gustl Buheitel schrieb: > Ich übertrage darüber 9byte > Packete mit Wert und Zeitstempel von radioaktiven Zerfällen. Ich schaffe > also grob 10k Zerfälle/s mehr macht der Detektor sowieso nicht mit. Ist das ein privates Projekt oder verdienst Du Dein Geld damit? Duke
Privat, also naja mein Vater hat ein Labor und verwendet noch ziemlich alte Hardware die da die Spektren erstellt, und die geht jetzt so nach und nach kaputt (Speicherfehler) und die gibt es auch nicht zum Nachkaufen, also wenn man noch zusätzlich welche will. Ausserdem macht die alte Hardware nur Spektren und speichert keine Einzelimpulse mit genauer Zeit. Letzteres ist ziemlich interessant weil man dadurch die Messungen verbessern kann. Hat was mit Zerfallsreihen zu tun. Es steckt aber noch in den Kinderschuhen, ich kann bisher den Handshake mit einem alten ADC machen und dann dem Wert eine sehr genaue Zeit dazugeben und das an den PC schicken, dort aufnehmen und dann daraus Spektren errechnen. Noch geht da viel händisch auf der Komandozeile aber das wird hoffentlich noch schön. Geld verdienen mit Entwicklung auf FPGAs würde mir schon Spaß machen, aber dazu müsste ich das mal ordentlich lernen, ich bin Student für Lehramt.
Gustl Buheitel schrieb: > Es steckt aber noch in den Kinderschuhen, ich kann bisher den Handshake > mit einem alten ADC machen und dann dem Wert eine sehr genaue Zeit > dazugeben und das an den PC schicken, dort aufnehmen und dann daraus > Spektren errechnen. Danke für Deine Antwort. Du kannst ja mal ein schönes Spektrum zeigen, wenn Du magst. Wie Du allerdings mit einer Zeitmessung bei zufälligen Prozessen noch was verbessern möchtest, verstehe ich nicht. Es sei denn Du hast eine pulsierende Strahlenquelle. Duke
Doch die Zeitmessung bringt schon was, Da zerfällt etwas spontan in ein kurzlebiges Isotop das dann nach sehr kurzer Zeit wieder weiterzerfällt. Wenn man jetzt die Werte mit den Zeiten hat kann man da Zeitfenster setzen und solche Zerfälle erkennen und rausfiltern oder aus diesen extra Spektren bauen. Ich habe auch mal ein Spektrum angehängt, keine Ahnung was das für eine Messung war, ich mache zwar Lehramt Realschule Physik/Mathe, aber habe mit den Messungen hier nicht viel am Hut ausser, dass ich das technisch neuer und einfacher machen möchte.
Es gibt auch noch etwas Anders zu dem Zeiten gut sind: Koinzidenz Man hat zwei Detektoren, der eine misst die Probe direkt und der andere umgibt die Probe und misst alles was von aussen kommt. Dann gibt es auch Hardwaregeräte die dann beide Signale angucken und nur Impulse ins Spektrum zählen wenn der Impuls uch nur aus der Probe kam, aber wenn man die Zeitwerte hat, kann man auch mit beiden Detektoren je ein Spektrum aufnehmen und das dann nachträglich rausrechnen. Man muss halt die Messungen Zeitgleich starten/die Uhren synchron laufen lassen und kann dann wieder Zeitfenster setzen. Im FPGA habe ich derzeit vier Anschlüsse für Detektoren oder besser ADCs, und man kann auch auswählen, dass zwei oder mehrere mit der exakt gleichen Zeit laufen.
Gustl Buheitel schrieb: > Doch die Zeitmessung bringt schon was, Da zerfällt etwas spontan in ein > kurzlebiges Isotop das dann nach sehr kurzer Zeit wieder weiterzerfällt. > Wenn man jetzt die Werte mit den Zeiten hat kann man da Zeitfenster > setzen und solche Zerfälle erkennen und rausfiltern oder aus diesen > extra Spektren bauen. Dann muß man aber auch so schnelle Detektoren haben. > Ich habe auch mal ein Spektrum angehängt, keine Ahnung was das für eine > Messung war, Sieht aus wie Radon. Und verwendet wurde offenbar ein Detektor, der schöne scharfe Peaks macht. Gustl Buheitel schrieb: > Es gibt auch noch etwas Anders zu dem Zeiten gut sind: Koinzidenz Das ist richtig. Kann man aber erst machen, wenn man mehrere Detektoren hat. Die meisten Leute (z.B. ich) haben ja nicht mal einen :-) > Im FPGA habe ich derzeit vier Anschlüsse für Detektoren oder besser > ADCs, Sampelst Du direkt oder hängt da noch ein Vorverstärker mit Peak-Hold dazwischen? Duke
Was ist denn das für ein Detektor? Energie dispersiver Detektor, Wellenlängen dispersiver oder ein anderer? und noch ne Frage Einheiten und Skalierung auf der x-Achse -> eV, keV oder was anderes? ich schätze mal y-Achse cps oder kcps als Einheit oder?
Ja der ist schnell, also ist ein Germaniumdetektor der liefert Spannungsimpulse und die entsprechen der Energie. Ich sample da gar nicht, ich hole mir den fertigen Wert von einem alten ADC der in so einem NIM Einschub steckt. Ja davor ist noch ein Verstärker, der macht aus den kurzen Spannungsspitzen lange (ca. 2us) schöne Gauss Spitzen die dann an den ADC gehen. Ich habe hier in einem anderen Thread auch ein VGA FPGA Oszi gebaut, also ich habe einen 100MHz 8Bit ADC und den habe ich auch mal auf diese langen Impulse losgelassen. Dann habe ich auch daraus ein Spektrum gebaut und man konnte zumindest erkennen was es seien sollte. Die Peaks waren etwas breiter und nicht so schön aber mit einem besseren ADC könnte man das auch selber machen ohne das alte ADC Gerät. Die Einheiten sind die Energie auf der X Achse und die Anzahl auf der Y Achse. Ich kann aber nicht sagen wie lange diese Messung lief, aber das können durchaus mehrere Tage sein.
wow Germanium is ja mal ein richtig antikes Stück. Also wenn dein Vater nen modernes SDD-Detektor-System kaufen möchte... pm an mich, mach ich Sonderpreis ;) ps. der Verstärker macht aus den Spannungsspitzen keine Gaußglocke, das ist eine Eigenschaft von energiedispersiven Detektoren. Wenn man das nicht will muss man wellenlängendispersive Detektoren benutzen, Zählrohre + nen Haufen Mechanik + Prisma, aber die sind wesentlich langsamer.
Ja ne, die Germanium Detektoren sind eigentlich ziemlich gut und brauchbar. Für die Alpha haben wir Photomultiplier. Der Verstärker ist so ein Puls shaping Teil der an den Vorverstärker angeschlossen ist und am Ende einen Gauss rausgibt der deutlich länger ist wie das Eingangssignal. Was sind denn SDD Detektoren? Oder was können die besser? Höhere Energieauflösung?
SDD-Detektoren haben ein wesentlich besser Verhältnis von Energieauflösung/Zählrate als Germanium-Detektoren. Das kommt von Material = Silizium, vom Aufbau des Kondensator an den Polen des Halbleiters und durch den auf dem Detektor integrierten ersten MOSFET-Transitor, der die erste Verstärkerstufe darstellt. Und soweit ich mich errinnere haben Germanium-Detektoren mehr und "nervigere" Escapepeaks als Silizium-Detektoren, die dein Ausgangsspektrum verzerren. Kurz zur Erklärung woher die Gausskurve kommt: Wenn ein Röntgenquant auf den Detektor trifft, erzeugt es entsprechend seiner Energie so und soviele Elektronen-Loch-Paare, welche dann auf ihrem Weg zu den Polen des Halbleiters weitere Landungsträger freisetzten (ne Art Minikettenreaktion), wie viele Ladungsträger am Ende an den Polen des Detektors (durch die Geometrie) vorhanden Kondensator aufladen, ist statisch normalverteilt (Gaussglocke) und skaliert mit einem Detektormaterial - abhängigen Faktor. Der Vorverstärker ist eigentlich da um die beiden Formen von Rauschen die bei den geringen Spannungshüben am Kondensator beträchtlichen Anteil haben, herauszufiltern und den Kondensator wieder zureseten (und natürlich das Signal nochmals zu verstärken). Darf ich fragen von welcher Firma der Detektor+Verstärker ist?
Beide sind von Ortec/Canberra. Aber wir sind eigentlich ziemlich zufrieden damit, also die Auflösung ist schon ziemlich gut.
Trundle Trollkönig schrieb: > Wenn ein Röntgenquant auf den Detektor trifft, erzeugt es entsprechend > seiner Energie so und soviele Elektronen-Loch-Paare, welche dann auf > ihrem Weg zu den Polen des Halbleiters weitere Landungsträger > freisetzten (ne Art Minikettenreaktion), Woher kommen die ihre Energie? Ein Elektron-Loch-Paar hat doch eine festgelegte Energiemenge in Elektronvolt, gemäss Banddiagramm. Will es ein weiteres generieren muss es seine Energie abgegeben, meine ich. Damit rekombiniert es weg und die Summe bleibt gleich. (?)
Das Röntgenquant hat mehr Energie als es für die reine Erstellung eines Elektronen-Loch-Paars bräuchte, so das dann die entstehenden Ladungsträger wiederrum genug Energie haben um weitere Ladungsträger freizusetzten. Ich glaub man brauchte ca. 3.81 eV (minimum) um ein Elektronen-Loch-Paar zu erstellen was weitere Elektronen-Loch-Paare erstellen kann. Die reine Bindungsenergie ist dabei irgendwie 1.1eV ( alle Angaben für Silizium)
:
Bearbeitet durch User
Die Ladungsträger haben die übermäßige Energie? Wie geht das, wenn die Energie doch dem entspricht, was eingespeist wurde? Ich dachte, dass das Röntgenphoton einen Teil der Energie abgibt und dann weitere generiert? Oder steckt die Energie im Impuls?
Gustl Buheitel schrieb: > Hallo, also du kannst RS232 verwenden inklusive der Pegelwandler, oder > ohne Pegelwandler. > > Mit Pegelwandler kannst du das danach einfach an die RS232 COM-Port > Buchse vom PC anschließen, aber die ganz hohen Datenraten kannst du wohl > vergessen, die allermeisten COM-Ports machen "nur" 115,2kBit/s. > > Ohne Pegelwandler Brauchst du irgendeinen Baustein, der das serielle > UART TTL/CMOS Signal empfängt und auf eine andere Schnittstelle > übersetzt. Z.B. den CP2102. Sehr günstige Adapter gibt es bei eBay. > > Der Adapter hat auf der einen Seite USB und auf der anderen eine > serielle Schnittstelle bei der du aber nur RX, TX und GND benutzen > musst. Wenn du am PS nur empfangen willst, sogar nur RX und GND. Die > Pins kannst du direkt mit dem FPGA verbinden ohne Zusatzelektronik > dazwischen. > > Am PC gibt es dann verschiedene Software wie Realterm (Windows) oder > Cutecom (Linux) mit der du die ankommenden Daten sogar aufnehmen kannst > in eine Datei. Beide Programme können auch höhere Datenraten wie > 921,6kBit/s. > > Im FPGA brauchst du also nur einen UART zu beschreiben, ein > Schieberegister. Und schon kannst du ziemlich einfach Daten an den PC > schicken. > > -gb- Hi nochmal, also ich möchte vom PC aus nur senden, habe also in meinem VHDL Code fürs FPGA ein UAR (soll nur receiven, nicht transmitten) eingebaut. Ich muss wohl ein USB-RS-232 Adapter benutzen müssen, da mein PC keinen passenden Anschluss hat (warum auch immer). Das Senden vom PC aus möchte ich mit einer selbst geschriebenen Java Software durchführen. Wenn ich das richtig verstanden habe benutzt der PC +12/-12V Signale für 1 und 0, aber mein FPGA arbeitet mit 5V max, also muss hier ein Pegelwandler eingesetzt werden. Muss ich den Pegelwandler kaufen, oder ist der schon irgendwo mit eingebaut? Wie gesgat ich nutze ein Spartan-3E Starter Kit und möchte ein USB-RS-232-Adapter benutzen. Ist der Pegelwandler einfach ein Bauteil, dass ich zwischen RS-232 Kabel und Buchse am FPGA setze? Danke
Das kommt auf deinen USB Adapter an. Verwendest du einen mit Pegelwandler, brauchst du auch am FPGA wieder einen solchen um den Pegel zurückzuwandeln. Du kannst aber auch einen USB Adapter verwenden der direkt TTL/CMOS macht und sparst dir Pegelwandler. Ich verwende solche sehr günstige mit cp2102 drauf, den kannst du direkt an einen Pin deines FPGA hängen. Da du nur senden willst musst du nir Masse und TX verbinden. Bei eBay einfach mal nach CP2102 suchen, die kosten dur wenige €/Stück und lassen sich schön einfach verlöten wenn man das will, oft sind aber auch Jumpercabels dabei. Wenn dein FPGA Board aber schon eine serielle Schnittstelle anbietet, mit Pegelwandler, dann kannst du auch diesen nutzen und einen USB Adapter mit Pegelwandler kaufen. Hängt jetzt davon ab ob du das an einen FPGA Pin irgendwie direkt hängen willst oder über eine Sub-D 9 Buchse machen willst. Zum Testen empfehle ich Terminalprogramme wie Realterm oder Cutecom. Edit: Das Xilinx Spartan-3E Starter Kit hat RS232 Buchsen mit Pegelwandlern, du kannst also einen USB Adapter mit Pegelwandler verwenden. Eigentlich alle USB Adapter auf SUB-D 9 haben einen Pegelwandler eingebaut.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.