Jump to content

    

AVR CPU Core

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}

 

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

Edited by Leka

Share this post


Link to post
Share on other sites
Хотел бы поучаствовать в открытом Verilog-проекте по АВР-совместимому софт-процессору

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

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

 

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

Share this post


Link to post
Share on other sites
Вот в чем смысла не вижу, так именно в этом.

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

 

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

 

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

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

Edited by Leka

Share this post


Link to post
Share on other sites
2 ALL

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

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

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

 

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

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

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

Share this post


Link to post
Share on other sites
Какого компилятора - Си? Это проблема. Ассемблер? Нет проблем!

Си.

Share this post


Link to post
Share on other sites

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

Share this post


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

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

-цена

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites
Ну вот, взяли и раскритиковали человека по полной :(

 

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites
Нет смысла говорить "нет смысла". :)

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

 

Удачи.

Share this post


Link to post
Share on other sites
Опять же вы не внимательно(!!!) читаете мои посты.

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

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

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

 

Удачи.

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this