Альтернативная система на 68000 :)

Motorola 6800, 6809, 68HC05, 68HC08, 68HC11 и m68k, а также компьютеры на них (Amiga, Macintosh, Palm etc.)

Moderator: Shaos

Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Альтернативная система на 68000 :)

Post by Annett »

Проект 117 :)

По-немножку делаем совместно с другом (на форуме Tim) (моя часть - в основном схемы-платы-ПЛИС-низкоуровневые драйверы, его часть - код верхнего уровня, написание инструментального и отладочного кода, финансовая поддержка. Общее - разработка идеологии и архитектуры).

Хотелось сделать удобную в программировании альтернативную минималистическую, но достаточно мощную систему на PDP-11-подобном процессоре или 68000. И при этом - реконфигурируемую и построенную с использованием ПЛИСок. И заодно - поизучать Verilog :)

В итоге был выбран 68К за его линейное адресное пространство в 16МБайт, 16-битную шину и гибкие методы адресации и удобство кодирования, аналогичные PDP-шным :) Ну и еще - за его специфическую фетишность :)
Немаловажным стало также то, что эти процессоры в наше время пока еще не так сложно приобрести (производились они, кажется, чуть ли не до 2015-го).

Практическое применение - реалтайм-секвенсор для электронной музыки :)


Что тут есть:

ЦП 68000 4..20МГц (такт асинхронный от остальной схемы) под защищенным режимом (режим супервизор+пользователь).
Периферийный контроллер ATmega128.
Системный чип - на ПЛИС Altera MAX2 (EPM1270).
Видео чип - также на ПЛИС EPM1270.
GPIO чип - на самой маленькой ПЛИС из серии MAX2 (EPM240).
Память системная - статическая 256к*16 (впаяна) или 512к*16 (если добавить еще один чип).
Видеопамять выделенная - 256к*16 статическая 10нсек.
Флэшка 256/512к*16 (не напаяна).
RTC (часы) - не напаяна.
8-разрядная байтовая LED- линейка (показывать байтики в двоичном коде :)
Светодиодики RUN HALT RESET :)
2шт кнопок сброса - на Атмегу (холодная перезагрузка системы) и отдельно на 68К и его периферию.
Системный такт 16МГц, процессорный такт 4..20МГц (отдельный кварц).



Интерфейсы:

- Питание 10..20В (DC/DC 5V 2A и 3.3V 0.6A на LM2596+LM1117).
- 16-разрядная системная шина (выведена на контакты расширения). Использована 3-вольтовая логика.
Трансляция уровней с 5В на 3В - на 74LVC125/74LVC4245/74LVC244/74LVC1G17 - по месту разные.
- клавиатура PS/2 (драйвер на атмеге128).
- мышка PS/2 (также через драйвер на атмеге).
- АТМега связана с системной ПЛИС (под 68) через SPI интерфейс.
- 18 линий GPIO на атмеге128 (в том числе на АЦП).
- интерфейс энкодеров с кнопочками - двухканальный, на атмеге128.
- microSD на атмеге128 (загрузка кода супервизора/софта системы).
- отладочный прямой доступ (SPI) на системной ПЛИСке - для удобства быстрой заливки кода с PC.
- видео: VGA 512*400*72Hz (20MHz clk), 640*480*60Hz (25MHz clk) 16/256 цветов.
Загружаемый RAMDAC (трансляция палитры 8 -> 18 bit RGB 6:6:6) (BT476/ADV476).
Предусмотрено место под распайку кодера PAL и ПЦТВ/S-video выход. Не распаяно.
Аппаратное ускорение 2D заливки (в ПЛИС).
- PWM канал на speaker (на атмеге128). Просто чтобы было :)
- RS232 порт, переключаемый на системную ПЛИСку или атмегу.
- RS485 порт (на атмеге128).
- 2 входа MIDI со стандартной опторазвязкой (на системную ПЛИС).
- 2 выхода MIDI (с системной ПЛИС).
- RS485 порт (на системной ПЛИС) - для передатчика DMX512.
- 32 линии GPIO (GPIO ПЛИСка под шиной 68000).
- интерфейс записи-чтения цифрового потока на магнитную ленту (как в ZX, БК и т.д) - на всякий случай
- генератор случайной шумовой последовательности на TL431+LM393.
- системная micro-SD карточка на системной ПЛИС (под 68000).
- юзерская SD (большая) - также на системной ПЛИС (под 68000).


Содержимое ПЛИСок/МК:


1. Системная ПЛИС:
Сейчас относительно готово и работает:
-Шинный интерфейс, системный тактовый генератор, генератор исключений при сбоях цикла шины, DMA, прочие низовые функции обеспечения работы 68000.
-Приоритетный векторный контроллер прерываний (20 линий). 3 линии IRQ выведены на разъем системной шины, 1 линия на GPIO ПЛИСку.
-Таймеры (3шт 8-разрядных).
-Отладочный интерфейс (SPI) с микрокомандами чтения-записи слов и байтов в адресное пространство 68000, запуска-останова 68000. Интерфейс доступен с внешнего разъема (подключение к PC),
и для атмеги128 (начальный запуск, загрузка ядра супервизора), для чего есть мультиплексирование доступа в системной ПЛИСе.
-Менеджер обращения к памяти с разделением привилегии для юзерского и системного режима.
-SPI интерфейсы для SD карточек с переключением скорости обмена и генерацией прерывания при смене карточки (только для юзерской "большой" карточки).
-2 приемника MIDI.
-2 передатчика MIDI.
-таймер событий (генерация тактов ритма для секвенсора) - на основе дробного синтеза частоты с аккумулятором фазы.
-регистр RTC.
-передатчик DMX512.
-приемник и передатчик RS232 (скорость только 115200 для экономии ПЛИСки)
-регистр генератора случайных чисел.



2. ПЛИС GPIO (на шине 68000).
Пока совсем пустая.

3. Видео ПЛИСка:

Есть:
- тактовый генератор (получение сетки сигналов из входного такта 100МГц)
- VGA синхрогенератор (сейчас 640*480*60Гц, экспериментальный был на 512*400*72Гц)
- менеджер обращения к VRAM, обеспечивающий "прозрачную" запись-чтение VRAM со стороны ЦПУ
- сканирование VRAM и простенький конвейер загрузки RAMDAC
- прерывание вертикального обратного хода
- загрузка палитры
- трансляция координат XY в адрес видеопамяти с контролем диапазона
- рисование вертикальных/горизонтальных/диагональных линий с маскировкой битовой маской (для вывода штрих-пунктиров и растровых шрифтов)

Нужно:
- аппаратный указатель мышки с загружаемым образом
- может быть - генератор сеток и указателя в стиле "прицел" для работы с энкодером вместо мышки
- может быть - аппаратный скроллинг
- может быть - рисование произвольных линий по Брезенхему или лучше по Ву
- может быть - спрайт-движок или простейший блиттер - но наверное не вместится...
- может быть еще сделать видеорежим с расслоением на плоскости.

4. АТмега128 периферийный МК:

Есть:
Драйвер PS/2 клавиатуры и мышки.
Драйвер SDшки (простейший, только чтение FAT16).
Очередь событий.
Загрузка 68-го c SDшки.
Нужно:
Всякое - по необходимости... :)


5. Система 68000.

В процессе, по мере построения блоков в ПЛИС, и по мере нахождения душевных сил, - написание ядра, системных функций и всего-всего...


Использованный софт: Altium Designer, Quartus II web edition, gavrasm, avreal, asm68k, самописные программы загрузки-отладки.
--------------------
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 24033
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Альтернативная система на 68000 :)

Post by Shaos »

Только что заметил в неодобренных сообщениях...
Я тут за главного - если что шлите мыло на me собака shaos точка net
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

mc68sec000 работает сразу от 3.3в
привет засранцу лавру :)
bigral
Senior
Posts: 152
Joined: 31 Mar 2012 16:50
Location: 93.73.80.128

Re: Альтернативная система на 68000 :)

Post by bigral »

Чето много разьемов для sd карт (а один стоит так чтоб в него карту можно было влепить только при условии неустановки оптопары? или что оно такое белое?).

Для такого проца, с абсолютно негуманной плотностью кода, того RAM-а мало (надо было лепить минимум 2 банки по simm 30 pin, ато и 4 банки с возможностью выбора или 4 шт 30pin или 1шт 72pin). Но если Вы фанаты оверлейного программирования и лимита "плоского" RAM-а (да еще и pdp11) то самое место было бы там 1801ВМ3 (ну или i8088, или 65816), тогда бы 256кб ram + жЫрное место для оверлеев на sd карте смотрелось бы логичным.

Смесь 3.3v и 5v компонентов всетаки смотрится как раствор "воды и масла", может надо было таки решиться на полное "ретро" и отказаться от 3.3v компонентов?
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

68sec000 - да, но их найти посложнее чем обычный 000 или hc000 (эти есть на али и еще много где... и корпуса прикольнее :)).
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

По разъемам SD карт:

-разъем (микро-SD) на АТмеге128.
С него АТмега может загружать супервизор и/или рабочий код 68К. И (если прошить бутлоадер:) сможет делать апгрейд прошивки самой себя с SDшки. Теоретически еще можно сделать прошивку ПЛИСок с этой же SDшки (потребуется соответствующий код в
прошивке АТмеги, и шнурок-перемычка с GPIO АТмеги на ПЛИСковый JTAG) -но пока совсем не до этого.

-разъем (микро-SD) на системной ПЛИСке (под шиной 68-го). Это тот, что рядом с белой оптопарой. Эта SDшка предназначена для рабочих системных (резидентных) файлов 68-го, которые не потребуется часто менять. Грузиться можно и с нее самим 68-м, если предварительно АТмега загрузит загрузчик супервизора (вариантов загрузки здесь можно напридумать много...). Эта двухступенчатая загрузка сейчас включается вытаскиванием зеленого джампера у АТмеги, но сам загрузчик пока только выдает заставку на экран :) Оптопара никак не мешает открыванию разъема (защелка сдвигается и открывается наружу,- в сторону, противоположную от оптопары).

-разъем (большая SD) на системной ПЛИСке.
Предназначена для хранения трэков/паттернов/пресетов секвенсора, которые нужно оперативно менять. Поэтому и установлена отдельная SDшка удобного для пользования формата.

По памяти:

Сейчас запаяно 256к*16 (512кБайт).
Первые 64К аппаратно выделены в привилегированный сегмент (отданы супервизору). Для "юзерского" кода остается 448кбайт. Можно впаять еще вторую микросхемку 256к*16 - для юзерского кода тогда будет 960Кбайт.

Плюс еще есть примерно 200кБайт в хвосте VRAM, доступных видео-ПЛИСке как массив с X-Y адресацией, а для ЦПУ- как обычная память- это буфер для хранения элементов графического интерфейса с аппаратным копированием в экранную область VRAM.
Для нашего применения всего этого должно быть более чем достаточно. Если когда-нибудь понадобится, - можно же поставить и побольше :)

1801вм3 у меня есть, и он конечно такой красивый керамический-золотой... но мне не нравятся странности его конвейера, да и найти эти процы сейчас уже сложно.

Смесь 3 и 5-вольтовых компонентов - вынужденное решение, так как найти 5-вольтовые ПЛИСы, да еще достаточного размера сейчас сложновато и часто недешево...Циклоны, Спартаны, Максы - почти везде 3-вольтовая (а то и 1.8/2.5) логика.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

Не знаю как у макс2, у цыклонов есть диоды на Vcc (правда, по умолчанию выключенные), а NMOS к тому же имеют очень слабую единичку, так что можно отделаться просто резисторами скажем 500 ом в проводах. Проблему отсутствия диодов до конфигурации цыклонов можно решить рубанием питания 5-вольтовых компонентов, пока плис не сконфигурена. Против подскока питания 3.3в можно балластную нагрузку поставить из 50-омных резисторов ну или стабилитрончики (настоящие или из tl431) на 3.5 вольта например.
привет засранцу лавру :)
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

У Макс2 тоже есть конфигурируемые диоды (но на части ножек и только у епм1270+). Резисторы выше 100ом в разрыв устанавливать не очень хочется - заваливаются фронты. А по условию не превышения тока у меня получалось что нужно минимум 270ом - как-то считала этот вариант.

Шунтовой регулятор защиты от подскока шины +3.3 через диоды - это можно конечно было бы сделать. Но тоже как-то извратно :)
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Немножко картинок (по-немножку доделываю видео-ПЛИСку)
Сегодня дописала секвенсор и декодер микрокоманд и заливку-копирование строчек пикселей.
Сделала двойную скорость (запись 16-словами) - теперь закраска одним цветом (самая простая операция, которая проходит за один цикл) всего экрана проходит где-то 62 раза в 1 сек.
Еще нужно сделать аппаратный мышкин указатель и сделать аппаратный вывод шрифта на графику (пока символы разворачиваются по пикселям программно :)
You do not have the required permissions to view the files attached to this post.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

Для начала можно посчитать, насколько фронты завалятся по сравнению с частотой мотороллерa. Eсли не понравится, то зашунтировать резисторы кондёрами скажем 20 пФ :)
Last edited by angry_troll on 02 Apr 2017 12:49, edited 1 time in total.
привет засранцу лавру :)
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

Annett wrote:Немножко картинок (по-немножку доделываю видео-ПЛИСку)
Сегодня дописала секвенсор и декодер микрокоманд и заливку-копирование строчек пикселей.
Сделала двойную скорость (запись 16-словами) - теперь закраска одним цветом (самая простая операция, которая проходит за один цикл) всего экрана проходит где-то 62 раза в 1 сек.
Еще нужно сделать аппаратный мышкин указатель и сделать аппаратный вывод шрифта на графику (пока символы разворачиваются по пикселям программно :)
Получается AMIGA :)
привет засранцу лавру :)
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

О, еще. А чем код для 68к пишете? На асме, или компилятор сей какой?
привет засранцу лавру :)
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Ну нет же, не совсем amiga :) Клонировать амигу мне не хочется, да и я наверное не смогу :)

Компилятор - асм (asm68k) вот этот http://disk.karelia.pro/1AW01Hx/
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

Понятно.. А си осилить не пробовали? Я в принципе осилил собрать гцц, чтоб он 68к код генерил. Но дальше некуда было применять :)
привет засранцу лавру :)
User avatar
Shaos
Admin
Posts: 24033
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Альтернативная система на 68000 :)

Post by Shaos »

Да, на такой проц наверное лучше (проще) таки на сях писать...
Я тут за главного - если что шлите мыло на me собака shaos точка net