-
Ynicky
-
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
Кстати, какая м/б цель такого проекта?
Пока не отказался от проекта с Ethernet шилдом.
Есть программа на 32-х разрядных Int.
Перевести в 16-ти разрядные с процессором st16 не получилось.
А ставить свой старый 32-х разрядный процессор - будет проект
исключительно для себя, и никого не заинтересует.
Еще почти доделал ядро st32 с 16-ти разрядной системой команд.
Но тут тоже может никого это не заинтересовать.
А m16 если будут использовать хотя-бы двое - уже интересней.
Николай.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Ynicky
-
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
А оставшиеся 12 опкодов будут использоваться?
Николай.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
Автор темы
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
А оставшиеся 12 опкодов будут использоваться?
Не планировал, тк 1) систему команд подогнал под LCC symbolic, 2) постарался упростить декодер для повышения быстродействия, и один бит опкода выделил для управления мультиплексором адреса (в командах переходов). Но если не хватает какой команды, можно подумать/добавить.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
Автор темы
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Пока не отказался от проекта с Ethernet шилдом.
Есть программа на 32-х разрядных Int.
А там используются байтовые массивы, и тп, что потребует преобразования типов?
Если только 32х-разрядные int, то вроде нет проблем расширить m16 до m32.
Иначе желательно ввести аппаратную поддержку 8/16-разрядных данных.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Leka.
|
-
Ynicky
-
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
Посмотрел исходники.
Да, к сожалению, используется почти полный набор типов:
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.
Николай.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
Автор темы
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Тогда лучше позже вернуться к этому вопросу, как заработает компилятор в машинные коды. Пока мне не ясно, насколько сложно будет ввести полную поддержку типов.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
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.
|
-
Leka
-
Автор темы
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Ynicky пишет: А m16 если будут использовать хотя-бы двое - уже интересней.
Кстати, как владеете Верилогом по сравнению с VHDL?
Я, например, VHDL не знаю совсем. Использую Паскаль/Си/Верилог, и все чаще допускаю ошибки из-за того, что это разные языки со схожим синтаксисом. Поэтому избегаю изучать новые языки.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Leka.
|
-
Ynicky
-
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
Кстати, как владеете Верилогом по сравнению с VHDL?
Начинал с VHDL, поэтому свои разработки всегда пишу на нем.
Но иногда приходится разбираться с Verilog-ом. Синтаксис знаю.
Николай.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
Автор темы
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
4) Не нравится, как пока задумано чтение внешних устройств - через мультиплексор записи в аккумулятор. Придет лучшее решение, поменяю.
Решил пока оставить, но поменял чтение на обмен - содержимое аккумулятора обменивается с внешним устройством. Выбор внешнего устройства определяется опкодом - из 12 ранее свободных задействовал 10, выдается наружу. В связи с этим добавились/поменялись опкоды: IO[0x2]...IO[0xB] 0x2800...0xB800
RET 0xF800 Проще будет присобачить в дальнейшем аппаратное умножение/деление/длинные сдвиги/и тп, если дойдет до этого. Кстати, такое решение уже пробовал раньше - вполне удобно оказалось.
Но иногда приходится разбираться с Verilog-ом. Синтаксис знаю.
У меня сейчас исходники постоянно меняются, как стабилизируются после транслятора в машинные коды, выложу. Еще раз спасибо за архив LCC с подробными инструкциями, без этого не стал бы делать этот проект.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Leka.
|
Время создания страницы: 0.140 секунд