Есть идея сделать миниатюрный вариант вроде Sprinter-а. На немного другом процессоре (ARM7TDMI + ПЛИС). Мне нужен Недопись вместо промперсоналок...
Она проста. Ядро - процессор ( с интегрированной периферией обычно, вроде COM, Eth, FPU, MAC ), ОЗУ, флеш-биос, часы, прочая муть, ПЛИС. В ПЛИСке реализованы скоростные последовательные порты ввода-вывода. Точка-точка. Штук 4 - 16. Однотипные. В ПЛИСке же ( в зависимости от сложности ) есть буфера на ввод-вывод, отображаемые на память процессора. Ответная часть, соответственно, должна иметь ответный буфер, контроллер, который поддерживают протокол обмена с стороны ПЛИС и управляющий периферийным устройством с другой. Ядро может изменяться, ответные части тоже. Интерфейс с протоколом обмена остаётся.
Типы интерфейсов:
1) Низкоскоростной. Дешёвый.
Это SPI, синхронный, уровни 5 и 3,3В КМОП.
Пропускная способность до 1 МБайт/сек. ( На сегодня полностью освоен )
2) Среднескоростной. Подороже.
Это LVDS, синхронный.
Пропускная способность до 30 МБайт/сек.( На сегодня опытные образцы )
3) Высокоскоростной. Дорогой.
Это опять LVDS, только запараллелен.( На сегодня только проект )
До 1 гига в теории :)
Разграничение обязанностей между бивисом и осом. Обеспечение платформонезависимости. Например сегодня ARM, а завтра суперпупермотороллер в свете прикладных программ (что б не переписывать). Обеспечение самоконфигурирования и горячего под/отключения.
Горизонты ( радужные ).
1-3 месяца обсуждение и поиск.
2-4 месяца изготовление прототипа.
1-3 месяца оживление и отладка.
Предлагаемая конфигурация прототипа. Ядро ARM AT91Mxxxx, 128К ОЗУ, 1-4М ПЗУ, иквадратные часы, ПЛИС альтера или ксайлинкс. Клавиатура PS/2. ЖКИ ( символьный или графический ). Флеш накопитель самопальный или DiskOnModul с нашим контроллером (как получиться). Звуковой модуль АС-97.
Вот набор тезисов.
Образно говоря РВМ - микромейнфрейм для одного пользователя. С терминалом, файловым сервером, сервером звука, видео и проч...
Процессорное ядро - собственно процессор, дополнительная ОЗУ, загрузочная флеш-память, связной интерфейс. Минимальное ядро может обойтись без дополнительной оперативной памяти если встроенной достаточно, например, если взять AT91M40800 с 8 Кбайт ОЗУ на борту. А можно применить и сверхпопулярный Z80. В современной инкарнации, наподобие eZ80. Главная и единственная задача процессорного ядра - обработка информации. Максимально быстро.
Как устроено ядро. Да просто. Минимум корпусов, минимум связей между ними. Процессор, ОЗУ, Флеш, ПЛИС связи плюс остальное по вкусу.
Процессор и ОЗУ перерабатывают информацию. Во флешке - бивис, который отвечает за начальное конфигурирование ядра и может, немного оси.
ПЛИС-ина организует интерфейс с листьями. Это самое важное место во всей архитектуре - интерфейс! Мы можем менять ядра ,листья, но интерфейс останется. Это да╦т возможность и постепенного апгрейда и независимой разработки железок.
Естественно, и даже прежде всего, этот интерфейс должен быть проработан с точки зрения программиста. Но опираясь на возможности существующего железа. Какие же возможности видны мне? Типы ПЛИС. Это семейства Flex10K ( есть 5В версии ) или Acex ( 3,3В и меньше) у Altera. Spartan у Xilinx. Во всех этих м/с есть внутренняя память. Которую и будем задействовать для связи. Для программера это будет выглядеть как двухпортовка или FIFO плюс регистры управления.
Примерный алгоритм обмена будет выглядеть так: Дожидаемся освобождения ресурса для обмена. Например, если до этого уже что-то кому-то передавали. Пишем в него запрос. Сваливаем по своим делам..... Приходим, интересуемся, как там наш запрос и не отвалился ли лист.... Ответ на запрос пришёл - прекрасно, забираем. Время, отводимое на эту операцию закончилось, а ответа нет или лист отвалился - обрабатываем ошибку.
К сему предлагаю три картинки - ядро, флеш, жки.
Показан набросок для младшей ПЛИСки серии Асекс фирмы Альтера. Процессор по параллельной шине имеет доступ к буферной памяти по 512 байт, в ПЛИСке таких три памяти. Каждая буферная память может подсоединятся к любому незанятому каналу. Процессор может независимо адресоваться к любой буферной памяти.
Для листа попроще. Задача его интерфейса - всегда быть готовым к приему данных от ядра. Поэтому ДВЕ буферные памяти. На случай, если ядро торопиться, а мелкопроцессор вс╦ ещ╦ ковыряется с предыдущим запросом. В качестве диспетчера памяти планируется использовать самую деш╦вую Альтеру (серии MAX3000A) или что то в этом роде. FRAM как буферную память. Она имеет последовательный, достаточно быстрый интерфейс. Доступны м/с с 5МГц и вроде как доступны с 20МГц. Сайт, где можно поинтересоваться что это - www.chipinfo.ru. Ну и мелкоконтроллер для листа скорее всего AVR или MSP430.
Проанализируем работу такого интерфейса.
Процессор ядра.
Начало
Наш╦л свободный ресурс ( буферную память ).
Записал запрос.
Послал, куда надо.
И так пока ресурсы не закончились.
Пошёл покурил, дела поделал. И с начала.
И так курит годами:)
Мелкоконтроллер листа
Начало
Отбрыкавшись от неотложных дел обнаружил запрос.
Поинтересовался, о чём там говориться.
Ответил. Если ещё есть время глянул - может ещё есть,
пообщаться-то охота. А то всё один, да один.
Ушел по неотложным делам к началу.
И так до очередного сброса:)
Разработан первый вариант конструктива.
Иллюстрация 1. Вид со стороны периферийных модулей
Иллюстрация 2. Вид со стороны управляющего модуля
Платы с разьёмами – периферийные модули, они крепяться на кросс-плату. С другой стороны на кросс плату крепиться управляющий модуль.
Иллюстрация 3. Вид периферийного модуля
Схемы. Первый вариант УМ. На базе AT91M42800 ( Atmel ).
Иллюстрация 4. Центральный процессор
Схемка мелковата, если кому чего – так выложу покрупнее. Имеем загрузочную память 128Кбайт с 8-ми битной шиной. ОЗУ пока не ставим. Пользуемся внутренним. Используем только одну PLLB. Она самая скоростная. Естественно, часики и на всякий пожарный – DATAFLASH. Сделана одна плата. В настоящий момент идёт оживление конструкции.
Далее по плану:
Изготовление кросс платы и одного периферийного модуля.
Иллюстрация 5. Часы и DATAFLASH
Только 1 плата (УМ) есть. Следуюшее, что будем делать - ПМ(ЖКИ),
ПМ(накопитель),ПМ(связь).
Перед тем как изготавливать необходимо понять, что нужно.
По ПМ(ЖКИ):
Например - графический ч.б. ЖКИ 128х64 точки, пц клава, ps/2 мышь.
Или всё на USB. Может цветной ЖКИ 320х240 точек? Звук АС97 или нет?
Без клавы и без мыши? Может вообще, через писявый терминал работать на первых порах?
По ПМ(накопитель):
Ёмкость какая? Файловая система нужна - кто возьмётся?
По ПМ(связь):
СОМ достаточно?
Вот скорбно гляжу на плату УМ. Некому оживить. Сам тоже не успеваю - заказчики навалились, из командировок и писюка не вылазию. Что есть хорошего:
Коммерческий вариант работает как лошадь. До некоммерческого никак не дойду. Хотя очень хочу. Вот фотки (правда с низким разрешением) сделал, пошлю Александру, попрошу вставить в сообщение. Нужны помощники. Программист на ARM и ксилинковец. Интересные факты по коммерческому варианту:
УМ вид со стороны подключения:
УМ вид со стороны БП и часов:
ПМ примеры плат:
Updated by Shaos on November 26, 2014