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

Golikov

Свой
  • Постов

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

  • Посещение

Весь контент Golikov


  1. ну вроде как в описании написано The ALTMEMPHY megafunction automatically generates a PLL instance, but you must still provide the reference clock input (pll_ref_clk) with a clock of the frequency that you specified in the MegaWizard interface Она внутри сделает сама PLL и ей нужен опорный клок. дальше написано A clock output, which is half the memory clock frequency for a half-rate controller and the same as the memory clock for a full-rate controller, is provided (phy_clk or aux_half_rate_clk) and all inputs and outputs of the ALTMEMPHY megafunction are synchronous to this clock То есть вам выдадут наружу клок с добавленного PLL с половинной или полной частотой, и вся работа этого модуля синхрона этому клоку. Ничего не поделаешь, модуль который читает и пишет данные через эту корку должен работать на этом клоке. Но я не вижу требований чтобы он работал на внешнем клоке.... в приведенном вами ответе супорта написано The reference input clock signal to the PLL must be driven by the dedicated clock input pin located adjacent to the PLL, or from the clock output signal from the adjacent PLL. это стандартное требование клок который идет на вход PLL должен заходить либо с близкой специальной клоковой ноги, либо с выхода близкой PLL. Так как внутри мем контроллера будет добавлено PLL, то опорный клок для нее подаваемый на ногу должен быть хорошим, который не тянули через весь кристалл. Но тут не сказано что вы должны всю схему строить на этом опорном клоке.
  2. еще бы ее хорошо также считать через ваш интерфейс, для сравнения. То есть записать жетагом, и считать через интерфейс и сравнить с файлом
  3. еще вот такие немцы есть http://shop.trenz-electronic.de/de тоже делают маленькие модули со всякими навесами сверху
  4. Надо считать данные сначала, то есть залить их через бластер, потом считать и сравнить. Альтера любит биты по порядку местами поменять. С максом 10 есть маленькая проблемка, у него флешка внутренняя, никаким контроллером до нее не долезть так что без самопрограммирования никак. Для страховки там 2 региона, в один кладем бутлоадер не изменяемый, в другой прошивку рабочую. Бутлоадер можно защитить, в том числе и железными битами защиты. И никакой кирпич не грозит. Также там встроенный механизм поочередной загрузки в случае повреждения.
  5. Блин какой-то тупик:) Куча клоков и фифо:), а есть шанс нарисовать блок схему с тем откуда какие сигналы и на какой частоте? Как я себе вижу задачу и как я бы ее решал. BCK - это вроде как клок, к нему должны быть синхронны данные DATA и LRCK. Имеет смысл по этому клоку принять данные в сдвиговый регистр и собрать слово данных. Дальше по этому же клоку слово надо пихать в FIFO, все синхронизации с LRCK должны быть сделаны здесь, то есть сразу собирайте слова для каналов. А из фифо надо выгребать слова на другом клоке, тогда все будет работать без плаванья, ну кроме проблемы с переполнением или опустошением FIFO. Констрайнить надо BCK на период с джитером, и офсет данных и клока от BCK, остальное должно фифо само законстраинить.
  6. принимается I2S как? Второй клок это клок I2S? Прием на его частоте и пихание на той же частоте в FIFO или как? Опять же хорошо понять что есть поплыло. Что работать перестало понятно, но если подробнее описать как оно перестало работать, то возможно будет понятнее насчет причин. Констраины какие прописаны? Просто путь от клока к клоку зафалсен или как? С симулятором понятно. В визарде при создании какой режим защиты от мета-стабильности был выставлен? какие еще асинхронные и прочие входные сигналы есть? Защищены ли они от мета-стабильности?
  7. Кстати если решить эту проблему, то можно даже не говорить что там 128 КБайт, а соврать что там гигобайты, а уже на уровне хоста работать только с началом памяти.
  8. Если фифо сделано правильно, то любая. Если неправильно то никакая... Может реально не в клоке проблема? А данные откуда идут? И как они с клоком связаны?
  9. там можно открыть и посмотреть из чего складывается время. Подозреваю что одно из них это только путь от выхода триггера до входа включая логику. А другое от выхода до выхода, с учетом времени защелки и разбежки клоков.
  10. так SDRAM контроллер есть и без ниоса, он то тут причем:)
  11. Ну при таком раскладе только DMA, FIFO авалоновское наверное не обязательно, если только его будет легче подружить с DMA контроллером, он тоже готовый имеется в системе ниос. Но я не думаю, что будет легче. Потому что для пихания в FIFO придется авалон поддержать в том же объеме что и для работы с ДМА.
  12. Есть автономный блок который читает данные из АЦП в свою внутреннюю память. Дальше есть варианты: - ниос может через авалон считать данные из этого блока себе в регистры и работать с ними, в том числе положить в память. - Либо специальный ДМА контроллер может данные из этого автономного блока положить в память, откуда их может забрать ниос или другие блоки. Функции ДМА можно встроить в функции блока. - Можно сделать выделенный банк 2 портовой памяти в который с разных сторон ходят автономный блок и ниос это все вариации распределения ресурсов в зависимости от задачи.
  13. если автономный блок проводит первичную обработку, фильтрацию и децимацию данных то иногда и для быстрых АЦП ДМА не понадобится.
  14. если не надо буфера данных собирать можно и без ДМА просто ниосом читать. Из ниоса выходит системная шина, ее надо поддержать в автономном блоке.
  15. вроде бы внутренние блоки задержки такую дискретность 1-2 нс не дадут. Возможно придется городить что-то типа сетки частот со сдвигами и выбирать по какой из них щелкать данные для каждого бита, а потом через фифо пересинхронизировать. не наврал, дадут дискретность даже лучше.
  16. блок ДМА - это отдельный блок, он может работать и без ниоса. Что есть цель работы? Использовать готовый блок или написать свой? Для симуляции внешняя память и проц не нужны, блоки памяти, регистровые файлы с интерфейсом какой-то шины, для альтеры авалоном, и погнали.
  17. В любом случае это все равно будет модель. Для конкретной температуры и питания. Можно в готовой ПЛИС поглядеть что вышло через сигнал тап или чипскоп опять же в конкретной температуре и на конкретном питании, но как правильно сказали знание это мало что дает, разве что доказывает что это не магия, а просто схема:)
  18. если у вас есть ниос, то у вас и остальная FPGA имеется. Естественно сделать автономный блок сбора данных с АЦП обычно предпочтительнее чем процом его дергать.
  19. В рамках fpga, когда логика ложится в ЛУТ, наверное, правильно сказали выше разницы в скорости сравнения константы и нуля нет, кроме случая нескольких констант, где усложнится схема выбором с какой из констант сравнивать. Схема быстрого переноса все равно работает с выходами лута, которому все равно что на входе 0 или константа. Так что, думаю тут разницы не нарыть. А понял. Бит переноса при переполнении счетчика. То есть заряжать счетчик не в 0, а в остаток счета и когда он досчитает ловить признак переполнения. Интересно.... Ну это фактически как анализировать знаковый бит при счете вниз.
  20. Еще сравнение с 0 выгоднее когда один счетчик несколько раз используют с разными константами. Константы разные, а схема проверки одна.
  21. 1) Практически нет. Есть общее правило хотите поднять частоту увеличивайте число ступеней конвейера. Если ваша схема без лишних движений в частоту не ложится с генеральским запасом, то придется вам хорошо над ней подумать, общих рецептов не будет, такие схемы эксклюзив. 2) Хуже на порядки, схематик как инструмент на порядок неудобнее.. Если уж хочется схему городить в элементах, то и их можно описать верилогом. Это будет управляемо, читаемо и понимаемо. Плюс есть бонусы см. 4 пункт. Рисовать схему - это точно шаг назад 3) Конечно разбиение программы на модули играет роль в тайминге, но только пока вы не поставите галочку не сохранять иерархию. После этого синтезатор разбирет весь проект и собирет заново, максимально занимаясь оптимизацией. Модули в этом режиме нужны лишь для читаемости и понятности кода. В больших и сложных проектах иногда фиксируют удачные разводки модулей, но это проекты не для спартана. 4) Большая часть форума считает что надо думать и описывать схемами. Однако это уже не актуально. Авторы синтезаторов уже открыто пишут описывайте задачу максимально абстрактно, это даст нам больше маневра для оптимизации. Так что вам надо описывать суть, и задавать режимы синтезатора, он умеет выбирать баланс между площадью и скоростью. Один момент надо уточнить. Нельзя описывать суть бездумно. К примеру если ставить программисткое if(Counter >= 10), это хуже чем if(Coutner == 10), и хуже чем если бы он считал от 10 до нуля и сравнение было бы if(Coutner == 0). Это очень просто объяснить, Проверка на >= покрывает больше вариантов и потому разделить их на лож и истину сложнее чем проверка на константу, а константа сложнее чем проверка на просто 0. Если вы делаете one hot вектор, то проверять надо my_vector == 1'b1, а не my_vector == (1 << i). Потому что во втором случае проверяется не только что i бит равен единице, но что и остальные равны нулю. Так что правильнее думать задачей, но рассматривать ее критически, прикидывая какого уровня сложности схемы вы пораждаете. Чем меньше условий описывает результат, тем меньше будет слоев логики и тем быстрее будет схема. И наоборот чем жестче условие, тем сложнее выбор из множества входов, тем дольше оно будет считаться.. И да. не используйте циклы как циклы:)
  22. Если вы хотите использовать сигнал как клок внутри ПЛИС, то есть в always@(posedge ...) блоках. То лучше чтобы это были спец пины готовые принять клок. Обычные ноги тоже могут принять этот сигнал, но такой маршрут заставит мапер сначала дотянуть этот сигнал через буфер до клокового дерева, и только потом распространить его на схему, что вставляет ему дикую задержку и портит времянку. А дальше уже зависит от вашей схемы и необходимой оперативности, как то я тянул 50 МГц СПИ, с заходом не через клоковую ногу на спартане 6. В целом если работать по одному фронту получилось. Но там 1 линия, параллельная шина может внести свои коррективы.
  23. да там вообще вроде не данные передают, а клок, все остальное в описании проблемы для драматизма%). Можно ли по одному проводу передать 50 МГц с нормальными фронтами, житером и без помех на 20 см? - вот основной вопрос темы. И ответ походу - нет%) И что-то мне говорит что там надо еще согласование какое-то делать, чтобы в проводе каша не началась и обычного резистора подобранного на глаз не хватит. У ПЛИС иногда бывают диф входы клока и диф выходы, тут такой магии нет?
  24. Вообще не понимаю о чем вы тут говорите. Был проект отлаженный на одном источнике клока. Источник клока сменили и проект стал плохо работать. При чем тут разброс генераторов, при чем тут 2 клоковое FIFO?
×
×
  • Создать...