МАРСОХОД

Open Source Hardware Project

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

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

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

Разрешите полюбопытствовать, зачем использовать симулятор, если устройство само может посчитать такты?

Leka пишет: Большая проблема, это стандартная библиотека Си. Минимально необходимая часть ее, применительно к софт-процессорам с маленькой памятью. Ее только самостоятельно писать на ассемблере, или можно взять/адаптировать Си-исходники? Хотелось бы, чтобы все было на Си.


Более 10 лет использую вот этот код:

github.com/l4ka/pistachio/blob/master/user/lib/io/print.cc

Его не сложно адаптировать для lcc. Однако передача аргументов в printf платформо-зависимая.

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

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

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

N=11 ---> cnt1~~cnt2~~90000

Вставил два счетчика в программу.
Получилось это:

cnt1 = 0x5D7E
cnt2 = 0x5B05

Николай.

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

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

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

cnt1 = 0x5D7E
cnt2 = 0x5B05

У меня другие значения, смотрел на ПК (с маской 0xFFFF):
0x6500
0x5F16
Ответ для queens: 0xA78
(2680 в десятичном виде, см. таблицу решений: ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4...80%D0%B7%D1%8F%D1%85 )

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

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

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

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

alman пишет: Разрешите полюбопытствовать, зачем использовать симулятор, если устройство само может посчитать такты?

У меня устроство на стадии разработки, без периферии и тп.

По поводу библиотек и тп, отпишусь позже, после готовности ассемблера.

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

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

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

смотрел на ПК

Главным преимуществом использования стандартного ЯВУ(даже без библиотек) для "своих" процессоров, считаю возможность проверить/отладить алгоритм на ПК. И потом сравнить результат работы "своего" процессора с заведомо правильным решением, полученным на ПК. По этой причине считаю недопустимым использование каких-либо ассемблерных вставок и библиотек, если это мешает проверке алгоритма на ПК.

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

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

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

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

Ynicky пишет: Получилось это:

Что не так?
Упрощенное 430 ядро, например, аппаратно считает ~7 сек для N=13 (75МГц, от 2тактов на инструкцию), с выводом результата в комп по uart. ~2 сек, это у меня только для архитектур с большим регистровым файлом, в котором помещаются все массивы N-ферзей.

С m16 застрял на symbolic ---> asm, проверяю на разных мелких тестах, вылавливаю логические ошибки. Только потом буду делать транслятор в машинные коды. Все-таки "безрегистровая" архитектура (те с большим регистровым файлом) плохо ложится на Си.

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

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

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

Что не так?

Запустил эту же программу на PC.
Результат следующий:




Николай.
Вложения:

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

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

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

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Решения N-ферзей правильные (это главное), а показания счетчиков у меня другие (меньше, но это не так важно). Для первых 5 строк:
N : cnt : cnt1 : cnt2
0 : 0 : 0 : 1
1 : 1 : 1 : 1
2 : 0 : 1 : 2
3 : 0 : 3 : 4
4 : 2 : 8 : 8
Важно, чтобы софт-процессор правильно считал, и интересно сравнить быстродействие (в программах на Си).

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

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

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Кстати, почему на своей SoC не запускали? У меня-то система на m16 еще не готова, а вот 430 и другие свои ядра после исправлений/дополнений всегда проверял в первую очередь на программе N-ферзей.

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

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

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

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Ура! Написал транслятор, симуляция в IcarusVerilog сразу-же(!!!) дала правильный ответ для N-ферзей.
Но число тактов что-то больше выходит, чем ожидалось "на глазок" по ассемблеру - посмотрю внимательнее.

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

Время создания страницы: 0.500 секунд

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