www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Differential clock in UCF, FRAGE


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich benutze ein SPARTAN SP 601 system, welches éin 200 MHZ sys clock 
besitzt. Ich möchte ein Signal dem 200 MHz zuteilen, aber in der ucf 
komm ich nicht so recht, in der annleitung steht:

NET "SYSCLK_N" LOC = "K16";
NET "SYSCLK_P" LOC = "K15";


Wenn mein Signal MASTERCLK heist, wie sieht die ucf aus? So : ?


NET "MASTERCLK_N" LOC = "K16";
NET "MASTERCLK_P" LOC = "K15";


?


Gruss

DANKE

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die beiden Signale im Toplevel auch so heißen, dann ja. Du musst ja 
mit beiden Signalen bis zu einem IBUFGDS oder direkt zu einem DCM gehen 
und die da anschließen.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab aber nur ein Signal das ich mit 200 Mhz betereiben möchte. Aber 
diese 200 MHz gibt es nur als diff. Signal.... wie mach ich es dann?

ALso nur ein MASTERCLK....?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann musst du einen IBUFGDS instanziieren um das differenzielle Signal 
erst mal in den Chip zu bekommen.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dann musst du einen IBUFGDS instanziieren um das differenzielle Signal
erst mal in den Chip zu bekommen.


Hm... und wie mach ich das ?




Gruß

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal in dein ISE:

Edit -> Language Templates -> VHDL -> Device Primitive Instantiation -> 
Spartan-6 -> I/O Components -> Input -> Differential Global Clock

Da hast du rechts dann den VHDL Code und sogar mit Erklärung. Alternativ 
steht das auch im Datenblatt/User Guide.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke für die antwort. ICh hab das so gemacht


Library UNISIM;
use UNISIM.vcomponents.all;


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity Test is
    Port ( CLKIN : in  STD_LOGIC;
           reset : in std_logic;
        CLKOUT1: out std_logic;
        CLKOUT2 : out  STD_LOGIC);
end Test;


architecture Behavioral of Test is

signal cnt: integer range 0 to 1 :=0;

begin


  IBUFGDS_inst : IBUFGDS
   generic map (
      DIFF_TERM => FALSE, -- Differential Termination 
      IOSTANDARD => "DEFAULT")
   port map (
      O => open,  -- Clock buffer output
      I => CLKIN,  -- Diff_p clock buffer input (connect directly to top-level port)
      IB => CLKIN -- Diff_n clock buffer input (connect directly to top-level port)
   );



So ganz klappt das nicht, bin aber auch anfänger. Kann mir jemand sagen 
wo ich den Fehler mache? und wie muss ide ucf. ausschauen?


Gruß

Danke

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst nicht den selben Takt auf den p und den n eingang geben. Das 
müssen 2 zueinandergehörende, aber unterschiedliche Pins sein. Und ganz 
am anfang schreibst du doch was vom MASTERCLK_N und MASTERCLK_P...
Also eher so:
entity Test is
    Port ( MASTERCLK_P : in  STD_LOGIC;
           MASTERCLK_N : in  STD_LOGIC;
           reset : in std_logic;
           CLKOUT: out std_logic);
end Test;


  IBUFGDS_inst : IBUFGDS
   generic map (
      DIFF_TERM => FALSE, -- Differential Termination 
      IOSTANDARD => "DEFAULT")
   port map (
      O => CLKOUT,  -- Clock buffer output, das ist jetzt der FPGA-interne Takt
      I => MASTERCLK_P,  -- Diff_p clock buffer input (connect directly to top-level port)
      IB => MASTERCLK_N -- Diff_n clock buffer input (connect directly to top-level port)
   );

Die andere Richtung wäre ein OBUFDS...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke aber eigentlich will kein _p und _N ich möchte die 200 MHZ auf ein 
Signal geben, diese sind aber nur Differentiel verfügbar, also wie sag 
ich den bescheid das ich dies nur auf Eingang beziehen will?


Danke

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diferentielle Signale haben nun mal eine p und eine n Strippe (oder auch 
eine + und eine - oder eine h und eine l). Du willst also aus einem 
differentiellen LVDS-Signal ein "normales" Signal machen?
Fall ja:
entity Test is
    Port ( MASTERCLK_P : in  STD_LOGIC;
           MASTERCLK_N : in  STD_LOGIC;
           reset : in std_logic;
           CLKOUT: out std_logic);
end Test;

  IBUFDS_inst : IBUFDS
   generic map (
      DIFF_TERM => FALSE, -- Differential Termination 
      IOSTANDARD => "DEFAULT")
   port map (
      O => CLKOUT,  -- Clock buffer output, das ist jetzt der FPGA-interne Takt
      I => MASTERCLK_P,  -- Diff_p buffer input (connect directly to top-level port)
      IB => MASTERCLK_N -- Diff_n buffer input (connect directly to top-level port)
   );
Ja, wo isser denn, der Unterschied?

Falls nein: Zeichne einfach mal ein Bild, damit man sich was drauf 
Abbilden kann.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:
> Hi,
>
> danke aber eigentlich will kein _p und _N ich möchte die 200 MHZ auf ein
> Signal geben, diese sind aber nur Differentiel verfügbar, also wie sag
> ich den bescheid das ich dies nur auf Eingang beziehen will?

Das geht nur mit dem IBUFGDS, wie schon gesagt wurde. Die beiden 
differenziellen Pins setzt der in ein normales Clock Signal um. Du 
musst über _p und _n gehen, wenn dein Takt differenziell am Chip 
anliegt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.