МАРСОХОД

Open Source Hardware Project

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

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

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

Кстати, какая м/б цель такого проекта?

Пока не отказался от проекта с Ethernet шилдом.
Есть программа на 32-х разрядных Int.
Перевести в 16-ти разрядные с процессором st16 не получилось.
А ставить свой старый 32-х разрядный процессор - будет проект
исключительно для себя, и никого не заинтересует.
Еще почти доделал ядро st32 с 16-ти разрядной системой команд.
Но тут тоже может никого это не заинтересовать.
А m16 если будут использовать хотя-бы двое - уже интересней.

Николай.

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

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

А оставшиеся 12 опкодов будут использоваться?

Николай.

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

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

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

А оставшиеся 12 опкодов будут использоваться?

Не планировал, тк 1) систему команд подогнал под LCC symbolic, 2) постарался упростить декодер для повышения быстродействия, и один бит опкода выделил для управления мультиплексором адреса (в командах переходов). Но если не хватает какой команды, можно подумать/добавить.

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

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

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

Пока не отказался от проекта с Ethernet шилдом.
Есть программа на 32-х разрядных Int.

А там используются байтовые массивы, и тп, что потребует преобразования типов?
Если только 32х-разрядные int, то вроде нет проблем расширить m16 до m32.
Иначе желательно ввести аппаратную поддержку 8/16-разрядных данных.

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

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

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

Посмотрел исходники.
Да, к сожалению, используется почти полный набор типов:
typedef unsigned char uint8_t; // 8-bit unsigned
typedef unsigned short uint16_t; // 16-bit unsigned
typedef unsigned int uint32_t; // 32-bit unsigned
typedef char prog_char; // 8-bit
typedef char int8_t; // 8-bit
typedef short int16_t; // 16-bit

uint32_t используется при подсчете контрольных сумм.
Массивы - беззнаковые uint8_t.

Николай.

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

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

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Тогда лучше позже вернуться к этому вопросу, как заработает компилятор в машинные коды. Пока мне не ясно, насколько сложно будет ввести полную поддержку типов.

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

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

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

CALL 0xF800
RET 0x0801 // Потом будет 0x0800
...
2) RET поменяю, чтобы ортогонализировать систему команд (добавив косвенно-косвенную адресацию RET @Rn).
3) У меня используется сигнал addressstall, который аппаратно реализован только у Альтеры. Нужен только для команды CALL, чтобы записать в регистр правильное значение PC, после выборки imm адреса перехода. Вместо этого можно дополнительно поставить сумматор PC+2, и отказаться от addressstall. Это упростит логику ядра, и сделает его универсальным. Наверно, так и сделаю.

Сделано, частота даже подросла немного. Опкод CALL тоже изменился:
CALL 0xF000
RET 0x0800

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

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

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

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

Ynicky пишет: А m16 если будут использовать хотя-бы двое - уже интересней.

Кстати, как владеете Верилогом по сравнению с VHDL?
Я, например, VHDL не знаю совсем. Использую Паскаль/Си/Верилог, и все чаще допускаю ошибки из-за того, что это разные языки со схожим синтаксисом. Поэтому избегаю изучать новые языки.

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

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

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

Кстати, как владеете Верилогом по сравнению с VHDL?

Начинал с VHDL, поэтому свои разработки всегда пишу на нем.
Но иногда приходится разбираться с Verilog-ом. Синтаксис знаю.

Николай.

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

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

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

4) Не нравится, как пока задумано чтение внешних устройств - через мультиплексор записи в аккумулятор. Придет лучшее решение, поменяю.

Решил пока оставить, но поменял чтение на обмен - содержимое аккумулятора обменивается с внешним устройством. Выбор внешнего устройства определяется опкодом - из 12 ранее свободных задействовал 10, выдается наружу. В связи с этим добавились/поменялись опкоды:
IO[0x2]...IO[0xB]  0x2800...0xB800
RET  0xF800
Проще будет присобачить в дальнейшем аппаратное умножение/деление/длинные сдвиги/и тп, если дойдет до этого. Кстати, такое решение уже пробовал раньше - вполне удобно оказалось.

Но иногда приходится разбираться с Verilog-ом. Синтаксис знаю.

У меня сейчас исходники постоянно меняются, как стабилизируются после транслятора в машинные коды, выложу. Еще раз спасибо за архив LCC с подробными инструкциями, без этого не стал бы делать этот проект.

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

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

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