Gast
#1660881
Hallo Forum, Ich habe in meiner Bastelkiste einen schnellen AD-Wandler MP7684 mit bis zu 20 MHz Abtastfrequenz und spiele mit dem Gedanken, auf einer Lochrasteplatine eine primitive "Speicher-Oszi" Schaltung zusammenzufrickeln. Die Steuerung des AD-Wandlers soll ein XC9572-15 CPLD übernehmen. Im Datenblatt des AD-Wandlers steht folgendes: >> If another DFF follows the ADC, it is recommended that the system >> latches the data at the negative going edge of the clock. >> This will work at any frequency. Also die Daten vom AD-Wandler muss man mit der fallenden Flanke übernehmen. Ich habe folgenden VHDL Prozess testweise synthetisiert und im "RTL Schematics" geguckt, was dabei rauskommt:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Es sieht so aus, dass es zwischen dem CLK_I und dem CLK-Eingang des D-Registers (ADC_DATA_SYNC) einen Inverter gibt. Das ist der Punkt, worüber ich nachdenke. Es gibt nämlich im Datenblatt des AD-Wandlers eine "Data Hold Time", die im Bereich von 13 bis 17 ns liegt. D.h. nach der fallenden Flanke gibt der AD-Wandler die Daten noch 13 bis 17 ns lang aus, danach ändern sie sich. Im Datenblatt zum CPLD gibt es folgende Werte "GCK buffer delay" = 3 ns "Combinatorial logic propagation delay" = 3 ns "Register setup time" 3.5 ns "Register hold time" 4.5 ns In Summe 14 ns... also größer als die "Data Hold Time" des AD-Wandlers. Es würde also nicht funktionieren. Meine Frage dazu wäre, ob meine Rechnung stimmt? Ist es richtig, die "Combinatorial logic propagation delay" zu berücksichtigen (wegen falling_edge() und dem zusätlichen Inverter)? Hat viellecht jemand einen Tipp/Kommentar für mich o.ä.? Danke, Alex