Single-ended Signal aus zwei Signalen in FPGA

Gast #6513726
Lesenswert?

Hallo,

für ein Projekt muss ich zwei Signale im FPGA zu einem single-ended 
Signal "zusammenführen". Die Schaltung muss ohne CLK auskommen, 
gesampelt wird später.

Die Wahrheitstabelle sollte also wie folgt aussehen und im Prinzip die 
Funktion eines differenziellen Eingangsbuffers des FPGAs nachbilden:
1
| i | ib | O         |
2
|---+----+-----------|
3
| 0 |  0 | No Change |
4
| 0 |  1 | 0         |
5
| 1 |  0 | 1         |
6
| 1 |  1 | No Change |

Logischerweise wird dafür irgendeine Form von Speicher benötigt, was 
wiederum zu einem Looped Latch / zu einer Loop führt.

Nur ein Signal zu verwenden (eg. i oder ib) sorgt leider nicht dafür 
dass ein Ausfall einer der beiden Leitungen erkannt wird und ist daher 
keine Lösung.

Hat jemand eine Idee?
Moderator (Firma: Titel) Persönliche Seite #6513816
Lesenswert?

avatar schrieb:
> Die Schaltung muss ohne CLK auskommen, gesampelt wird später.
Du hast keinen Takt? Oder du willst keinen Takt?
Wie schnell ändern sich diese Eingangssignale?

> Logischerweise wird dafür irgendeine Form von Speicher benötigt, was
> wiederum zu einem Looped Latch / zu einer Loop führt.
Zeig mal wo da eine Schleife gemeldet wird.
Für mich sieht das nach einem Latch aus, das mit 01 gesetzt und mit 10 
zurückgesetzt wrid. Ich sehe da keine Rückkopplung.
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3

4
entity difflatch is
5
    Port ( p,n : in  STD_LOGIC;
6
             o : out STD_LOGIC);
7
end difflatch;
8

9
architecture Behavioral of difflatch is
10
begin
11
   o <= '1' when p='1' and n='0' else
12
        '0' when p='0' and n='1';
13
end Behavioral;
Und die Synthese "klappt" ja auch irgendwie.

> Hat jemand eine Idee?
Trotzdem ist das Latch-Zeugs mit vorgeschalteter Kombinatorik wildes 
Gefrickel.
Ich würde hier eher die Eingangssignale eintakten und dann "richtig" und 
taktsynchron verarbeiten. Mit einem Taktmanager/PLL/DLL kann man für 
dieses "lokale Problem" ja nötigenfalls eine recht hohe Taktfrequenz 
generieren.
Angehängte Dateien:
Gast #6513870
Lesenswert?

> Du hast keinen Takt? Oder du willst keinen Takt?
> Wie schnell ändern sich diese Eingangssignale?
Ich will an der Stelle keinen Takt. Die eingehenden Signale sind sehr 
langsam < 1 Mbit.

> Zeig mal wo da eine Schleife gemeldet wird.
> Für mich sieht das nach einem Latch aus, das mit 01 gesetzt und mit 10
> zurückgesetzt wrid. Ich sehe da keine Rückkopplung.
Wollte wohl klüger sein als das Tool und die resultierende Gleichung 
wurde dann nicht in ein Latch, sondern in eine LUT + Loop synthetisiert. 
Peinlich.

> Trotzdem ist das Latch-Zeugs mit vorgeschalteter Kombinatorik wildes
> Gefrickel.
> Ich würde hier eher die Eingangssignale eintakten und dann "richtig" und
> taktsynchron verarbeiten. Mit einem Taktmanager/PLL/DLL kann man für
> dieses "lokale Problem" ja nötigenfalls eine recht hohe Taktfrequenz
> generieren.
Ich denke für derartig langsame Eingangssignale sollte es keine Probleme 
mit etwas kombinatorischer Logik geben, oder siehst du das anders?

Danke jedenfalls!
Moderator (Firma: Titel) Persönliche Seite #6514238
Lesenswert?

Uwe Bonnes schrieb:
> RS-Flipflop?
Auch das ist im Grunde ein Latch. Das "Schlimme" an einem Latch ist 
übrigens nicht das Latch an sich, sondern hier die Kombinatorik, die vor 
dem Latch sitzt und dieses ansteuert.

avatar schrieb:
> Ich denke für derartig langsame Eingangssignale sollte es keine Probleme
> mit etwas kombinatorischer Logik geben
Einen Glitch kann es schon geben, wenn nur 1 Pegelwechsel am Tag 
stattfindet.

> Die eingehenden Signale sind sehr langsam < 1 Mbit.
Vermutlich pro Sekunde?
Was spricht dann dagegen, eine Taktdomäne mit 10...100MHz aufmachen, die 
Signale einzutakten und ordentlich und sachgerecht zu verarbeiten?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren