Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 25

Тема: Новый IDE-контроллер для Ориона

  1. #1
    Master Аватар для alx32
    Регистрация
    17.07.2010
    Адрес
    Ульяновск
    Сообщений
    751
    Благодарностей: 248
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking Новый IDE-контроллер для Ориона

    Где-то чуть больше полугода назад, во время сборки Орион-512, меня удивляло одно обстоятельство - кривой IDE-интерфейс через КР580ВВ55...
    Намучавшись с ним вдоволь, решил как-то исправить эту ситуацию.
    Да и Error404 меня всётаки допёк...
    У Ориона есть одно преимущество - порты ввода/вывода отображены на память, соответственно я решил использовать свойство процессора писать 16-ти битные регистровые пары туда.
    Сообразил схемку (IDE.pdf), которая позволяет это делать напрямую с винчестером.
    Пример кода записи/чтения на схеме.
    Немного поясню как она работает для "программеров":
    Как известно процессор пишет регистровые пары в память начиная с младшего байта, поэтому, во время записи, нужно защёлкивать младший байт во временном регистре U2, а уже при записи старшего байта, содержимое регистра выдаётся на шину винта в D7-D0, а D15-D8 передаётся напрямую через шинный формирователь U4.
    Во время чтения всё происходит в обратном порядке. D7-D0 читаются напрямую через U1, и в этот момент D15-D8 защёлкивются в регистре U3, а уже потом читаются из него.
    В данно схеме есть одно ограничение, писать можно только 16-битные слова, а уже читать и слова и байты.
    Есть мысли по доработке данного контроллера, чтобы можно было писать и байты через U1.

  2. Эти 5 пользователя(ей) поблагодарили alx32 за это полезное сообщение:
    Denn (27.11.2013), Error404 (27.11.2013), gdv2002 (27.11.2013), perestoronin (27.11.2013), Stampmaker (02.09.2016)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Veteran Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    1,065
    Благодарностей: 358
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Извиняюсь за оффтоп, но имхо актуальнее изобрести что-то аналогичное аппаратное для быстрой поддержки SDHC-флэшек. А то подходящие НЖМД нынче и достать сложно, да и смысла нет, ибо флэшки по всем параметрам привлекательнее.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  5. #3
    Master Аватар для alx32
    Регистрация
    17.07.2010
    Адрес
    Ульяновск
    Сообщений
    751
    Благодарностей: 248
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    Извиняюсь за оффтоп, но имхо актуальнее изобрести что-то аналогичное аппаратное для быстрой поддержки SDHC-флэшек. А то подходящие НЖМД нынче и достать сложно, да и смысла нет, ибо флэшки по всем параметрам привлекательнее.
    Для этого нужно соображать переходник SD <-> IDE.

    Отправленно от моего E73 с помощью Tapatalk 4

  6. #4
    Veteran Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    1,065
    Благодарностей: 358
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Wink

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Думаю даже через тормозной и глючный мостик будет всяко лучше чем через флешки
    На SDHC-флэшки нынче HD-видео "на лету" пишут, а уж с орионовскими скоростями и подавно справится, даже с нереальным клоком 20 МГц через DMA.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  7. #5
    Moderator Аватар для Error404
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    3,748
    Благодарностей: 1014
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    Извиняюсь за оффтоп, но имхо актуальнее изобрести что-то аналогичное аппаратное для быстрой поддержки SDHC-флэшек. А то подходящие НЖМД нынче и достать сложно, да и смысла нет, ибо флэшки по всем параметрам привлекательнее.
    CompactFlash же. По сути тот же IDE (ATA), и продается в любом ларьке.
    SD писать на Орионе можно, но оно все равно будет не быстрее CompactFlash, даже с контроллером на микроконтроллере. А DMA на Орионе нет и вряд ли будет.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  8. Этот пользователь поблагодарил Error404 за это полезное сообщение:
    perestoronin (28.11.2013)

  9. #6
    Moderator Аватар для Error404
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    3,748
    Благодарностей: 1014
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alx32 Посмотреть сообщение
    Где-то чуть больше полугода назад, во время сборки Орион-512, меня удивляло одно обстоятельство - кривой IDE-интерфейс через КР580ВВ55...
    Намучавшись с ним вдоволь, решил как-то исправить эту ситуацию.
    Да и Error404 меня всётаки допёк...
    У Ориона есть одно преимущество - порты ввода/вывода отображены на память, соответственно я решил использовать свойство процессора писать 16-ти битные регистровые пары туда.
    Сообразил схемку (IDE.pdf), которая позволяет это делать напрямую с винчестером.
    Пример кода записи/чтения на схеме.
    Немного поясню как она работает для "программеров":
    Как известно процессор пишет регистровые пары в память начиная с младшего байта, поэтому, во время записи, нужно защёлкивать младший байт во временном регистре U2, а уже при записи старшего байта, содержимое регистра выдаётся на шину винта в D7-D0, а D15-D8 передаётся напрямую через шинный формирователь U4.
    Во время чтения всё происходит в обратном порядке. D7-D0 читаются напрямую через U1, и в этот момент D15-D8 защёлкивются в регистре U3, а уже потом читаются из него.
    В данно схеме есть одно ограничение, писать можно только 16-битные слова, а уже читать и слова и байты.
    Есть мысли по доработке данного контроллера, чтобы можно было писать и байты через U1.

    Пара мыслей.
    Адаптер IDE по портам пересекается с сетевой картой (она съедает весь диапазон F770..F7FF), которую я хотел запустить в железе в ближайшее время (т.к. все ПО писалось в эмуляторе).
    Вот тема, относящаяся к ней, и схема.
    Почему так много портов под сеть: под RTL8019AS надо 17 портов - 16 регистров управления и 1 регистр данных. Поскольку этим 17-м регистром я все равно залезал в следующее окно портов, то я решил забрать всё его под быструю пересылку - когда любое обращение в диапазон F780..F7FF дает обращение в порт данных RTL8019AS. Т.е. не надо писать цикл в коде Z80, а можно читать/писать 128байт одним LDIR-ом. Это очень удобно, учитывая что многие TCP пакеты имеют размер менее 128 байт. А большие пакеты можно прочитать за несколько последовательных LDIR (ну или таки циклом - никто не запрещает в-общем то).

    Соответственно по IDE. Тут 2 мысли: надо или переместить адреса портов IDE в диапазон F750..F75F (как на Орионе-ПРО), или же оставить IDE в диапазоне F770..F7FF, но сделать некий сигнал селекта, который будет одну из плат переводить в 3 состояние (для RTL8019AS для этого надо просто активировать сигнал AEN, для IDE видимо придется добавить еще один буфер на вторую половинку данных). И раз уж пошла такая пьянка, то и регистр данных IDE было бы здорово читать (в идеале - и писать) во всем диапазоне F780..F7FF, чтобы чтение/запись 512-байтного сектора IDE выглядело в виде такой подпрограммы (что будет работать быстрее любого цикла, почти как DMA):
    Код:
    ld  bc, 128
    ld  de, destination
    ld  hl, 0F780h
    LDIR
    ld  c, 128
    ld  hl, 0F780h
    LDIR
    ld  c, 128
    ld  hl, 0F780h
    LDIR
    ld  c, 128
    ld  hl, 0F780h
    LDIR
    Последний раз редактировалось Error404; 28.11.2013 в 09:19.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  10. #7
    Guru Аватар для Дмитрий
    Регистрация
    01.01.2009
    Адрес
    Донецк, Украина
    Сообщений
    3,234
    Благодарностей: 715
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    На SDHC-флэшки нынче HD-видео "на лету" пишут
    угу... раз пишут, два... а потом чет не открывается ниче (не зря на нормальных камерах ставят параллельно флешки, чтоб если одна накрылась, то вторая спасает)...

  11. #8
    Master Аватар для alx32
    Регистрация
    17.07.2010
    Адрес
    Ульяновск
    Сообщений
    751
    Благодарностей: 248
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Пара мыслей.
    Адаптер IDE по портам пересекается с сетевой картой (она съедает весь диапазон F770..F7FF), которую я хотел запустить в железе в ближайшее время (т.к. все ПО писалось в эмуляторе).
    Вот тема, относящаяся к ней, и схема.
    Почему так много портов под сеть: под RTL8019AS надо 17 портов - 16 регистров управления и 1 регистр данных. Поскольку этим 17-м регистром я все равно залезал в следующее окно портов, то я решил забрать всё его под быструю пересылку - когда любое обращение в диапазон F780..F7FF дает обращение в порт данных RTL8019AS. Т.е. не надо писать цикл в коде Z80, а можно читать/писать 128байт одним LDIR-ом. Это очень удобно, учитывая что многие TCP пакеты имеют размер менее 128 байт. А большие пакеты можно прочитать за несколько последовательных LDIR (ну или таки циклом - никто не запрещает в-общем то).

    Соответственно по IDE. Тут 2 мысли: надо или переместить адреса портов IDE в диапазон F750..F75F (как на Орионе-ПРО), или же оставить IDE в диапазоне F770..F7FF, но сделать некий сигнал селекта, который будет одну из плат переводить в 3 состояние (для RTL8019AS для этого надо просто активировать сигнал AEN, для IDE видимо придется добавить еще один буфер на вторую половинку данных). И раз уж пошла такая пьянка, то и регистр данных IDE было бы здорово читать (в идеале - и писать) во всем диапазоне F780..F7FF, чтобы чтение/запись 512-байтного сектора IDE выглядело в виде такой подпрограммы (что будет работать быстрее любого цикла, почти как DMA):
    Код:
    ld  bc, 128
    ld  de, destination
    ld  hl, 0F780h
    LDIR
    ld  c, 128
    ld  hl, 0F780h
    LDIR
    ld  c, 128
    ld  hl, 0F780h
    LDIR
    ld  c, 128
    ld  hl, 0F780h
    LDIR
    Может тогда исхитриться и пересылать данные командами OUTIR/INIR?
    У нас там есть свободные порты для этого?
    Нужно 8 портов и все восьмибитные, данные слать прямым потоком туда-обратно. А старший/младший байт переключать триггером, и на всякий случай предусмотреть его сброс, при обращении к портам адреса LBA и команд/статуса. При этом в данной схеме изменится только дешифратор и добавится триггер на ТМ2...

  12. #9
    Moderator Аватар для Error404
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    3,748
    Благодарностей: 1014
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alx32 Посмотреть сообщение
    Может тогда исхитриться и пересылать данные командами OUTIR/INIR?
    У нас там есть свободные порты для этого?
    Нужно 8 портов и все восьмибитные, данные слать прямым потоком туда-обратно. А старший/младший байт переключать триггером, и на всякий случай предусмотреть его сброс, при обращении к портам адреса LBA и команд/статуса. При этом в данной схеме изменится только дешифратор и добавится триггер на ТМ2...
    И в плату Ориона придется вносить изменения (сейчас на внешние платы не выводятся IORQ и компания), и вариант получится только для Z80 (а в адресном пространстве можно и при помощи 8080 работать, хотя конечно циклами, а не LDIR). А вообще, я не вижу особого криминала в том, что надо 4 LDIR вместо 1. Это почти без разницы (относительно более тормозных "программных" циклов).
    В-общем конечно как вариант, надо подумать. Пока скажи: "сплошные" (LDIR-ами) и чтение и запись реализуемы, или только чтение?
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  13. #10
    Master Аватар для alx32
    Регистрация
    17.07.2010
    Адрес
    Ульяновск
    Сообщений
    751
    Благодарностей: 248
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    И в плату Ориона придется вносить изменения (сейчас на внешние платы не выводятся IORQ и компания), и вариант получится только для Z80 (а в адресном пространстве можно и при помощи 8080 работать, хотя конечно циклами, а не LDIR). А вообще, я не вижу особого криминала в том, что надо 4 LDIR вместо 1. Это почти без разницы (относительно более тормозных "программных" циклов).
    В-общем конечно как вариант, надо подумать. Пока скажи: "сплошные" (LDIR-ами) и чтение и запись реализуемы, или только чтение?
    Я тоже не вижу "состава преступления", просто это большое расточитество (надеюсь правильно написал ) памяти, хотя я и не против такого варианта...
    Ладно, уговорил, сегодня засяду за схему...

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Игры для Ориона 128
    от Dota в разделе Орион
    Ответов: 1
    Последнее: 08.10.2012, 13:17
  2. Ответов: 18
    Последнее: 22.03.2012, 08:15
  3. cp/m для Ориона-128
    от sergey2b в разделе Орион
    Ответов: 7
    Последнее: 11.02.2011, 17:52
  4. Схема ОРИОНА-128(НУЖНА)!!!!
    от Nordic в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 02.12.2008, 14:45

Ваши права

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