|
|
|
AVR CPU Core, Хочу поделиться |
|
|
|
Dec 8 2007, 17:23
|
Профессионал
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118
|
2 ALLТема интересная, и думаю - нужная. Хотел бы поучаствовать в открытом 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 - Dec 8 2007, 17:41
|
|
|
|
|
Dec 8 2007, 18:49
|
Знающий
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737
|
Цитата(Leka @ Dec 8 2007, 20:23) Хотел бы поучаствовать в открытом Verilog-проекте по АВР-совместимому софт-процессору Вот в чем смысла не вижу, так именно в этом. Если пользоваться каким-либо готовым ПО - надо делать копию или надмножество. Если делать "свое" - то в первую очередь задумываться о компиляторе. PS. Где-то тут проскакивала тема о компактном RISC ядре. Оставался вопрос о переделке backend компилятора.
|
|
|
|
|
Dec 8 2007, 19:46
|
Профессионал
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118
|
Цитата(den_realan @ Dec 8 2007, 21:49) Вот в чем смысла не вижу, так именно в этом. Если пользоваться каким-либо готовым ПО - надо делать копию или надмножество. Если делать "свое" - то в первую очередь задумываться о компиляторе. Имею в виду именно надмножество - разница в кодировании инструкций. Написать перекодировщик - вообще не проблема. Проблемные инструкции(типа LPM) замещать переходом на подпрограмму. Цитата PS. Где-то тут проскакивала тема о компактном RISC ядре. Оставался вопрос о переделке backend компилятора. Какого компилятора - Си? Это проблема. Ассемблер? Нет проблем!
Сообщение отредактировал Leka - Dec 8 2007, 19:52
|
|
|
|
|
Dec 10 2007, 04:23
|
Вечный ламер
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453
|
Цитата(Leka @ Dec 8 2007, 12:23) 2 ALLТема интересная, и думаю - нужная. Хотел бы поучаствовать в открытом Verilog-проекте по АВР-совместимому софт-процессору - при условии, если кто-то возмется за разработку/изготовление/рассылку, за недорого, простых макеток со Spartan3A(AN)/Cyclone2(3) (те с одинаковым форм-фактором, но разными FPGA) - на которых и будет доводка. Ну и остальные команды (арифметико-логические и переходов) - тоже ортогонализировать. Смысла нет никакого. Если уж и делать процессор то не аврку. А что то легко расширяемое и конвейеризируемое. Иначе, если нужен универсальник проще XSOC16 взять, если жалко 500 баков за ниос, микроблейз отдавать или в асик ставить будете. На очень худой конец берем пиклоблейз и расширяем его до нужной функциональности.
--------------------
|
|
|
|
|
Dec 11 2007, 07:37
|
Группа: Новичок
Сообщений: 4
Регистрация: 11-11-06
Пользователь №: 22 186
|
А каков смысл альтернативных процев? Быстрее? Меньше по объему? Проще писать? Ну за исключением цены естественно. А то я на ниосе зациклился...
|
|
|
|
|
Dec 13 2007, 09:28
|
Бывалый
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615
|
Цитата(sektoris @ Dec 11 2007, 10:37) А каков смысл альтернативных процев? Быстрее? Меньше по объему? Проще писать? Ну за исключением цены естественно. А то я на ниосе зациклился... Смысла в альтернативных uC нет никаких: -цена -геморрой с компиляторами. Смысл есть только в связке готовый uC-ПЛИС.
|
|
|
|
|
Dec 14 2007, 04:05
|
Вечный ламер
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453
|
Цитата(torik @ Dec 13 2007, 16:40) Ну вот, взяли и раскритиковали человека по полной Ну и что, что не видите смысла. Зачем их тогда создают? На одном опенкорс куча всяких контроллеров. А ведь это какой замечательный опыт работы, многие ли могут похвастаться такими проектами? вы не внимательно читали, смысла нет делать универсальный контроллер ибо таки туева хуча и первыми из них идут арм7, леон, ниос, микроблейз. А вот сделать специализированный это пожалуйста. опыт создания есть, преимущества вроде тоже просматриваются, но подчеркну еще раз это специализированный, а не универсальный процессор.
--------------------
|
|
|
|
|
Dec 15 2007, 22:08
|
Местный
Группа: Свой
Сообщений: 420
Регистрация: 22-12-04
Пользователь №: 1 608
|
Нет смысла говорить "нет смысла". Почти все подходит под определенные задачи. У меня был проэкт на Спартане 3 с Nanoblaze. Потом перешел на Cyclone, и передал управляющие функции PICу, найденному на opencores. Почему PIC? Для него все ассемблеры/компайлеры/симуляторы заточены. A AVR IMHO на порядок удобнее в работе с достаточно ортогональной системой комманд. Я их много повсюду понатыкал, в основном небольшие - от TINY15 do MEGA162. Так что в след. раз надо будет проц в FPGA - попробую этот AVR.
|
|
|
|
|
Dec 17 2007, 03:39
|
Вечный ламер
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453
|
Цитата(alexf @ Dec 15 2007, 17:08) Нет смысла говорить "нет смысла". Почти все подходит под определенные задачи. У меня был проэкт на Спартане 3 с Nanoblaze. Потом перешел на Cyclone, и передал управляющие функции PICу, найденному на opencores. Почему PIC? Для него все ассемблеры/компайлеры/симуляторы заточены. A AVR IMHO на порядок удобнее в работе с достаточно ортогональной системой комманд. Я их много повсюду понатыкал, в основном небольшие - от TINY15 do MEGA162. Так что в след. раз надо будет проц в FPGA - попробую этот AVR. Опять же вы не внимательно(!!!) читаете мои посты. Нет смысла РАЗРАБАТЫВАТЬ универсальный процессор. Про применение универсального процессора я не сказал ни слова. Рассмотрим ваш пример. Может быть я ошибаюсь, но из вашего поста видно что вы не стали разрабатывать собственное ядро, а взяли его готовое с опенкоресов ? Вы же не стали сами с нуля делать полностью совместимое ядро. А вот разработать процессор для конкретной задачи, как это сделал iosifk (www.iosifk.narod.ru) это был правильный вариант решения. Подробности смотрите у него на сайте, все с пояснениями и графиками. ИМХО смысл разрабатывать универсальный процессор есть только в следующих случаях : 1. из-за любви к искусству, что мы и видим на опенкорес. 2. специфика применения (лицензионная частота например для асика, военные применения). 3. реклама, и это мы тоже видим на опенкорес. Удачи.
--------------------
|
|
|
|
|
Dec 17 2007, 08:35
|
Местный
Группа: Свой
Сообщений: 420
Регистрация: 22-12-04
Пользователь №: 1 608
|
Цитата(des00 @ Dec 16 2007, 19:39) Опять же вы не внимательно(!!!) читаете мои посты. Я не спорил с Вами, а скорее с другим постом, но это не так важно. Цитата(des00 @ Dec 16 2007, 19:39) Нет смысла РАЗРАБАТЫВАТЬ универсальный процессор. Про применение универсального процессора я не сказал ни слова.
Рассмотрим ваш пример. Может быть я ошибаюсь, но из вашего поста видно что вы не стали разрабатывать собственное ядро, а взяли его готовое с опенкоресов ? Вы же не стали сами с нуля делать полностью совместимое ядро. Не стал посколько нашел готовый для решения своей задачи. Надо было не шашечки, а ехать. А в другой раз, когда было скучно, сделал свой просто так... Цитата(des00 @ Dec 16 2007, 19:39) А вот разработать процессор для конкретной задачи, как это сделал iosifk (www.iosifk.narod.ru) это был правильный вариант решения. Подробности смотрите у него на сайте, все с пояснениями и графиками.
ИМХО смысл разрабатывать универсальный процессор есть только в следующих случаях :
1. из-за любви к искусству, что мы и видим на опенкорес. 2. специфика применения (лицензионная частота например для асика, военные применения). 3. реклама, и это мы тоже видим на опенкорес.
Удачи. Не спорю ни по одному пункту. Удачи и Вам!
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|