• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


Mein neustes Spielzeug...
#21
Ein paar Beweisfotos:

Aufbau:
[Bild: 825_1388144406_aufbau.jpg]


Einmal ohne Signal. Damit man sieht, dass der "Lock"-Zustand erreicht wird, habe ich auf das entsprechende Signal getriggert, die Aquisition laufen lassen und dann erst die USB-Soundkarte eingesteckt. Nach einer gewissen Zeit (wenn einmal alle 3 Präambeln richtig erkannt wurden) wird "lock" erreicht. Die Präambeln habe ich markiert, wir sehen 3-1-1-3, 3-2-1-2, 3-3-1-1 und befinden uns also am Anfang eines Blocks:
[Bild: 825_1388144511_ohne.png]

Dann habe ich Youtube gestartet und von Hand getriggert (-> "lock" ändert sich ja nicht mehr, solange nichts gravierendes schiefgeht). Schön zu sehen ist, dass es sich um 16bit-Audio handelt - die untersten 8Bit sind nämlich einfach immer 0:
[Bild: 825_1388144740_mit.png]
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#22
Oh, da fällt mir auf - es werden nur 23 statt 24 Bit decodiert klappe
Muss ich kurz ändern lachend

Es muss heißen:
Code:
when check_data =>
if cnt2 = [u][b]24[/b][/u] then
...
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#23
Also jetzt der korrekte Funktionsbeweis:

Nach der Präambel für den rechten Kanal kommen zunächst 8 Nullen, dann 16 Datenbits. Die decodierten Bits werden in das 24-Bit Schieberegister "data" geschoben:
[Bild: 825_1388146340_1.png]

Nach dem das 24te Bit drin ist, wird "data" auf den richtigen Ausgang geschrieben und wieder auf "0" gesetzt, da über dieses Register auch die Präambelerkennung läuft:
[Bild: 825_1388146497_2.png]
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#24
;respekt ;clapp
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#25
Wirklich gut gemacht, woody!
 
#26
Und da ich ja eigentlich eine Pegelanzeige wollte, brauche ich jetzt noch einen Gleichrichter und einen verlustbehafteten Integrator.

ersteres ist recht trivial, zweiteres durch ein IIR-Filter zu realisieren.

Code:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;  
use ieee.numeric_std.all;  

entity RECTIFIER is
    port
        (
            clk : in std_logic;
            x : in unsigned(23 downto 0);
            y : out unsigned(22 downto 0)
        );
end RECTIFIER;

architecture BEHAV of RECTIFIER is
...begin
    
...process(clk)
......variable z : unsigned(23 downto 0);
......begin
......if rising_edge(clk) then
.........case x(23) is
.........when '0' =>
............--Negative Zahlen und 0
............y <= x(22 downto 0);
.........when '1' =>
............--Positive Zahlen
............z := not x;
............z(23) := '0';
............z := z + 1;
............y <= z(22 downto 0);
.........end case;
......end if;
...end process;
end BEHAV;
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#27
Gleichrichter und SPDIF-Empfänger brauchen zusammen 231x LE und 1x HW-PLL.

D.h. ich habe noch 10k LEs, eine PLL und 423936bit Speicher übrig lachend
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#28
Zitat:Original geschrieben von woody
D.h. ich habe noch 10k LEs, eine PLL und 423936bit Speicher übrig lachend
Die wirst Du brauchen, um die ganzen VHDL-Einrück-Punkte zu synthetisieren.
 
#29
Haja da ist was dran lachend
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#30
Ein Blick ins Datenblatt verrät:

Stellt man einen Ausgang auf 3,0V-LVTTL und 16mA, dann packt die Mühle 215MHz "Maximum Output Toggle Rate" - also kann ich mit meiner 200MHz-Clock auch einen Delta-Sigma-DAC zweiter Ordnung mit einem Ausgangspin laufen lassen.

Es funktioniert sehr gut - soviel sehe ich schon. Messungen folgen.

https://stromrichter.org/d-amp/content/i...SM_DAC.vhd
https://stromrichter.org/d-amp/content/i...DIF_RX.vhd
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#31
Wer baut mir eine 200MHz Endstufe? lachend
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#32
ahem...
der "Dreh" besteht nicht darin, UHF in die Umgebung zu senden, sondern die gewünschte hohe Auflösung mit möglichst niedrigen HF-Frequenzanteilen zu erzeugen Wink
+ bei 200MHz -> einfach R-C Filter direkt am pin Tongue
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#33
Naja sagen wir mal: Das Ziel ist es den Kompromiss aus Taktrate, Noise-Shaping-Aufwand und SNR zu optimieren.

Das mit dem RC habe ich natürlich genau so gemacht Big Grin
Prinzipiell wollte ich wissen, ob der FPGA das auch wirklich mit den 200MHz am Ausgang packt - das scheint der Fall zu sein.
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#34
Die Pegelanzeige würde ich gern sehen.

Eine FFT auf 128x64px Display mit SPDIF Eingänge wäre was.
 
#35
..oder so...
http://www.ebay.de/itm/Auto-LED-Aufklebe...5d43dc3e76
[Bild: sku040432_usa09.jpg]

lachend
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#36
Guckst du:

http://www.youtube.com/watch?v=UU8pi1cOpBo
 
#37
Joa also mit den 8 Leds geht das schon ganz gut - mal sehen, was noch daraus wird lachend
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#38
Treibt der FPGA die acht OnBoard-LEDs ganz direkt?
 
#39
Jep... hab mich auch schon gewundert, aber geht.
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#40
Okay... eine Möglichkeit wäre eine Lautsprecherentzerrung (nein, ich will keinen Raum entzerren, das ist mir zu kompleklappe.

-> Impulsantwort messen, mit "idealer" Impulsantwort vergleichen, Korrekturfunktion ermitteln, abtasten, als Koeffizienten für ein (langes) FIR-Filter verwenden.

bei 100ms und 96kHz wären das 9600 Koeffizienten. Zudem Bräuchte ich einen Samplerate-Konverter.

Klingt machbar.

Problem: Wie kann ich mir einen schalltoten Raum zum Messen bauen?
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.