
Пришло время воссоздать еще одну легенду 80х! На этот раз это будет commodore C64. Commodore 64 — домашний компьютер с 64 КБ оперативной памяти. Выпущен на рынок компанией Commodore International в августе 1982 года по цене 595 долларов. За всё время выпуска Commodore 64 (1982—1994) было продано более 30 млн компьютеров[1]. Для Commodore 64 было создано порядка 10 тыс. различных программ, включая средства разработки, офисные приложения и игры. Согласно книге рекордов Гиннесса, Commodore 64 до сих пор остаётся лидером продаж среди моделей компьютеров. Так об этом компьютере говорится в википедии.

Для многих компьютерных энтузиастов постсоветского пространства ZX Spectrum стал первым домашним компьютером. А для некоторых и вовсе отправной точкой в программировании. Не стал исключением и автор данных строк. Заполучив в свои руки отладочную плату, способную воспроизвести speccy, было решено незамедлительно этим заняться!
На просторах интернета можно найти руководство: "Проектирование ПК «ZX-Spectrum» на ПЛИС. Туториал для «чайников» и не только…" Воспользовавшись данным руководством, создаем ZX Spectrum 48! По пути исправляем ошибку связанную с отсутствием бордюра. Загружаем в нашу плату, и видим заветную надпись (с) 1982 Sinclair Research Ltd. Но speccy 48 это достаточно скучно. Поэтому мы добавим музыкальный сопроцессор AY-8910 и целых 128 Кб памяти!

Совершенно случайно, на просторах интернета был запеленгован блог товарища Arlet`а. В данном блоге меня заинтересовала генерация с помощью FPGA динамических, вращающихся плоскостей. Эффект достаточно интересный, в оригинале тип эффекта управляется с помощью переключателей. У нас никаких переключателей нет, поэтому мы будем управлять всем происходящим с помощью нашего ARM контроллера по USB. Для этого изменим код нашей статьи Первый проект для VE-EP4CE10E. Если в первом примере по нажатию кнопки '1' в USB терминале pin B.12 сбрасывался в состояние логического нуля, а по нажатию клавиши '2' устанавливался в состояние логической единицы, то теперь нам нужно сделать управление по четырем линиям. Для этого изменим код файла "main.c":

Теперь, когда наш контроллер умеет управлять выводом по командам, поступающим по USB. Мы можем создать проект где микроконтроллер и плис будут взаимодействовать. В качестве взаимодействия, выберем простое действие: при поступлении на вход FPGA логической единицы, на экране монитора будет появляться логотип нашей компании, а при появлении логического нуля соответственно пропадать. Сам процесс создания проекта для плис я опущу, он подробно описан в нашей статье Первый проект для VE-EP4CE10E. Часть 2.. Расскажу только об используемых модулях. Схема проекта представлена ниже:

Как и обещал рассказываю о создании тестового проекта, для проверки ПЛИС EP4CE10E. Для начала нам нужно установить интегрированную среду разработки встроенного программного обеспечения для ПЛИС Altera Quartus II. Для этого переходим на сайт Altera по ссылке https://www.altera.com/downloads/download-center.html. Выбираем для скачивания Quartus II Web Edition. На странице необходимо будет выбрать версию Quartus II поддерживающую нашу FPGA Cyclone IV E. По правилам Altera скачивание возможно только после регистрации. В принципе ничего сложного там нет. Поэтому будем считать что Quartus II Вы скачали. Запускаем Quartus II:

Для одной из наших разработок понадобилось использовать программируемую интегральную схему, сокращенно ПЛИС. Если быть точнее FPGA (field-programmable gate array). Чтоб не решать задачу “в лоб”, было принято решение изготовить отладочные платы для экспериментов. На первой плате решено было применить микросхему FPGA Altera EP4CE10E22I7N. Чтобы она не чувствовала себя одиноко, было решено установить ARM микроконтроллер STM32F102C8T6, SRAM 512 Кбайт, держатель uSD карты, разъем USB, 12 битный R2R VGA цап, и 2 разъема PS/2. В первой стать я поделюсь следующим опытом:
- Установка свободного компилятора GCC для архитектуры ARM
- Установка и настройка среды разработки Eclipse.
- Установка генератора стартового кода STM32CubeMx и создание проекта CDC USB.
- Отладка проекта в Eclipse с помощью J-link.