Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Actel ProAsic3L 3000 сформировать внутри память
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
АндрейЦ
День добрый,

Извиняюсь за чайниковский вопрос, но всё когда нибудь делаешь впервые.
Подскажите, есть необходимость сформировать в сабжевом кристалле микроконтроллерное ядро. При этом обойтись только плисиной.
Т.е. и память программ и ОЗУ создать внутренними ресурсами без использования внешних компонентов. Озу достаточно до килобайта, "флеша" пара десятков килобайт.
Можно ли это сделать?
yes
Цитата(АндрейЦ @ Jul 11 2013, 16:01) *
Подскажите, есть необходимость сформировать в сабжевом кристалле микроконтроллерное ядро. При этом обойтись только плисиной.
Т.е. и память программ и ОЗУ создать внутренними ресурсами без использования внешних компонентов. Озу достаточно до килобайта, "флеша" пара десятков килобайт.
Можно ли это сделать?


естественно можно, берете у Гейслера GRLIB http://gaisler.com/index.php/products/ipcores/soclibrary и вперед, процессор в достаточно мощной конфигурации занимает ~30% 3000L тактовую можно выжать до 30МГц
у Гейслера в новых версиях убраны примеры для актела (в предыдущих были) - либо ищите старую версию, либо я могу выложить пример для актела (по существу, достаточно config.vhd)

процессор наверно излишне мощный, но зато нажал кнопку и готово, к тому же есть с/с++ отладчик и т.п.

проблему вижу в том, что память в актеле не загружается, то есть ПЗУ (как в ксайлинсе/альтере) сделать нельзя. память программ придется синтезировать в виде декодера на логике (в grlib называется AHBROM), ну и соответственно она не может быть большой. из остальной памяти - убираете все, кроме AHBRAM

-----------

ну или как вариант - рышите на opencores.org или какие-то стековые процессоры типа zpu (на опенкоресах есть ссылка)
но с флаш проблему это не решит


АндрейЦ
У меня тут две нетехнические проблемы.
Первая, процессора достаточно уровня 8051. Сейчас проект крутится в меге 2560, выбранной из за 4х уартов и достаточного количества ножек IO.
По организационным причинам, которые совершенно нет желания обсуждать, проект нужно сначала перенести в 3000, а затем в её несколько более экзотическую разновидность.
Вторая, в команде нет плисовода. Но есть некоторое время, чтобы либо пригласить его, либо разобраться самим.
Вот мне и нужна подсказка более сведущих людей, о возмоности это сделать. Т.е. на Ксайлинксе попадались реализации с набортной памятью, на Актеле нет.
Возможности использовать внешнюю память, повторюсь, нет. А выбрать сейчас кристалл и упереться через пару месяцев в мёртвое железо, смерти подобно sm.gif
yes
ну я какбы опытный плисовод sm.gif советую взять отлаженный дизайн со средствами отладки софта и т.п.
если же в ПЛИС нет места и нужно очень компактно - посмотрите на zpu или какую-то еще opencores-овскую разработку (там и 8051 есть), но при этом могут быть проблемы с разработкой софта, глюками, несовместимостью со стандартным ядром и тулзами для него. еще есть компактные процессоры (типа пикоблейза) с писанием на ассемблере и минимумом ресурсов.

дело в том, что у актела нет своего фирменного дизайна процессора, типа ниоса или блейза

---------

несколько более экзотическая разновидность не RTPA3 случаем?

ну а по поводу флаши - я больше пары килобайт на декодерах не делал, слишком тяжело получается. но там есть методы - конвеер, разбитие на несколько блоков и т.д.
также в РА3 / RTPA3 есть 1кбит флаши - мелочь, но что-то можно туда запихать, а потом переписывать в ОЗУ
то есть нужно уже конкретно решать задачу, а не теоретизировать

----------

в рамках озвученного кажется, что решается, но какой-то плисовод скорее всего понадобится sm.gif

=======

ради эксперимента засунул декодер на 12кБ (некая программка для SPARCa) - результат занял 20% ПЛИС РА3 3000L и тактовая 50МГц (15 уровней логики), время синтеза разумное (возможно трассировать будет долго, это уже некогда проверять)
для процессора с более плотным кодом (того же 51) может результаты будут похуже, синтез это процесс типа "эвристического архиватора", но не намного
DASM
А вы вариант Smartfusion2 с набортным Кортекс м3, флешью, рамом и прочими вкусностями не рассматривали?
АндрейЦ
Цитата(yes @ Jul 11 2013, 19:14) *
ну я какбы опытный плисовод sm.gif советую взять отлаженный дизайн со средствами отладки софта и т.п.
если же в ПЛИС нет места и нужно очень компактно - посмотрите на zpu или какую-то еще opencores-овскую разработку (там и 8051 есть), но при этом могут быть проблемы с разработкой софта, глюками, несовместимостью со стандартным ядром и тулзами для него. еще есть компактные процессоры (типа пикоблейза) с писанием на ассемблере и минимумом ресурсов.

дело в том, что у актела нет своего фирменного дизайна процессора, типа ниоса или блейза


Спасибо за информацию, поскольку сей момент передо мной стоит принципиальный вопрос да/нет, ваша помощь более чем!

Цитата(yes @ Jul 11 2013, 19:14) *
---------

несколько более экзотическая разновидность не RTPA3 случаем?


sm.gif

Цитата(yes @ Jul 11 2013, 19:14) *
ну а по поводу флаши - я больше пары килобайт на декодерах не делал, слишком тяжело получается. но там есть методы - конвеер, разбитие на несколько блоков и т.д.
также в РА3 / RTPA3 есть 1кбит флаши - мелочь, но что-то можно туда запихать, а потом переписывать в ОЗУ
то есть нужно уже конкретно решать задачу, а не теоретизировать

----------

в рамках озвученного кажется, что решается, но какой-то плисовод скорее всего понадобится sm.gif


Исчо раз спасибо, будем трусить это дерево.
Тем более есть разработка, с внешней памятью правда, на 600. Ну а тут 3000, надеюсь в разницу "флешка" впишется.

Цитата(DASM @ Jul 11 2013, 19:14) *
А вы вариант Smartfusion2 с набортным Кортекс м3, флешью, рамом и прочими вкусностями не рассматривали?

Увы, нужен именно сабж.
Flexz
ЕМНИП Актель бесплатно предоставляет ядро 51 проца, а так же периферийные модули, плюс вменяемый графический редактор, что бы все это собрать в кучу. Но бортовой ПЗУ-шки тут нет, разве что на регистрах ее сделать (их можно инициализировать в заданное значение), но это имхо извращение уже, да и много не сделать.
Если вам нужен именно RT, то по информации от представителя Актель - Smartfusion2 в перспективе будет переведен в эту категорию.
DASM
Куда переведен? 256 к флеши уже на борту с вполне вменяемой LiberoSoC
Flexz
В категорию RT.
DASM
А... ну пока что он как я понимаю и вовсе в категории "комнатной температуры" sm.gif
yes
Цитата(АндрейЦ @ Jul 11 2013, 20:35) *
Исчо раз спасибо, будем трусить это дерево.


я бы подумал над внешней памятью - если RT, то можно взять MRAM (3DPLUS, Aeroflex) - у нее до 1МРад [обещают, сейчас есть на 75кРад, что заведомо больше флашевого проазика] и устойчивость к ТЗЧ
ну или отечественные RT ПЗУшки делает тот же Миландр, но это не рекомендация, я не пользовал

также можно последовательную память поискать (я не интересовался RT), если экономия места важна, а "захардкодить" в ПЛИС только загрузчик, ОЗУ то есть и достаточно много

-----------------------------

сжигать ресурсы дорогостоящей ПЛИС (RTPA3 3000 баксов 20к где-то стоит) на тупую ПЗУшку как-то жаль sm.gif

-----------------------------

кстати, если делать не на декодере, а на регистрах, как предлагает Flexz (у которых reset подключен к сбросу или установке), то получится вроде бы похуже - то есть если мы возьмем 10кБ кода = 80кБит 1 триггер это 1 ячейка, а всего ячеек 75тыс, то есть 10кБ уже не влезут в 3000 проазик.
но это я никогда не пытался сделать ПЗУ на регистрах, так как такую память применял для АЗИКов, где логика сильно меньше триггеров по площади, может и вру/не понял идею
Zwerg_nase
Цитата(DASM @ Jul 12 2013, 12:31) *
А... ну пока что он как я понимаю и вовсе в категории "комнатной температуры" sm.gif

В диджикее есть c коммерческим диапазоном http://www.digikey.com/scripts/DkSearch/dk...100&cur=USD
Flexz
Цитата(yes @ Jul 12 2013, 13:05) *
кстати, если делать не на декодере, а на регистрах

То получится тоже самое sm.gif Если регистры фиксированы, и задаются только на ресете - при синтезе они заменятся на комбинаторику.
АндрейЦ
Цитата(Flexz @ Jul 12 2013, 14:07) *
То получится тоже самое sm.gif Если регистры фиксированы, и задаются только на ресете - при синтезе они заменятся на комбинаторику.


Как вариант, не кормить программиста до тех пор, пока он не освоит VHDL и не опишет на на нём нашу задачку без всяких заморочек с эмуляцией ядра.
Serge_DVD
Цитата
кстати, если делать не на декодере, а на регистрах, как предлагает Flexz (у которых reset подключен к сбросу или установке), то получится вроде бы похуже - то есть если мы возьмем 10кБ кода = 80кБит 1 триггер это 1 ячейка, а всего ячеек 75тыс, то есть 10кБ уже не влезут в 3000 проазик.
но это я никогда не пытался сделать ПЗУ на регистрах, так как такую память применял для АЗИКов, где логика сильно меньше триггеров по площади, может и вру/не понял идею


Добрый день! Простите за ламерство, а чем различаются реализации на декодере и регистрах? Если можно - приведите пару строк кода для лучшего понимания.
DSIoffe
Цитата("АндрейЦ")
Т.е. и память программ и ОЗУ создать внутренними ресурсами без использования внешних компонентов.

Прикладываю код ПЗУ, которое у меня работало с 8051s.
Для генерации кодов ПЗУ из HEX файла у меня была маленькая программка.
ОЗУ, наверное, можно сделать по образу и подобию.
Вот тут http://electronix.ru/forum/index.php?showtopic=111717 тема про 8051s.
Serge_DVD
Цитата(DSIoffe @ Dec 5 2014, 15:27) *
Прикладываю код ПЗУ, которое у меня работало с 8051s.
Для генерации кодов ПЗУ из HEX файла у меня была маленькая программка.
ОЗУ, наверное, можно сделать по образу и подобию.
Вот тут http://electronix.ru/forum/index.php?showtopic=111717 тема про 8051s.


Дмитрий, расскажите, пожалуйста, что делает функция SLVtoNatural? Таким способом удается создать ПЗУ на 4-5кБ, при попытке сделать больше вылетает ошибка размещения.
И отличается-ли результат трассировки Вашего кода от простого использования $readmemh ?
DSIoffe
SLVtoNatural преобразует данные типа std_logic_vector в натуральное число, чтобы можно было использовать его в арифметических операциях. Чем разбираться в разных чужих библиотеках, проще такое написать, имхо.
У меня было ПЗУ на 2 кБ максимум. Способ ресурсоёмкий, конечно, можно использовать только при полном отсутствии других вариантов (опять же, имхо).
Я не знаю, что такое $readmemh sad.gif
Serge_DVD
Цитата(DSIoffe @ Dec 9 2014, 11:56) *
SLVtoNatural преобразует данные типа std_logic_vector в натуральное число, чтобы можно было использовать его в арифметических операциях. Чем разбираться в разных чужих библиотеках, проще такое написать, имхо.
У меня было ПЗУ на 2 кБ максимум. Способ ресурсоёмкий, конечно, можно использовать только при полном отсутствии других вариантов (опять же, имхо).
Я не знаю, что такое $readmemh sad.gif


Под $readmemh я подразумевал объявление массива регистров и заполнение его значениями из файла на этапе трассировки. Что-то типа reg [7:0] mem [0:2047] ; $readmemh("d:\\f_hex.txt", mem);
Для моей задачи ресурсоемкость отходит на второй план. 3000-ку брали именно для того, чтобы иметь возможность разместить в ней массив данных около 10кб. А получилось, что сделать это не так просто как казалось.
Не понятно, сколько вентилей нужно для образования одной ячейки. В Вашем примере количество используемых вентилей получается меньше, чем при объявлении массива регистров. Исходя из этого и появился мой вопрос, я думал, что с помощью этой функции организуется компрессия данных. Может я не правильно что-то понимаю.
DSIoffe
Цитата
Под $readmemh я подразумевал объявление массива регистров и заполнение его значениями из файла на этапе трассировки. Что-то типа reg [7:0] mem [0:2047] ; $readmemh("d:\\f_hex.txt", mem);

Ага, это мы разговариваем на разных языках?
Эта функция сугубо VHDL-ная, преобразование типов. (Лишь бы не набежали тут критики VHDL sm.gif
Компрессии тут нет никакой, просто выбор слов по адресу.
Я фактически тоже объявляю массив регистров. Почему получается меньше - не знаю, это какие-то козни синтезатора. Почему ошибка размещения - тоже не понимаю sad.gif
Serge_DVD
Цитата(DSIoffe @ Dec 11 2014, 18:13) *
Ага, это мы разговариваем на разных языках?
Эта функция сугубо VHDL-ная, преобразование типов. (Лишь бы не набежали тут критики VHDL sm.gif
Компрессии тут нет никакой, просто выбор слов по адресу.
Я фактически тоже объявляю массив регистров. Почему получается меньше - не знаю, это какие-то козни синтезатора. Почему ошибка размещения - тоже не понимаю sad.gif


Ладно. Бум дальше копать wacko.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.