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

Victor

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость
    Частый гость
  • День рождения 06.02.2005

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 768 просмотров профиля
  1. Небольшое дополнение по Virtex 5 - будьте внимательны! Не во всех банках есть Bufr, в "центральных" нет. По поводу учета задержки тоже небольшое имхо - при наличии OFFSET IN - её будет учитывать любой ISE, но DCM/PLL по умолчанию корректирует так, как если бы тактовая была подключена к "клоковому" входу. Остальное надо допиливать вручную (задавая фазу DCM). Ну и действительно, для АЦП - лучшего решения, чем bufr/bufio - не придумали ) P.S. BorisTS, respect! P.P.S. Думаю автору не нужна точность до градуса ;) (если мои телепатические возможности не подводят, и 50МГц DDR с АЦП - это правда :) )
  2. Пытался в 10.4, 12.3... может в 12.4 поправили что-то... попробую завтра :)
  3. Это как-то много, давайте всё-таки однобитные попробуем :) у меня упорно получается 2 лута :(
  4. Кое где Xilinx пишет, о том, что при использовании кристаллов с LUT6, можно получить Performance Advantages в виде компрессии сумматора трех переменных (документы типа Xilinx WP309 Targeting and Retargeting Guide for Spartan-6 FPGAs, ключевое слово ternary). В других приличных документах (xst.pdf, XST user guide) такая конструкция не встречается, и синтезатор не сжимает трехвходовый сумматор описанный как assign result = a + b + c; в один LUT6, (a,b,c - однобитные, result - 2 бита). Вместо этого получаются два сумматора на 2-х LUT2. Внимание, вопрос: Может быть у кого-то получилось написать так, чтобы xst самостоятельно сжал сумматор? Подскажите, пожалуйста, как :) З.Ы. Описать примитивами или логической функцией не предлагайте, понятно, что так можно. Хочется именно inference.
  5. У jtag.com появилась бесплатная приблуда чтобы вручную "подергать" ногами. JtagLive называется. Может юзать стандартный кабель. Там есть какой-то дополнительный модуль, который позволяет на питоне писать скрипты управления пинами (за деньги, но немного вроде...)
  6. Можно вручную вставить BSCAN, и вручную написать ПО для "передачи" данных туда через JTAG интерфейс. Если железка подключена к компу и есть драйвер, то, возможно, проще написать пару модулей. Если интерфейса кроме JTAG нет, то вручную.
  7. Тогда чипскоп вам в руки :) Есть замечательное ядро - VIO :) пожно прямо руками потыкать что и куда нужно, синхронные сигналы не только руками - до 16 тактов последовательность задается.
  8. Если вас не пугает "повисший" последний бит, то можете и локальный клок использовать. Цепочка такая: Clock capable pin (или дифф пара, которая приходит на CC-pin) -> IBUFDS -> BUFIO -> -> только IDDR. с того же IBUFDS берем и на BUFR: Clock capable pin (или дифф пара, которая приходит на CC-pin) -> IBUFDS -> BUFR -> -> логика съема данных с IDDR и десериалайзера. если клок введен не на Clock capable, то BUFIO и BUFR использовать не получится.
  9. Вообще в таких ситуациях, когда тактовая есть только в момент передачи регистр (как этого не хотелось бы) на входе не поставить без дополнительного "геморроя" по вычитке из него последнего значения. Поэтому берем DPRAM на 32 или 64 бита (на SRL16) и не паримся. Такое решение предлагает и Xilinx. Т.о. на входе имеется 2 dpram (по одной на фронт), на выходе из нее на системной спокойно вычитываем и отпускаем ACK. Можно не на системной, если она меньше линковой тактовой, а на некой промежуточной, а потом десериалайзер.
  10. Вот у вас, как вы говорите, все вручную. А примитив в IOB не положен. Если вдруг потеснее в кристалле станет, настройки синтезатора забудете поставить, чтобы в IOB регистры входные-выходные складывал, ну или настройка по умолчанию изменится в следующей версии ;) сдвинется вами вручную положенный примитив в сторону на пол-кристалла, и получите дополнительно пару нан... А если описать времянки, то синтезатор/PAR будет _обязан_ это учитывать. А если уж очень хочется вручную, тогда добавьте атрибут IOB = TRUE ну или в конце концов не FDDRRSE, а OFDDRRSE вставлять. Еще IOBDELAY надо не забыть, Его тоже синтезатор может сам подергать, а это как-никак около 3 нс... При STA по умолчанию подразумеваются самые худшие условия по температуре и напряжению питания. Очень рекомендую OFFSET посмотреть... Полезно.
  11. В этом вы не правы... Их очень нужно описывать, иначе можно даже и не узнать, что не выполнены спецификации... Причем, как на вход, так и на выход. Внутри, обычно, достаточно описания тактовой. _Но_ если все синхронно и синтезатор/PAR "все" понимают. ЗЫ: Да, согласен с предыдущим оратором, если все однотактово, конечно.
  12. Так это все таки был Clock1 или что-то другое? А проблемы остались? Еще можно пристально посмотреть на (spi_to_epc/Write)... он там ничем "нужным" не управляет?
  13. Я бы посоветовал устранить подобные тактовые сигналы, где это возможно. Есть ли такие в проблемных модулях?
  14. Синтезатор правильно видит здесь какой-то клок. Это как раз та конструкция которую я вам приводил в первом посте. Вы под одним клоком формируете сигнал (имеется ввиду строб Clock1), который подается на вход тактовой другого регистра (имеются ввиду Second,Microsecond ). Вот собственно и источник надписи в отчете синтезатора. :) Предполагая, что строб Clock1 сформирован под тактовой SysWrite я бы предложил сделать так: always @(posedge SysWrite ...) ... if ((Load == 1'b1) && (Clock1 == 1'b1) && ... ) Second[31:0]<=LoadSecond[31:0]; ... Тогда многоуважаемый синтезатор будет "понимать", что от изменения Clock1 до его "использования" один такт SysWrite. А сейчас этого "не видно".
  15. Теперь ясно, что по вход :) Да, именно так. Просто примитив IBUF - на обычных пинах, а IBUFG на специальных. Т.е. в вашем случае - IBUF -> BUFG -> всё остальное. В случае если клок подведен на специальный вход: IBUFG -> BUFG -> всё остальное.
×
×
  • Создать...