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

Gorby

Свой
  • Постов

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

  • Посещение

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

    4

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


  1. Если подключите на землю через резистор 10-33 Ом, то точно все будет в порядке. Их кстати потом можно будет и на 0 R заменить.
  2. Вот так всегда. И резисторы не нужны, и "жираф большой , ему видней". А потом русский ракетоноситель, выводя европейский спутник на орбиту, взял и взорвался. Так вот хочу спросить: не из-за того ли, что кому-то показалось, что чего-то там не нужно?
  3. Может, я чего-то не дослышал, но человек же ясно говорит: В качестве терминации применяются включённые между сигналами и опорой (1,25В) резисторы. Речь о терминации, а не о последовательном согласовании и ВЫХОДНОМ импедансе Спартана 3. Так вот, DCI ни капельки не умеет делать терминацию. И "опорой (1,25В)" назвать достаточно мощный источник тоже как-то лихо получилось. Мало того, этот источник должен отслеживать половину напряжения питания и быть способным как отдавать, так и принимать нехилый ток (например все 64 бита данных и адресов и DQS-ы ушли одновременно в ноль. Посчитайте сами. А потом наоборот, в единицу). По сути вопроса: пятипроцентный разброс терминирующего резистора никак не повредит вашей схеме. Тут другие факторы влияют. Например, 1-процентные легче найти, номинал можно точнее подобрать. Не верите, загоните свою схему в HyperLynx и посмотрите. На пяти процентах разницу не увидите. В качестве демонстрации: на неудачно сделанной плате с DDR (слишком длинные линии, большой звон) после моделирования в HyperLynx поменял 47 Ом терминаторы на 330 Ом (!!!). Так вот с ними плата наконец заработала.
  4. Не так все строго. Просто на 4 банке есть несколько конфигурационных пинов (INIT_B, DIN/D0, DOUT/BUSY). В банке 5 тоже есть (RDWR_B, CS_B). А вот остальные конфигурационные пины (имеются в виду по которым плиска грузит в себя конфигурацию из сериальной флешки) находятся в отдельном специальном банке, так вот уже тот банк питается ТОЛЬКО 2.5 вольт (VCCAUX). Так вот чтобы меньше проблем, лучше 4-й банк питать от 2.5, но не обязательно. Но тогда вы должны обеспечить правильное согласование уровней по всем конфигурационным пинам. К слову, те что из банка 5 вообще не используются при ПОСЛЕДОВАТЕЛЬНОЙ загрузке.
  5. Я очень рад, что работает. Только не забываем, что Спартан 3 умеет управлять импедансом своих выходов, что позволяет не ставить последовательные согласующие резисторы даже если они там и нужны были бы например для 2-го Спартана.
  6. Я бы не ставил последовательные резисторы, обязательно при этом используя SSTL2-1 а не SSTL2-II выход. Обязательно промоделируйте в HyperLynx, это несложно. Другое дело, что на этих резисторах очень удобно щупами ставать... Также для одной микросхемы вовсе необязательно ставить конденсаторы на терминацию так часто. И одного на 5 линий достаточно. ТОлько не забудьте небольшие танталы тоже поставить по 33-47 мкф (одного-двух хватит). Также по всем питаниям (и терминации) знатоки рекомендуют обычные алюминиевые трухольные электролиты типа 470 - 1000 мкф 6 В. И ПЛИСке тоже это не повредит.
  7. Здравствуйте! Нарисовалась халтурка - переводить технические тексты по радиоэлектронике с английского языка на русский. Да вот не знаю, сколько денег взять - и продешевить боюсь, а попрошу слишком много - заказчик откажется. Переводами "за деньги" раньше не занимался, я инженер-электроник. По-английски говорю достаточно свободно. Кто как оценивает стоимость своей работы? Грамматически тексты несложные, но много специфической электронной терминологии, на которой "правильные" переводчики очень сильно спотыкаются. Это не User Manual, а на уровне "Описания схемы электрической принципиальной" и "Описания работы устройства" по нашим ГОСТам. Да, еще одно. Дело происходит в Европе. Рядом с Бонном.
  8. Скажу и я пару слов. Имея за плечами большой опыт работы с цифровой и аналоговой рассыпухой, начав еще с Радио 86, без проблем освоился с CPLD от Ксилинкса в схемном вводе. Устройства были несложные, поэтому и проблем не возникало. Но вот жизнь заставила, и очередной проект надо было делать на FPGA. К худу или к добру, это оказался ФПСЛИК от Атмел. Не самый лучший чип для старта, но так уж сложилось. К моему ужасу, там не было схемного ввода, а только какое-то страшилище по имени VHDL! Не зная концепций языка, имея только хелпы, поначалу было очень трудно. Так бы это и продолжалось, если бы не попался мне под руку Active HDL. Я увидел, что ВОЗМОЖНО что-то сделать на этом треклятом ВХДЛ! будете смеяться, в моем первом устройстве я рисовал в схематике декодер на логических элементах. А Актив его потом в ВХДЛ компилировал. Но начало было положено. Я понял главное: в ВХДЛ все состоит из компонентов и эти компоненты можно между собой соединять. До процессов мне тогда было еще далеко. Потом очередное озарение: в Активе есть визард, который по шаблону может генерировать практически любые нужные компоненты. Я стал использовать довольно сложные элементы (счетчики, дешифраторы и тд) на ВХДЛ, еще не понимая их устройства, но внимательно поглядывая на их исходный код. Постепенно и сам научился. Позже пришло и понимание. Очень тяжелым оказалось осмысление концепции синхронного дизайна. Прежний опыт тут очень помешал. Идея глобального клока поначалу казалась и вовсе абсурдной... Очень не хватало компетентного старшего коллеги. До всего самому трудно доходить. Книги? Читал, конечно. Но заметил уже давно: чтобы что-то понять в книге по новой для тебя области, нужно УЖЕ иметь какой-то минимум знаний. Но знаний концептуальных. Вот их-то в книгах, как правило, и нет. Например, один мой коллега, толковый цифроаналоговый схемотехник старой закалки, решился освоить 51-й процессор (дело было лет 7 назад). Так вот, поверите вы или нет, я провел с ним только ДВА вечера , объясняя концепции программного автомата. Через два дня он уже сам мигал светодиодом и осваивал Ассемблер. Так что правильно тут кто-то говорил: изучайте тот язык, на котором работает ближайший от вас гуру. Это сэкономит вам очень много времени и сил.
  9. Когда моделька рождается в VHDL, галка глобального отключения "Global disable X-generation for simulation". Ну а констрейн называется ASYNC_REG, например INST "I_MK_module/WEa[*]" ASYNC_REG = TRUE; <{POST_SNAPBACK}> Спасибо. Нашел. В детстве шарады у меня хорошо разгадывать получалось... Это ж ведь и не в Моделсиме вовсе. :a14:
  10. Я с этим сталкиваюсь практически постоянно :(, причина этого - туча частотных доменов. Кстати, схемы устраняющие метастабильность в ModelSime (думаю и в ActiveHDL то же) не будут работать, если специальных мер не принять. <{POST_SNAPBACK}> А вот с этого места подробнее, пожалуйста. Мне пришлось применить переход к другому клоковому домену с близкой частотой (100 -> 85 МГц). Как сделать, чтобы Моделсим не выдавал неопределенность, после которой все дальнейшее поведение становится тоже неопределенным? Другими словами, какие они, Ваши специальные меры? DefaultForceKind = freeze Это оно?
  11. А где лежит на местном? Навскидку не нашел...
  12. МОжет, я читать не умею. Но during configuration означает ВО ВРЕМЯ конфигурации. Не ДО и не ПОСЛЕ. Осталось разобраться, что же ОНИ под configuration понимают.
  13. Гы! Надо помогать друг другу. Мы ж люди. Не звери. (с)прапор Задов А гроши у вас есть?!
  14. попробуйте включить share resources. А вообще надо внимательно исследовать дизайн на предмет избыточной или вовсе ненужной логики. К сожалению, лучший "оптимизатор" здесь - Ваш мозг. Почему к сожалению? Да потому чтобы им воспользоваться, нужно [rep]учиться,3 ... А по большому счету, у Вас кристалл неадекватен задаче. Не экономьте на спичках. И не говорите, что у Вас проект с тиражом 100 тысяч миллионов (с)Малыш. Берите следующий по величине. Потом мне спасибо скажете. (например, когда скомпилированный со следующим сервис-паком дизайн принципиально не полезет в ваш прежний кристалл)
  15. Ответ тоже соответствующий: не осваивать методом тыка, а почитать какой туториал на него, или user guide. Почему народ категорически не хочет читать документацию? <{POST_SNAPBACK}> народ и читает и спрашивает... одно другому не мешает вообще-то <{POST_SNAPBACK}> Что, так никто и скажет человеку?! Стыдно, коллеги!!! add wave -r /* Рекурсивно возьмет для моделирования ВСЕ сигналы. ОЧЕНЬ медленно. Но зато вы увидите ВСЁ, что творится в вашем девайсе. Вообще рекомендую посмотреть на мой файлик SIMULFULL.DO Запускать его надо руками что-то типа Tools-> ExecuteMacro Не забудьте перед этим установить текущий каталог: File->Change directory Само собой, внимательно посмотрите, какие файлы вы запускаете на моделирование. ## NOTE: Do not edit this file. ## Auto generated by Project Navigator for VHDL Post-PAR Simulation ## vlib work ## Compile Post-PAR Model for Module top vcom -87 -explicit top_timesim.vhd vcom -93 -explicit bench.vhd vsim -t 1ps -sdfmax /UUT=top_timesim.sdf -lib work top_bench_vhd_tb ## do top_bench_vhd_tb.udo view wave add wave -r /* run 15 us ## End
  16. Я про Ксилинксы буду. Раньше использовал CPLD. Там было очень критично иметь правильную подтяжку TCK на питание. Причем до смешного: 5.1 К - не работает, 10 К - работает, 15 К- не работает. Теперь на FPGA перешел - Спартан 2, Спартан 3. Так я ВСЕГДА соединяю в одну цепочку только однотипные микросхемы. То есть два спартана на один JTAG разъем и две конфиг. EEPROM - на другой. Уже четвертая плата с таким раскладом и нигде не было проблем. А для общего развития поглядите как нибудь на спецификацию JTAG. Я плакалъ (с). Как вам сдвиговые регистры длиной 56000 бит и прочие хитрости. Кстати, я так и не понял, как им удается работать более чем с одной микросхемой в цепочке - команды-то подаются на все чипы одновременно. (да, я знаю, что данные пропускаются через регистр). Хотя конечно вижу, что работает... Не исключено, что разные микросхемы понимают команды несколько по-другому.
  17. Сайты тоже пишут люди... И далеко не самые толковые. Толковые пишут софт. Очевидно, что вы не создавали свой DCM в Визарде. А если попробуете создать, то увидите, что он имеет все необходимые атрибуты. Причем генерит как .XAW файл во внутреннем формате, так и полный исходник на VHDL (причем можно выбрать синтезатор), и даже заготовку для вставки в проект. Так что ответ банален - как завещал тов. Ульянов.
  18. "Наш" симулятор - Моделсим. Разрешение - 1 пикосекунда. Тогда скорее уж вопрос в точности модели. Судя по документации, упомянутый параметр как раз и служит для компенсации небольших сдвигов - порядка единиц наносекунд. Уж во всяком случае, даже 10 пикосекунд уже было бы заметно в симуляторе. Ан нет. Потому и вопрос возник - "а как на самом деле?".
  19. Ну хоть кто-то отозвался :-) Как и положено, на фидбек подан выходной сигнал DCM CLK0 после глобального буфера. Все как книжка пишет. Да все правильно там притягивает. Вопрос был об отсутствии реакции модели на изменение параметра DESKEW_ADJUST.
  20. 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 нС померить затруднительно. Да и клок-то внутри сидит, фиг померяешь. Только моделирование и спасает. А вот, оказывается веры ему как бы нету... Кто что скажет?
  21. Идея понятна, спасибо. А с у правлением направлением как раз проблемы - управляющие сигналы тоже ведь сдвинуты во времени, причем задержка немного отличается (там нагрузка меньше). Да и нет такого сигнала, от которого бы напрямую можно было управлять - RAS CAS WE , больше ничего. Вобщем, как я понял, простого способа нет... Обидно. В крайнем случае управлять направлением этого трансивера можно внешним сигналом, руками его подавая. Точность по времени там не нужна, в тестбенче его можно выставлять.
  22. Коллеги! Поможите кто чем может... Делаю пост-лэйаут моделирование в Моделсим 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 задержку в двунаправленную шину?
  23. Я тоже вижу такую надпись. По моим наблюданиям, на правильность работы железа и моделирование не влияет.
  24. У синтезатора XST есть привычка иногда показывать ошибку совсем не в том месте, где она реально есть. Например в разных модулях выводы сделаны выходами. А на более высокой ступени иерархии эти выводы соединяются. В итоге будете иметь невнятное сообщение о мульти-соурс без малейшего представления, в каком модуле его искать. - Ведь каждый отдельно взятый модуль ошибок не содержит. Лечение - общеукрепляющее. Внимательным образом смотрим на протокол синтеза КАЖДОГО модуля (это ДО адвансед). Уделяем внимание каждому желтому ворнингу. Их много не по делу, но иногда и важные бывают. Удачи.
×
×
  • Создать...