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


Mein neustes Spielzeug...
#1
...kommt auch Chinesien und schaut so aus:

[Bild: 825_1387563226_b1.jpg]

[Bild: 825_1387563271_b2.jpg]

EP3C10: 10k Logigzellen, 2 mal PLL, 23 mal 18x18bit Multiplizierer

http://www.ebay.de/itm/271298571295?ssPa...1497.l2649


Jetzt mal schauen was ich damit machen werde... Quartus lädt schon Big Grin
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#2
Ja gut - erstmal den Spannungsregler löten ;fight
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#3
Mein zweitneustes Spielzeug hat im Inneren einen TB WT-644F, steht im zweiten Wohnzimmer und macht richtig Laune... Höhe: ca. 180cm.

[Bild: 825_1387563968_horn.jpg]

Hornresp:

[Bild: 825_1387564114_H1.png]

[Bild: 825_1387564153_H2.png]

[Bild: 825_1387564187_H3.png]


Getrennt habe ich bei den bisherigen Tests bei 25 und 100Hz.

Um das auch verwenden zu können habe ich mir jetzt für meine SODFA-Module ein 2.1-Konzept erdacht:

Ich werde mir einen alten HiFi-Schrank aus den 70ern besorgen, der innen ein 19" Rack hat. Mit Platz für Schallplatten und Glastür Big Grin

Da kommt dann in 2HE der 2.1 SODFA-AMP, Behringer DCX2496 als Weiche und DEQ zwecks optischem Eingang und EQ-Gedöns hinein.
Die Verbindung DEQ->DCX läuft digital via AES/EBU. Dann symmetrisch analog zum Verstärker.

Schritt 1 hierfür: ich muss mir die Module nochmal genau ansehen...
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#4
Zitat:Original geschrieben von woody
EP3C10: 10k Logigzellen, 2 mal PLL, 23 mal 18x18bit Multiplizierer

Ich würde bei 10k Logikzellen rund 100 PLLs rausquetschen... misstrau
 
#5
Jop, aber 2 sind in Hardware vorhanden ohne Zellen zu brauchen lachend
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#6
Zitat:Original geschrieben von woody
Mein zweitneustes Spielzeug hat im Inneren einen TB WT-644F, steht im zweiten Wohnzimmer und macht richtig Laune... Höhe: ca. 180cm.
Gott.. geht der tief... überrascht
 
#7
Schön ... Tongue

Aber der USB Blaster sieht sowas von offensichtlich nach nen Fake aus ... wieso die "Mühe" ? ... China ...
"Ich hab Millionen von Ideen und alle enden mit Sicherheit tödlich."
 
#8
Joa - läuft aber 1A lachend
Ich habe "normalerweise" originale - ich erkenne aber (außer im Preis) keinen Unterschied.

http://www.mikrocontroller.net/topic/259583

Das USB-Kabel das dabei war gehört eigentlich zu einem Motorola Smartphone Big Grin Big Grin
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#9
Also nach dem Quartus heruntergeladen und installiert ist, habe ich mal testweise die 8 LEDs auf dem Board mit einem kleinen Binärzähler in VHDL verklöppelt und bin ganz weihnachtlich beseelt vom Blinken lachend Big Grin

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

entity zaehler is
    port
        (
            clk : in std_logic;
            ooo : buffer unsigned(7 downto 0)
        );
end zaehler;

architecture z1 of zaehler is
    signal teiler : unsigned(22 downto 0);
    
    begin    
    process(clk)
        begin
        if rising_edge(clk) then
            if teiler = "111111111111111111111" then
                ooo <= ooo + 1;
                teiler <= (others => '0');
            else
                teiler <= teiler + 1;
            end if;
        end if;
    end process;
end z1;
[Bild: 825_1387585526_bsf.png]


Mit den 10Mhz und den 2^23 ergibt sich grob 1Hz Blinkfrequenz der LSB-LED. 41 Logikzellen braucht die Geschichte lachend

Und manche verschwenden dafür einen AVR klappe
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#10
Ich vermisse den RAM und Flash auf dem Board?
 
#11
RAM vermiss ich nicht. Das ist ja was von inne drinne.

Fläsch vermiss ich allerdings auch... misstrau

...vielleicht ist das U3 (seriell würde auch gehen).
 
#12
Externen RAM gibts nicht - werde ich wohl auch nicht brauchen.
Flash ist seriell - EPCS4, das ist der U3.

Als Start werde ich mir wohl mal einen SPDIF-Decoder zimmern (nur PCM) und mit den 8 LEDs eine kleine Pegelanzeige realisieren.
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#13
Schritt 1: Aus dem BMC-Code den Takt rückgewinnen...
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#14
Respekt!
 
#15
Wichtig ist die Zeit zwischen zwei Flanken im Signal - die liegt entweder bei 1x, 2x oder 3x einer halben Periode des ursprünglichen SPDIF-Takts.

Da das Design von vorn herein alle möglichen Sampleraten unterstürtzen soll, sehe ich eigentlich nur eine sinnvolle Möglichkeit:

1.) Signal mit interner Clock bei ca. 150MHz abtasten (resync)
2.) Dabei in einem Schieberegister 1 aktuellen und 2 alte Werte halten
3.) Aus den Werten im SR per XOR Flanken erkennen

-> Das signal, das eine Flanke signalisiert ist dann genau ein FPGA-clockcyle lang 1.

4.) Die Zeit zwischen zwei Flanken wird ständig gemessen. Ist der Wert kleiner als der aktuelle, dann wird er gespeichert -> in dem Register steht dann die Länge einer halben Periode des SPDIF-Takts als Vielfaches (counter-Wert) der FPGA-Taktperiode

5.) Wenn der Wert, der in 4.) gemessen wird nach ein paar Zyklen irgendwann stimmt, kann ich die Zeit zwischen zwei Flanken im SPDIF-Signal korrekt dem Faktor 1, 2 oder 3 zuordnen.

Damit lassen sich dann schonmal die Präambeln im Signal erkennen - es gibt 3 wichtige:

-Data Block, Links: 3, 1, 1, 3
-Links: 3, 3, 1, 1
-Rechts: 3, 2, 1, 2

-> ich brauche ein Schieberegister, in das ich 4 Übergangszeiten schreiben kann.

Habe ich eine Präambel erkannt, brauche ich mir eigentlich nur noch die 24 folgenden Bits ansehen...



Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#16
Zitat:Als Start werde ich mir wohl mal einen SPDIF-Decoder zimmern
sportlich ! Confused
--weil den biphase-code fehlerfrei auf unbekannter Datenrate zu erkennen und darauf ne PPL zu synchronisieren...mmmm..nicht banal Wink

-> ich wollte sowas auch mal machen... afair ist es sinnig, die 3-fach bit Präambeln zu erkennen und die Zeit dazwischen zu messen , um die Frequenz zu erkennen
bzw man legt sich erstmal auf die üblichen 44..48kHz sample rate fest, dann kann man den biphase code ala serielle schnittstelle erheblich einfacher abtasten Wink

spdif ->
http://www.epanorama.net/documents/audio/spdif.html
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#17
...und wenn du mal gucken willst, wie andere das machen:
bei opencores gibts mindestens ein spdif ...
http://opencores.org/project,spdif_interface,overview
Tongue
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#18
Der SPDIF-Decoder läuft. Eine ganz simple Statemachine ist es geworden.

Ich habe mir folgendes überlegt:
Die Zeit zwischen zwei Flanken im SPDIF-Signal (= zwischen zwei Symbolen bzw. Halbsymbolen im Falle der "0") wird gezählt.
D.h. mit jeder steigenden Flanke der FPGA-Clock wird ein Zähler erhöht und nach Detektion einer Flanke im Signal ausgewertet.

Da nun nur die drei Fälle 1x; 2x und 3x (halbe Periode des SPDIF-Takts) auftreten können, lege ich 4 Entscheidergrenzen fest.
Diese sollen bei 0,5x; 1,5x; 2,5x; und 3,5x liegen.

Die Grenzen werden bei der Initialisierung der Statemachine auf viel zu hohe Werte gesetzt, damit ein "lock" erst erreicht werden muss.
Beim internen Takt von 200MHz und 48kHz-SPDIF sollte p0_5 = 16 gelten (mit SignalTap ermittelt).
Die Initialisierung macht:
Code:
p0_5 <= 32;
p1_5 <= 96;
p2_5 <= 160;
p3_5 <= 224;

Sobald ich einen gemessenen Wert nicht zuordnen kann, nach 64 Flaken keine Präambel erkannt wurde, oder auf die einmalige Erkennuntg von "1x" nicht eine erneute Erkennung von "1x" folgt, werden die Entscheidergrenzen wie folgt angepasst:
Code:
p0_5 <= p0_5 - 1;
p1_5 <= p1_5 - 3;
p2_5 <= p2_5 - 5;
p3_5 <= p3_5 - 7;

Das geht soweit echt super.

Ein bisschen grafischer Input:
[Bild: 825_1388138449_uml.png]

Das .vhd gibt es hier.
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#19
Zitat:Original geschrieben von alfsch

...und wenn du mal gucken willst, wie andere das machen:
bei opencores gibts mindestens ein spdif ...
http://opencores.org/project,spdif_interface,overview
Tongue

Joa - die Implementierung ist einigermaßen hässlich lachend
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#20
Jepp. Deine VHDL-Source sieht elegant aus! Smile