nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 22 Oct 2018 14:16



Reply to topic  [ 150 posts ]  Go to page 1, 2, 3, 4, 5 ... 10  Next
Альтернативная система на 68000 :) 
Author Message
Senior

Joined: 30 Mar 2017 01:55
Posts: 137
Reply with quote
Проект 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, самописные программы загрузки-отладки.
--------------------


Attachments:
AB02.jpg
AB02.jpg [ 1.17 MiB | Viewed 3988 times ]
AB01.jpg
AB01.jpg [ 1.21 MiB | Viewed 3988 times ]
b04.jpg
b04.jpg [ 1.5 MiB | Viewed 3988 times ]
30 Mar 2017 06:07
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17028
Location: Colorado
Reply with quote
Только что заметил в неодобренных сообщениях...

_________________
:eugeek: https://twitter.com/Shaos1973


01 Apr 2017 21:18
Profile WWW
Doomed

Joined: 08 Apr 2013 05:04
Posts: 441
Location: 213.247.249.139
Reply with quote
mc68sec000 работает сразу от 3.3в


02 Apr 2017 00:31
Profile
Senior

Joined: 31 Mar 2012 17:50
Posts: 115
Location: 93.73.80.128
Reply with quote
Чето много разьемов для 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 компонентов?


02 Apr 2017 06:56
Profile
Senior

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


02 Apr 2017 06:59
Profile
Senior

Joined: 30 Mar 2017 01:55
Posts: 137
Reply with quote
По разъемам 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) логика.


02 Apr 2017 07:50
Profile
Doomed

Joined: 08 Apr 2013 05:04
Posts: 441
Location: 213.247.249.139
Reply with quote
Не знаю как у макс2, у цыклонов есть диоды на Vcc (правда, по умолчанию выключенные), а NMOS к тому же имеют очень слабую единичку, так что можно отделаться просто резисторами скажем 500 ом в проводах. Проблему отсутствия диодов до конфигурации цыклонов можно решить рубанием питания 5-вольтовых компонентов, пока плис не сконфигурена. Против подскока питания 3.3в можно балластную нагрузку поставить из 50-омных резисторов ну или стабилитрончики (настоящие или из tl431) на 3.5 вольта например.


02 Apr 2017 10:21
Profile
Senior

Joined: 30 Mar 2017 01:55
Posts: 137
Reply with quote
У Макс2 тоже есть конфигурируемые диоды (но на части ножек и только у епм1270+). Резисторы выше 100ом в разрыв устанавливать не очень хочется - заваливаются фронты. А по условию не превышения тока у меня получалось что нужно минимум 270ом - как-то считала этот вариант.

Шунтовой регулятор защиты от подскока шины +3.3 через диоды - это можно конечно было бы сделать. Но тоже как-то извратно :)


02 Apr 2017 10:56
Profile
Senior

Joined: 30 Mar 2017 01:55
Posts: 137
Reply with quote
Немножко картинок (по-немножку доделываю видео-ПЛИСку)
Сегодня дописала секвенсор и декодер микрокоманд и заливку-копирование строчек пикселей.
Сделала двойную скорость (запись 16-словами) - теперь закраска одним цветом (самая простая операция, которая проходит за один цикл) всего экрана проходит где-то 62 раза в 1 сек.
Еще нужно сделать аппаратный мышкин указатель и сделать аппаратный вывод шрифта на графику (пока символы разворачиваются по пикселям программно :)


Attachments:
IMG_2694.JPG
IMG_2694.JPG [ 522.72 KiB | Viewed 3928 times ]
IMG_2693.JPG
IMG_2693.JPG [ 587.97 KiB | Viewed 3928 times ]
e1w4.jpg
e1w4.jpg [ 248.58 KiB | Viewed 3928 times ]
02 Apr 2017 13:26
Profile
Doomed

Joined: 08 Apr 2013 05:04
Posts: 441
Location: 213.247.249.139
Reply with quote
Для начала можно посчитать, насколько фронты завалятся по сравнению с частотой мотороллерa. Eсли не понравится, то зашунтировать резисторы кондёрами скажем 20 пФ :)


Last edited by angry_troll on 02 Apr 2017 13:49, edited 1 time in total.



02 Apr 2017 13:47
Profile
Doomed

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


Получается AMIGA :)


02 Apr 2017 13:48
Profile
Doomed

Joined: 08 Apr 2013 05:04
Posts: 441
Location: 213.247.249.139
Reply with quote
О, еще. А чем код для 68к пишете? На асме, или компилятор сей какой?


02 Apr 2017 14:01
Profile
Senior

Joined: 30 Mar 2017 01:55
Posts: 137
Reply with quote
Ну нет же, не совсем amiga :) Клонировать амигу мне не хочется, да и я наверное не смогу :)

Компилятор - асм (asm68k) вот этот http://disk.karelia.pro/1AW01Hx/


02 Apr 2017 14:44
Profile
Doomed

Joined: 08 Apr 2013 05:04
Posts: 441
Location: 213.247.249.139
Reply with quote
Понятно.. А си осилить не пробовали? Я в принципе осилил собрать гцц, чтоб он 68к код генерил. Но дальше некуда было применять :)


02 Apr 2017 16:21
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17028
Location: Colorado
Reply with quote
Да, на такой проц наверное лучше (проще) таки на сях писать...

_________________
:eugeek: https://twitter.com/Shaos1973


02 Apr 2017 22:01
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 150 posts ]  Go to page 1, 2, 3, 4, 5 ... 10  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.