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???
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: > TX_Nx auf den zugehörigen GND. GND? auf dem zugehörigen n-Eingang hoffe ich
Jedes meiner Signale hat eine ausgeführte Masse
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
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.
Danke ihr habt mich auf die richtige Spur gebracht.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.