Jump to content

    

Victor

Свой
  • Content Count

    122
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Victor

  • Rank
    Частый гость
  • Birthday 02/06/2005

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Питер
  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. Цитата(iosifk @ Sep 7 2010, 14:01) Это конечно так, но не всегда помогает. Например, если вживую хочется в нужном месте подать какой либо внешний сигнал и увидеть реакцию... Например внешний сигнал неисправности... Или внутри имитировать какой либо редко возникающий сигнал... Хочет человек. Ну так пусть и делает... Тогда чипскоп вам в руки Есть замечательное ядро - 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. Цитата(axalay @ Feb 18 2010, 17:03) Все как хотел так и получил. Я не думаю что из-за температуры времянка настолько сдвинется. А если это так (сдвинется) то и констрейны тут не помогут Вот у вас, как вы говорите, все вручную. А примитив в IOB не положен. Если вдруг потеснее в кристалле станет, настройки синтезатора забудете поставить, чтобы в IOB регистры входные-выходные складывал, ну или настройка по умолчанию изменится в следующей версии сдвинется вами вручную положенный примитив в сторону на пол-кристалла, и получите дополнительно пару нан... А если описать времянки, то синтезатор/PAR будет _обязан_ это учитывать. А если уж очень хочется вручную, тогда добавьте атрибут IOB = TRUE ну или в конце концов не FDDRRSE, а OFDDRRSE вставлять. Еще IOBDELAY надо не забыть, Его тоже синтезатор может сам подергать, а это как-никак около 3 нс... При STA по умолчанию подразумеваются самые худшие условия по температуре и напряжению питания. Очень рекомендую OFFSET посмотреть... Полезно.
  11. Цитата(axalay @ Feb 18 2010, 09:36) Связь с внешним миром я делаю на примитивах и в IOB-соответственно констрейны не надо там. В этом вы не правы... Их очень нужно описывать, иначе можно даже и не узнать, что не выполнены спецификации... Причем, как на вход, так и на выход. Цитата(axalay @ Feb 18 2010, 09:36) А вот по поводу констрейнов внутри, что они обязательны? Если все работает по одному клоку, а клок глобальный - то задержка сигналов всегда будет меньше чем задержка клока. Иначе все бы с опаской использовали сдвиговые регистры. Внутри, обычно, достаточно описания тактовой. _Но_ если все синхронно и синтезатор/PAR "все" понимают. ЗЫ: Да, согласен с предыдущим оратором, если все однотактово, конечно.
  12. Так это все таки был Clock1 или что-то другое? А проблемы остались? Еще можно пристально посмотреть на (spi_to_epc/Write)... он там ничем "нужным" не управляет?
  13. Я бы посоветовал устранить подобные тактовые сигналы, где это возможно. Есть ли такие в проблемных модулях?
  14. Цитата(axalay @ Feb 17 2010, 11:06) это строб, длиной в период клока появляется 1 раз за микросекунду. Тактируется тем же клоком. Создается в другом месте, так как используется в нескольких местах. Я привел этот модуль не потому что он не работает (он продолжает работать). А в качестве примера откуда берутся клоки того расстрельного списка 10 необьявленных клоков. Синтезатор здесь видит какой то клок : (*) These 10 clock signal(s) are generated by combinatorial logic, Синтезатор правильно видит здесь какой-то клок. Это как раз та конструкция которую я вам приводил в первом посте. Вы под одним клоком формируете сигнал (имеется ввиду строб 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 -> всё остальное.