Перейти к содержанию

    

2 ALL

Тема интересная, и думаю - нужная. :1111493779:

Хотел бы поучаствовать в открытом Verilog-проекте по АВР-совместимому софт-процессору - при условии, если кто-то возмется за разработку/изготовление/рассылку, за недорого, простых макеток со Spartan3A(AN)/Cyclone2(3) (те с одинаковым форм-фактором, но разными FPGA) - на которых и будет доводка.

 

"Чистый" АВР мне неинтересен(зачем клонировать изъяны), я бы подумал об

1) максимально ортогонализированной системе 18-битных команд и программе перекодирования скомпилированного 16-битного кода АВР в загружаемый 18-битный код софт-процессора (естественно, придется отказаться от поддержки команд LPM/ELPM/SPM),

2) однотактном исполнении всех команд (по возможности - опция вставки пустых тактов для совместимости по таймингам).

Это позволит оптимизировать софт-процессор по компактности/быстродействию

и сохранить возможность использовать ПО для АВР.

 

Под максимальной ортогонализацией понимаю, например, такие частные случаи для команды "MOV dst, src" - как раз укладывается в 18 бит и в 1 такт(по предварительным прикидкам для Спартанов), и вроде охватывает все случаи АВР

(кроме LPM/ELPM/SPM):

 

MOV Rd, Rs

MOV Rd, (Rs)

MOV Rd, (-Rs)

MOV Rd, (Rs+)

MOV Rd, (s) // (s) ::= {SR|(PC+)|(SP)|Pn|,...}

 

MOV (Rd), Rs

MOV (Rd), (Rs)

MOV (Rd), (-Rs)

MOV (Rd), (Rs+)

MOV (Rd), (s)

 

MOV (-Rd), Rs

MOV (-Rd), (Rs)

MOV (-Rd), (-Rs)

MOV (-Rd), (Rs+)

MOV (-Rd), (s)

 

MOV (Rd+), Rs

MOV (Rd+), (Rs)

MOV (Rd+), (-Rs)

MOV (Rd+), (Rs+)

MOV (Rd+), (s)

 

MOV (d), Rs // (d) ::= {SR|(PC+)|(SP)|Pn|,...}

MOV (d), (Rs)

MOV (d), (-Rs)

MOV (d), (Rs+)

MOV (d), (s)

 

MOV Rd, K

MOV Rd, (Rz) // Rz ::= {X|Y|Z}

MOV (Rz), Rs // Rz ::= {X|Y|Z}

 

Ну и остальные команды (арифметико-логические и переходов) - тоже ортогонализировать. :)

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Хотел бы поучаствовать в открытом Verilog-проекте по АВР-совместимому софт-процессору

Вот в чем смысла не вижу, так именно в этом.

Если пользоваться каким-либо готовым ПО - надо делать копию или надмножество. Если делать "свое" - то в первую очередь задумываться о компиляторе.

 

PS. Где-то тут проскакивала тема о компактном RISC ядре. Оставался вопрос о переделке backend компилятора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вот в чем смысла не вижу, так именно в этом.

Если пользоваться каким-либо готовым ПО - надо делать копию или надмножество. Если делать "свое" - то в первую очередь задумываться о компиляторе.

 

Имею в виду именно надмножество - разница в кодировании инструкций. Написать перекодировщик - вообще не проблема. Проблемные инструкции(типа LPM) замещать переходом на подпрограмму.

 

PS. Где-то тут проскакивала тема о компактном RISC ядре. Оставался вопрос о переделке backend компилятора.

Какого компилятора - Си? Это проблема. Ассемблер? Нет проблем!

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 ALL

Тема интересная, и думаю - нужная. :1111493779:

Хотел бы поучаствовать в открытом Verilog-проекте по АВР-совместимому софт-процессору - при условии, если кто-то возмется за разработку/изготовление/рассылку, за недорого, простых макеток со Spartan3A(AN)/Cyclone2(3) (те с одинаковым форм-фактором, но разными FPGA) - на которых и будет доводка.

Ну и остальные команды (арифметико-логические и переходов) - тоже ортогонализировать. :)

 

Смысла нет никакого. Если уж и делать процессор то не аврку. А что то легко расширяемое и конвейеризируемое.

Иначе, если нужен универсальник проще XSOC16 взять, если жалко 500 баков за ниос, микроблейз отдавать или в асик ставить будете.

На очень худой конец берем пиклоблейз и расширяем его до нужной функциональности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Какого компилятора - Си? Это проблема. Ассемблер? Нет проблем!

Си.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А каков смысл альтернативных процев? Быстрее? Меньше по объему? Проще писать? Ну за исключением цены естественно. А то я на ниосе зациклился...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А каков смысл альтернативных процев? Быстрее? Меньше по объему? Проще писать? Ну за исключением цены естественно. А то я на ниосе зациклился...

Смысла в альтернативных uC нет никаких:

-цена

-геморрой с компиляторами.

Смысл есть только в связке готовый uC-ПЛИС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот, взяли и раскритиковали человека по полной :(

 

Ну и что, что не видите смысла. Зачем их тогда создают? На одном опенкорс куча всяких контроллеров.

А ведь это какой замечательный опыт работы, многие ли могут похвастаться такими проектами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ну вот, взяли и раскритиковали человека по полной :(

 

Ну и что, что не видите смысла. Зачем их тогда создают? На одном опенкорс куча всяких контроллеров.

А ведь это какой замечательный опыт работы, многие ли могут похвастаться такими проектами?

 

вы не внимательно читали, смысла нет делать универсальный контроллер ибо таки туева хуча и первыми из них идут арм7, леон, ниос, микроблейз.

 

А вот сделать специализированный это пожалуйста. опыт создания есть, преимущества вроде тоже просматриваются, но подчеркну еще раз это специализированный, а не универсальный процессор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 des00 - не ругайте сильно, я товарисч новый в этом деле , но можно примеры специализированных контроллеров ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Специализированные контроллеры - заточенные под определенные задачи со спецефически оптимизированными инструкциями и ресурсами. От небольших микропрограмных автоматов до процессоров с N - количеством инструкций. Иногда автоматы делать проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет смысла говорить "нет смысла". :)

Почти все подходит под определенные задачи.

 

У меня был проэкт на Спартане 3 с Nanoblaze. Потом перешел на Cyclone, и передал управляющие функции PICу, найденному на opencores. Почему PIC? Для него все ассемблеры/компайлеры/симуляторы заточены.

 

A AVR IMHO на порядок удобнее в работе с достаточно ортогональной системой комманд. Я их много повсюду понатыкал, в основном небольшие - от TINY15 do MEGA162.

 

Так что в след. раз надо будет проц в FPGA - попробую этот AVR. :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Нет смысла говорить "нет смысла". :)

Почти все подходит под определенные задачи.

 

У меня был проэкт на Спартане 3 с Nanoblaze. Потом перешел на Cyclone, и передал управляющие функции PICу, найденному на opencores. Почему PIC? Для него все ассемблеры/компайлеры/симуляторы заточены.

 

A AVR IMHO на порядок удобнее в работе с достаточно ортогональной системой комманд. Я их много повсюду понатыкал, в основном небольшие - от TINY15 do MEGA162.

 

Так что в след. раз надо будет проц в FPGA - попробую этот AVR. :a14:

 

Опять же вы не внимательно(!!!) читаете мои посты.

 

Нет смысла РАЗРАБАТЫВАТЬ универсальный процессор. Про применение универсального процессора я не сказал ни слова.

 

Рассмотрим ваш пример. Может быть я ошибаюсь, но из вашего поста видно что вы не стали разрабатывать собственное ядро, а взяли его готовое с опенкоресов ? Вы же не стали сами с нуля делать полностью совместимое ядро.

 

А вот разработать процессор для конкретной задачи, как это сделал iosifk (www.iosifk.narod.ru) это был правильный вариант решения. Подробности смотрите у него на сайте, все с пояснениями и графиками.

 

ИМХО смысл разрабатывать универсальный процессор есть только в следующих случаях :

 

1. из-за любви к искусству, что мы и видим на опенкорес.

2. специфика применения (лицензионная частота например для асика, военные применения).

3. реклама, и это мы тоже видим на опенкорес.

 

Удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Опять же вы не внимательно(!!!) читаете мои посты.

 

Я не спорил с Вами, а скорее с другим постом, но это не так важно.

 

Нет смысла РАЗРАБАТЫВАТЬ универсальный процессор. Про применение универсального процессора я не сказал ни слова.

 

Рассмотрим ваш пример. Может быть я ошибаюсь, но из вашего поста видно что вы не стали разрабатывать собственное ядро, а взяли его готовое с опенкоресов ? Вы же не стали сами с нуля делать полностью совместимое ядро.

 

Не стал посколько нашел готовый для решения своей задачи. Надо было не шашечки, а ехать.

А в другой раз, когда было скучно, сделал свой просто так...

 

А вот разработать процессор для конкретной задачи, как это сделал iosifk (www.iosifk.narod.ru) это был правильный вариант решения. Подробности смотрите у него на сайте, все с пояснениями и графиками.

 

ИМХО смысл разрабатывать универсальный процессор есть только в следующих случаях :

 

1. из-за любви к искусству, что мы и видим на опенкорес.

2. специфика применения (лицензионная частота например для асика, военные применения).

3. реклама, и это мы тоже видим на опенкорес.

 

Удачи.

 

Не спорю ни по одному пункту. Удачи и Вам!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация