Forum: FPGA, VHDL & Co. Fragen zum IDDR beim Virtex 5


von Sebastian (Gast)


Lesenswert?

Ich möchte die IDDR vom Virtex 5 verwenden. Das Element besitzt  einen C 
und einen CB Eingang. Laut Beschreibung kommt an den C Eingang der Clock 
und an CB der um 180° Phasenverschobene Clock.

Bis jetzt habe ich immer auf Schematic Ebene den IDDR benutzt. Dort ist 
der CB Eingang nicht vorhanden.

Jetzt stelle ich mir natürlich die Frage wie der IDDR dann funktioniert. 
Ich habe mir die RTL Technologie angeschaut. Dort wird der Clock 
angeblich durch einen INVERTER gejagt und so der um 180° benötigte Clock 
erzeugt. Also habe ich mit Plan Ahead diesen Inverter gesucht. Diesen 
habe ich aber nicht gefunden.

Anschließendd habe ich eine Timing Simulation durchgeführt. Ich habe 
insgesamt 12 IDDR Elemente. Also habe ich bei der Timing Simulation alle 
12 C-Eingänge und alle 12 CB-Eingänge simuliert.

Was mir dabei aufgefallen ist, das der C und CB-Clock IMMER um 26PS 
versetzt sind. Demnach muss jedes IDDR Element einen INVERTER besitzen 
der genau 26ps Durchlaufzeit besitzt.Anders kann ich mir dies nicht 
erklären. Wenn ich einen LUT ALS Inverter verwende, dann wäre die 
Laufzeit zu den einzelenen IDDR ja unterschiedlich und die Laufzeit 
würde sicherlich länger als 26ps dauern

KANN DIES JEMAND BESTÄTIGEN?


Ich weiß das man einen DCM verwendet dies kann ich aber leider aus 
Design Gründen nicht machen.

von Christian R. (supachris)


Lesenswert?

Hm, der IDDR als VHDL-Instanz hat auch beim V5 nur einen Takt-Eingang:
1
Library UNISIM;
2
use UNISIM.vcomponents.all;
3
4
--  <-----Cut code below this line and paste into the architecture body---->
5
6
   -- IDDR: Double Data Rate Input Register with Set, Reset
7
   --       and Clock Enable. 
8
   --       Virtex-5
9
   -- Xilinx HDL Language Template, version 13.4
10
11
   IDDR_inst : IDDR 
12
   generic map (
13
      DDR_CLK_EDGE => "OPPOSITE_EDGE", -- "OPPOSITE_EDGE", "SAME_EDGE" 
14
                                       -- or "SAME_EDGE_PIPELINED" 
15
      INIT_Q1 => '0', -- Initial value of Q1: '0' or '1'
16
      INIT_Q2 => '0', -- Initial value of Q2: '0' or '1'
17
      SRTYPE => "SYNC") -- Set/Reset type: "SYNC" or "ASYNC" 
18
   port map (
19
      Q1 => Q1, -- 1-bit output for positive edge of clock 
20
      Q2 => Q2, -- 1-bit output for negative edge of clock
21
      C => C,   -- 1-bit clock input
22
      CE => CE, -- 1-bit clock enable input
23
      D => D,   -- 1-bit DDR data input
24
      R => R,   -- 1-bit reset
25
      S => S    -- 1-bit set
26
      );
27
28
   -- End of IDDR_inst instantiation

Zu finden in ISE unter den Language Templates. Ich wette, das 
funktioniert genau wie beim Virtex 4 nur mit dem 0° Clock.

Edit: Steht auch im User Guide des Virtex 5:
1
Virtex-5 devices have dedicated registers in the ILOGIC to implement input double-datarate
2
(DDR) registers. This feature is used by instantiating the IDDR primitive.
3
There is only one clock input to the IDDR primitive. Falling edge data is clocked by a
4
locally inverted version of the input clock. All clocks feeding into the I/O tile are fully
5
multiplexed, i.e., there is no clock sharing between ILOGIC and OLOGIC blocks.

von Sebastian (Gast)


Lesenswert?

Danke für die Infos.

Dann kann ich den IDDR doch auch ohne Probleme mit einem nicht 
konstanten Clock benutzen. Ich dachte schon der benötigt ein PLL oder 
DCM.


Dann wird der CB demnach automatisch immer vom ISE Tool verbunden.

von Duke Scarring (Gast)


Lesenswert?

Abgesehen davon, das Dein Problem erstmal behoben ist:

Sebastian schrieb:
> Bis jetzt habe ich immer auf Schematic Ebene den IDDR benutzt. Dort ist
> der CB Eingang nicht vorhanden.
Versuch mal ganz schnell vom Schemetic Entry wegzukommen. Das ist zum 
effektiv arbeiten nicht brauchbar.
Auf der schematic-Ebene macht man quasi immer eine Strukturbeschreibung. 
Erst mit VHDL oder Verlog erschließt sich die teilweise sehr gut 
synthetisierbare Verhaltensbeschreibung.

Duke

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
Noch kein Account? Hier anmelden.