J.F. snipped-for-privacy@poczta.onet.pl.nospam> wrote: : On Tue, 22 Jul 2003 08:39:34 +0000 (UTC), Marek Michalkiewicz wrote: :>Czy problem z dostepnoscia DPRAM jest na tyle powazny, ze lepiej sobie :>odpuscic, skomplikowac troche logike i zastosowac zwykla pamiec SRAM? : : Jesli tylko dasz rade - odpusc sobie.
Troche ciezko bedzie...
Moze opisze, jak wyglada projekt: z jednej strony jest ADC i DAC (dwa w jednym - CS4272) podlaczony przez I2S, probkowanie 192kHz (wykorzystywany tylko jeden z dwoch kanalow w kazdym kierunku, przetwornik generuje wlasny zegar transmisji: 64fs=12.288MHz). Kawalek logiki (prawdopodobnie bedzie to Xilinx 9572) pobiera w kolko kolejne probki 16-bitowe z DPRAM i wysyla do DAC, w tym samym czasie odbiera z ADC i wpisuje do DPRAM pod ten sam adres, potem zwieksza adres o 1 i tak caly czas.
Z drugiej strony jest komputer ktory ma dostep do DPRAM przez magistrale PC/104. Program czyta probki z DPRAM, w jakis tam sposob je przetwarza i wpisuje znowu do DPRAM. Na upartego, DPRAM daloby sie zastapic dwoma pamieciami FIFO, ale problem z dostepnoscia chyba podobny, do tego trzeba jakos obslugiwac oproznienie i przepelnienie. A caly uklad to wlasciwie taka
16-bitowa karta dzwiekowa ISA - full-duplex, mono, ale za to z wypasionym pasmem przenoszenia do ok. 80kHz :)
Docelowo to pewnie zamiast calego tego patentu bedzie jakis DSP z wbudowanym portem I2S - ale na razie trzeba miec cos, na czym da sie w miare latwo testowac algorytmy przetwarzania sygnalu, a najszybciej mi sie to robi pod Linuksem, stad taka moze troche zakrecona konstrukcja oparta na PC.
Zastosowanie zwyklej pamieci RAM wymagaloby wstrzymywania jednej lub drugiej strony w razie konfliktu - wykonalne, ale obawiam sie ze bedzie wymagalo wiekszego Xilinx-a, a jeszcze nie jestem zbyt mocny w narzedziach do tego i moge sie na czyms wylozyc (obie strony DPRAM dzialaja asynchronicznie).
Poza tym, jest sporo danych do przepchniecia przez magistrale ISA (razem w obie strony 768 KB/s), musi zostac troche CPU na wlasciwe przetwarzanie, wiec najchetniej wystawialbym zawsze
0WS# by nie tracic czasu.
Kosci do kart dzwiekowych szukalem - te, ktore byly jeszcze na ISA (nie PCI), nie obslugiwaly probkowania 192kHz (max 48kHz), a pasmo 80kHz jest narzucone w wymaganiach projektu. Tak sobie wymyslilem z tym DPRAM, ze bedzie latwo oprogramowac (bez uzycia przerwan, bez DMA, malo krytyczne czasowo bo w buforze miesci sie 8K probek czyli ok. 40ms, wszystko moze dzialac na poziomie normalnego procesu uzytkownika, bez grzebania w kernelu, tylko mmap() kawalka /dev/mem i jazda) - no i teraz kombinuje...
pozdrawiam Marek