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

Gorby

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    4

Сообщения, опубликованные Gorby


  1. ISE 7.1 SP3,Modelsim SE 6.0a, Spartan 3, DCM -Digital Clock Manager. При пост-лэйаут моделировании все прекрасно. Даже могу двигать фазу клока. То есть при изменении параметра PHASE_SHIFT наглядно вижу, что фаза меняется. Но! Есть проблема. Дело в том, что внешний клок я подаю на глобальный буфер и распределяю его на все 4 DCM, что есть на кристалле. Так вот, при нулевом заданном сдвиге фазы внутренний клок отстает от внешнего сигнала на 1945 нС - при тактовой 100МГц это многовато. Как выяснилось, эта задержка набегает на входном буфере плюс глобальный буфер. Что в общем понятно. Непонятно другое. При изменении параметра DESKEW_ADJUST (от 0 до 15) в симуляции не меняется НИЧЕГО. Вроде как этот параметр специально для этого сделан, а не работает. Кому-то удавалось увидеть результат действия этого параметра при моделировании? Вопрос не в выравнивании фаз - я это могу сделать сдвигом фазы, а в принципе. Ведь на живой железке наверняка этот параметр действует как-то. А это значит, что симуляция неадекватна. К сожалению, живого чипа нет пока. Да и сдвиг фаз в 1.9 нС померить затруднительно. Да и клок-то внутри сидит, фиг померяешь. Только моделирование и спасает. А вот, оказывается веры ему как бы нету... Кто что скажет?

  2. Напишите приемопередатчик нужной разрядности, внутри него формируйте задержки. В качестве управляющих сигналов используйте у;е имеющиеся сигналы управления памятью.

     

    Идея понятна, спасибо. А с у правлением направлением как раз проблемы - управляющие сигналы тоже ведь сдвинуты во времени, причем задержка немного отличается (там нагрузка меньше). Да и нет такого сигнала, от которого бы напрямую можно было управлять - RAS CAS WE , больше ничего. Вобщем, как я понял, простого способа нет... Обидно.

    В крайнем случае управлять направлением этого трансивера можно внешним сигналом, руками его подавая. Точность по времени там не нужна, в тестбенче его можно выставлять.

  3. Коллеги! Поможите кто чем может... Делаю пост-лэйаут моделирование в Моделсим 6.0 SE. Все замечательно. Есть трехстабильная шина данных на ДДР память. Необходимо внести в эту шину PCB задержку 1.75 наносекунды - в ХайперЛинксе вычислил. Со стороны памяти решилось просто - подрихтовал ее выдачу на шину, благо VHDL модель есть.

    А вот как задержать немного сигнал от ФПГА - не знаю, хоть убей. Причем я не хочу ничего менять в ФПГА, мне только задержку на проводниках надо. Для сигналов управления - не проблема. Просто применил промежуточный сигнал

    ddr_dqs <= ddr_dqs_real after 2.0 ns;

    А вот для двунаправленной шины не канает.

    ddr_dq <= ddr_dq_real after 1.75 ns;

    В одну сторону (к памяти) работает хорошо, а вот от памяти до ФПГА - сигнал не проходит. Т.е. ddr_dq_real так и остается в третьем состоянии.

    Вопрос: как внести на VHDL задержку в двунаправленную шину?

  4. Как избавиться от

    WARNING:SpeedCalc:42 - Cannot find referenced model "bel_d_min_period".  This

      generally indicates that there is an inconsistency between versions of the

    :(

     

    Я тоже вижу такую надпись. По моим наблюданиям, на правильность работы железа и моделирование не влияет.

  5. У синтезатора XST есть привычка иногда показывать ошибку совсем не в том месте, где она реально есть. Например в разных модулях выводы сделаны выходами. А на более высокой ступени иерархии эти выводы соединяются. В итоге будете иметь невнятное сообщение о мульти-соурс без малейшего представления, в каком модуле его искать. - Ведь каждый отдельно взятый модуль ошибок не содержит.

    Лечение - общеукрепляющее. Внимательным образом смотрим на протокол синтеза КАЖДОГО модуля (это ДО адвансед). Уделяем внимание каждому желтому ворнингу. Их много не по делу, но иногда и важные бывают.

    Удачи.

  6. ДД.

    Ни кто не видел ATA UDMA IP-core? Может кто-нить знает, где искать? На opencores уже был. Мож у кого-нить есть?

     

    Посмотрите на FTP в каталоге /pub/FP+GA/_IPc+ores_/Men+tor.Decr+ypted/ файл m82*371*ide.tar.gz

     

    Так это того, HOST-контроллер. А не знает ли кто-нибудь , где взять такое же, но с перламутровыми пуговицами, то есть внутренности ATA-device?

  7. В общем случае, не позволит. Потому как любая динамическая память требует

    1. Активация банка

    2. Пауза

    3. Команда

    4. если запись, то паузы нет, если чтение, то пауза

    5. пауза, пока последний записанный запишется.

    6. Закрытие банка. (precharge)

     

    кроме этого, обязательно каждые 7 микросекунд надо давать команду REFRESH, после чего некоторое время вообще ничего делать нельзя.

     

    Конечно, можно использовать AUTOPRECHARGE, но он не работает на FULL PAGE MODE, а именно его надо использовать, если хочется максимально "выжать" производительность.

     

    Но! МОжно использовать ширину шины данных 8, 16, 32 бита, также 64. Это позволит достичь заданной производительности. Но с увеличением ширины данных появляются другие проблемы - где брать клоки для ИС памяти и тд. Так что пути есть, но какой выбрать решить можете только вы сами.

  8. 2 asya

     

    Насчет "заповеди" о синхронной схеме:

    Еще в институте нам всем рассказывали про гонки в цифровых автоматах.

    Гонки приводят в возникновению пичков (glitches) на выходах логических элементов  (за счет разной скорости нарастания фронтов сигналов и т.п). К слову на С1-55 эти пички Вы будете ловить до пенсии и не поймаете, а на работе схемы они будут отражаться совершенно чудесным образом с непредсказуемыми симптомами.

    Синхронные схемы такие приколы полностью устраняют.

     

    ЗЫ: мне сначала было жалко тратить триггеры на "осинхронизацию", но потом я понял, что без них только глюки.

     

    Другими словами, в синхронном дизайне вы гарантируете, что все переходные процессы на логике (а может быть N ступеней логики), закончатся ДО прихода следующего тактового фронта.

     

    А "пички" не так ловятся. Берется славная микросхема 555TM2 , включается делителем на 2, а на тактовый вход подаете сигнал, на котором не видно глитчей. А пресловутым осциллографом становитесь на выход триггера. И уж теперь по смене сигнала видим момент глитча.

  9. FOR ASYA

     

    Здесь ваш проект на VHDL.

    Второй счетчик теперь тактируется тоже общим клоком. А вот считать ему разрешается только по сигналу от предыдущего - divider, пропущенного через триггер. Как вы понимаете, эта часть схемы может быть реализована по-разному. Разрядность я уменьшил, чтобы на симуляции хоть что-то было видно. У меня ISE63 SP3 - у вас может и не открыться.

     

    Для упрощения работы все исходные ВХД файлы скопированы в один - main.vhd и он является единственным входным файлом для ISE.

    asyaled_1.zip

  10. Ну и напоследок, несколько штрихов по проектированию цифровых устройст на ФПГА. Меня отягощал более чем 15-

    Мда. почитал я это... Не совсем понял.

    Я тут свой один дизайн маленький выложил. http://www.yakovenko.net/asyaled.zip

    Не будете ли вы так добры глянуть и пояснить, если возможно? проект этот написан под ISE для spartan 3 starter kit'а. Весь в схематике. (vhdl только начал читать и на момент рисования проекта еще не начинал читать)

    зараннее спасибо большое.

     

    Заповеди, их выполнять надо, а не понимать. Понимание позже придет.

    Ваш проект посмотрю в свободное время. Но на какой результат вы рассчитываете? Никто за вас вашу работу делать не будет.

     

    Посмотрел. За пару дней постараюсь сделать на VHDL - в качестве примера.

    ТОлько расскажите общую идею устройства. Своими словами.

  11. Извиняюсь, но с какого перепугу вам понадобилось просимулировать именно POST MAP?! Сказали "а", так говорите весь алфавит. Завершите Place & Route без ошибок, и симулируйте его, SDF там создается и симулируется безо всяких проблем. У меня вон на столе стоит ISE 6.3 плюс Моделсим 6.0а , но библиотеки у него от 5.8g плюс обновления для третьего сервис-пака. Все работает на "ура"

     

    Немного резко, но я извинился. Поведенческую модель мы ипользуем, чтобы оценить работоспособность идеи. Post Place & Route - для верификации результата. А вот промежуточные стадии какой смысл моделировать? Времянки все равно от фонаря.

  12. Post P&R симулирование - обязательное (но недостаточное) условие работоспособности вашего дизайна в целом. Рекомендую симулировать на тактовой частоте, процентов на 10 большей чем рабочая. Таким образом вы будете иметь 10%-й запас по скорости на случай высокой температуры, пониженного напряжения и проч. Очень внимательно отнеситесь к предупреждениям Моделсима типа setup time violation, hold time violation и другим. Их наличие обычно означает присутствие в вашем дизайне "тонких" мест, не затронутых констрейнами.

     

    По умолчанию загружаются только интерфейсные сигналы вашего дизайна - входы и выходы. Если нужно видеть внутренности, создаем свой собственный вейв: ЗАКРЫВАЕМ окно с временными диаграммами и создаем новое такой командой:

    add wave -r /*

    Может занимать много времени на больших дизайнах.

    Потом как обычно запускаем на моделирование. Не забываем, что моделировать начнет с того места, на котором прежде остановилось. Если нужно с нуля и все сигналы, тогда немного сложнее.

     

    На пальцах: Закончить симуляцию Simulation->End Simulation

    Затем скопировать в буфер строку команды, которую моделсим выполнил для начала симуляции - вы ее увидите в логе. Вставить ее из буфера в командную строку и запустить. А уж потом создать полный вейв и симулировать.

  13. шаг 1.

    Добиваемся, чтобы проект синтезировался и разводился.

    Похоже, вы этого уже добились.

    шаг 2.

    Если Тест бенча в вашем проекте еще нет, то надо его создать.

    в ISE 6.2 это будет Project->NewSource->VHDL_Test_bench и не забыть поставить галочку на опции "добавить в проект". Оно создаст ЗАГОТОВКУ вашего тест-бенча. Потом его надо поправить руками - завести стимулы.

    шаг 3. Стать на этот файл в дереве проекта и и запустить задачу Simulate Post Place & Route VHDL model.

     

    Атоматически запустится Моделсим и просимулирует ваш бенч до 1000 наносекунд и остановится. Нужно больше - нажимайте кнопку "Run -all". Не забудьте нажать "Стоп" когда нужное время пройдет. Внимательно поизучайте кнопки на тулбаре Моделсима - они помогут.

     

    Если совсем нет опыта, посмотрите мой бенч - для примера. Только расширение vhd not txt - местный форум сказал, что я не имею прав пересылать файл с расширением VHD. :(

    bench.txt

  14. Я отдал бы предпочтение Модельсиму. Он специально заточен по Ксилинкс (MXE!) и имеет все нужные библиотеки. Кроме того, автоматически вызывается из среды Ксилинкса со всеми командами и скриптами.

    А на счет того, что прошить в кристалл и проверить, работает ли...

    Могу сказать только одно: если устройство заработало в симуляторе, оно ВОЗМОЖНО, заработает и вживую. Но если в симуляторе не работает, то нечего его даже шить в микросхему.

  15. По моему ГОРЬКОМУ жизненному опыту, все посадочные места лучше создавать самому. Я пользуюсь ПИКАД 2002, там есть визард, любой схемный и конструкторский элемент делается не более 10-20 минут. Потратьте это время и спите спокойно.

    У меня случай был. Женщина, разводчик платы, хотела как лучше и взяла TQFP208 корпус из прилагаемой к Пикаду библиотеки - вместо создать по чертежу из даташита. Только после изготовления плат (в Голландии) оказалось, что реальная микросхема БОЛЬШЕ, чем футпринт под нее. Так вот, знакомый монтажник подгибал внутрь 208 ножек и паял микросхему "на цыпочках". Это к тому, что я НИКОГДА не возьму в свой проект футпринт из "стандартной" библиотеки и, тем более, открытых источников, как форум. Ну, резисторы - конденсаторы не в счет. Единственное исключение - особо сложные разъемы и тд. Но даже DDR DIMM посадочное место я делал сам.

  16. В принципе, похожие трюки можно делать, используя атрибуты для цепей (KEEP, S(ave)). Назначение атрибутов можнно посмотреть Libraries Guide.

    Альтернативный способ - построить генератор на внутренней логике ПЛИС (используются только внутренние ресурсы). В зависимости от скорости кристалла частота такого генератора может быть порядка 100 - 200 МГц.

     

    Ага. И "плавать" в этих же пределах от температуры, напряжения питания и фазы Луны.

  17. Можно почитать сдесь:

    http://www.interfacebus.com/IC_Output_Inpu...tor_Values.html

     

    Есть там такая фраза:

     

    It's good design practice to tie the unused input to Vcc via a resistor to reduce noise susceptibility. The resistor protects the input pin by limiting the current from high going variations in Vcc which could damage the input to the device.

     

    Т.е. главное чтобы скачки по Vcc не убили защитный диод на входе.

     

    Главное, чтобы не проключались "насквозь" оба транзистора в логическом элементе, что приводит к броскам тока или даже их разрушению.

     

    Ну, народ, вы даете. Как же "скачки по Vcc" юбьют диод на входе? Если вы сами соединили этот вход с Vcc. И что-то мне подсказывает, что там речь идет о TTL входе. А здесь мы имеем дело с затвором CMOS транзистора. То есть он тока вообще не потребляет. Ну и ограничивать его , соответственно, незачем.

     

    А притягивать к определенному логическому уровню неиспользуемые CMOS входы - принципиальное требование, иначе будете слушать шумы Вселенной.

  18. Глобальные никак не разводятся, они идут через все макроячейки. И теоретически (да и практически) сигнал, поданый на Глобальный вход, достигает всех макроячеек одновременнои занимает при этом всего одну линию в микросхеме.

     

    Вообще-то не совсем так. Хоть глобальные сигналы и идут через все макроячейки, но длина линий связи все-таки разная, и задержки тоже будут разные.

     

    Как бы да. Но разброс времен прихода глобального клока на все триггеры устройства на порядок меньше задержки на одном уровне логики (грубо, на одном логическом элементе). Поэтому проектируя ФПГА можно считать глобальный клок одинаковым для всех. Вот в ASICах, там другое дело, там клок имеет задержки распространения, сравнимые с логичеким. Ну так там и софт совсем другой для проектирования используется, это его задача следить за таймингами.

  19. Подскажите как настраиваются блоки ввода-вывода у Xilinx для различных уровней сигналов.

     

    Проще всего это сделать, выбрав менюшку (ISE 6.2, 6.3)

    User constraints -> Assign package pins

    При этом запустится приложение Xilinx PACE. (Pinout and Area Constraints Editor).

    Заодно там и выводы вашего дизайна к конкретным пинам привяжете.

    А вот результатом работы этой программы и будут являться несколько строчек в файле .UCF . Конечно, их можно и руками вбить, но только после приобретения некоторого опыта. Более того, в меню Tools->Design Rule Check можно проверить, не нахомутали ли вы чего лишнего.

     

    Естественно, надо помнить, что нельзя произвольно выбрать тип IO для пина. Например в Спартан 2Е при питании банка 3.3 В сделать вывод CMOS нельзя. А вот LVTTL можно. ПРи питании 2.5 В можно и CMOS и более другие стандарты.

  20. По поводу загрузки прошивки через раз.

    Иногда помогает подобрать пулл-ап на клок JTAG. Причем поведение очень необычно - например 15 ком работает на УРА, а 5 ком - ни в какую. То есть пределы от 1 ком до 56 ком надо попробовать.

  21. Вот нашел у Самсунга аппликуху как раз под ваш случай. Совершенно ясно указывается, что при длине трасс меньше 1,5 дюйма согласование можно не применять. Правда, речь о ДДР.

     

    DDR_P2P_ApplicationNote20031014.pdf

     

     

    1. Implementing one or two stub resistor between driver

    and receiver helps to get the optimal terminology

    in P-to-P Application.

    2. In case of no termination , trace between driver and

    receiver should be shorter than 1.5inch to avoid

    over/undershoot problem.

    3. Parallel termination is not necessary to P-to-P Application

    , thanks to the enough small signal swing.

    It helps to save the board space and its cost.

  22. Ну и напоследок, несколько штрихов по проектированию цифровых устройст на ФПГА. Меня отягощал более чем 15-летний опыт работы с логическими микросхемами. Поэтому ничего зазорного в том, чтобы подсоединить КЛОК следующей микросхемы к выходу предыдущей , я не усматривал - классический асинхронный счетчик. Или разрешение\запрещение работы счетчика путем сложения по "И" его клока и разрешающего сигнала. И так далее. Перлов таких было много и пречислять их можно долго. Теперь самому смешно. А тогда... В общем, САМАЯ ГЛАВНАЯ РЕКОМЕНДАЦИЯ звучит весьма буднично: весь дизайн должен быть СИНХРОННЫМ. Это правило на данном этапе (начального изучения) не обсуждается , а просто выполняется. Что это значит на практике? Очень просто. У всего дизайна есть ОДИН (и только один) вход для тактовой частоты. ВСЕ (!!!) триггеры вашего дизайна должны переключаться по положительному перепаду тактового импулься. Поверьте на слово, это сэкономит вам много времени и нервов. Потом вы с улыбкой будете смотреть на эти рекомендации. Если вам понадобится запретить\разрешить работу счетчика, сделайте это путем подачи на его вход разрешения соотв. сигнала. Источником этого сигнала ДОЛЖЕН быть триггер, тактируемый тем же клоком что и весь дизайн. (Как помните, он у нас ОДИН). Или выход логической схемы, входами которой являются сигналы с триггеров, тактируемых..... и так далее в доме, который построил Джек.

    Особое внимание уделяйте ВХОДНЫМ сигналам. Они АСИНХРОННЫ. Поэтому обязательно пропускайте их через триггеры, тактируемые клоком.

    Зачем это все? Помимо всего прочего, такой подход позволит вам задать ограничения программе-разводчику чипа в виде всего одного параметра - желаемой тактовой частоты. Это самый простой и быстрый путь построения работающего изделия.

     

    Несколько сумбурно и поверхностно, но я бы целовал руки тому человеку, кто бы рассказал мне половину того, что я рассказал вам. В свое время.

    Опыт, он таки действительно "сын ошибок трудных"... :)

    Удачи в освоении ФПГА!

  23. По моему опыту, "въехать" в FPGA с нуля можно за два-три месяца. Но необходимы некоторые условия. 1 - принципиальное понимание цифровых логических схем. То есть вы должны знать что такое триггер, логический элемент и их основные разновидности. 2 - Несложный стартер-кит со всем необходимым для работы софтом. Причем это обязательное условие, иначе застрянете в конфигурации и прочих мелких но ОЧЕНЬ важных подробностях надолго. Причем софт желателен такой, на котором кто-то уже поработал.

    Настоятельно рекомендую Спартан и ISE6.2 (or WEBPack) by Xilinx.

     

    Лично мне не повезло - начинал работу с ФПГА на чипах ФПСЛИК от Атмел. Сам чип - ничего, но софт - ужасно крив и глюкав до безобразия. При этом я "имел понятие" в проектировании CPLD от XILINX - только схемный ввод, разумеется.

     

    Сразу забудьте о схематическом вводе. Только VHDL. Звучит зловеще. На самом деле мне с самого начала попался Актив-ХДЛ (чего и вам желаю!). И я получил ЗАМЕЧАТЕЛЬНУЮ возможность строить верхний уровень проекта СХЕМОТЕХНИЧЕСКИ, получая результат в VHDL. Простенькие модульки (типа счетчик, триггер и тд) я делал в виде отдельных файлов на VHDL (благо Актив ХДЛ имеет встроенный генератор типовых элементов) , а соединял их проводами на верхнем уровне (как по мне, самая муторная в VHDL вещь) в виде схемы. Красота! Конечно, со временем научился делать процессы ("элементы") "как положено" - в теле большого файла. Понравилась сила и мощь VHDL, но верхний уровень по-прежнему делаю в схематике - так нагляднее.

     

    В одном письме и не расскажешь всего... Очень важной частью проектирования ФПГА является моделирование устройства. Попробовав всякого, пришел к такой форме моделирования: простое устройство\единичный модуль моделирую в Актив ХДЛ - проверяя таким образом отсутствие логических ошибок. Когда заработало как ожидалось, следует имлементирование проекта в кристалл и моделирование post-layout версии в Modelsim. Это конечно дело вкуса и личных предпочтений, чем моделировать. НО! Моделсим входит в состав софта от Ксилинкс. Он уже содержит все нужные библиотеки. Он АВТОМАТИЧЕСКИ запускается из среды проектирования Ксилинкса. Это огромное преимущество для начинающего. Моделсим - еще тот предмет для изучения. Попозже, когда ваши действия станут более осмысленными :) вы сами сможете подобрать под себя среду и стратегию моделирования .

     

    Ээх, гулять так гулять!

    Рекомендую особо обратить внимание на такую вещь как цифровые автоматы. Их еще называют FSM. Замечательное средство, если требуется организовать какую-либо последовательностную процедуру в вашем кристалле. Сам вижу, что определение корявое, но знающий поймет, а незнающему - достаточно прозрачный намек, где искать информацию. Актив ХДЛ позволяет работать с машинами состояний ОЧЕНЬ ЛЕГКО. В визуальной форме. И потом генерит исходник на VHDL. Это было откровением, когда я впервые это увидел. Главное, не плодить много состояний, сверхсложных условий и немерянно разрядных переменных, которые инкрементируются и проверяются (ха-ха) в одном и том же состоянии. Сейчас-то я способен написать стейт-машину на чистом VHDL. А тогда Актив ХДЛ меня сильно выручал.

  24. Добрый день, всезнающий ALL!

     

    Есть Virtex-4 XC4VFX20 в 672-ногом BGA-корпусе и память от Micron - MT48LC8M32B2F5 - тоже в BGA-корпусе. Есть Ibis-модели компонентов обоих

    Попытались изменить выходной стандарт на LVCMOS  и согласовать внешними резисторами - если одно направление оказывается согласованым, то другое рассогласуется - типа что в лоб, что по лбу.

     

    Не подскажет ли глубокоуважаемый ALL что неправильно в этой картинке? Что надо сделать, чтобы Virtex-4 подружить с SDR SDRAM и при этом не ставить целой кучи внешних резисторов ?

     

     

    На вашем месте я бы не заморачивался и поставил последовательные резисторы 22 ом на все линии. Очень рекомендую сборки из четырех резисторов. В корпусе 1206. Есть и в корпусе 0805, но их не смогли нормально припаять на одной немецкой фирме - закоротки между выводами. Они-то как раз и создадут совместно с емкостью пинов ФПГА фильтр, который отсеет ваши андер- и овер-шоты. Я с легкой завистью гляжу на вас. У меня самого задача - подключить 8 (!) ДДР(!!) модулей к Спартану 2Е. И даже работает. Но когда 72 бита данных (с ECC) хлопают паттерн 00-FF, логичекие уровни остальных сигналов плавают плюс-минус 500 мв (SSTL, не CMOS!). Так что более 6 DIMMов не получается поддержать. Удачи.

  25. to makc

    Main это просто верхний уровень программы (не testbench). Тestbench специально не создавал - мне нужны внутренние сигналы.

     

     

    Так это же не причина не создавать тест-бенч. Например, когда я хочу видеть все внутренние сигналы, я даю команду Моделсиму:

    add wave -r /*

    Но это не для слабонервных. В большом проекте там ТЫСЯЧИ сигналов, вплоть до входов-выходов каждого элементарного триггера. Но зато там есть ВСЁ. Да и процедура только создания такого Вейв занимает около минуты на хорошем компьютере. А потом же еще и симулировать надо.

×
×
  • Создать...