МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Минималистичное софт-ядро для Марсохода.

Минималистичное софт-ядро для Марсохода. 3 года 10 мес. назад #4936

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
На днях соберу систему с vjtag, и начну выкладывать.
Упор в открытой части проекта решил сделать не на получение какой-либо законченной практической SoC, а на получение базовой платформы тестирования и сравнения разных самопальных ядер, и компиляторов для них. Поэтому vjtag + tcl. Можно будет загружать разные ядра, прошивки для них, запускать/останавливать, выводить результаты и счетчики тактов - без пересборки дизайнов, без программных загрузчиков, без лишних пинов (только jtag + клок ядра), без дополнительного ПО на стороне ПК.
Открытую SoC на базе самопальных ядер, по многолетним наблюдениям, делать не имеет смысла.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичное софт-ядро для Марсохода. 3 года 10 мес. назад #4946

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Заработало в железе(de0-nano) - Tcl-скрипт загружает hex-прошивку(N-ферзей) по vjtag, запускает ядро, и выводит результаты(правильные!). Не получается пока в нормальном виде вывод делать, тк Tcl очень поверхностно освоил. И надо отладить ожидание передачи по vjtag из ядра в ПК, это не работает пока - молотит без остановки.

Обнаружилась логическая ошибка - неправильно работает приостановка ядра по внешнему сигналу (из-за конвейера). Это легко делается с сигналом разрешения клока, но тогда не будет синтезироваться верилоговское (без примитивов) описание памяти для Альтеры. А с примитивами придется делать раздельные модули памяти для синтеза и симуляции.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичное софт-ядро для Марсохода. 3 года 10 мес. назад #4975

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Tcl пока не освоил нормально, поэтому сделал упрощенный обмен ПК <---> ПЛИС, см исходники.
top.qsf и top.sdc у меня для DE0-nano, для других плат/чипов надо подправить:
1) семейство, чип, имя и пин входного клока в top.qsf
2) имя и период входного клока в top.sdc
3) имя входного клока в top.v
Возможно, для некоторых семейств(Cyclone V и тп) надо будет поменять исходники примитивов.

top.bat запускает синтез
sof.bat загружает прошивку в плату по jtag
f.bat запускает tcl-скрипт, который загружает программу по vjtag и запускает ее.

Ассемблер пока не выложен, тк он в нескольких исполняемых файлах. Соберу в один, выложу .exe Исходники на Паскале, поэтому пока не выкладываю.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka. Причина: Добавил измененный symbolic.c и пример вывода для f.c

Минималистичное софт-ядро для Марсохода. 3 года 10 мес. назад #4976

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Убрал некоторые синтезаторо-зависимые оптимизации, поэтому число ЛЕ возросло (Квартус неправильно "оптимизирует" некоторые модули).
Пробовал запускать на 150 МГц, невзирая на отчет STA - программа загружается и правильно исполняется. На 200 МГц не заработало.

Кстати, я обычно всегда правлю файлы, генерируемые мегавизардом - добавляю параметры и выкидываю лишнее.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичное софт-ядро для Марсохода. 3 года 10 мес. назад #4980

Таки сколько логических элементов и что есть кроме ядра процессора?

Да, я понимаю что можно посмотреть самому, но... быстрее и легче спросить. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от alman.

Минималистичное софт-ядро для Марсохода. 3 года 10 мес. назад #4981

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
А у меня Квартус с рабочими проектами вообще на другом компе.
~220 ЛЕ ядро + память + Virtual JTAG (число ЛЕ зависит от разрядности посылок) + некоторая логика связи ядра с vjtag. В сумме ~500 ЛЕ.

Можно сделать 200 ЛЕ из принципа, если вернуть addressstall и другие оптимизации. Но для открытого проекта решил отказаться от этого.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичное софт-ядро для Марсохода. 3 года 10 мес. назад #4982

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Уф! vjtag странно работает, чтобы правильные значения получить, в программе со стороны ядра надо дважды читать порт...
Заработал счетчик тактов. N-ферзей при N=13 считает за 300млн тактов ---> 3 сек при 100МГц, и 2 сек при 150МГц.
Кстати, отчет STA - 110МГц, но прогон на 150 МГц не выявил сбоев. Либо "разгонный" потенциал велик, либо надо задать констрейны, исключающие "ложные" пути, чтобы STA мог правильно подсчитать частоты.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичное софт-ядро для Марсохода. 3 года 10 мес. назад #5027

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Тем более, что процессоры - тупиковая ветвь эволюции вычислительных средств.

Меня это давно занимало, см давнишнюю тему на другом форуме: electronix.ru/forum?showtopic=72901 .
И, похоже, сам себе сделал подарок на НГ - наметился новый способ высокоуровневого описания FSM, зачем это - см в другой теме:
marsohod.org/forum/razdel-predlozhenij/3...ki?limitstart=0#3098

...Зачем все это? Затем, что будущее не за процессорами, а за реконфигурируемыми вычислениями. И составил для себя такой план практической проверки этой идеи:
1) Проработать методику использования одного из распространенных языков программирования для низкоуровневого описания схем. Выбор пал на Си: "Си как HDL, или Verilog без always". Текущий этап.
2) Перейти к высокоуровневому описанию схем. Для этого в первую очередь надо обеспечить возможность описывать FSM в стиле структурного программирования. Следующий этап, есть некоторые наработки.
3)...

Буду делать.

Так что эту тему сворачиваю. Могу выложить *.exe ассемблера, но без исходников (тк не "причесаны", и на Паскале), если кому интересно. Если нужны какие пояснения, по системе команд и тп, спрашивайте сейчас, потом все вылетит из головы.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичное софт-ядро для Марсохода. 3 года 9 мес. назад #5159

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Что-то не так сделал, хотел просто процитировать кусочек собственного предыдущего поста, а в результате стер его, заменив новым...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Минималистичное софт-ядро для Марсохода. 3 года 9 мес. назад #5161

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
*.v
lcc.exe + symbolic.c
asm.exe
В архиве для de0-nano, для марсоходов легко подправить, см предыдущий пост с исходниками.
Добавил в топ-модуль счетчик тактов, и подправил f.tcl.
Тест N-ферзей - из-за особенностей virtualjtag-а нужно дважды читать порт, см f.c.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.
Время создания страницы: 0.233 секунд

ВКонтакте  facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Проекты пользователей Минималистичное софт-ядро для Марсохода.