Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

eeprom z 8 na 16 bitów

02 Jan 2006 23:27 1599 17
  • Level 10  
    Witam
    chcę zbudować sobie notes elektroniczny na procesorku 8086.
    Ten procesor ma szynę danych 16 bitową i tu (chyba) rodzi się problem.
    Jako bios ma posłużyć pamięć o strukturze 8 bitowej.
    Jak podłączyć tą pamięć aby procesor widział ją poprawnie?
    Jeżeli chodzi o ram to problem można rozwiązać przez podłączenie 2 takich samych kości pamięci równolegle przez co zyskujemy dane w postaci 16 bitowej. Możemy też w zależności od potrzeb odczytywać starszy bądź młodszy bajt, ale jak to zrobić na jednej kości pamięci 8 bitowej?

    Czy istnieja pamięci o wewnętrznej strukturze 8 bitowej, a które wyprowadzają dane w postaci 16 bitowej(2 kolejne komurki)?
  • Level 24  
    Z tego co wiem, to nie ma pamięci wyprowadzających 8 bitów szyną 16-bitową. Nie bardzo miałoby to sens. Jeśli chodzi o BIOS to może zastosować 2x EPROM? Możnaby je połączyć równolegle.

    PS. Czemu robisz to na 8086? Nie prościej byłoby Ci zaciągnąć do tego jakiś nowocześniejszy klon 8051?
  • Level 12  
    Z tego co ja pamiętam, to 8086 ma zewnetrzną magistralę danych właśnie 8-mio bitową (wewnętrzną rzeczywiście 16-to).
    A tak poza tym, to zgadzam się z PS-em genetixa.
  • Level 10  
    Procek 8086 ma szyne 16 bitową. To wersja 8088 została okrojona do zewnętrznej szyny 8 bitowej ze względu na małą liczbe układów 16 bitowych w czasach kiedy powstawały te procki.

    W zasadzie można by to było zrobić na jakimś innym procku, albo nawet na mikrokontrolerze ale ja to robie dla zabawy i jakoś takoś ten układ wpadł mnie w oko i na nim chcę poeksperymentować. :D

    Z tym równoległym układem pamięci to w sumie proste jeżeli chodzi o montaż, ale same ich programowanie na zewnętrznym programatorze to bedzie katorga. Musiałbym co drugi bajt programu ładować do jednej kości pamięci, a potem co drugi do drugiej, aby procek potem widzieł ten kod jako kolejne komórki.:cry:

    Rozważam też opcje zamontowania 16 bitowej pamięci eprom bo wyczytałem, że istnieje w niej coś takiego jak odczyt pojedyńczego bajta. Nie znalazłem jednak na jakiej zasadzie działa to wejście.

    Jeżeli macie jeszcze jakieś pomysły to piszcie:D
  • Level 24  
    ersmoku wrote:
    Z tym równoległym układem pamięci to w sumie proste jeżeli chodzi o montaż, ale same ich programowanie na zewnętrznym programatorze to bedzie katorga. Musiałbym co drugi bajt programu ładować do jednej kości pamięci, a potem co drugi do drugiej, aby procesor potem widzieł ten kod jako kolejne komórki.:cry:
    Wystarczyłby program, który dzieliłby plik binarny na 2 pliki, do jednego zapisując starsze a do drugiego młodsze bajty. Kwadrans pisania w C/C++. Myślę, że to jest najlepsze rozwiązanie.

    ersmoku wrote:
    Jeżeli macie jeszcze jakieś pomysły to piszcie:D
    Haha, Twój problem jest genialnym przykładem na to, że nowe technologie rozleniwiają. Jak widać cofnięcie się do czasów 8080 to jak krok w inny, historyczny wymiar, gdzie wszystko robiło się "na piechotę"... Dzisiaj się wrzuca megaAVR'a, klawiaturkę matrycową, wyświetlacz graficzny i gotowe... reszta to kwestia softu...
  • Level 10  
    HAHA już wiem (chyba) :D
    Rozwiązanie w zasadzie na tyle proste na ile kłopotliwe.

    Procesor 8086 mimo, że jest układem 16 bitowym to jego komendy są instrukcjami 8 bitowym, co za tym idzie procek pobierajć kolejne polecenia z pamieci pobiera je jako słowa 8 bitowe, więc moge podłączyć pamięć pod młodszą część szyny danych i wszystko powinno chodzić. :D

    Narazie to tylko teoria + opisy procka ale sądze, że zadziała.
    Jak tylko zgluce układ to dam znać czy to działa. :D
  • Level 24  
    Szczerze mówiąc nie znam 8086, ale skoro wyprowadzili 16 bitów to chyba nie "dla picu". Co będzie w przypadku instrukcji
    Code:
    mov [rejestr], C
    gdzie C jest stałą 8-bit? Nie sądzę, żeby procesor dwukrotnie sięgał do pamięci przy tak banalnej operacji....
  • Level 10  
    Nie za bardzo rozumiem o co ci chodzi ale działa to tak.

    8086 jest 16 bitowym procesorem z 8 bitowymi rozkazami.
    Przy pobieraniu rozkazu (instrukcji) przez procesor z pamieci pobierane jest 8 bitów danych.

    Jeżeli wykonujemy odczyt (zapis) z (do) pamięci to możemy sami decydować jak chcemy te dane otrzymywać (wysyłać), czy jako słowa 16 bitowe czy też jako 8 bitowe,a w takim przypadku czy ma to być starszy czy młodszy bajt.
  • Level 39  
    ersmoku wrote:
    Nie za bardzo rozumiem o co ci chodzi ale działa to tak.

    8086 jest 16 bitowym procesorem z 8 bitowymi rozkazami.
    Przy pobieraniu rozkazu (instrukcji) przez procesor z pamieci pobierane jest 8 bitów danych.

    Nie wiesz o czym piszesz :(
    Instrukcje procek pobiera zawsze jako 16-bit i umieszcza w specjalnym 6-cio bitowym buforz(queue).Cytat z dokumentacji:
    The instruction stream is fetched from memory as words and is addressed
    internally by the processor to the byte level as necessary.

    ersmoku wrote:

    Jeżeli wykonujemy odczyt (zapis) z (do) pamięci to możemy sami decydować jak chcemy te dane otrzymywać (wysyłać), czy jako słowa 16 bitowe czy też jako 8 bitowe,a w takim przypadku czy ma to być starszy czy młodszy bajt.

    To się zgadza ;)

    Piotrek
  • Level 24  
    zumek wrote:
    Instrukcje procesor pobiera zawsze jako 16-bit i umieszcza w specjalnym 6-cio bitowym buforz(queue)

    6-bitowym czy 6-bajtowym?
  • Level 39  
    genetix wrote:
    zumek wrote:
    Instrukcje procesor pobiera zawsze jako 16-bit i umieszcza w specjalnym 6-cio bitowym buforz(queue)

    6-bitowym czy 6-bajtowym?

    Upsss... :| Oczywiście , że 6-cio bajtowym ;)

    Piotrek
  • Level 10  
    Faktycznie mój błąd :cry: nie doczytałem i napisałem.

    Jednak to oznacza, że znowu jestem w punkcie wyjścia.:cry:
    Czy nie ma innej możliwości i będe musiał podpiąć pamięć równolegle?
    Bardzo mi się nie podoba takie rozwiazanie ale chyba nic lepszego nie wymyśle.
  • Level 24  
    Dwa połączone równolegle EPROMy to chyba jednyne i najtańsze rozwiązanie. Jak już wspomniałem cały problem leży w napisaniu programu rozdzielającego MSB i LAB do oddzielnych plików - jednak jest to do zrobienia nawet dla początkującego programisty.
  • Level 10  
    Z programowaniem nie ma problemu, jakieś 5 minut pisania i po kłopocie, ale chodzi o sam fakt, że zamiast jendego układu mają być dwa. Nie podoba mi się to. :cry:
  • Level 24  
    No elegancko to nie będzie wyglądało napewno... a jak się ma sprawa z biosem na starych płytach PC? Przecież to EPROMY 8-bitowe....
  • Level 10  
    Też sie nad tym zastanawiałem i podejrzewam, że w PC jest jakiś układ odpowiedzialny za to, że po uruchomieniu (restarcie) kompa zawartość z tego epromu jest ładowana do ramu gdzie zachowuje się i wygląda (dla programu) jak obszar biosu. Może to mylna teoria ale pamiętam, że gdy zaczynałem bawić się asemblerem to przy próbie zapisu do obszaru pamięci gdzie znajduje się bios praktycznie zawsze kończyło sie to zwiechom kompa.
    Gdyby to była pamieć eprom (tylko do odczytu) to przy takiej zabawie nic się nie powinno dziać. Przynajmniej tak sądze. :|
  • Level 12  
    mozna podłączyc dwie kosci eprom i beda działały jako jeden 16-bit. trzeba tylko podłączyc WSZYSTKIE PINY RAZEM poza pinami D0-D7 czyli:
    pierwsze osiem pinow D0-D7 bedzie podpiete jako D0-D7 a nastepne D0-D7 beda jako D8-D15.
    http://nintendoallstars.w.interia.pl/romlab/8to16.htm

    program do dzielenia pliku na dwie czesci (pierwsze 8bitow i nastepne 8bitow) mam gdzies tez.



    ---------------------------------------------
    http://bmkmoto.w.interia.pl/jajca.htm
  • VIP Meritorious for electroda.pl
    siudym wrote:
    program do dzielenia pliku na dwie czesci (pierwsze 8bitow i nastepne 8bitow) mam gdzies tez.
    Ja tam powiem, że ja nie mam tego gdzieś, tylko jest na Forum... ;)
pcbway logo