РадиоКот :: Реализация "твердотельного диска" на шину ISA.
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Примочки к ПК >

Теги статьи: Добавить тег

Реализация "твердотельного диска" на шину ISA.

Автор: TheABC
Опубликовано 17.08.2008

2008

В этой статье рассмотрена реализация "твердотельного диска" на шину ISA, позволяющего загружать в PC-совместимый компьютер DOS и прикладное программное обеспечение.
Цель разработки и реализации устройства: обеспечение работы "компьютера" минимальной конфигурации - стандартная офисная материнская плата, сетевая карта, блок питания, - без использования оборудования с движущимися частями.
Причины выбора именно этого варианта решения поставленной проблемы: минимизация (материальных) затрат, возможность познакомиться с особенностями начальной загрузки компьютера, возможность получить представления о работе с программируемой логикой.
Поскольку реализация "твердотельного диска" аппаратно-программная, сначала остановимся на программной части. Устройство "прикидывается" расширением BIOS с одной стороны, и имеет образ ОС и прикладного ПО с другой. При загрузке компьютера расширение BIOS в составе устройства получает управление и подменяет прерывание INT13h, с помощью которого обеспечивается работа с дисками. В результате такой подмены образ ОС и прикладного ПО "монтируется" как дисковод А: и дальше компьютер работает в "обычном" режиме. Подготовка образа производится с помощью специального ПО, хотя можно произвести и ручное "склеивание" частичной посекторной копии 3"5 дискеты с кодом расширения BIOS. Необходмо отметить, что в основу программной части лег найденный на просторах инета проект, существенно переработанный - ссылка на оригинал есть где-то в конце :-)
Теперь об аппаратной части. За основу взят "принцип" BOOTROM сетевой карты - расширение BIOS размещается в выделенном для этих целей участке памяти, начиная с определенного адреса. Так как доступный там объем памяти недостаточен для размещения образа, реализован страничный принцип доступа к размещенной на плате памяти. Для минимизации схемы хранение расширения BIOS и образа выполнено в одной микросхеме памяти, в качестве которой выбрана имеющаяся флэш-память объемом 256КБ в корпусе ДИП. Вообще, поскольку предполагалось изготовление устройства в одном экземпляре на макетной плате, для упрощения монтажа все микросхемы использовались в ДИП корпусах, а количество их по-возможности минимизировалось. Именно из этих соображений для реализации дешифратора (схемы управления) была использована микросхема программируемой логики PALCE16V8, что заодно позволило получить представление о принципах работы с ней. При желании эту микросхему можно заменить на 2-3 корпуса мелкой логики, реализовав на них те же функции, что "записаны" в PALCE16V8. Кроме этих двух микросхем применены: регистр ИР37 - для выбора страниц, буфер АП6 - в основном чтобы "разгрузить" флэш-память от работы на шину, резисторная сборка - для смещения адреса при обращении в область расширения BIOS, ну и немножко конденсаторов - так положено :-)
Собственно, вот и все. Далее приведена схема устройства (блокировочные конденсаторы на ней не указаны):

Несмотря на то, что применяется флэш-память и разведен сигнал записи на микросхему, программно возможность записи не реализована.
"Исходник" для PALCE16V8 выглядит так (проект целиком в конце статьи):

;======================================================================
Name decoD000 ;
PartNo 00 ;
Date 4/9/2008 ;
Revision 01 ;
Designer Engineer ;
Company home ;
Assembly None ;
Location C:WincuplExamplesmy ;
Device G16V8a ;

/* *************** INPUT PINS *********************/
PIN 1 = SMEMW ; /* write RAM */
PIN 2 = SMEMR ; /* read RAM */
PIN 3 = AEN ; /* Adress ENable */
PIN 4 = SA14 ; /* adr 14 */
PIN 5 = SA15 ; /* adr 15 */
PIN 6 = SA16 ; /* adr 16 */
PIN 7 = SA17 ; /* adr 17 */
PIN 8 = SA18 ; /* adr 18 */
PIN 9 = SA19 ; /* adr 19 */

/* *************** OUTPUT PINS *********************/
PIN 16 = DIRap6 ; /* direction DATA */
PIN 12 = OEir37 ; /* out enable register ir37 */
PIN 13 = Cir37 ; /* synhro register ir37 */
PIN 14 = Sflash ; /* CS and OE flashROM */
PIN 15 = WEflash ; /* WE flashROM */

/* *************** LOGIC *********************/
DIRap6 = !(SA19 & SA18 & !SA17 & SA16 & !AEN & !SMEMR & SMEMW);
OEir37 = !(SA19 & SA18 & !SA17 & SA16 & SA15 & !AEN);
Cir37 = !(SA19 & SA18 & !SA17 & SA16 & !SA15 & SA14 & !AEN & SMEMR & !SMEMW);
Sflash = !(SA19 & SA18 & !SA17 & SA16 & !SA14 & !AEN & !SMEMR & SMEMW);
WEflash = !(SA19 & SA18 & !SA17 & SA16 & SA15 & !SA14 & !AEN & SMEMR & !SMEMW);
;======================================================================

Он "компилируется" с помощью бесплатного (?) софта Wincupl, лежащего где-то в недрах сайта Атмел.
Видно, что логические выражения несложны, регулярны и легко переносятся на мелкую логику. Кстати, в них есть небольшой глюк (в связке с методом поиска расширения BIOS при загрузке компьютера), который оказалось проще пофиксить в программе расширения BIOS.
Ну и вот такое устройство у меня получилось:

Под расширение BIOS выделено 16КБ в верхней области флээш-памяти (занято не все), под образ остается 240КБ внизу. Маловато, конечно, но для заданных к устройству требований хватает - вошли ДОС3.3 (загрузочные файлы), WEB-сервер с пакетным драйвером для 3С509, необходимые странички и маленький файловый менеджер. При желании объем можно увеличить, поставив микросхему большего объема, или несколько микросхем, скорректировав содержимое дешифратора.

Несколько слов о причинах создания устройства - хотя оно и кажется в настоящее время бесполезным, это не совсем так. Началось все с http-сервера, способного работать под DOS на безнадежно устаревшем 286 компьютере. Поскольку в инете нашлись исходники для такого сервера, оказалось удобно дополнить его возможностью управлять оборудованием, например, через подключенную к LPT-порту плату реле. Через тот же порт можно и "считывать" состояние оборудования. Здесь под оборудованием понимается что угодно - лампа освещения, вентилятор, насос. Таким образом, получилась "пародия" на промышленный контроллер с удаленным доступом к нему с любого компьютера по локальной сети как к WEB-странице(ам). Чтобы сходство с промконтроллером было более полным, и было разработано и изготовлено из подручных материалов описываемое устройство.
Это фото "прототипа контроллера" без описываемой платы, но с видеокартой:

Файлы:
Проект для PALCE16V8.
Исходники для сборки расширения BIOS и вариант образа.

Вопросы, как обычно, складываем тут.




Как вам эта статья?

Заработало ли это устройство у вас?

17 0 0
2 0 0