User Tag List

Показано с 1 по 10 из 538

Тема: Планирую сделать FDD эмулятор на Atmega8

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TomaTLAB Посмотреть сообщение
    Если микроконтроллер успевает по сигналу чтения отдать на шину слово состояния, то по какой причине он не успеет отдать байт данных?
    Да зачем микроконтроллеру успевать отдавать данные ?

    Похоже, что мы говорим о разных схемах эмулятора. Зачем микроконтроллеру заменять программным путем регистр данных или статуса ? Проще иметь эти регистры аппаратно, ведь все регистры размещаются по разным адресам. Это может быть часть ППА или просто ИР22/23. Если помните, в ИР23 сигнал /OE не мешает защелкивать данные в регистр. Процессор 8008 записал в ИР23 байт, который якобы считался из дисковода (а на самом деле из очень большого ОЗУ), а затем записал в регистр статуса или в 2-х разрядный регистр имитирующий ноги 38,39 ВГ93 (что зависит от схемы КНГМД) признак готовности. И всё. Дальше от отдыхает. Ждёт когда произойдёт чтение регистра данных основным процессором, по которому автоматически (аппаратно, т.е без участия процессора 8008) бит в регистре статуса сам сбросится. Узнав об этом, процессор эмулятора, не торопясь, проверит, что в счётчике пакета (BC, где изначально число байтов в секторе) не 0, а после чего снова считает очередной байт: LD A,(HL) : LD (DATA),A : INC HL : LD (READY),A и на петлю контроля флага в регистре статуса.

    А Вы, похоже, говорите о схеме, в которой в качестве интерфейса с ЦП на чтение c контроллера есть всего один ИР22. Тогда нужен триггер формирующий сигнал WAIT шины ЦП. Как только ЦП попытается считать что-то с регистра данных или статуса, то он зависнет по WAIT и будет ждать данных. Тогда 8008 должен выяснять какой адрес стоит на шине, чтобы понять читается регистр данных или регистр статуса и соответственно записать в ИР23 нужное число, а потом сбросить триггер WAIT для ЦП. Это тоже не станет проблемой скорости, т.к не важно с какой скоростью ЦП читает данные из регистра данных и переносит их в своё ОЗУ.

    Цитата Сообщение от EvgenRU
    меня вот что интересует, команда ВГ93 чтение сектора, куда она его читает? В буфер и потом из буфера читается портом #7F или она сразу в память читает?
    Вопрос неточный, но суть вопроса ясна. Это зависит от типа носителя. В старых microSD до 2 Гб была байтовая адресация (32 разряда адреса хватает лишь на 2 Гб). Также в обычном ОЗУ адресация побайтовая. Зачем же эмулятору читать в какой-то промежуточный буфер целый сектор и только потом выдавать его на интерфейс? Это только тормознёт. Но в новых 'microSD' в которых адресация посекторная, а также, возможно для ускорения, можно считывать целый сектор в промежуточный буфер.

    В отличие от прогрессивных МК, древний CPU может адресоваться только к 64К (а 8008 вообще лишь 16К). Поэтому для адресации большого ОЗУ следует применять HD64180ZP8, с встроенным MMU или же нужен регистр, играющий роль менеджера памяти. Удобно сделать окно доступа к большому ОЗУ в 32К, отчего и от 8008 придётся отказаться (т.к он адресуется лишь к 16К) и применить КМОП Z80 (SU880) на такте, например, 2 МГЦ. Тогда по числам, что ЦП записал в регистр трека и регистр сектора, получив команду чтения сектора, Z80 эмулятора вычисляет номер полу-банки и записывает это в регистр выбора полубанки. Отчего в адресном пространстве Z80 возникает фрагмент большой памяти, где находятся нужные данные. Далее по числу в регистре сектора вычисляется адрес начала нужных данных в ОЗУ и загружается в HL, а в BC размер сектора и начинается передача байта за байтом данных (якобы считанных из сектора).

    У меня возник другой вопрос. Если Вы в качестве носителя используете флэш память у которой очень ограниченное число перезаписей, то раз в сколько дней надо менять карточку 'microSD' на новую. Это обычное ОЗУ может работать по 40 лет и скорость их выхода из строя не зависит от числа перезаписей. А на 'microSD' и других флэш носителях можно делать только устройства типа ROM. Вот почему в новомодные цифровые магнитофоны на базе флеш-памяти не вводят запись.
    Последний раз редактировалось barsik; 05.06.2017 в 15:54.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 24
    Последнее: 08.12.2012, 19:00
  2. Тестер транзисторов на ATmega8
    от ILoveSpeccy в разделе Творчество
    Ответов: 10
    Последнее: 19.05.2011, 15:03
  3. Ответов: 0
    Последнее: 31.01.2007, 18:18

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •