FDD-контроллер для NedoPC

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24100
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вот и фотки подоспели:
Ball Bess wrote:Нашёл вот плату контроллера дисковода от Агата (старый русский клон Эппла), ща сфотаю и отправлю Шаосу, пусть увидит, что такое мелкая логика. Никакого спецконтроллера нет там, просто пара ВВ55-х, ПЗУ и мелочёвка... Но всё же - MFM, "дабл-денсити", 800 килобайт на диск влезает. 21 сектор по 256 байтов на дорожке, если не ошибаюсь.
Вот контроллер от Агата. Широкие микрухи с надписями белой краской - ПЗУшки РТ5, похожие на них, но без пометок - к155ИР13, самые большие - КР580ВВ55А.
Синий разъём - к дисководу.

Image
Ball Bess wrote:Кроме того, есть вот от IBM PC/XT карточка. Тут просто классический чипец i8272, обвешанный всякими сепараторами, дешифраторами и прочей хренью, что к нему положено. ПЗУ даже стоит. Не меньше Спековского Бета-диска получилось. Плата поддерживает до 1,2 Мб, но это уже "хай денсити" :kruto: , значит 500 килобит/сек. А можно переделать и на 1,44 Мб, я думаю...
А вот от IBM PC/XT. На ней ПЗУ 2764, контроллер i8272А, парочка ИМС программируемой логики PAL16xxx и остальные - обычная логика 74LSxxx.

Image
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Ball Bess
Maniac
Posts: 211
Joined: 14 Mar 2006 00:20
Location: Иркутск

Post by Ball Bess »

Говоря о 765-м чипе, я, конечно, малость внёс путаницу. Надо было употреблять более строгие и правильные названия. Программист может называть 765-м очень многие микрухи, потому что с его точки зрения это - одно и то же. А с точки зрения конструктора NEC'овский uPD765a (i8272) - это одно, а WD37C65 - другое. Контроллер на первом вы видите на фото. А во второй уже запихнули всё содержимое изображённой на фотке платы, но с точки зрения программиста при этом ничего не изменилось. Более того, с точки зрения ISA шины тоже ничего не изменилось. Мы можем убрать с этой карточки i8272a со всей обвязкой, поставить 37C65, и это будет та же карточка. Детально я все типы микрух не изучал, знаю только что интеграция нарастала, но ядро NEC'овского 765-го чипа оставалось, чтобы не нарушилась совместимость. Ещё на мультикартах 286/386-х машин появился гибрид контроллера дисковода с UART'ами (например микруха "Goldstar Prime 2c"), а в 486-х и "Пентиумных" материнках контроллер флопа и вовсе погрузился в большущие чипы с сотнями ног.
Если где-то говорят, что вот есть мультикарта под ISA-16, которая поддерживает только FDD и HDD (без UART), то почти 100%, что она и есть на одночиповом контроллере FDD. А для IDE-винта эта карточка вообще никакой аппаратной поддержки не несёт, являясь просто переходником. Максимум - буфер может быть, чтобы IDE шлейф не создавал лишней нагрузки на шину ISA. Поэтому, если соорудить эмуляцию ISA - шины, то уже всё равно, что там за чип на мультикарте, то ли WD37C65, то ли ещё какой, о совместимости чипов уже позаботились разработчики карточки, главное - что мультикарта для ISA.
Правильно jdigreze заметил:
Для FDC достаточно ISA-8. Вот если еще и HDC нужен - тогда 16 бит надо.

Отсюда вывод - не торопитесь добывать именно определённые микрухи, пока не разобрались, что же мы хотим соорудить. Я собирался попытаться просто пристыковать микруху WD37C65 к недопц и попробовать, как они будут взаимодействовать в программном режиме. Эмуляция ISA-8 - это уже нечто другое, а ISA-16 - третье. Надо ли нам это - вопрос для обсуждения.
Да, вот тут я упомянул про "программный" режим. Поясню. Ещё одно весьма существенное обстоятельство, имеющее отношение к обсуждаемому вопросу - это то, что общение с дисководом (даже не напрямую, а через контроллер FDD) требует от хоста некоего минимума вычислительной мощности, чтобы успевать принимать/выдавать байты и складывать в ОЗУ(брать из ОЗУ). Диск крутится 300 об/мин и ждать не может. Слабый CPU может даже не справиться или всё будет, как сказал HWM, "на пределе". Сам контроллер позволяет два режима - программный и DMA. В IBM PC юзается DMA. Вот надобно бы прикинуть, а может ли 85-й проц программно читать/писать сектора и насколько легко, если может.
Last edited by Ball Bess on 24 May 2006 19:02, edited 1 time in total.
Кто мешает тебе выдумать порох непромокаемый?
User avatar
Shaos
Admin
Posts: 24100
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Спасибо за разъяснения!

Пример ISA-карточки я привёл потому что это единственный пока для меня вариант приобрести чип (так и не смог раскопать чего в этой карточке стоит, но судя по фотке - это один единственный чип).

P.S. Нашёл вариант ISA контроллера подешевле - всего за $7!

http://jameco.com/webapp/wcs/stores/ser ... tId=206316
http://www.elhvb.com/iocard/tdnservices/ca8390.jpg
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Ball Bess
Maniac
Posts: 211
Joined: 14 Mar 2006 00:20
Location: Иркутск

Post by Ball Bess »

Если бы у нас столько стоил старый хлам - я бы немедленно схватил все свои ящики и бросился на базар, продавать :D
А насчёт эмуляции ISA, я понимаю, что это просто пока предложение для обсуждения, но оно как, с идеологией дружит :wink: ? Не начнём из НедоПЦ ещё один ПЦ делать?
Кто мешает тебе выдумать порох непромокаемый?
User avatar
Shaos
Admin
Posts: 24100
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ball Bess wrote:Если бы у нас столько стоил старый хлам - я бы немедленно схватил все свои ящики и бросился на базар, продавать :D
А насчёт эмуляции ISA, я понимаю, что это просто пока предложение для обсуждения, но оно как, с идеологией дружит :wink: ? Не начнём из НедоПЦ ещё один ПЦ делать?
Дык этот хлам вроде как и не старый. В смысле не юзанный :)

По поводу ISA - есть огромный соблазн заюзать некоторое старьё в NedoPC как то модемы, сетевые карты, контроллеры интерфейсов и т.д.

Например внешний интерфейс памяти PIC17C44 является 16-битным - почему бы не поддержать (хотя бы частично) стандарт ISA-16?
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote:Например внешний интерфейс памяти PIC17C44 является 16-битным - почему бы не поддержать (хотя бы частично) стандарт ISA-16?
Может лучше всетаки ARM с внешней шиной ? У ATMELовских АРМов внешняя шина 16бит, внутри он 32х битный. А главное - С на АРМ оптимизируется лучше чем на ПИК.

Правда по цене не знаю... АРМ- около 10 доллАров у нас стоит. Впрочем доллар постоянно падает, что не может не радовать :)
User avatar
Shaos
Admin
Posts: 24100
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote:Например внешний интерфейс памяти PIC17C44 является 16-битным - почему бы не поддержать (хотя бы частично) стандарт ISA-16?
Может лучше всетаки ARM с внешней шиной ? У ATMELовских АРМов внешняя шина 16бит, внутри он 32х битный. А главное - С на АРМ оптимизируется лучше чем на ПИК.
По поводу армов у меня пока сложилось предубеждение, что они сугубо антилюбительские девайсы...
SfS wrote: Правда по цене не знаю... АРМ- около 10 доллАров у нас стоит. Впрочем доллар постоянно падает, что не может не радовать :)
Да нет же - он уже неделю как растёт, а падают российские ценные бумаги - но это уже оффтоп ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Ball Bess
Maniac
Posts: 211
Joined: 14 Mar 2006 00:20
Location: Иркутск

Post by Ball Bess »

Ну, появись шина, сразу найдётся, что туда воткнуть. Но тогда её эмуляция - это отдельная задача, напрямую с FDD и не связанная. Как она может выглядеть аппаратно - отдельный вопрос (для отдельной темы). Можно обсуждать.
По FDD на 765-м чипе сейчас ближайшая задача, как оно мне представляется - выяснить, можно ли обойтись без DMA, справится ли проц самостоятельно. Хотелось бы "хай денсити" (500 кбит/сек), если не получится, то может с "дабл денсити" справится (250 кбит/с). При этом сохраняется максимальная аппаратная простота. Если он этого не сможет, то тогда ему нужна помощь (то ли DMA-контроллер, то ли MCU, обслуживющий дисковую подсистему, то ли ещё что, вариации разные могут быть, но чем сложнее, тем меньше вероятность, что всё это выйдет из стадии обсуждений на практический уровень).
Кто мешает тебе выдумать порох непромокаемый?
User avatar
Shaos
Admin
Posts: 24100
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ball Bess wrote:Ну, появись шина, сразу найдётся, что туда воткнуть. Но тогда её эмуляция - это отдельная задача, напрямую с FDD и не связанная. Как она может выглядеть аппаратно - отдельный вопрос (для отдельной темы). Можно обсуждать.
По FDD на 765-м чипе сейчас ближайшая задача, как оно мне представляется - выяснить, можно ли обойтись без DMA, справится ли проц самостоятельно. Хотелось бы "хай денсити" (500 кбит/сек), если не получится, то может с "дабл денсити" справится (250 кбит/с). При этом сохраняется максимальная аппаратная простота. Если он этого не сможет, то тогда ему нужна помощь (то ли DMA-контроллер, то ли MCU, обслуживющий дисковую подсистему, то ли ещё что, вариации разные могут быть, но чем сложнее, тем меньше вероятность, что всё это выйдет из стадии обсуждений на практический уровень).
Специальный микроконтроллер, обслуживающий контроллер дисков, мне кажется вполне разумным решением
Я тут за главного - если что шлите мыло на me собака shaos точка net
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

500Кбит/сек даже старенький MCS51 программно осилит. Тем более что сектора обычно не более 512 байт. Даже FAT12/16 можно поддержать аппаратно. Мне вот интересно, почему разработчики PC так и не сделали полностью буферированный флопоконтроллер... А то как в анекдоте про многозадачность... ;)
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote:По поводу армов у меня пока сложилось предубеждение, что они сугубо антилюбительские девайсы...
Интересно почему ?
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

jdigreze wrote:500Кбит/сек даже старенький MCS51 программно осилит. Тем более что сектора обычно не более 512 байт.
Между прочим, у Ориона и Специалиста сектора 5х1024 байт, у Спектрума - 16х128 байт, M$ выбрала 9х512 байт. А контроллер поддерживает сетку: 128/256/512/1024 байт. Так что все-таки надо до килобайта держать. Далее, если МК сможет программно перекидывать в/из флоповод/а в свой буфер хотя-бы один сектор (в идеале целую дорожку, чтобы можно было аппаратно форматировать), то все будет пучком, т.к. флаг BUSY есть для этого. Все винты уже давно как так делают. :)
User avatar
Ball Bess
Maniac
Posts: 211
Joined: 14 Mar 2006 00:20
Location: Иркутск

Post by Ball Bess »

jdigreze wrote:500Кбит/сек даже старенький MCS51 программно осилит. Тем более что сектора обычно не более 512 байт.
А на что тут размер секторов влияет? В смысле нагрузки на проц. Главное, чтобы во время обработки сектора темп выдерживать, успевать к очередному байту, а длинный сектор или короткий... :o
Устанет проц, на перекур запросится? :D
Или это уже речь о поддержке посредством MCU? Что, типа, на размер буфера влияет? Так буфер дорожки - самое то.
Кто мешает тебе выдумать порох непромокаемый?
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Post by Mac Buster »

HardWareMan wrote:у Спектрума - 16х128 байт
Всегда было 256 байт на сектор.
M$ выбрала 9х512 байт.
Фактически в MS-DOS сектор может быть до 2048 байт.
Extreme Entertainment
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

HardWareMan wrote:Между прочим, у Ориона и Специалиста сектора 5х1024 байт, у Спектрума - 16х128 байт, M$ выбрала 9х512 байт. А контроллер поддерживает сетку: 128/256/512/1024 байт. Так что все-таки надо до килобайта держать. Далее, если МК сможет программно перекидывать в/из флоповод/а в свой буфер хотя-бы один сектор (в идеале целую дорожку, чтобы можно было аппаратно форматировать), то все будет пучком, т.к. флаг BUSY есть для этого. Все винты уже давно как так делают.
У iS-DOS тоже 5х1024. Но это не принципиально. Т.е. если делать РАМу в размер трека, то получится не больше 16К. Кстати, для форматирования такого объема и не надо, там данные можно паковать в стиле "байт/кол-во", все влезет и в пару-тройку Кб.
Ball Bess wrote:А на что тут размер секторов влияет? В смысле нагрузки на проц. Главное, чтобы во время обработки сектора темп выдерживать, успевать к очередному байту, а длинный сектор или короткий...
Устанет проц, на перекур запросится?
Или это уже речь о поддержке посредством MCU? Что, типа, на размер буфера влияет? Так буфер дорожки - самое то
Собственно говоря, размер сектора влияет только на кол-во необходимой оперативки. А темп держать по прерываниям не так и сложно. Тут недалеко я выкладывал исходник программного анализа i2c на at89c2051, при кварце 11059,2кГц скорость была, если не забыл, около 40Кбайт/сек получилась. Так там анализ последовательной шины в реалтайме. Здесь гораздо проще.Если в качестве контроллера использовать mega8515 с внешней РАМой, то обработать поток из Z0765 будет не проблема.