Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Начало работы с 8051 на FPGA фирмы Actel
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2
Kapsik
Цитата(Serge_DVD @ Sep 28 2013, 14:03) *
а можно побробнее? я понимаю, что нужно проводок пробросить, но откуда и куда?



страница 11 мануала по доске. Нужо подать 1.5В на 27 и 131 пины. Отверстия с 1.5В под разьемом джитаг, я оттуда бросил провода к необходимым пинам.
Serge_DVD
Спасибо. Запустил проект из под софтконсоли. Заработало. Но на пинах 27 и 131 ноль. Т.е. ПЛЛ не заботает, а светодиоды мигают. Как такое возможно? Для чего вообще ПЛЛ в это м пректе? И возник следующий вопрос - Как все это повторить без софконсоли? Как прошить HEX в плис, или как подключить внешнюю память, например через SPI (93c.. или DataFlash) ?
Kapsik
Цитата(Serge_DVD @ Oct 2 2013, 14:48) *
Спасибо. Запустил проект из под софтконсоли. Заработало. Но на пинах 27 и 131 ноль. Т.е. ПЛЛ не заботает, а светодиоды мигают. Как такое возможно? Для чего вообще ПЛЛ в это м пректе? И возник следующий вопрос - Как все это повторить без софконсоли? Как прошить HEX в плис, или как подключить внешнюю память, например через SPI (93c.. или DataFlash) ?


Проект тов. styuf? Может вы тактируете ядро не от плл? Вопрос дурацкий,но все же,доска точно эта?


А про то как прошить hex, вопрос открыт. Так что если это сообщение читает человек знающий,большая просьба помочь. Уже минимум трое чешут репу...
Serge_DVD
Цитата(Kapsik @ Oct 4 2013, 15:09) *
Проект тов. styuf? Может вы тактируете ядро не от плл? Вопрос дурацкий,но все же,доска точно эта?


А про то как прошить hex, вопрос открыт. Так что если это сообщение читает человек знающий,большая просьба помочь. Уже минимум трое чешут репу...



Да - проект тот, что выкладывал styuf (Example.rar). Шью без всяких измений. Доска, вроде, та же, фотку прилагаю.
Напряжения мерял напрямую на ножках плис. Как узнать от чего я тактирую плис? (Изините за _совсем_ дурацкий вопрос).
По-поводу прошивки флеша может быть кто-то подскажет как вообще это ядро делает выборку данных из памяти программ/данных?
Может как-то можно вытащить шины данных и адреса наружу и использовать внешний флеш?

Попутно возник еще один вопрос - подскажите, пожалуйста, где находятся сигналы RX,TX уарта и какой у него базовый адрес? Хочу опопробовать его работоспособность. И как посмотреть (изменить) расположение (соответствие) логических сигналов и физических ног плисины?


Нажмите для просмотра прикрепленного файла
Serge_DVD
Цитата(styuf @ Aug 29 2013, 12:09) *
Тут действительно вопрос интересный.
Я пытался делать так - создаю память программы внутри плисины и, соответственно, создаю ему инициализационный файлик .hex (при компиляции проги получается). Но у меня ни разу микроконтроллер не запустился сам. А вот если войтив дебаг моду внутри софтконсоли и сделать run то программа начинает работать. Програмки я писал простые - светодиодики (которая у вас) + обработка кнопок(работала, но я убрал обработчик кнопок). Ничего конкретней сказать не могу, сейчас занимаюсь немного другими вещами. Но в скором времени должен прийти первый прототип с отдлеьной пзу на плате.


А можно попдробнее о подключении .hex файла к проекту?
Serge_DVD
Цитата(Kapsik @ Sep 19 2013, 11:34) *
нажимаю... может быть проблема в настройке дебага?

смущает еще No source available for ""



по поводу ошибки,сайт актела отправляет в настройки проекта,там во вкладе Memory map generator в строке Command прикрепить такстовый файл... Подключая ваш проект я расчитывал на перенос и настроек,но вдруг этого не произошло. Вы производили какие нибудь монипуляции с Tool Settings?


Доброго дня! Пытаюсь достучаться до уарта, прописал в хидере базовый адрес, получил <No source available for ""> в строке, в которой выполняется обращение к регистру статуса уарта (первое обращение к регистрам уарта). что бы это могло значить?
Ковыряясь дальше, нашел, что ошибку вызывает обращение к адресам тех модулей, которые не описаны в test_8051.vhd (там включены модули ядра, шины, IO порта). Возникает вопрос - как включить туда UART_APB, WatchDog и Timer? Помогите разобраться, пожалуйста!
Serge_DVD
Добрый день!
Подскажите, пожалуйста, может кто сталкивался. Собрал проект, в котором работает 8051 с внутренней памятью - все хорошо. Решил заменить внутренюю память на внешнее ОЗУ. Пока меняю только память данных - все работает, когда пытаюсь таким же образом заменить память кода получается следующее: софтконсоль в режиме отладки записывает код программы в память, позволяет начать отладку, даже запустить программу, но программа работает нестабильно и недолго. Заканчивается все зависанием, причем бывает зависает так, что призодиться перегружать комп.
DSIoffe
Здравствуйте все!
Помогите, пожалуйста, кто может.
Я пробую поморгать светодиодами в учебных целях при помощи ядра 8051s. Работаю в Libero 9.1.
Собираю проект в SmartDesign, как учили. Пишу маленькую программу, просто попробовать. Вот она вся:
Код
#define APB3_BASE_ADDRESS               0xF000
__xdata at APB3_BASE_ADDRESS + 0x00A0 unsigned char tst;

void main()
{
        tst = 0x00;
        tst = 0xFF;
    for (;;)
    {
        tst = 0x00;
        tst = 0xFF;
    }
}

0x00A0 - это смещение выходных данных CoreGPIO, который лежит в адресном пространстве шины APB первым. Компилирую эту программу в SoftConsole через меню Project - Build All. Полученный HEX или IHX файл конвертирую самодельной программой (прилагается) в описание блока памяти на VHDL.
Запускаю Modelsim и не могу получить никаких изменений ни в одном сигнале CoreAPB3. При этом обращение к памяти идёт нормально. На выходах CoreGPIO тоже тишина.
Ещё непонятная мне вещь: сколько бы операторов я ни писал в цикле программы, на модели она зацикливается на четырёх выборках из памяти, всегда одинаковых.
Всё это происходит и в debug, и в release версиях.
Я показывал это дело знающему человеку. Он загрузил ту же программу в отладочное ОЗУ. Сказал: "содержимое получаемое в памяти после вашего конвертора и после импорта .hex в RAM совпадают, те проблема не в конверторе".
Проект я тоже прикладываю.
Объясните, пожалуйста, почему шина APB не шевелится?
Заранее признателен.
Serge_DVD
Цитата(DSIoffe @ Feb 1 2014, 13:09) *
Здравствуйте все!
Помогите, пожалуйста, кто может.
Я пробую поморгать светодиодами в учебных целях при помощи ядра 8051s. Работаю в Libero 9.1.
Собираю проект в SmartDesign, как учили. Пишу маленькую программу, просто попробовать. Вот она вся:
Код
#define APB3_BASE_ADDRESS               0xF000
__xdata at APB3_BASE_ADDRESS + 0x00A0 unsigned char tst;

void main()
{
        tst = 0x00;
        tst = 0xFF;
    for (;;)
    {
        tst = 0x00;
        tst = 0xFF;
    }
}

0x00A0 - это смещение выходных данных CoreGPIO, который лежит в адресном пространстве шины APB первым. Компилирую эту программу в SoftConsole через меню Project - Build All. Полученный HEX или IHX файл конвертирую самодельной программой (прилагается) в описание блока памяти на VHDL.
Запускаю Modelsim и не могу получить никаких изменений ни в одном сигнале CoreAPB3. При этом обращение к памяти идёт нормально. На выходах CoreGPIO тоже тишина.
Ещё непонятная мне вещь: сколько бы операторов я ни писал в цикле программы, на модели она зацикливается на четырёх выборках из памяти, всегда одинаковых.
Всё это происходит и в debug, и в release версиях.
Я показывал это дело знающему человеку. Он загрузил ту же программу в отладочное ОЗУ. Сказал: "содержимое получаемое в памяти после вашего конвертора и после импорта .hex в RAM совпадают, те проблема не в конверторе".
Проект я тоже прикладываю.
Объясните, пожалуйста, почему шина APB не шевелится?
Заранее признателен.


Добрый день!
Программа правильная, конвертор тоже вроде работает (проверил первые 10 байт прошивки). Остается механизм выборки из памяти и настройки блоков в SmartDesigner. Попробуйте MEMSPACKI и MEMACKI подтянуть в "1", и добавить пару циклов обращения к памяти. Все неиспользуемые входы подтяните в неактивное состояние. В корке GPIO сделайте Number of I/O=8 и Output enable = Internal.

DSIoffe
Огромное спасибо! Лёд наконец тронулся: Modelsim глохнет при обращении к CoreGPIO, то есть обращение есть!
Сначала вот такой warning: Fatal: (vsim-3734) Index value 29 is out of range 0 to 7.
Потом красным вот такое: Fatal error in Process line__887 at D:/Projects/Actel/2013-10_core8051/Libero/8051s-3/component/Actel/DirectCore/CoreGPIO/3.0.120/rtl/vhdl/core/coregpio.vhd line 891
Эта строка вот в таком участке кода:
Код
  process (CONFIG_reg, PADDR, PADDR_INT)
  begin
    case (PADDR_INT) IS
      when 0 to 31 =>
        CONFIG_reg_o(7 downto 0) <= CONFIG_reg(PADDR_INT)(7 downto 0);  --она и есть
      when others =>
        CONFIG_reg_o(7 downto 0) <= X"00";
    end case;
  end process;

Но если вернуть 32-разрядный GPIO, то опять всё портится. Почему так? Он вообще не умеет быть 32-разрядным?
Что бы ещё сделать, а?
Вот проект в теперешнем виде.
DSIoffe
И вообще, как понять, что им надо? Есть какие-нибудь логические пути, чтобы сделать GPIO 8-, а не 32-разрядным, например? Или только методом научного тыка?
Serge_DVD
Не совсем понял проблемы. Ваш проект компилится без ошибок (не считая ошибок симулятора, с которым у меня не сложилось...). Использую Libero 11. По поводу разрядностей выше 8-и ситуация следующая. Компоненты могут иметь разрядность более 8-и, но доступ к старшим байтам (или младшим - не разобрался) возможен, но только через нестандартные (для 51-го) регистры XRB, XWB, подробнее можно почитать в хендбуке на GPIO. Есть одно НО - нужно правильно описать SFR'ы в sdcc компиляторе (встроенный в SoftConsole).
Кто бы помог в этом вопросе? Был бы очень благодарен, поскольку сейчас именно этим и занимаюсь. Данный компиль дико глючный, конструкция "sfr XRB1 = 0x9D;a=XRB1" не работает.
По поводу логических путей - достаточно в свойствах корки указать кол-во пинов 8, и она становится 8-и разрядной) никакого научного тыка. У меня все GPIO 8-и разрядные, все работает. Были попытки повысить разрядность, но благодаря компилятору оказалось проще поставить несколько блоков GPIO в проект. Сложности возникают потом при попытке запрограммировать таймер или WDT - тут уже не получится поставить второй таймер(
DSIoffe
Если ещё интересно.
Лично моя беда была в неправильной организации памяти. Там нужна не комбинационная схема, а синхронная, притом срабатывающая (изменяющая состояние на выходе данных) по спаду тактового импульса. Теперь всё работает и на модели до синтеза и после разводки, и живьём светодиоды моргают.
А обращение к SFR получилось после вот такого объявления:
__data at 0x9A unsigned char MyXWB1;
и затем в программе:
MyXWB1 = 0xFF;
При этом вариант __data at XWB1 unsigned char MyXWB1 даёт ошибку error 2: Initializer element is not constant.
Некрасиво-то как: не воспользоваться родным файлом reg51.h.
Serge_DVD
Спасибо, Дмитрий! Работает.
Появилась у меня очередная проблемка. Есть компонент с интерфейсом Wishbone slave. Очень хочется прикрутить его к 51-у ядру.
"Открутить" от него Wisbone интерфейс не получается из-зи недостатка знаний. Можно-ли использовать GPIO компонент для эмуляции
Wishbone maser? Какие могут быть подводные камни? Или може существует мост AHB3-Wishbone?


des00
Цитата(Serge_DVD @ Sep 29 2014, 23:48) *
Можно-ли использовать GPIO компонент для эмуляции Wishbone maser?

Полноценной эмуляции нет. Нужна будет прослойка.
DSIoffe
Цитата(Serge_DVD @ Sep 29 2014, 20:48) *
Спасибо, Дмитрий! Работает.
Появилась у меня очередная проблемка. Есть компонент с интерфейсом Wishbone slave. Очень хочется прикрутить его к 51-у ядру.
"Открутить" от него Wisbone интерфейс не получается из-зи недостатка знаний. Можно-ли использовать GPIO компонент для эмуляции
Wishbone maser? Какие могут быть подводные камни? Или може существует мост AHB3-Wishbone?

Я бы почитал про wishbone (потому что ничего про него не знаю) и сам прикрутил бы его к AHB3 через самопальный интерфейс. Прикладываю черновик моей статьи для "Компонентов и технологий" про самопальные устройства для AHB. Правда, там про ведомое устройство, но работа шины коротко описана, она несложно устроена. Извиняюсь, нету под рукой нормальной вёрстки.
Если этот Wishbone асинхронный (или может долго ждать) и для него нужно до 32 сигнальных линий, то можно, наверное, и через GPIO. Но должно получиться медленно и громоздко.
des00
там вся проблема будет в генерации стробов записи и чтения + обработка подтверждений. минимальная прослойка потребуется всяко.
Serge_DVD
Вариант прикрутить к AHB3 не стоит как задача и рассматривается как запасной. Нужно совсем неспешно писать(читать) данные с готового модуля.
Сейчас больше всего смущает именно синхронность Wishbona с клоком (все тайминги в доках на это указывают). Будет-ли работать... Разбираюсь,
заодно учу верилог... Спасибо всем за ответы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.