Перейти к содержанию
    

Rok

Свой
  • Постов

    62
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Rok

  • Звание
    Участник
    Участник
  • День рождения 02.12.1978

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Алгоритм на Си

    Значит, как я понял, можно всё это требуемое хозяйство запустить на симуляторе и проверить время выполнения. Хорошо, будем значит копать в сторону симуляторов и смотреть с чем их едят. Я прав ? Т.е. собираем сразу всю систему и только потом можно производить к.либо оценку по времени выполнения. Ясно. Спасибо.
  2. Алгоритм на Си

    Люди добрые. Вопрос мой может и "простоват", но мне нужно с чего-нить начать. Поэтому вот здесь и решил спросить. Если ответ простой, то просто тыкните носом туда куда нужно. Если есть похожая тема на форуме дайте ссылку плиз. Собственно вопрос: Предположим, есть у меня какой-то алгоритм вычисления чего-либо, написанный на Си. Как оценить сколько времени потребуется для его вычисления на ARM процессоре ? По идее можно засунуть его в ARM компилятор и оттуда вытянуть репорт, так ? Если да, то какой продукт необходимо поставить ? Есть ли такие компиляторы для линуха ? Есть ли какие другие пути решения данной задачи ? Если есть наводящие вопросы прошу задавать. Спасибо.
  3. USB

    Задам здесь свой вопрос. Режим: Slave FIFO, Synchronous Mode, AUTOOUT, EP6, Double Buffering, Bulk type, size 512, WordWide - 16 bits FD[15:0]. На другом конце 68013 висит Спартан-3. Ну и он является мастером для Slave FIFO. Identify использую, чтобы тупо смотреть временные диаграммы ФИФО интерфейса внутри FPGA. CyConsole вполне себе нормально видит мой девайс. Провожу тест номер раз: Из CyConsole посылаю, к примеру, 7 байт. Флаг not-Empty сразу появляется, читаю данные из FIFO. Какие-то непонятные данные читаются из FIFO. Провожу тест номер два: Полностью перегружаю девайс. Т.е. всё с нуля. Из CyConsole посылаю 512 байт. Флаг not-Empty сразу появляется, читаю данные из FIFO. Вижу только первые 2 байта. Посылаю снова 512 байт. И снова 2 байта. Первые 2 байта 512 байтовой посылки каким-то образом появляются, а остального нету. Причем эти 2 байта висят в течении всего времени чтения из FIFO. Т.е. эти 2 байта записываются во все адреса буфера. Чтение организовано просто. Флаг empty задерживается на один такт и присваивается флагу чтения. Что-то, где-то не так. Дайте наводку, please.
  4. т.е. такая ситуация возможна: регистр - комбинаторка - пин - линия - пин - комбинаторка - регистр в смысле на небольших частотах должна работать, так? Пока читаем мат. часть :smile3046: А обязательно ли вставлять их (регистры) только в RTL, или можно их вставить на этапе после ситеза? Может FPGA Editor поможет? Чего то я тут сморозил, надо же не только их вставить, но учесть эти 2 клока, не так ли ? Ну я проверил в FPGA Editor - регистры входных цепей частично внутри IOB, но также есть некоторые вне IOB. Регистры выходых цепей, причем все, располагаются вне IOB. Так почему только xilinx это по умолчанию не делает ? Тут же логически понятно, что это экономит ресурсы кристалла и задержка соответственно уменьшается. да, линии для всех клоков глобальные У меня клок заведен следующим образом: external clok to 1st FPGA -> DCM -> global pin (1st FPGA) -> линия -> global pin (2nd FPGA) -> register т.е. вы предлагаете поставить DCM между global clock и регистрами во 2-й FPGA ?
  5. Я просто в шоке :) (извиняюсь не сдержался), я думаю человек не мог не догадаться учесть дополнительный такт при передаче. Ха, а вот с этого места, можно по-подробнее :cranky: Т.е. вы хотите сказать, что на выходном пине есть задержка на один такт, и нужно это как-то компенсировать ? Может я не правильно разбил проект: я просто на две части его раскинул и делов-то... Значит не все так просто, как я полагал
  6. Ну здесь я вижу аж целых три решения. 1. Если пишите на верилог, то просто в топ модуле можете написать типа: wire probe_1 = u_Module.u_block_1.u_inst.net_name ну и потом завести его на выход. Но этот способ я не гарантирую так как не пользовался, просто вспомнилось, что в testbench так делаю. Может для синтеза и не пройдет. 2. Если синтез делаете в Synplify, тот там есть такой аттрибут syn_probe. Его можнл описать, как и в самом RTL, так и в SDC. Я обычно использую второе, т.е. типа: define_attribute {n:u_inst.net_name} syn_probe {1} Т.е. ваш выходной netlist будет включать этот выход. Только нужно посмотреть как его синтезатор обозвал, чтобы корректно описать этот выход в UCF. 3. FPGA_Editor - это уже когда проект полностью разведен, чтобы не возвращаться обратно к синтезу. Там есть такая фича - probes. Там все просто, как грабли. Нажимаете на кнопочку, выбираете любой сигнал из списка и пин куда хотите его подсоединить - он автоматом разводит. Ну тут может быть такая проблема, что именно того сигнала, который вам нужен его, то и нет. Т.е. это синтезатор постарался его убрать. В этом случае нужно синтезатору сказать, чтобы он его не трогал. На примере Synplify, там есть директива syn_keep. Ну вот вроде и все, дерзайте :)
  7. Всем добрый день. Ситуация следующая. Есть плата на ней стоит два чипа Virtex-II. Делаю проект, разбиваю его на 2 части. Т.е. одна часть для первой микрухи, вторая часть - для второй. Программирую PROM. Начинаю проверку. Вижу, что данные от второй микрухи не приходят. Делаю для второй микрухи проект в Identify. Там все прекрасно видно, что данные на выходе 2-го чипа есть. А на входе первой, в том-же Identify, одни нули. Ладно думаю ... Сделал новый проект все блоки объединил на один чип. Все прекрасно работает. Но чип забит под завязку, что не очень хорошо для меня. Ну и потом, раньше с таким не сталкивался. Нужно бы разобраться :cranky: Т.е. нужно как-то применить timing constraints к обоим чипам, но сразу,наверное, как-то измерить задержку надо бы... В общем одни мысли ... :glare: Ну и вот счас нарыл в доках OFFSET (constraint) и TRACE (утилита для timing analysis) - читаю... Прошу совета, люди добрые ...
  8. Генерю корочку в Core Generator . На выходе он мне выдает EDN файл. Так вот, как мне посмотреть, что он там сделал конкретно в этом edn файле ? Просто открыть и посмотреть в текстовом редакторе не достаточно. Нужно связи посмотреть. Т.е. может какой viewer есть для этого ?
  9. Сам себе и отвечу в общем читаем datasheet data2mem.pdf А так в двух словах: Есть блоки памяти и их нужно инициализировать. Использовать атрибут LOC не обязательно, но желательно. Непосредственно запись в память осущ. след. образом: сразу заполняеся 1-й bus block, затем 2-й и т.д. по очереди. Исходным файлом данных (то, что хочем записать) является .mem или .elf. Ну и само расположение BRAM в .bmm файле зависит от того, что нужно именно нам. Спасибо за внимание B)
  10. Захотелось мне использовать Data2Mem (Data2Bram) утилиту. Так вот там есть такая штуковина, как BMM file. Нашел там в доках по его структуре инфу, но как-то там все мрачно. Существует ли такая возможность, чтобы сгенерить этот файл автоматически, а то руками его писать замучаюсь. Спасибо.
  11. Всем огромное спасибо. Буду разбираться:smile3046: :cheers:
  12. В системе нужно использовать RAM. Coregen'ом генерю Block RAM. К этим BRAM использую init. files. Делаю проект синтеза в Synplify. Затем, соответственно ISE и ... Большой проект, Place and Route только занимает минимум часа 2,5. А, кристал Virtex-II используется. Так вот потом мне нужно использовать другой init. file, т.е. снова с самого начала генерю BRAM с новым init. file, Synplify, ISE ......т.е. делаю тот же проект, то же самое, только память чуток другая. Вопрос в следующем: Как использовать все вот это с наименьшими затратами по времени, очень уж долго ожидать приходится. Как сократить время разработки ? Может кто сталкивался, подскажите.
  13. Никак, учитесь писать тестбенчи на ХДЛ Нет, все-таки можно. Естественно, что используя ХДЛ проще работать с тестбенчем, но можно и здесь тоже чего нибудь придумать. Делаем следующим образом. Этому inout сигналу на участке, когда это вход присваиваем какое-либо значение. А на участке, когда этот сигнал выход - z-состояние. Тоже самое можно и на ХДЛ сделать, не только на диаграмме. Вроде бы так, давно это уже было. Должно работать.
  14. Тоже сейчас занимаюсь подобным. Т.к. проекты большие, а изменения маленькие :) В Synplify pro есть такая фича, как: Multipoint synthesis. т.е. выбираете compile points в проекте, и затем синтезируете. Затем, когда в каком либо compile point произошло изменение - снова отправляете на синтез весь проект. Тут Synplify и смотрит, были ли изменения. Пересинтезирует только то, что изменилось. Подробнее можно посмотреть datasheet: "Multipoint Synthesis using Synplify Pro for Xilinx". Вот так и делаем.
  15. Ага, понятненько. Т.е. в этом случае, я так понимаю, необходимо подстроить клок для 2-х чипов, чтобы был синхронный. Но как быть онозначно уверенным, что они совпадают? Посчитать сколько максимальная задержка до второго чипа и затем для первого ввести такую-же задержку? Т.е. буфер там какой внутри поставить, что-ли? Забыл сказать, частота то всего 30 МГц. Ладно завтра будем разбираться. Спасибо за советы.
×
×
  • Создать...