|
Actel ProAsic3L 3000 сформировать внутри память |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 20)
|
Jul 11 2013, 12:47
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
Цитата(АндрейЦ @ 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 (на опенкоресах есть ссылка) но с флаш проблему это не решит
|
|
|
|
|
Jul 11 2013, 14:11
|
Частый гость
 
Группа: Участник
Сообщений: 189
Регистрация: 16-07-07
Пользователь №: 29 147

|
У меня тут две нетехнические проблемы. Первая, процессора достаточно уровня 8051. Сейчас проект крутится в меге 2560, выбранной из за 4х уартов и достаточного количества ножек IO. По организационным причинам, которые совершенно нет желания обсуждать, проект нужно сначала перенести в 3000, а затем в её несколько более экзотическую разновидность. Вторая, в команде нет плисовода. Но есть некоторое время, чтобы либо пригласить его, либо разобраться самим. Вот мне и нужна подсказка более сведущих людей, о возмоности это сделать. Т.е. на Ксайлинксе попадались реализации с набортной памятью, на Актеле нет. Возможности использовать внешнюю память, повторюсь, нет. А выбрать сейчас кристалл и упереться через пару месяцев в мёртвое железо, смерти подобно
|
|
|
|
|
Jul 11 2013, 16:14
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
ну я какбы опытный плисовод  советую взять отлаженный дизайн со средствами отладки софта и т.п. если же в ПЛИС нет места и нужно очень компактно - посмотрите на zpu или какую-то еще opencores-овскую разработку (там и 8051 есть), но при этом могут быть проблемы с разработкой софта, глюками, несовместимостью со стандартным ядром и тулзами для него. еще есть компактные процессоры (типа пикоблейза) с писанием на ассемблере и минимумом ресурсов. дело в том, что у актела нет своего фирменного дизайна процессора, типа ниоса или блейза --------- несколько более экзотическая разновидность не RTPA3 случаем? ну а по поводу флаши - я больше пары килобайт на декодерах не делал, слишком тяжело получается. но там есть методы - конвеер, разбитие на несколько блоков и т.д. также в РА3 / RTPA3 есть 1кбит флаши - мелочь, но что-то можно туда запихать, а потом переписывать в ОЗУ то есть нужно уже конкретно решать задачу, а не теоретизировать ---------- в рамках озвученного кажется, что решается, но какой-то плисовод скорее всего понадобится  ======= ради эксперимента засунул декодер на 12кБ (некая программка для SPARCa) - результат занял 20% ПЛИС РА3 3000L и тактовая 50МГц (15 уровней логики), время синтеза разумное (возможно трассировать будет долго, это уже некогда проверять) для процессора с более плотным кодом (того же 51) может результаты будут похуже, синтез это процесс типа "эвристического архиватора", но не намного
|
|
|
|
|
Jul 11 2013, 16:35
|
Частый гость
 
Группа: Участник
Сообщений: 189
Регистрация: 16-07-07
Пользователь №: 29 147

|
Цитата(yes @ Jul 11 2013, 19:14)  ну я какбы опытный плисовод  советую взять отлаженный дизайн со средствами отладки софта и т.п. если же в ПЛИС нет места и нужно очень компактно - посмотрите на zpu или какую-то еще opencores-овскую разработку (там и 8051 есть), но при этом могут быть проблемы с разработкой софта, глюками, несовместимостью со стандартным ядром и тулзами для него. еще есть компактные процессоры (типа пикоблейза) с писанием на ассемблере и минимумом ресурсов. дело в том, что у актела нет своего фирменного дизайна процессора, типа ниоса или блейза Спасибо за информацию, поскольку сей момент передо мной стоит принципиальный вопрос да/нет, ваша помощь более чем! Цитата(yes @ Jul 11 2013, 19:14)  ---------
несколько более экзотическая разновидность не RTPA3 случаем?  Цитата(yes @ Jul 11 2013, 19:14)  ну а по поводу флаши - я больше пары килобайт на декодерах не делал, слишком тяжело получается. но там есть методы - конвеер, разбитие на несколько блоков и т.д. также в РА3 / RTPA3 есть 1кбит флаши - мелочь, но что-то можно туда запихать, а потом переписывать в ОЗУ то есть нужно уже конкретно решать задачу, а не теоретизировать ---------- в рамках озвученного кажется, что решается, но какой-то плисовод скорее всего понадобится  Исчо раз спасибо, будем трусить это дерево. Тем более есть разработка, с внешней памятью правда, на 600. Ну а тут 3000, надеюсь в разницу "флешка" впишется. Цитата(DASM @ Jul 11 2013, 19:14)  А вы вариант Smartfusion2 с набортным Кортекс м3, флешью, рамом и прочими вкусностями не рассматривали? Увы, нужен именно сабж.
|
|
|
|
|
Jul 12 2013, 09:05
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
Цитата(АндрейЦ @ Jul 11 2013, 20:35)  Исчо раз спасибо, будем трусить это дерево. я бы подумал над внешней памятью - если RT, то можно взять MRAM (3DPLUS, Aeroflex) - у нее до 1МРад [обещают, сейчас есть на 75кРад, что заведомо больше флашевого проазика] и устойчивость к ТЗЧ ну или отечественные RT ПЗУшки делает тот же Миландр, но это не рекомендация, я не пользовал также можно последовательную память поискать (я не интересовался RT), если экономия места важна, а "захардкодить" в ПЛИС только загрузчик, ОЗУ то есть и достаточно много ----------------------------- сжигать ресурсы дорогостоящей ПЛИС (RTPA3 3000 баксов 20к где-то стоит) на тупую ПЗУшку как-то жаль  ----------------------------- кстати, если делать не на декодере, а на регистрах, как предлагает Flexz (у которых reset подключен к сбросу или установке), то получится вроде бы похуже - то есть если мы возьмем 10кБ кода = 80кБит 1 триггер это 1 ячейка, а всего ячеек 75тыс, то есть 10кБ уже не влезут в 3000 проазик. но это я никогда не пытался сделать ПЗУ на регистрах, так как такую память применял для АЗИКов, где логика сильно меньше триггеров по площади, может и вру/не понял идею
|
|
|
|
|
Jul 12 2013, 11:07
|
Местный
  
Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797

|
Цитата(yes @ Jul 12 2013, 13:05)  кстати, если делать не на декодере, а на регистрах То получится тоже самое  Если регистры фиксированы, и задаются только на ресете - при синтезе они заменятся на комбинаторику.
|
|
|
|
|
Jul 12 2013, 13:35
|
Частый гость
 
Группа: Участник
Сообщений: 189
Регистрация: 16-07-07
Пользователь №: 29 147

|
Цитата(Flexz @ Jul 12 2013, 14:07)  То получится тоже самое  Если регистры фиксированы, и задаются только на ресете - при синтезе они заменятся на комбинаторику. Как вариант, не кормить программиста до тех пор, пока он не освоит VHDL и не опишет на на нём нашу задачку без всяких заморочек с эмуляцией ядра.
|
|
|
|
|
Dec 4 2014, 19:40
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 11-08-06
Пользователь №: 19 485

|
Цитата кстати, если делать не на декодере, а на регистрах, как предлагает Flexz (у которых reset подключен к сбросу или установке), то получится вроде бы похуже - то есть если мы возьмем 10кБ кода = 80кБит 1 триггер это 1 ячейка, а всего ячеек 75тыс, то есть 10кБ уже не влезут в 3000 проазик. но это я никогда не пытался сделать ПЗУ на регистрах, так как такую память применял для АЗИКов, где логика сильно меньше триггеров по площади, может и вру/не понял идею Добрый день! Простите за ламерство, а чем различаются реализации на декодере и регистрах? Если можно - приведите пару строк кода для лучшего понимания.
|
|
|
|
|
Dec 5 2014, 11:27
|

Дима
    
Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486

|
Цитата("АндрейЦ") Т.е. и память программ и ОЗУ создать внутренними ресурсами без использования внешних компонентов. Прикладываю код ПЗУ, которое у меня работало с 8051s. Для генерации кодов ПЗУ из HEX файла у меня была маленькая программка. ОЗУ, наверное, можно сделать по образу и подобию. Вот тут http://electronix.ru/forum/index.php?showtopic=111717 тема про 8051s.
Прикрепленные файлы
MyROM.vhd ( 8.56 килобайт )
Кол-во скачиваний: 17
--------------------
|
|
|
|
|
Dec 8 2014, 12:55
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 11-08-06
Пользователь №: 19 485

|
Цитата(DSIoffe @ Dec 5 2014, 15:27)  Прикладываю код ПЗУ, которое у меня работало с 8051s. Для генерации кодов ПЗУ из HEX файла у меня была маленькая программка. ОЗУ, наверное, можно сделать по образу и подобию. Вот тут http://electronix.ru/forum/index.php?showtopic=111717 тема про 8051s. Дмитрий, расскажите, пожалуйста, что делает функция SLVtoNatural? Таким способом удается создать ПЗУ на 4-5кБ, при попытке сделать больше вылетает ошибка размещения. И отличается-ли результат трассировки Вашего кода от простого использования $readmemh ?
|
|
|
|
|
Dec 11 2014, 14:02
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 11-08-06
Пользователь №: 19 485

|
Цитата(DSIoffe @ Dec 9 2014, 11:56)  SLVtoNatural преобразует данные типа std_logic_vector в натуральное число, чтобы можно было использовать его в арифметических операциях. Чем разбираться в разных чужих библиотеках, проще такое написать, имхо. У меня было ПЗУ на 2 кБ максимум. Способ ресурсоёмкий, конечно, можно использовать только при полном отсутствии других вариантов (опять же, имхо). Я не знаю, что такое $readmemh  Под $readmemh я подразумевал объявление массива регистров и заполнение его значениями из файла на этапе трассировки. Что-то типа reg [7:0] mem [0:2047] ; $readmemh("d:\\f_hex.txt", mem); Для моей задачи ресурсоемкость отходит на второй план. 3000-ку брали именно для того, чтобы иметь возможность разместить в ней массив данных около 10кб. А получилось, что сделать это не так просто как казалось. Не понятно, сколько вентилей нужно для образования одной ячейки. В Вашем примере количество используемых вентилей получается меньше, чем при объявлении массива регистров. Исходя из этого и появился мой вопрос, я думал, что с помощью этой функции организуется компрессия данных. Может я не правильно что-то понимаю.
|
|
|
|
|
Dec 11 2014, 14:13
|

Дима
    
Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486

|
Цитата Под $readmemh я подразумевал объявление массива регистров и заполнение его значениями из файла на этапе трассировки. Что-то типа reg [7:0] mem [0:2047] ; $readmemh("d:\\f_hex.txt", mem); Ага, это мы разговариваем на разных языках? Эта функция сугубо VHDL-ная, преобразование типов. (Лишь бы не набежали тут критики VHDL  Компрессии тут нет никакой, просто выбор слов по адресу. Я фактически тоже объявляю массив регистров. Почему получается меньше - не знаю, это какие-то козни синтезатора. Почему ошибка размещения - тоже не понимаю
--------------------
|
|
|
|
|
Dec 11 2014, 15:46
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 11-08-06
Пользователь №: 19 485

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