Hallo zusammen, meine Frage bezieht sich zum einen, worin der Unterschied zwischen den beiden Deleay Funktionalitäten besteht? Die erste Option wäre die SelectIO Methode, die im User Guide UG471 beschrieben ist "7 Series FPGAs SelectIO Resources User Guide" Kapitel 2 und der zweiten Option, dem IP-Core "Utility Idelay Control" aus dem Vivado v2021.2 IP Catalog. Als Test Boards verwende ich das Zturn Board (Xilinx Zynq-7020) von MYIR Tech Limited. Die zweite Frage bezieht sich auf variabel Verstellung des Delays. Welche praktischen Möglichkeiten gibt es? Danke und viele Grüße, Andre
Andre schrieb: > Die zweite Frage bezieht sich auf variabel Verstellung des Delays. > Welche praktischen Möglichkeiten gibt es? Variante 1: Du kannst das Delay per CE und INC synchron zum C Takteingang einen Tap pro Taktzyklus inkrementieren bzw. dekrementieren. CE = 1, INC = 1 -> + 1 Tap / Takt CE = 1, INC = 0 -> - 1 Tap / Takt CE = 0, INC = x -> nix passiert. Variante 2: Synchron zum C Takteingang mit LD und CNTVALUEIN das neue Delay setzen. Das steht aber auch alles in UG471 bei der Beschreibung der IDELAYE2 Primitive. Damit das alles funktioniert, braucht es aber nicht nur ein IDELAYE2 pro zu verzögerndem Pin, sondern auch noch eine Instanz des IDELAYCTRL pro benutzter Clock Region.
Danke für die Antwort... Wenn man einen Schritt zurückgeht und das Delay von der ARM9 CPU (Bare Metal) verstellen möchte, sieht es so aus, als müsste man sich um das Interfacing selbst kümmern. Ich sehe keine AXI Schnittstelle über die Driver-Files im Vitis/SDK erzeugt werden, um die Signale für Variante 1 (CE = 1, INC) oder Variante 2 (LD und CNTVALUEIN) setzen zu können. Zum Bespiel mit den IPs AXI GPIO oder dem Clock Wizard (Option Dynamic Reconfig: activ) ist es möglich, die IPs über den Zynq zu steuern.
Prinzipiell braucht es da nur ein memory-mapped Register mit ausreichend Bits an die die INC/CE Signale angeschlossen werden. Das sind eigentlich nur wenige Zeilen VHDL/Verilog um einen passendes AXI-Modul zu bauen. Siehe z. B. hier: https://www.hackster.io/j-abate/integrating-zynq-ps-and-pl-with-memory-mapped-registers-292a42 Ich habe sowas allerdings noch nicht selbst gemacht. Unsere FPGA-Designs haben Register auf die über ein PCIe-Interface vom Host-PC zugegriffen wird. Damit funktioniert das IDELAY-Verschieben aber ohne großen Aufwand.
Hallo, ich hatte etwas Zeit, mich mit dem Thema weiterzubeschäftigen. Das Board welches ich benutze (Zturn Board (Xilinx Zynq-7020) von MYIR Tech Limited) bzw. die Variante des Zynq7000 hat kein ODelay an Board. Bevor ich einen RTL-Ansatz verfolge, habe ich erste Tests mit dem HLS-Tool von Xilinx gemacht.
1 | #include<ap_utils.h> |
2 | |
3 | void delay(volatile int x, volatile bool input, volatile bool &output){ |
4 | |
5 | #pragma HLS INTERFACE ap_none port=input
|
6 | #pragma HLS INTERFACE ap_none port=output
|
7 | |
8 | #pragma HLS INTERFACE s_axilite port=x bundle=CRTLS
|
9 | |
10 | static int delayValue = 1; |
11 | |
12 | if (x<0){ |
13 | delayValue = 0; |
14 | }else{ |
15 | delayValue= x; |
16 | }
|
17 | |
18 | if(input==false) |
19 | {
|
20 | ap_wait_n(delayValue); |
21 | }
|
22 | output = input; |
23 | }
|
Mit diesem Ansatz lässt sich ein Input-Signal um x-Clock-Cycles über das AXI-Interface verschieben. Das konnte ich am Oszi-Messen. Bei einer Frequenz von 10 Hz und x=1, gab es eine Verzögerung von ca. 40 ns. Meine Frage zielt nun auf die Optimierung ab. Wie fein kann ein Delay eingestellt werden, über HLS? Schönes Wochenende
Jede 'Software' kann nur so gut sein, wie die zugrundeliegende Hardware. Schau dir an, wie dein Delay in Hardware umgesetzt wird, dann kannst du dir die Frage selbst beantworten. Duke P.S.: Die üblichen IO-Delays von Xilinx erlauben Abstufungen von einigen zehn Picosekunden.
Andre schrieb: > Das Board welches ich benutze (Zturn Board (Xilinx Zynq-7020) von MYIR > Tech Limited) bzw. die Variante des Zynq7000 hat kein ODelay an Board. Glaub ich nicht so richtig. Wie hast du das probiert bzw. festgestellt? Denn gemäss Xilinx Dokumentation sollten einige Ausgänge ODELAY anbieten: (https://www.xilinx.com/content/dam/xilinx/support/documentation/data_sheets/ds190-Zynq-7000-Overview.pdf Seite 17) "With the exception of the supply pins and a few dedicated configuration pins, all other PL pins have the same I/O capabilities, constrained only by certain banking rules. [...] Any input and some outputs can be individually delayed by up to 32 increments of 78 ps or 52 ps each. Such delays are implemented as IDELAY and ODELAY. The number of delay steps can be set by configuration and can also be incremented or decremented while in use." Leider habe ich innerhalb von 15 min nicht das richtige Dokument gefunden, wo drinsteht welche Pins das jetzt genau beim Z-7020 sind (den wir hier auch einsetzen). In den Pinout Tabellen habe ich es jedenfalls nicht gefunden: https://www.xilinx.com/content/dam/xilinx/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf Wer weiss mehr?
Christoph Z. schrieb: > Andre schrieb: >> Das Board welches ich benutze (Zturn Board (Xilinx Zynq-7020) von MYIR >> Tech Limited) bzw. die Variante des Zynq7000 hat kein ODelay an Board. > > Glaub ich nicht so richtig. Wie hast du das probiert bzw. festgestellt? Der Zynq 7020 ist ein Artix Derivat, hat daher nur High Range IO Bänke. ODELAY gibts aber nur bei den High Performance Bänken: UG471: "Every HP I/O block contains a programmable absolute delay primitive called ODELAYE2"
Andre schrieb: > Wie fein kann ein Delay eingestellt werden, über HLS? So schnell wie deine IOs getaktet werden können. Ich habe ein Artix Design, bei dem ich die OSERDES dafür missbrauche, einen Puls in Länge und Verzögerung in 1ns Schritten einzustellen (8:1 Mode DDR, 125 MHz System-Takt, 500 MHz IO-Takt). Klappt bestens.
:
Bearbeitet durch User
Christian R. schrieb: >> Wie fein kann ein Delay eingestellt werden, über HLS? > > So schnell wie deine IOs getaktet werden können. Ich habe ein Artix > Design, bei dem ich die OSERDES dafür missbrauche, einen Puls in Länge > und Verzögerung in 1ns Schritten einzustellen (8:1 Mode DDR, 125 MHz > System-Takt, 500 MHz IO-Takt). Klappt bestens. Danke für den Tipp mit der OSERDES. Das werde bei Gelegenheit testen und berichten.
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.