Вложений: 1
Altera DE1. Разработка и пробелмы связанные с ней.
Собственно решил стартануть новую тему, в которой буду описывать свои наработки для дев борды Altera DE1.
Так же буду задавать вопросы которые возникнут в процессе разработки.
Чуть позже выложу кое-какие наработки по плате.
--------------------------------------------------------------------------------
Итак, для начала приведу список вопросов, которые возникли:
- Методика расчет кадровых и строчных импульсов для VGA контроллера. Тонкости реализации VGA котроллера.
- Модифицикация VGA контроллера под DIGIASIC FPGA ADV7125/ADV7123 VGA board, либо реализация отдельного подмодуля.
- SRAM, SDRAM, EEPROM. Тонкости использования оных в рамках данной платы.
- Интерфейсы UART, PS/2, Audio Codec, JTAG, SDCard - разработка модулей. Тонкости реализации, подводные камни.
- Переключатели, кнопки, семисегментные индикаторы - кто и покакому назначению их использует.
- Подключение встроенной SDCard
Теперь по порядку:
Методика расчет кадровых и строчных импульсов для VGA контроллера. Тонкости реализации VGA котроллера.
1. Как я уже писал в
соседней ветке решил написать свой VGA контроллер. Решил потренироваться с установкой видеорежимов, заодно сформировать базовый модуль для генератора синхроимпульсов. Возник вопрос: - Как правильно формировать синхроимпульсы?
Нашел данные для некоторых видеорежимов. Попробовал имплементировать - результат успешный.
Ewgeny7 посоветовал придерживаться общей методики расчета на основании диаграм и под различные разрешения просто масштабировать сигналы. Заодно я узнал, что лучше
Цитата:
Сообщение от
Ewgeny7
все синхроимпульсы. гашение и прочие бланки оставлять на конец счетчиков, а не в начало. Счетчики нужны также для адресации видеопамяти, поэтому "левый край" должен начинаться с нуля, спокойно тикать до конца видимой области, а уж потом запускать синхроимпульсы.
Также из беседы
Ewgeny7 и
Viktor2312 о программировании VGA почерпнул немного теории расчета. Вчерашние поиски теории в нете завершились находкой калькулятора для рачета синхросигналов. Попробовал расчитывать в нем табличные видеорежимы - результаты совпали. Калькулятор приаттачил (vesa.xls.7z).
При проектировании видеоконтроллера стоит учитывать Особенности архитектуры, которая эмулируется в железе, т.к. из-за несоблюдения тайимнгов мы не получим полноценной эмуляции железа. Примеры: Pentagon multicolor и т.д.
[свернуть]
DIGIASIC FPGA ADV7125/ADV7123 VGA board
думаю проблем не должно возникнуть. Т.к. это обычный ЦАП. Документация на данный чип есть, и довольно неплохая.
[свернуть]
SRAM, SDRAM, EEPROM. Тонкости использования оных в рамках данной платы.
Часть информации почерпнул из
темы про Вектор-06ц и
Башкирию 2м. Спасибо
svofski,
ivagor.
EEPROM - вроде бы никто не использует, но могу ошибаться, т.к. не все темы просматривал.
Известные проблемы SRAM
Цитата:
Сообщение от
ivagor
Пара слов про новые DE1 и SRAM EDBLL.
1. Резисторы добавлять нужно.
2. Если соблюдались тайминги срама, то все может и сразу заработать. Мне пока такие случаи не попадались (т.е. скорее всего заработает, но с ошибками). Чтобы избавиться от ошибок:
2.1. Или подбираем timing constraints
2.2. Или используем доступ к срам организованный по аналогии со сдрам - в первом такте выставляем адрес и т.д.
Т.е. EDBLL сама по себе неплохая, тем более ECC, но внезапная и непродуманная замена на неё на DE1 - это очень нехорошо со стороны терасиковцев. Они даже панель управления не адаптировали и примеров под новый срам не приложили.
Цитата:
Сообщение от
ivagor
Насколько помню, у BLL и EDBLL даже формально в даташите тайминги одинаковые. У IS61LV25616 вроде есть какое-то микроотличие, но это не мешает работать проектам с BLL и наоборот. А на платах с EDBLL нужно делать 2 вещи
1. set_instance_assignment -name CYCLONEII_TERMINATION "SERIES 25 OHMS" -to срамовские пины
2. Надо соблюдать тайминги. Из попробованных любительских проектов, сделанных на "старых" de1 и использующих срам ни один без доработки не работал нормально. Помогает или подгонка таймквестом или переделка на правильный доступ по тактам (я, например, накропал контроллер на базе сдрамного).
п.2 явно из-за ECCшности EDBLL, а вот почему п.2. не помогает без п.1 - не знаю, но это многократно проверенный факт
Дополнительная информация:
[свернуть]
Интерфейсы UART, PS/2, Audio Codec, JTAG, SDCard - разработка модулей. Тонкости реализации, подводные камни
PS/2 - судя по схеме платы и DE1_pin_assignments.csv можно только одно PS/2 утсройтво подключить?
[свернуть]
Переключатели, кнопки, семисегментные индикаторы - кто и покакому назначению их использует.
Из того, что выяснил:
- Переключатели - задание режимов работы FPGA эмулятора. Что логично.
- Кнопки - различные функции. RESET и т.д. Опять же - логично.
- Семисегментные индикаторы - при эмуляции ВМ80/Z80 в основном используется как PC (Могу ошибаться).
[свернуть]
Подключение встроенной SDCard
Решил прикрутить SD к проекту. И получил ошибку
Код:
Error: Can't place multiple pins assigned to pin location Pin_W20 (IOC_X50_Y2_N1)
Info: Pin SD_DAT is assigned to pin location Pin_W20 (IOC_X50_Y2_N1)
Info: Pin ~LVDS91p/nCEO~ is assigned to pin location Pin_W20 (IOC_X50_Y2_N1)
Решение нашлось в ветке
bk0010-fpga в DE1
Цитата:
Сообщение от
svofski
Цитата:
Цитата:
set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
Но оно так и есть, если только Квартус сам чего-нибудь не перелопатил. Нужно пойти в assignments -> device & pin settings -> dual purpose pins и убедиться, что nCEO используется как обычный I/O после конфигурации.
Цитата:
Сообщение от
zebest
[свернуть]
Какую-то информацию черпал еще из 1chipMSX.
Предлагаю в данной теме делится наработками по данной плате. Начинающим как раз будет подспорье.