☚ [[projects:maps21:s:schaltung|Schaltungen]] ★ ^ hinten %%>>>>>>>>>%% vorne ^^^^^^^^^^ ^ ^ 1. ^ 2. ^ 3. ^ 4. ^ 5. ^ 6. ^ 7. | ^ ^ ^ Schaltungen: | @#999999: [[ projects:maps21:s:subd:subd|SubDback]] | @#999999: [[projects:maps21:s:ext:extend|BackExtend-V1]] | @#999999: [[ projects:maps21:s:mdr:mdr|MDR-IO]] | @#999999: [[projects:maps21:s:dcont:dcont|DisplayContr-V1]]| @#CCFFCC: [[projects:maps21:s:fr:front|Front]] | @#CCFFCC: [[ projects:maps21:s:sel:select|Selektor]] | @#FFCCCC: [[projects:maps21:s:q_d:q_d|Q+D]] ^ | [[projects:sig:signal|Signaltransfer]]\\ über alles | ^ ::: | @#CCFFCC: [[projects:maps21:s:subd2:subd2|SubDback-V2]] | @#CCFFCC: [[projects:maps21:s:ext2:ext2|BackExtend-V2]] | @#CCFFCC: [[projects:maps21:s:mdr2:mdr2|MDR-IO-V2]] | @#CCFFCC: [[projects:maps21:s:dcont2:dcont2|DisplayContr-V2]] | X | X | X ^ ::: | ::: | | |||||||^ ::: | ::: | ^ Layouts: | @#999999: [[ projects:maps21:s:back-l:back-l|SubDback]] | @#999999: [[ projects:maps21:s:ext-l:ext-l|BackExtend]] | @#999999: [[ projects:maps21:s:mdr-l:mdr-l|MDR-IO]] | @#999999: [[projects:maps21:s:dcont-l:dcont-l|DisplayContr]] | @#CCFFCC: [[ projects:maps21:s:fr-l:front-l|Front]] | @#CCFFCC: [[ projects:maps21:s:se-l:select-l|Selected]] | @#FFCCCC:[[projects:maps21:s:q_d-l:q_d-l|Q+D]] ^ ::: | ::: | ^ ::: | @#CCFFCC: [[ projects:maps21:s:backv2-l:backv2-l |SubDback-V2]] | @#CCFFCC: [[ projects:maps21:s:ext-l2:ext-l2|BackExtend-V2]] | @#CCFFCC: [[ projects:maps21:s:mdr2-l:mdr2-l|MDR-IO-V2]] | @#CCFFCC: [[projects:maps21:s:dcontv2-l:dcontv2-l|DisplayContr-V2]] | X | X | [[projects:maps21:s:mdr2:mdr2|MDR-IO-V2]] ^ ::: | ::: | ### Bestellt und in Herstellung (Leiterkarte) ### Ersetzt! ====== Board Display Control V2 ====== Dieses Board "DisplayContr-V2" ist der "MDR-IO"-Platine an der internen VG-Leiste aufgesetzt und beherbergt Treiber und Kontrollogik, die auf der Frontseite mit dem Matrixelement räumlich nicht unter zu bringen ist. Diese Platine ist also parallel zum Mutterboard angeordnet. Das Display an der Frontplatte ist orthogonal an der Frontplatte und ist dann per Flachbandkabel dem "DisplayContr-V1" verbunden! **Die Anzeige des Matrixelementes stellt dem Wartungspersonal des Trafofrontends wichtige Informationen im Problemfall zur Verfügung!** Es kann damit auch gezielt mittels der Monitorausgänge das Trafosignal am Osszyllloskop betrachten. Die auf diese Ebene aufgesetzte Ebene der FESA-Softwareerfassung basiert auf diesem Adapter und funktioniert nur korrekt solange eben kein Fehler vorliegt. **Deswegen ist die Visualierung der Trafoanzeige auf dem Display elementar wichtig!** ===== Schaltplan "DisplayContr-V1" ===== ==== Page 1 Umfeld Plt.==== Das DisplayControl board steuert mittels zweier CPLDs die Darstellung der Messbereiche und Klemmpulse in Echtzeit auf der LED-Anzeige. Dies "lebt" im 50 Hz UNILAC-Takt (Abbildung). Es gibt 100 ein und ausgehende Signale, die hier zwischen beiden CPLDs aufgeteilt werden. Wegen dieser Aufgabenteilung gibt es weitere 9 Signale, die zwischen beiden CPLDs ausgetauscht werden müssen. 87 Signale sind "langsame" Signale (>= 1ms), die acht Klemmpulssignale dagegen können bei Pulsverkürzung nur 10 µs lang sein. Sechs Signale dienen nur der JTAG-Schnittstelle des CPLDs und dessen Taktung. | @#EEEEEE: #####################################**100 externe Signale an oder ab CPLD** {{ :projects:maps21:s:dcont2:signale_displaycontrl.xlsx |EXCEL-Signalliste}} {{ :projects:maps21:s:dcont:74lvc32a.pdf |74LVC3A}}##################################### ||||||| | @#C0FFC0:__87 langsame IO-Signale__\\ 8x 4 = 32 Setzbits((3,3V von DAQ-IO!)) 50 Hz\\ 8x Lesebits((Vom Stromverbrauch generiert, 3,3V begrentzt durch Zehnerdiode))\\ 2x 2x 10 = 40 LED-Vorgabebits((3,3V ab CPLD))\\ 7x Spaltenaktivierungsbits((3,3V ab CPLD)) | ∪ | @#FFFF00:8 schnelle Klemmpulssignale((5V ab Klemmpulslogik!)) | ∪ | @#CCCCFF: __9 Signale zwischen den beiden CPLDs__\\ 5x Takt\\ 4x Periode\\ Können entfallen wenn nur ein Chip | | @#FFCC99: __5x CPLD Betriebssignale__\\ 4x JTAG\\ 10 MHz((5V!)) | | @#C0FFC0: > 1 ms | | @#FFFF00: > 1 µs | | @#CCCCFF: 1 ms | | @#FFCC99: | | {{ :projects:maps21:s:dcont2:displaycontr-v2-page1.pdf |p1-pdf}}\\ {{:projects:maps21:s:dcont2:displaycontr-v2-page1.png?direct&1200|Schaltung}} | {{:projects:maps21:s:fr-l:modulfront.png?direct&600|Modul mit Frontboard}} | ==== Page 2 XILINX CPLD ==== Die unten gezeigten Schaltsymbole dienen nur als Hilfskonstrukt, bis die EE korrekte Symbole für den eingesetzten CPLD angelegt hat: die Baugröße des abgebildeten Symbols ist mit der des Chips übereinstimmend und ermöglicht so das Layout! Die Pin-Nr-Funktionspaare am Symbol sind somit irrelevant.\\ Die gesamte page2 wird später durch mit dem korrekt angelegte Symbol ersetzt. | @#FFFFDD: U21 - JTAG (Unten) J16\\ CPLD1: Messbereiche\\ Chip oben | @#FFFFDD: U22 - JTAG (Oben) J15\\ CPLD2: Klemmung & Taktzählung\\ Chip unten | | {{:projects:maps21:s:dcont:displaycontr-v1-page3.png?direct&1200|page3.png}}\\ {{:projects:maps21:s:dcont:displaycontr-v1-page3.pdf |page3.pdf}} || **Die beiden CPLDs auf dem Board steuern den Ablauf der Ansteuerung des Punktmatrixelements im Milisekundentakt: Beide CPLDs haben Zugriff auf die grünen und roten LEDs des Elementes, um damit die drei möglichen Farben Rot, Gelb und Grün der Anzeige zu erzeugen. Grob beschrieben steuert der eine CPLD die Messbereichsanzeige in Grün und der andere CPLD die Klemmpulsanzeige in Gelb.** Die Nutzung des Punktmatrixelementes reduziert den Stromverbrauch der LEDs, da in einem Augenblick immer nur eine Spalte des Displays zur Anzeige aktiv ist und stellt Messbereiche und Klemmung quasi live im 50Hz-Zyklus, 20 ms-Intervall dar: Die ersten 15ms im 20ms-Takt dienen der Strahlvorbereitung --- die letzten 5ms stehen maximal dem Strahl zur Verfügung. Die im 50Hz-Takt vorgegebenen Messbereiche werden mit der 14. Millisekunde getastet und gespeichert (40 Bit), die Anzeige zweimal im Intervall komplett durchlaufen, bzw. erneuert.\\ \\ **Über einen Drehenkoder auf dem Frontboard können verschiedene Anzeigemodi angewählt werden (3Bit)**, durch Leuchten der ersten LED in grün für Modus "1" in der Zeile "Entklemmt", der zweiten LED für Modus "2" usw.: ===== Anzeigemodi ===== - **__ Standardmodus __**: Die Messbereiche werden dekodiert als Balkenanzeige mit 1-5 LEDs dargestellt, was den Aussteuerungsvergleich klarer macht! Der Klemmpuls wird Gelb und nur in der 6. Spalte des Displays angezeigt. Dabei ist die Anzeige transparent, d.h. jeder folgende Milisekundentakt mit Strahl wird an dieser Stelle angezeigt, die Anzeige leuchtet dann für das Auge des Betrachters intensiver, wenn die maximalen 5ms Strahl anstehen und schwächer wenn beispielsweise der Strahlpuls unter einer Millisekunde lang ist! - __**Binäre Anzeige**:__ dort werden die Messbereichsbits in ihrer digitalen Form dargestellt, so wie sie an den Trafo gehen. Das ist in einem potentiellen Fehlerfall hilfreich! - **__Fokusmodus __**: mit dem Drehwähler wird die erste Aussteuer-LED eines Trafos gewählt und mit dem Fokus belegt per Drucktaster des Enkoders, d.h. sie wird von Grün auf Rot gestellt. Damit wird die **Anzeige dieses einen Trafos statisch**, damit dort die Anzeige für den menschlichen Beobachter besser dauerhaft erfasst werden kann. Welcher der zehn aufeinanderfolgenden 10 Intervalle von 20ms zur Darstellung gebracht wird, wird mit dem Drehkodierer nach Wahl des Trafos in der siebten Spalte für "Test" ausgewählt und durch Drücken der Enkoder Taste fixiert (4 Bit). Der Modus wird verlassen, wenn der Drucktaster auf dem mit Fokus belegtem Trafo erneut getätigt wird! - **__5ms-Klemmpuls__**: Hier wird der Klemmpuls aller fünf potentiellen Milisekundenintervalle mit Strahl in den Spalten 2-6 überblendet in gelb angezeigt. Also hier nicht nur in Spalte 6! Dabei werden grüne MB-LEDs evtl. gelb überblendet. Das geht, da beide CPLDs unabhängig Zugriff auf die Anzeigen haben! - **__Klemmpulsdauer__**: Hier wird das Vorhandensein des Klemmpuls in den maximalen fünf Millisekundentakten in Spalte 2 bis 6 dargestellt für einen ausgewählten Trafo im Fokus und für zehn aufeinaderfolgende 50 Hz-Takte in den zehn Zeilen dargestellt. Der Trafo wird mit dem Drehenkoder ausgewählt, mit dessen Drucktaste fixiert. Auf diese Weise kann die "parallele" Ansteuerung durch verschiedene aufeinanderfolgende virtuelle Beschleuniger, z.B. durch Hochladungsquelle und Hochstromquelle überprüft werden. - **__ Messbereich manuell __**: Ein Messbereich wird in der neunten Zeile ausgewählt und mit Drücken des Enkoders gesetzt. Die ausgewählten Ansteuerung wird dem IO-Board angezeigt. Die laufende FESA-Software registriert den Wunschsetzbereich und schaltet diesen auf alle acht (?) Kanäle des Modules. Dies hat den Vorteil, dass die laufende Remotesoftware den Steuervorrang hat und das Setzen eines Messbereichs zu Servicezwecken auch aus der Ferne wieder aufheben kann! - **__ Entklemmt __**: Hier wird die Klemmung, wie durch das Timing vorgegeben", deaktiviert --- die Kopfelektronik zur Dauermessung frei gegeben. Das Trafosignal kann dann auf dem Monitorausgang mit dem Osszi "gesehen" werden, auch wenn die Klemmung vom Kontrollsystem eben nicht richtig gesetzt ist und so eine sichtbares Trafosignal unterdrückt! Das sollte natürlich nicht zu lange geschehen, da der AC-gekoppelte Kopfverstärker ansonsten wegläuft. - **Phasenwahl:** In diesem Modus ermöglicht der Drehgeber die Wahl einer Phasenverschiebung aus dem Intervall [ 0 ms, 19 ms]. Das UNILAC-Timing beruht auf der Netzfrequenz. Da gibt es allerdings drei mögliche Phasen im speziellen Rack für den 3HE-Einschub. Hier soll die einmalig die Wahl eines entsprechende Phasenshift ermöglicht werden. - (__Messbereichssequenz__): In diesem Modus würden die Messbereichsvorgaben für einen Trafo für 10 aufeinaderfolgende 20ms-Intervalle dargestellt: das ermöglicht die Analyse der Vorgabe von Messbereichen durch das Kontrollsystem gemäß den virtuellen Beschleunigern! Wird zunächst nicht vorgesehen. [[projects:maps21:s:dcont:dcont#bedienkonzept| Bedienkonzept]] ===== Aufgaben der beiden CPLDs ===== **Der erste CPLD "U21"** erfasst an 50 Eingängen die **drei Messbereichsbits, die Testfunktion und das Bit für Kanal präsent.** Diese fünf Bit können, aber müssen nicht unbedingt gespeichert werden, da sie nur der Anzeige auf dem Matrixelement dienen und nicht digital weiterverarbeitet werden.((Die Darstellung der Messwertsetzung aus verschiedenen aufeinanderfolgenden Intervallen ist bisher nicht vorgesehen!)). Werden diese Bits nicht gespeichert und nur zum relevanten Millisekundentakt durchgeschaltet, so wird das **transparent** genannt. Innerhalb einer Periode stehen zwanzig Milisekundenintervalle zur sequentiellen Aktivierung der sieben Spalten zur Verfügung --- nicht 21! Die Klemmunng in der 6. Spalte soll normalerweise transparent und live in den letzten 5 ms mit Strahl angezeigt werden: Deswegen werden nach Begin einer neuen Periode nur die Spalten 1,2,3,4,5 (MB-Balkenanz.) und 7 sequentiell aktiviert. Im Fall einer Speicherung werden 50 der 128 Bitspeicherstellen benötigt! Die Speicherung würde dann im 13. Takt erfolgen. Die Takte 14-20 würden darauf mit dem Strahl live dargestellt: dann auch der Klemmpuls in der 6. Spalte. Dieser erste CPLD führt auch die **Dekodierung** der drei Messbereichsbits zur Balkenanzeige hin aus. Der kontinuierlich bis 20 laufende Taktbus wird vom zweiten CPLD empfangen. **Der zweite CPLD "U22"** zählt einerseits den Einlaufenden Millisekundentakt binär und gibt diesen Takt auf einen **Taktbus "Tkt0-4"** aus. **Volle 20ms-Intervalle bilden einzelne Zeilen** und werden als **Perioden** bis Fünfzig gezählt und auf den **Bus "Per0-5"** ausgegeben. Diese 50 Perioden in der Sekunde bilden die maximal möglichen Time slots für virtuelle Beschleuniger. Der CPLD erfaßt an acht Eingängen die anstehenden Klemmpulse der Trafos im Millisekundentakt mit Strahl (max. 5ms) und speichert diese ggf. für einen Trafo und die Darstellung in zehn Intervalle, also 200ms zwischen. Diese **Speicherung des Klemmpulses in Einmillisekundenintervallen** ist auch deswegen nötig, da es z.B. bei Strahlverkürzung auch Packete von nur 10µs geben kann. Dies zu erkennen wäre für den menschlichen Beobachter zu schnell! Dafür werden 50 Bit benötigt. Der durchlaufende Taktbus wird dekodiert in sieben Spalten: die jeweils zur Anzeige aktive Spalte des Displays. Der mittels Drehenkoder und interiertem Drucktaster gewählte Anzeigemodus wird auf den **Modebus "Mod0-2"** ausgegeben und intern gespeichert (3Bit). Der gewählte Mode wird als einzeln leuchtende LED in der untersten Zeile visualisiert. Ebenfalls wird durch den Drehentkodierer die **Fokusselektion "W-1-4"** als Bus ausgegeben und intern gespeichert (4 Bit): Dies selektiert entweder einen Trafo zur Handbedienung (Mode 5) in der ersten MB-Anzeigestelle rot oder die Zeile, also das Klemmpulstiming aus dem virtuellen Beschleuniger in der letzten Anzeige-LED gelb für Mode 4! Weiter wird der per Drehenkoder bestimmte **manuelle Messbereich auf den Bus Man0-2** bitweise gemäß Rangecodierung ausgegeben. Die meisten an die CPLDs übergebenen Signale entstammen quasi-statischen Quellen und müssen daher nicht entprellt werden. Dies gilt nicht für die Signale des Drehenkoders und seines Drucktasters. Sie müssen eventuell innerhalb des CPLDs elektronisch entprellt werden! Das benötigt dann die Reservierung einiger Speicherbits. Vielleicht in Form eines fünfstufigen Schieberegisters basierend auf den einlaufenden 1ms Takten an dem dann auf Vorhandensein von fünf aufeinaderfolgenden Einsen geprüft wird. Annahme dabei: übliches Kontaktprellen unter einer Millisekunde.\\ **Das "Decode"-Signal ist die Übergabe Status "Schalter gedrückt" von einem CPLD zum Anderen, da der Schalter ja physisch zur Auswertung nur an einen verbunden ist, die Anwahl in den diversen Modi aber wohl auch vom zweiten CPLD verarbeitet werden muss!**\\ Ggf. muss vom CPLD auch ein Phasenschift bezüglich des richtigen 50 Hz-Taktes ausgeführt werden: Das GSI-UNILAC-Timing basiert zwar auf auf dem Netzintervall, aber welche der drei Drehstomphasen am Rackstromanschluss vorliegt ist nicht klar. ===== Bedienkonzept ===== Der gedrehte Drehwahlschalter erweckt den Courser zum Leben: punktweise in der **zehnten Zeile grün blinkend** (hier komplett rot), wo durch Punkt der **[[projects:maps21:s:dcont:dcont#anzeigemodi|aktive Mode]]** angezeigt wird! Druck des Drehwählers an einer Stelle, z.B. zweiter Position wählt dann diesen zweiten Mode, die LED leuchtet dauernd! ^ ^^ | {{:projects:maps21:s:fr-l:modulfront.png?direct&600|Modul mit Frontboard}}\\ {{ :projects:maps21:s:dcont2:anzeige-simulatio.xlsx |Anzeigesimulation}}\\ ########################################################## | Die Wahl der alternativen Messbereichsanzeigen, ob orginal binär kodiert (**Mode 2**) oder im Standard als Balkenanzeige (**Mode 1**) bleibt resident gesetzt mit dauergrüner LED, bis durch Drücken auf der alternativen Position der jeweils andere Mode gesetzt wird.\\ **Mode 3** an dieser Position durch Druck gewählt, lässt den Cursor in die erste Zeile in erste Position springen: Die MB-LED dort wandelt sich von grün auf rot. Drehen lässt den Cursor in erster Spalte auf bzw. ab wandern. Druck in einer Zeile wählt diesen Trafo zu fixen Betrachtung in einem von zehn (fünfzig: 50x 20ms = 1s) aufeinanderfolgenden Beschleunigern im Fokus. Die erste LED bleibt rot und der Curser springt in die letzte, siebte Spalte und lässt die LED gelb aufleuchten: Drehen lässt nun den gelben Cursor auf und ab wandern. Wahl durch Druck in einer Zeile fixiert den Messbereich der x-ten UNILAC-Periode, nur diese Periode und der verbundene Beschleuniger wird dauerhaft angezeigt, die Anzeige ruhiger. Diese Wahl wird durch kurzen Druck in gleicher Position wieder frei gegeben. Langes Drücken lässt erneut die Wahl eines anderen Trafos zu: der Cursor springt erneut in die erste Spalte. Der Mode 3 wird verlassen, wenn auf schon gewählter Position erneut gedrückt wird; der Mode wird verlassen und der Cursor springt zurück in die Modezeile 10!\\ **Mode 4** ändert nur die Darstellung der Klemmpulse: statt nur in seiner Position in Spalte 6 werden von dieser nach vorne die Klemmpulse dargestellt. Dieser Mode wird ebenfalls resident gesetzt bis erneutes Drücken den Mode bendet.\\ **Mode 5** gewählt bringt erneut den Cusor in Possition 1,1 und macht die grüne LED rot. Drehen läßt den Cursor vertikal wandern und Drücken in einer Zeile wählt die Klemmpulsdarstellung zu der von Mode 4 mit dem Unterschied, dass für diesen **einen** Trafo zehn aufeinderfolgende gespeichert und angezeigt werden. Der Mode wird abgewählt, wenn in der gewählten Zeile erneut getätigt wird.\\ **Mode 6** setzt den Cursor in Position 1 der Zeile neun: Drehen dort zieht einen Messbereich in Balkenanzeige auf, Drücken setzt diesen. Dieser Wunschmessbereich wird an die DAQ-Software über das IO gemeldet. Die setzt den Wunschmessbereich und kann das dann ggf. selber wieder eliminieren.\\ **Mode 7** durch Druck in Position 7 gesetzt: die zehnte Zeile leuchtet zunächst komplett rot. In diesen Mode ist die Klemmung des Kontrollsystems aufgehoben, um im Falle eines Fehltimings dennoch am Monitorausgang Trafopulse sehen zu können. Das sollte nicht zu lange sein, daher endet dieser Mode automatisch nach 70s. Alle 10s erlischt eine der sieben LEDs. | ===== Code für CPLDs ===== Der VHDL-Code für die beiden CPLDs wird aktuell freundlicherweise von Rene Geissler umgesetzt und findet sich auf dem GIT Repository: ★ [[projects:maps21:s:dcont:code:code| VHDL-Code-Seite]] ☛ ===== Fehler in "V2" ===== ^ Pos. ^ Kurz ^ Beschreibung ^ Fehlerbehandlung ^ | 1 | -15 gegen GND kurz geschlossen | Pin 32b mit "-15V" wird an GND kurzgeschlossen, wenn auf MDR-IO-V2 aufgesteckt! | einfach: VG-Pin 32b an Displaybord kappen! | | 2 | Signalindizierung 1..10 zu den LED-Treibern umgekehrt, wie an den Ausgängen der Treiber (10..1) zum Frontboard mit den Punkt LEDs | Anzeige auf dem Kopf | MAPING Signalausgabe im CPLD ändern.... | ---- ☚ [[projects:maps21:s:schaltung|Schaltungen]] ★