logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wybór procesora i pamięci do 8-bitowego odtwarzacza dźwięku 8 kHz

Pocieszny 05 Gru 2005 22:02 3128 20
REKLAMA
  • #1 2057225
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 261
    Potrzebuję zmontować prościutki odtwarzacz dźwięku 8-bit, 8 kHz, który zapamięta i odtworzy kilkanaście do kilkudziesięciu sekund nagrania.
    Jaki procesor i jaką pamięć najlepiej byłoby do tego użyć? Czy jakaś 24c... da radę obsłużyc taki transfer? Może jest jakiś tani i prosty procesor z wyjściem analogowym? A jeśli takiego nie będzie pod ręką to jako przetwornik C/A posłuży uA741 z wejściami sumującymi.
    Chodzi mi o jak najmniejsze rozmiary i koszt wykonania. Dźwięk z kompa przerzuci się przez UART'a przez specjalny programik.
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #3 2058726
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    a ja mam taki troche dziwny pomysł. możesz dać do procka jakis eeprom lub flasch z wyjściem równoległym. dwieki wgrać do niego z kompa poprze programator (jeśli oczywiście taki posiadasz). i teraz cała ide działania.
    procesor podawał by tylko adresy do pamięci a z wyjścia pamięci dał byś prosty przetwornik cyfrowo-analogowy zbudowany z drabinki rezystorowej.
    oczywiście układy ISD też by sie nadały ale tu mógł byś nagrywać dzwięki prosto z kompa a z ISD chba trzeba to zamieniać na analogowy sygnał (nagrywac prosto z głośników) i tu pojawią się dodatkowe problemy z synchronizacją i jakością oraz poziomem.
  • #4 2059177
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 261
    Wisz co ten pomysł z pamięcią równoległą to chyba nawet niegłupi jest:) i dałoby sie programować przez rs232 używając uC. Jako procesor chyba powinien wystarczyć at89c2051... A jaką pamięć proponujesz? Pamięciami równoległymi jeszcze się nie bawiłem więc dlatego pytam.
  • REKLAMA
  • #5 2059445
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    co do pamięci to ja bym zrobił na tym co mam w domu czyli poszukał bym jakiegoś BIOS od uszkodzonej płyty głównej tam były 4MB=512kb czyli przy 8kHz da to około 64s dźwięku. programować można z programatora równoległego (np. wilem bo taki mam) ale oczywiście można zrobić to na procku i przesyłać przez UART'a ale przesłanie 512kb danych do procka może chwile trwać i procek będzie musiał znać jak się zapisuje w pamięci flash. a to są problemy zaimplemętowaniem tego algorytmu. jest to oczywiście do wykonania ale trzeba szukać noty katalogowej itp a to zajmuje cenny jak dla mnie czas.

    co do procka to at89c2051 może mieć mało pinów bo w najgorszym przypadku potrzebujesz 22 bitów na adres i 8 na dane oraz 2 do sterowania pamięcią i 2 do komunikacji z kompem
    oczywiście można zastosować jakieś układy logiczne do adresowania ale nie można przesadzać bo układ musi w miarę szybko adresować komórki pamięci (8khz).

    Powodzenia i pozdrawiam (prószę zameldować o postępach w projekcie)
  • #6 2060130
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 261
    A jeśli będę zapisywał programatorem to potrzbne będą tylko piny adresowe oraz sterowanie. Co do willema to chyba jego koszt jest większy niż tego urządzenia:/ a na razie nie planuję innego wykorzystania programatora. Jest jakaś wersja "dla ubogich", którą można zmontować szybko na pająka? Z odczytem takiego biosu to będzie tylko tak że podaję adres komórki i sygnał przepisujący ją na wyjście? O ile pamiętam wiele biosów miało jeszcze okienko do kasowania UV - czy to nie będzie sprawiać komplikacji w zaprogramowaniu?
  • #7 2060138
    starob
    Poziom 29  
    Posty: 1088
    Pomógł: 128
    Ocena: 137
    hunterhouse napisał:
    4MB=512kb czyli przy 8kHz da to około 64s dźwięku.


    Dodano po 2 [minuty]:

    Myślę,że 512kb daje ok 32s dzwięku ale ...
    Do wygenerowania dźwięku 8kHz potrzebujesz miniumum 2*8kHz - czyli 16000 próbek/sek*kilkanaściesekund = grubo ponad 160kb, typowa c51 bez dodatkowych sztuczek pozwala zaadresować 64kb.
    Pomysł kolegi z flash-em dobry w przypadku gdy chcemy pamiętać próbki po zaniku napięcia.
    Osobiście radze wybrać procek z większą przestrzenią adresową danych ( nie wiem jaki) i pamięć SRAM ( może podtrzymywaną baterią).

    Dodano po 7 [minuty]:

    BIOSY z okienkiem to EPROMY
  • #8 2060254
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    z tym 8kHz to chodziło mi o próbkowanie a nie o czestotliwość sygnału.
    a przy prubkowaniu 8kHz da nam 512kB/8kHz=64s czyli wszysko sie zgadza. z tym że maksymalna czestotliwość zapisana w tym formacie to 4kHz (pasmo telefoniczne).
    co do pamięci biosów to chodzi mi o nowsze płyty z układami np 29F040
    to jest flash kasowany elektryczne ale ma on wbudowany układ do zapisywania (nierobi sie tego jak w zwykłych eppromach tylko trzeba podawać komendy) odczytywanie jest zato normalne tak jak w pamięciach ram. ram też by mógł być ale po zaniku napięcia tracimy zawartość.

    co do adresowania to można dać układ trzy układy 74s573 i z 8+3portów uzyskujemy 24 porty za pomocą których możemy zaadresowac 16Mb pamięci.
  • #9 2060283
    Jarema
    Użytkownik obserwowany
    Posty: 1179
    Pomógł: 86
    Ocena: 32
    Witam,
    Pytanie czy potrzebna jest rozdzielczość 8 bitowa ?
    Jeśli nie to można by zastosować modulację delta czyli kodowanie jednobitowe.
  • #10 2060311
    starob
    Poziom 29  
    Posty: 1088
    Pomógł: 128
    Ocena: 137
    Inny spusób generowania dzwięku.
    Wróć pamięcią do czasów gdy na świecie nie było jeszcze kart dzwiękowych a w PC grały głośniczki.
    Były one sterowane sygnałem cyfrowym, obecnie mamy wzmacniacze (chyba klasy D też z wyjściem cyfrowym).
    Zasada jest prosta (oględnie mówiąc):
    - jedynka na wyjściu membrama głośnika ma się wychylać
    - następna jedynka na się wychylać dalej;
    - zero cofać;
    -itd..

    Bezwłądnoć głośnika (lub filtr dolnoprzepustowy) powoduje, że słychać.
    Sprawdzone praktycznie, wysyłając specjalnie przygotowane po RS232 9600bps próbki generowałem dźwięk (i nawet mogłem rozpoznać kto mówi).
    Co do ilości próbek i częstotlowości sygnału powiniem wypowiedzeć się ktoś "mądry".
    Może taki sposób pozwoli zaoszczędzić pamięć i uprościć układ
  • REKLAMA
  • #11 2060384
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    wydaje mi się ze to raczej na to samo wyjdzie. bo do zapisu bo do zapisu 1s czestotliwości 4khz będzie z rozdzileczością 8 bitową będzie potrzebne
    64kb
    a w układzie z 1b przetwornikiem też 64kb tylko że czestotliwośc prubkowania będzie o 8 razy większa.

    co innego gdy zmiejszymy zordzielczość do 4 bitów ale to zmiejszy nam pamięc tylko o połowe a jakośc będzie dużu gorsza.
  • #12 2060517
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 261
    No dobra ale chodzi mi o to żeby ten układ miał jak najmniej elementów i był możliwie najtańszy w wykonaniu. Mam kilka biosów z płyt 386 i 486 to są pewnie te z okienkami. Ram nie wchodzi w grę, bo to musi pamiętać nawet po wyjęciu baterii. A szeregowe dadzą radę?
  • #13 2060578
    Jarema
    Użytkownik obserwowany
    Posty: 1179
    Pomógł: 86
    Ocena: 32
    Przypomniałem sobie o swoich eksperymentach ze stacją dyskietek 3.5".
    Z tego co pamietam to stosowałem modulację delta oraz modulowany generator 1MHz w trakcie zapisu.
    Na jednej dyskietce mieściło się ok 35s dźwięku jakości telefonicznej.
    Cały układ składał sie z kilku przerzutników typu D (7474) oraz generatora i komparatora.
  • #14 2060821
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 261
    Robił ktoś z was takie coś?
    http://www.romanblack.com/picsound.htm
    Jakie to daje efekty? Chciałbym, żeby to odtwarzało piosenkę i żeby dała się jako tako zrozumieć. Ale chyba to jest zbyt skomplikowane jak na moje potrzeby.

    Znalazłem jeszcze takie pamięci:
    http://mse.beep.pl/listtest.php?grupa=PAM7
    Jest do tego jakiś prosty programatorek?
  • #15 2061330
    genetix
    Poziom 24  
    Posty: 669
    Pomógł: 42
    hunterhouse napisał:
    co do procka to at89c2051 może mieć mało pinów bo w najgorszym przypadku potrzebujesz 22 bitów na adres i 8 na dane oraz 2 do sterowania pamięcią i 2 do komunikacji z komputerem
    oczywiście można zastosować jakieś układy logiczne do adresowania ale nie można przesadzać bo układ musi w miarę szybko adresować komórki pamięci (8khz).


    Ja bym dał licznik binarny. Nie potrzebujesz dostępu do dowolnej komórki, bo będziesz czytał/zapisywał całość (lub fragment od początku) po kolei. Wystarczy zatem jednym pinem podawać impulsy zwiększające stan licznika, drugim zerowanie (dla szybkiego powrotu do początku oraz dla synchronizacji startu). Taki licznik możesz zrobić np na jakimś większym układzie PLD/CPLD.

    Pakowanie się w budowę multipleksowanej szyny danych/adresów w tak prostym projekcie nie ma sensu, bo to skomplikuje układ, a po co sobie utrudniać życie...

    Co do pamięci, to możnaby powalczyć z kostkami RAM-u ze starych płyt komputerowych (pracowały bodajrze jako cache). Wystarczy podłączyć bateryjkę 3V przez diodę, i powinny trzymać dane.

    pozdrawiam,
    genetix

    Dodano po 1 [minuty]:

    EPROM Bios-u też nie jest dobrym pomysłem, bo kasowanie i programowanie będzie zbyt kłopotliwe (naświetlanie UV, potrzebny programator itd.)
  • #16 2061380
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    zastosowanie logiki zamiast procsorka też jest rozwiązaniem ale tylko gdy chcemy odtważać 1 dzwięk. gdy mamy nagrane kilka dzwików i to jeszcze o różnej długości to raczej bez procka się nie obejdzie. stosowanie epromów z płyt głuwnych to faktycznie pomyłka ale mi chodzi o flash.
    na uszkodzonej płycie głównej od celerona 500MHz była kość 4Mbit czyli 512kb. szkoda że kolega nie posiada programatora bo to mocno uprościło by konstrukcje.
    co do logiki adresującej to myśłałem o 74s573. 8 bitowy zatrzask stosowany do adresowania ramu w AVR'ach. podaje sie na wejście 8bit'ów i impuls na wejście clk a wtedy na wyjściu pojawia się to samo co na wejściu i jest pamiętane do kolejnej szpilki na wejściu clk.

    co do programowania układów 29Fxxx to sprawa nie jest tak trudna jak myślałem. najpierw kasujemy potrzebny sektor a potem zapisujemy na niego nowe bajty. w nocie katalogowej jest wszystko ładnie opisane.

    co do procka to ja bym proponowła coś w 40 pinowej obudowie.
  • #17 2063124
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 261
    To już wiem - 29F sie użyje, bo one nawet fajne są. Trzeba jeszcze luknąć za jakimś schematem programatora do PC. Szukałem w necie ale widzę same komercyjne kombajny:( Jest jakiś prosty programatorek dedykowany dla tych pamięci, który możnaby zrobić szybko i łatwo samemu?

    Ramy odpadają żeby nie było możliwości przypadkowego skasowania przez padniętą baterię.
  • #18 2063150
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    co do programatora to mógł by kolega willema zrobić. nie jest to cud świata ale za cene 20 zł można złożyć jego uproszczoną wersję. ja za 12PLN kupiłem płytke drukowana (wersja 3.1 albo jakoś tak) i 8zł na logike z podstawkami. zamiast tej dużej podstawki ZIF w którą wkłada się programowane układy użyłem zwykłej podstawki precyzyjnej. i działa.
    czy znajdzie kolega coś prostrzego do flashy to nie wiem ale ten programatorek moze sie przydać.

    Dodano po 1 [godziny] 46 [minuty]:

    patrzcie co znalazłem. wzucam tutaj bo może sie przydać a cena jest chyba atrakcyjna. http://www.allegro.pl/show_item.php?item=74237929
    nieznam kolesia ale te pamięci są chba troche droższe :).
  • #19 2063613
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 261
    Płytka do Willema 3.0 jest na allegro za 15zł - sie kupi. Gdzie udało ci się kupić za 12zł(może też tam poszukam)? Jeśli chodzi o scalaki to wszystkie są niezbędne do zaprogramowania tej pamięci? Na razie chcę zmontować kompletne minimum a potem sobie rozbuduję jak będzie więcej kasy w kieszeni.
  • #20 2063723
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    ja swoją płytke do wilema kupiłew w sklepie w poznaniu (kit AVT5070 ).
    co do częsci to chyba będzą wszystkie potrzebne. lepiej nie ryzykować bo i tak kosztują grosze. sama logika i lm7805 i jeden sterownik mcxxxxx ale on koszyuje 1,5 chyba.

    najdroższy był kabel ale i gniazdo. kabel można sobie odpuścić bo idzie płytke podłączyć bezpośrednio w złącze w komputerze (lpt)
  • #21 2268218
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 261
    spox dzięki za porady zamykam temat

Podsumowanie tematu

✨ Dyskusja dotyczy doboru procesora i pamięci do prostego 8-bitowego odtwarzacza dźwięku o próbkowaniu 8 kHz, zdolnego do zapamiętania kilkunastu do kilkudziesięciu sekund nagrania. Proponowane rozwiązania obejmują użycie procesora z rodziny 8051, np. at89c2051, oraz pamięci flash z rodziny 29Fxxx (np. 29F040) o pojemności około 512 kB, co pozwala na zapis około 64 sekund dźwięku. Dyskutowano także o alternatywach, takich jak układy ISD do nagrywania i odtwarzania dźwięku, pamięci EEPROM 24Cxx (szeregowe), pamięci RAM z podtrzymaniem bateryjnym oraz o zastosowaniu pamięci BIOS z uszkodzonych płyt głównych, choć EPROM z okienkiem UV jest mniej praktyczny ze względu na konieczność kasowania UV. Wskazano, że pamięci flash 29Fxxx mają wbudowane układy do programowania i kasowania elektrycznego, co ułatwia ich obsługę. Propozycje obejmują także wykorzystanie prostych przetworników C/A, np. drabinki rezystorowej, lub układów logicznych do adresowania pamięci (np. 74s573). Wskazano, że programowanie pamięci flash można realizować za pomocą programatora Willem, którego uproszczoną wersję można zmontować samodzielnie tanim kosztem. Poruszono też kwestie ograniczeń pinów procesora i konieczności stosowania dodatkowej logiki do adresowania pamięci. Alternatywnie rozważano modulację delta i jednobitowe kodowanie dźwięku dla uproszczenia układu. Ostatecznie autor zdecydował się na pamięć flash 29Fxxx i planuje zbudować prosty programator do jej obsługi.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA