Jump to content

    

TABKP

Участник
  • Content Count

    24
  • Joined

  • Last visited

Community Reputation

0 Обычный

About TABKP

  • Rank
    Участник
  1. Коллеги, прошу помощи. Создал несколько проектов в XPS, а небольшие модули из ISE цеплял как периферию. И хорошо все работало. А теперь встала необходимость сделать ISE проект головным, а в него уже добавить проц. Есть готовый проект в ISE. Создаю новый компонент Embedded Processor. Запускается XPS. Как обычно собираю процессор. Запускаю Generate Netlist. И он вываливается мне с ошибкой: "Error: NgdBuild:25 - Cannot both read and write file. Далее путь к Ngc файлу проца в папке implementation. Please specify a file other than the destanation NGD file as the top level input design file." Ну думаю ладно - ISE сам наверно скомпилит проц. Запускаю Export Hardware Design to SDK. Создаю пустой c++ проект. И в процессе формирования своих рабочих папок и файлов выдаются сообщения вида: unable to rename '../../../lib/libxil.a' reason: Device or resource busy. И действительно файл libxil.a НЕ создается, а без него в процессе компиляции проекта выдаются ошибки на все функции описанные в стандартных библиотеках, хоть все эти библиотеки и подключены. Прям засада какая-то. Что я не правильно делаю? Что упустил?
  2. Создал небольшой проект на VHDL. В нем есть DCM. Надо создать из него свое пользовательское ядро и подключить к Microblaze. При импорте проекта VHDL файлы указываем, ngc файлы IP ядер указываем, но как быть с DCM? У него есть только XAW файл и VHDL. В VHDL файле прописан компонент DCM_ADV, но где брать его ngc файл не ясно. К Microblaze вообще можно внешний DCM подключить или надо только его генератором пользоваться?
  3. Mad_max большое Вам спасибо. Помогло. З.Ы. а malloc я так и не победил. Даже проект создал пустой, в котором один malloc и был.
  4. ISE 12.2 Я знаю что heap размером всего 1кб по умолчанию. Это не принципиально - я и 10 байт для пробы пытался зарезервировать - тот же результат, возвращает ноль. Массив объявлен в начале main вместе с другими переменными. void main() { .......... объявление переменных u8 *DataBuf; DataBuf = (u8 *)malloc(1500 * sizeof(u8)); .......... тело программы } Ладно, пусть malloc не работает. Переживу. Почему он не дает просто линейный массив создать? Где ему прописать в линкере это?
  5. Да я честно говоря не знаю как линкскрипты писать. Все настройки по умолчанию стоят. Попытался использовать динамическое выделение памяти: u8 *DataBuf; DataBuf = (u8 *)malloc(1500 * sizeof(u8)); if(DataBuf == NULL) XGpio_DiscreteSet(&Gpio0, GPIO_0_CHANNEL1, 0x07); память не выделилась. Указатель нулевой возвращается. Да чтож такое. Нет в жизни счастья! Видимо линкскрипт в этом окне надо править. Вопрос что и где?
  6. ПЛИС Virtex 4 XC4VLX80. Создал процессор. Память BRAM используется для команд и данных. Объем 64К. Написал маленькую программу. Отладил. Работает. В программе используются два массива данных. Встала необходимость увеличить их размер до 1,5 кбайт каждый. В результате программа перестала работать - она даже не стартует. Если уменьшить размер массивов в половину - работает. Увеличил объем используемой BRAM до 128К - не изменилось НИЧЕГО. Такое ощущение, что ему не памяти не хватает, а где-то прописано ограничение на длину последовательно размещаемых данных в памяти. Как побороть проблему? Инициализация: u8 DataBuf1[1500]; u8 DataBuf2[1500];
  7. Если да, то прошу дать номер. Спасибо
  8. Нету в сгенеренном PlanAhead UCF файле таких констрейнов. Может где галку в настройках PlanAhead ставить надо?
  9. Есть ответственный высокочастотный модуль, который вставляется в большой проект в ISE. С этим модулем постоянно происходят Timing Errors при малейшем изменениии остальной части проекта. Чтобы при каждом изменении проекта не заниматься борьбой с Timing Errors хочу раз и навсегда зафиксировать положение этого модуля ка кристалле. Что сделано: в PlanAhead для этого модуля создан Pblock, а также этот модуль отмечен как Partition. PlanAhead скомпилировал и разложил этот модуль без ошибок. Теперь главный вопрос - как импортировать этот модуль и его разводку обратно в ISE проект?
  10. Так в том то и дело, что и в ucf файле топология не прописана. Там собраны временные констрены, размер Pblock-а и его состав. Все. Добавив содержимое ucf файла в головной ucf - макрос-то раскладывается естественно в границах Pblock-a, но те так как это было сделано в PlanAhead.
  11. Да сейчас добился нормального размещения в PlanAhead. Но проект только в начале, а уже сейчас добавление любого модуля приводит к появлению ошибок. Не хочу заниматься шаманством на каждой компиляции. ucf файл просто скопировал в папку проекта. Никак его не использую.
  12. Продолжу монолог. После задания Pblock и Partition на нужный модуль я сделал Export IP. В настройках экспорта указал Physical constraints, галку fixed placement only не ставил. Получил файлы edn и ucf на нужный модуль. Далее последовательно порпустил edn файл через программы EDIF2NGD NGD2SPL и SPL2SYM и получил SYM файл. Поскольку головной файл проекта у меня в схематике сделан. Далее скопировал все полученные файлы в рабочую папку проекта. Добавил в проект edn файл. Вставил SYM файл в схему. Все нормально откомпилировалось. Без ошибок. Глянул в FPGA editor как разложился проект на кристале и ....... проект опять раскидан по всему кристалу. Как будто и не создавал я Pblock и Partition. В чем дело? Что я не правильно делаю? Как мне раз и на всегда зафиксировать на кристалле ответственный высокоскоростной модуль? Я осознаю, что для гуру - все эти вопросы на уровне ликбеза, но я бьюсь уже третий день. Не проходите мимо.
  13. В UCF файле появился только констрейм AREA_GROUP, который относится к Pblock. А как с partition то быть. Мне надо чтобы модуль на 400МГц стал черным ящиком с неизменным размещением примитивов на кристалле. Кстати при попытке скомпилировать в ISE тот же проект с новым UCF (добавлен только AREA_GROUP) - ISE выдал что недостаточно ресурсов, в то время как Planahead нормально развел. Чудеса.
  14. Так и не понимаю как сформированный partition из PlanAhead вставить обратно в ISE проект
  15. Разобрался. В настройках компилятора в ISE надо галку поставить keep hierarchy. Создал один единственный компонент внутрь которого запихнул все, что связано с 400МГц. Pblock создал. Плохо что нельзя его создавать произвольным по форме - у меня почти все DSP48 использованы, поэтому блок получился длиной почти на вест кристал. После имплемента получил запас по setup 32пС. Затем этот же модуль назначил как partition. Снова сдела имплемент - и получил запас по setup равным 0. Это почему так? Ну да ладно. Нажал remote partitions. Вроде как должен был создаться компонент для вставки в свой проект, но я так и не понял где он и как его вставить в общий проект. Подскажите!