Forum: FPGA, VHDL & Co. Externes Eingangssignal auf einen Differenzial Input


von Mathias M. (matzemachine)


Lesenswert?

Hallo,
ich habe ein Problem ich möchte ein externes Signal (5V Rechteck) in ein 
Schieberegister einlesen.
Das Schieberegister funktioniert auch, aber ich bekomme die 
Eingangssignale nicht eingelesen. Das Problem ist dass das 
Eingangssignal nicht das gleiche Potenzial hat und von daher habe ich 
Differenzialleingänge verwendet. Leider funktioniert es nicht.

Code ucf:
NET "TX_N0" LOC = "AA3" | IOSTANDARD = LVDS_33 ;
NET "TX_P0" LOC = "AB2" | IOSTANDARD = LVDS_33 ;
NET "TX_N1" LOC = "AA4" | IOSTANDARD = LVDS_33 ;
NET "TX_P1" LOC = "AB3" | IOSTANDARD = LVDS_33 ;
NET "TX_N2" LOC = "AB6" | IOSTANDARD = LVDS_33 ;
NET "TX_P2" LOC = "AA6" | IOSTANDARD = LVDS_33 ;

Code vhd:


entity reading_dna is
    Port (   C_Kraft, RES_Kraft,  SE_Kraft: in std_logic;
             SA_Kraft: out std_logic;


                             TX_P0 : in  STD_LOGIC;
               TX_N0 : in  STD_LOGIC;
        TX_N1 : in std_logic;
        TX_P1  : in std_logic;
        TX_N2 : in std_logic;
        TX_P2  : in std_logic;
      Q_Kraft : buffer std_logic_vector(17 downto 0);
       Q_pos : buffer std_logic_vector(47 downto 0);


    led : out std_logic_vector(7 downto 0);
                     lcd_d : inout std_logic_vector(7 downto 0);
                    lcd_rs : out std_logic;
                    lcd_rw : out std_logic;
                     lcd_e : out std_logic;

                      clk : in std_logic;


    end reading_dna;
--
------------------------------------------------------------------------ 
------------
--
-- Start of test architecture
--
architecture Behavioral of reading_dna is




signal Kraft_SE :  std_logic :='0';

signal Kraft_clk :  std_logic :='0' ;
signal Kraft_Res :  std_logic :='0';


begin


 IBUFDS_1 : IBUFDS
 generic map (
      DIFF_TERM => FALSE, -- Differential Termination
      IOSTANDARD => "DEFAULT")
      port map (

 O => Kraft_SE,   -- Buffer output
 I => TX_P0,
 IB => TX_N0
);


 IBUFDS_2 : IBUFDS
  generic map (
      DIFF_TERM => FALSE, -- Differential Termination
     IOSTANDARD => "DEFAULT")

 port map (
 O => Kraft_clk,
 I => TX_P1,
 IB => TX_N1
  );
 IBUFDS_3 : IBUFDS
  generic map (
      DIFF_TERM => FALSE,
     IOSTANDARD => "DEFAULT")


 port map (
 O => Kraft_Res,
 I => TX_P2,
 IB => TX_N2
);


  Zustand: process(Kraft_clk, Kraft_Res)
  begin
  if Kraft_Res = '0' then


    Q_Kraft <= "000000000000000000";
    SA_Kraft <= '0';
  elsif falling_edge (Kraft_clk) then
    Q_Kraft <= QP_Kraft;
    SA_Kraft <= QP_Kraft(17);


  end if ;

end process;

Funktion: process (Q_Kraft, Kraft_SE)

begin
  QP_Kraft <= Q_Kraft(16 downto 0) & Kraft_SE;

end process ;



Ich habe nicht den kompletten Code angefügt da das ein wenig lang werden 
würde.

Hat jemand eine Idee was ich falsch mache. Oder habe ich sogar ein 
falsches Verständnis von den Differenzialleingänge an meinen Spartan 
3???

von Bego (Gast)


Lesenswert?

Schaltung, Verdrahtung, Pegel?

von Mathias M. (matzemachine)


Lesenswert?

Die Differenzialeingänge gehen direkt auf eine im FPGA interne 100 Ohm 
Impedanz.  TX_Px ist auf das Signal Verdrahtet 1:1 und  TX_Nx auf den 
zugehörigen GND. Der Pegel ist TTL kompatibel.

von Bego (Gast)


Lesenswert?

Mathias Matera schrieb:
> TX_Nx auf den zugehörigen GND.
GND?
auf dem zugehörigen n-Eingang hoffe ich

von Mathias M. (matzemachine)


Lesenswert?

Jedes meiner Signale hat eine ausgeführte Masse

von Blaubär (Gast)


Lesenswert?

Mathias Matera schrieb:
> Jedes meiner Signale hat eine ausgeführte Masse
Du haust auf einen Diff-Eingang eine Masse drauf? ***lol***
Kein Wunder reden alle vom Fachkräftemangel!

http://de.wikipedia.org/wiki/LVDS

von Christian R. (supachris)


Lesenswert?

Mathias Matera schrieb:
> ich habe ein Problem ich möchte ein externes Signal (5V Rechteck) in ein
> Schieberegister einlesen.

Das geht mit einem modernen FPGA sowieso nicht. Wenn das sowas wie ein 
Drehgeber ist, brauchst du einen externen RS485/RS422 Receiver. Ein 
LVDS Signal ist was gänzlich anderes.

von Mathias M. (matzemachine)


Lesenswert?

Danke ihr habt mich auf die richtige Spur gebracht.

von Vanilla (Gast)


Lesenswert?

Mathias Matera schrieb:
> ich habe ein Problem ich möchte ein externes Signal (5V Rechteck) in ein
>
> Schieberegister einlesen.

Mathias Matera schrieb:
> Die Differenzialeingänge gehen direkt auf eine im FPGA interne 100 Ohm
>
> Impedanz.  TX_Px ist auf das Signal Verdrahtet 1:1 und  TX_Nx auf den
>
> zugehörigen GND. Der Pegel ist TTL kompatibel.

Mathias Matera schrieb:
> Danke ihr habt mich auf die richtige Spur gebracht.
>

Hallo Mathias,

solltest Du wirklich die 5V direkt auf einem halbwegs modernen FPGA 
angeschlossen haben ( auf was das angehängte UCF schliessen läßt, da 
prehistorische ISE Versionen (für die zugehörigen 5V FPGAs keine 
"LVDS_33"Schreibweise kennen, dann ist es recht wahrscheinlich dass Du 
deinen FPGA nachhaltig geschädigt hast, was sich von sporadischen 
Fehlverhalten, partiellem heisswerden bis zum schlagartigen Kurzschluß 
innerhalb des FPGAs äußern kann...

Ein vorzeitiger Blick in die Dokumente von Xilinx hätte sicherlich auch 
beim Verständnis zu einem Differenziellen Eingang weitergeholfen.
Also ich würde schon einmal Bedarf an einem neuen FPGA oder wahlweise 
Evalboard anmelden.
Einen FPGA weit außerhalb seiner Max Input Spec zu betreiben ist kein 
Kavaliersdelikt.

Gruß

Vanilla

von Mathias M. (matzemachine)


Lesenswert?

Zum Glück habe ich mich geirrt mit den 5V zur Erklärung in der 
Wandlerplatine die bisher zum Einsatz kam ist ein PCM 1700 verbaut der 
eine Versorgungsspannung von 5VDC hat und eine Signalspannung von 3,3V 
daher sind auch wohl auch die Potentiale getrennt. Also ist auch ein 
Differenzialeingang nicht von Nöten. Problem war eine falsche Annahme 
der Potentiale und somit verfälschte Messungen.

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.