Forum: Markt [S] suche I²S Receiver (seriell -> parallel -Wandler) in FPGA/CPLD


von Dirk B. (freaxx)


Lesenswert?

Hallo,
ich suche jemanden der mir einen I²S Receiver in FPGA/CPLD "machen" 
kann,
also Soft- und Hardware.
Mit "Hardware" meine ich einen gebrauchsfertigen "chip", welchen ich in 
meine übrige Schaltung (3.3V) einfügen kann.

Beschreibung:

- I²S Receiver ist Slave

- kein Masterclock nur Bitclock ('sck'), Wordclock ('ws') und 
Serial-Data ('sd')

- 3.3V / sichere Funktion bis 50MHz (2 x 32bit x 768kHz) / nur Stereo 
PCM

- Funktion eingangsseitig strikt nach dem Philips Standard
'Figure 6' hier: 
https://web.archive.org/web/20070102004400/http://www.nxp.com/acrobat_download/various/I2SBUS.pdf
bzw. auch hier: 
https://www.beyond-circuits.com/wordpress/wp-content/uploads/2015/04/tutorial18_receiver2_bd.png

- MSB immer 'first', egal welche Framelänge/Bittiefe (weniger oder mehr 
als 32 bit) der Sender sendet

- Ausgangsseitig 32 pins /32 bit parallel - MSB immer an der gleichen 
Stelle unabhängig von der empfangenen Framelänge/Bittiefe (s.o.) ...

- Eingänge:
-- Bitclock ('sck')
-- Wordclock ('ws')
-- Serial-Data ('sd')

- Ausgänge:
-- 32 pins 'parallel data' (gelatcht)*
-- 'int' pin = low->high wenn ein neues Datenwort an den 32 
'parallel-data' pins zur Verfügung steht
-- 'L/R' channel pin = channel indicator synchronisiert mit 'int'-pin 
(low=left / high=right), indiziert welche Kanal gerade zur Auslesung an 
den 32 'parallel-data' pins zur Verfügung steht.

*(das 32bit Datenwort soll so lange wie möglich an den Ausgängen stehen 
bleiben, d.h. idealerweise bis das 'ws' Signal am Eingang wechselt, was 
ja schon immer 1 Taktzyklus vor dem Ende des aktuell neu eingelesenen 
'sd' Wortes geschieht (-> siehe Philips-Standard),
so könnte auch gesteuert werden, dass der 'int'-Pin zwischendurch immer 
wieder auf low geht)

---------------
zur Inspiration ggf:
https://www.beyond-circuits.com/wordpress/tutorial/tutorial18/
https://www.beyond-circuits.com/wordpress/tutorial/tutorial18/part2/
https://www.beyond-circuits.com/wordpress/tutorial/tutorial18/part3/
https://github.com/freecores/i2s_to_parallel/blob/master/i2s_to_parallel.vhd
https://github.com/ferdoctor/I2S_RX

-----------------

Angebote/weitere Diskussion NUR über E-Mail: i2s-receiver@24max.de

von Achim M. (minifloat)


Lesenswert?

Dirk B. schrieb:
> suche jemanden der mir einen I²S Receiver in FPGA/CPLD "machen" kann
Du hast doch schon eine fertige Lösung bei den "Freecores" gefunden?
Aber da das das Markt-Forum ist, was hast du dir monetär so vorgestellt?

Dirk B. schrieb:
> was ja schon immer 1 Taktzyklus vor dem Ende des
> aktuell neu eingelesenen 'sd' Wortes geschieht
Wer hindert dich daran, das WS-Signal um einen Takt zu verzögern?
Siehe auch part3 vom von dir verlinkten Tutorial.
Das verzögerte und das nicht verzögerte Signal in ein XOR ergibt einen 
high-aktiven Interrupt. Dieser kann gleich zum latchen von 
Schieberegistern genutzt werden. Dein Interrupt muss dann auf die 
Low-Flanke hören.
Das verzögerte WS-Signal invertiert ergibt den Kanal, der gerade zum 
auslesen bereitsteht.
Also nix, was nicht mit ein paar Gatterchen und z.B. 4x'4094 zu lösen 
wäre.

btw. wo muss der Kram denn eingelesen werden? Kannst du evtl. eine 
SPI-Schnittstelle zweckentfremden?

mfg mf

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
Noch kein Account? Hier anmelden.