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

Duke_N

Участник
  • Постов

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

  • Посещение

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


  1. Доброго времени суток!

    Разрабатываю систему включающую память DDR3. Реализовывать контроллер планирую с помощью MIG (Virtex6 ISE 13.4).

    Планируемая Конфигурация памяти - четыре м/с MT41J256M8 общей ёмкостью 1 GB, управляется это

    дело двумя контроллерами, сгенерированными CoreGenerator. Т.е. один контроллер управляет двумя

    чипами памяти у которых общая шина адреса и управляющие сигналы, младший байт шины данных

    заведен на один чип, а старший на другой.

    В процессе изучения example_disign столкнулся со следующим противоречием:

     

    фрагмент ucf-файла

     

    NET "c0_ddr3_dq[0]" LOC = "F11" ; #Bank 36

    NET "c0_ddr3_dq[1]" LOC = "E10" ; #Bank 36

    NET "c0_ddr3_dq[2]" LOC = "B8" ; #Bank 36

    NET "c0_ddr3_dq[3]" LOC = "C8" ; #Bank 36

    NET "c0_ddr3_dq[4]" LOC = "A7" ; #Bank 36

    NET "c0_ddr3_dq[5]" LOC = "B7" ; #Bank 36

    NET "c0_ddr3_dq[6]" LOC = "H13" ; #Bank 36

    NET "c0_ddr3_dq[7]" LOC = "D8" ; #Bank 36

    NET "c0_ddr3_dq[8]" LOC = "E9" ; #Bank 36

    NET "c0_ddr3_dq[9]" LOC = "G11" ; #Bank 36

    NET "c0_ddr3_dq[10]" LOC = "F10" ; #Bank 36

    NET "c0_ddr3_dq[11]" LOC = "C10" ; #Bank 36

    NET "c0_ddr3_dq[12]" LOC = "G7" ; #Bank 36

    NET "c0_ddr3_dq[13]" LOC = "H10" ; #Bank 36

    NET "c0_ddr3_dq[14]" LOC = "K13" ; #Bank 36

    NET "c0_ddr3_dq[15]" LOC = "G8" ; #Bank 36

    NET "c0_ddr3_addr[14]" LOC = "E12" ; #Bank 26

    NET "c0_ddr3_addr[13]" LOC = "D11" ; #Bank 26

    NET "c0_ddr3_addr[12]" LOC = "E13" ; #Bank 26

    NET "c0_ddr3_addr[11]" LOC = "E14" ; #Bank 26

    NET "c0_ddr3_addr[10]" LOC = "H16" ; #Bank 26

    NET "c0_ddr3_addr[9]" LOC = "G16" ; #Bank 26

    NET "c0_ddr3_addr[8]" LOC = "G14" ; #Bank 26

    NET "c0_ddr3_addr[7]" LOC = "F14" ; #Bank 26

    NET "c0_ddr3_addr[6]" LOC = "J16" ; #Bank 26

    NET "c0_ddr3_addr[5]" LOC = "B11" ; #Bank 26

    NET "c0_ddr3_addr[4]" LOC = "C11" ; #Bank 26

    NET "c0_ddr3_addr[3]" LOC = "D13" ; #Bank 26

    NET "c0_ddr3_addr[2]" LOC = "D12" ; #Bank 26

    NET "c0_ddr3_addr[1]" LOC = "C14" ; #Bank 26

    NET "c0_ddr3_addr[0]" LOC = "B13" ; #Bank 26

    NET "c0_ddr3_ba[2]" LOC = "K15" ; #Bank 26

    NET "c0_ddr3_ba[1]" LOC = "F16" ; #Bank 26

    NET "c0_ddr3_ba[0]" LOC = "F15" ; #Bank 26

    NET "c0_ddr3_ras_n" LOC = "G12" ; #Bank 26

    NET "c0_ddr3_cas_n" LOC = "F12" ; #Bank 26

    NET "c0_ddr3_we_n" LOC = "E15" ; #Bank 26

    NET "c0_ddr3_reset_n" LOC = "D15" ; #Bank 26

    NET "c0_ddr3_cke[0]" LOC = "A15" ; #Bank 26

    NET "c0_ddr3_cke[1]" LOC = "A16" ; #Bank 26

    NET "c0_ddr3_odt[0]" LOC = "A11" ; #Bank 26

    NET "c0_ddr3_odt[1]" LOC = "C15" ; #Bank 26

    NET "c0_ddr3_cs_n[0]" LOC = "B16" ; #Bank 26

    NET "c0_ddr3_cs_n[1]" LOC = "D16" ; #Bank 26

    NET "sys_clk_f0_p" LOC = "H20" ; #Bank 25

    NET "sys_clk_f0_n" LOC = "G21" ; #Bank 25

    NET "clk300_ref_p" LOC = "F20" ; #Bank 25

    NET "clk300_ref_n" LOC = "F21" ; #Bank 25

    NET "sys_rst" LOC = "K17" ; #Bank 25

    NET "c0_phy_init_done" LOC = "K18" ; #Bank 25

    NET "c0_error" LOC = "G17" ; #Bank 25

    NET "c0_ddr3_dqs_p[0]" LOC = "A10" ; #Bank 36

    NET "c0_ddr3_dqs_n[0]" LOC = "A9" ; #Bank 36

    NET "c0_ddr3_dqs_p[1]" LOC = "E8" ; #Bank 36

    NET "c0_ddr3_dqs_n[1]" LOC = "F9" ; #Bank 36

    NET "c0_ddr3_ck_p[0]" LOC = "B14" ; #Bank 26

    NET "c0_ddr3_ck_n[0]" LOC = "A14" ; #Bank 26

     

    сигналы cs_n и odt исходя из логики ucf должны поступать на отдельно на каждый чип памяти.

     

    Однако в generic параметрах example_top есть строчки:

     

    C0_nCS_PER_RANK : integer := 1;

    -- # of unique CS outputs per Rank for

    -- phy.

    C0_CS_WIDTH : integer := 1;

    -- # of unique CS outputs to memory.

     

    Поэтому порт

     

    c0_ddr3_cs_n : out std_logic_vector((C0_CS_WIDTH*C0_nCS_PER_RANK)-1 downto 0);

    и

    c1_ddr3_odt : out std_logic_vector((C1_CS_WIDTH*C1_nCS_PER_RANK)-1 downto 0);

     

    ожидаемо имеет разрядность 1.

     

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

     

    ERROR:ConstraintSystem:59 - Constraint <NET "c0_ddr3_odt[1]"

    LOC = "C15" ;> [example_top.ucf(143)]: NET "c0_ddr3_odt[1]" not

    found.

     

    Формально можно либо убрать "лишние" строчки из ucf-файла, либо "подправить" generic-параметры.

    C DDR памятью я раньше не работал, поэтому вопрос:

    как быть с линиями cs_n и odt? Вывести по одной от контроллера и распараллелить, либо

    выводить по линни на каждый чип и что то менять в проекте.

    Буду признателен за ваши советы и замечания.

     

  2. Дык и я про то же. Но ведь если первая ПЛИС конфигурируется неправильно, должен падать в ноль сигнал INIT_B, а этого нет. С флешки же данные идут для всех ПЛИС, но застевают в первой ПЛИС. Поэтому DONE и не может стать в единицу. :wacko:

    Просто на этом этапе проблему с неправильной разводкой питания я устранил, перейдя на интерфейс 2.5В, но ситуация не изменилась. :crying: Значит, возможно, проблема заключается не в этом. Мне главное определится с этим моментом.

    Просто уже, перепробовал все что пришло в голову :07: (правильность М0-М2, кз INIT_B и питания, кз DOUT и питания). Опыт у меня не очень большой, вот и прошу помощи у старших товарищей :05:

  3. Проделал следующий финт: изменил напряжение и VCCAUX и VCCO на 2.5В. Картина точно такая же, за исключением, естественно, амплитуд сигналов.

    И мысль моя такая - даже если DONE не восстает, данные с выхода DOUT всё ж должны идти? Или нет? :help:

  4. Доброго времени суток!

    Столкнулся с проблемой загрузки ПЛИС. ПЛИС семейства Spartan-3E, ПЗУ - XCF16. ПЛИС грузятся последовательной цепочкой, первая в режиме Master Serial, остальные Slave Serial.

    При детальном рассмотрении устройства обнаружилась следующая ошибка в разводке: на входы VCCAUX подается не 2,5В, а 3,3В (такое же как и на VCCO).

    Соответственно мучает мысль: фатальна ли эта ошибка или дело может быть в чем то другом? И чем это всё грозит? :help:

    Ситуация на сегодняшний день следующая:

    INIT_B - в единице

    PROG_B - в единице

    CCLK - присутствует

    DONE не устанавливается в единицу.

    Данные с флешки идут, причем похоже все. Уткнулся в то, что нет данных с выхода DOUT ПЛИС, которая Master Serial.

     

    В догонку вопрос: заинтересовало почему для всех сигналов, кроме DONE подтягивающий резистор 4.7к, а для DONE - 330?

  5. В статье приводились графики с пульсациями для одного керамического, десяти керамических и одного трёхвыводного. Пульсации для двух последних были одного уровня. Но вполне может быть, что это только рекламный трюк.

  6. Просматривая каталог компонентов наткнулся на статью "Использование 3-выводных проходных конденсаторов в цепях питания высокочастотных устройств" смысл которой сводился к тому, что конденсатор серии NFM18PC105R, благодоря пониженному ESL, с успехом заменяет десяток обычных керамических в цепи развязки. Подумал, что это здорово уменьшит число компонентов. А потом вспомнил, что на достаточно продвинутых платах (типа видеокарт) в цепях развязки наблюдал обычную керамику. Возник вопрос : какие минусы у 3-х выводных конденсаторов и применял ли кто-нибудь их.

  7. Возникли следующие вопросы по использованию Reusable Block в Expedition PCB.

    Где редактировать символ блока? Почему-то после установки блока на эл. схему символ не редактируется (т.е. после ПКМ -> Edit Symbol опция Place -> Line(Rectangle, Arc и т.д.) не активна.

     

    Затем Compile CDB проходит, а Package Design(и с точно такими же сообщениями Forward annotation из Expedition PCB) нет.

     

    Common Data Base has been read

     

    Target PDB Name: Work\Layout_Temp\PartsDB.pdb

     

    ERROR: No parts were specified.

     

    ERROR: Unable to create local PDB

     

    ERROR: Problem Making Local Parts DataBase

     

    DataBase Load is being terminated with 3 errors and 0 warnings.

    Logic Data has NOT been Compiled.

     

    Так же нактивна вкладка Editor Control-> Clusters&Rooms

     

    Какие проблемы с локальной базой и как это исправить?

  8. 1)Не нашёл где прописывается путь для файла Project Option для Library Manager

    2) При начале создания символа в Symbol Wizard для Symbol Type почему-то доступна только опция PCB, соответственно после получения символов опция Genarate -> Schematic and Symbol остаётся неактивной

  9. Может кому поможет: чтобы расстояние между пинами символа было 5 мм

    подобрал следующие неочевидные настройки

     

    Unit 0.01 mm

    Length 254.0

    Spacing 5

    Grid step 50.8

     

    Вопрос:

    Как из IO Designer экспортировать описание корпуса (cell) и как экспортировать весь part (без привязки к HDL-проекту).

    По какой причине неактивна опция Generate -> Schematic and SymbolS?

  10. Возникла проблема при попытке создания символа с помощью IO Designer для Design Veiw/ Design Capture:

    расстояние между пинами символа не совпадает с заданным 5 мм (пины немного съежают)

     

    В Tools -> Preferense -> Symbol Editor следующие настройки

    Unit 0.5 mm

    Lenght 5.000

    Spacing 5

    Grid Step 1.0

     

    напротив Snap to grid стоит галочка

     

    поскольку увеличение/уменньшение Grid Step с помощью стрелочек дает 1.254/0.746 есть подозрение, что внутри расчет идет в дюймах и ошибка из-за этого.

    Сначала казалось понятным, но потом запутался - на что влияет Unit и в каких единицах тогда измеряются Lenght и Grid Step.

     

    После Generate-> Current Symbol Only через libraty Maneger импортировал ASCII файл.

    Кстати, в заголовке генерируемого IO Designer-ом файла .inp есть строчка

    *UNITS 500.000000 per_inch

     

    Вопрос в первую очередь к многоуважаемому Fill-у

    Заранее спасибо за ответ

  11. Вероятно подобный вопрос задавался, но мною не был найден. Если так - прошу прощения.

     

    Как правильно с точки зрения сквозного проектирования описать компонент таким образом, что бы

    одному символу соответствовал cell состоящий из посадочных мест для нескольких корпусов.

    Конкретная ситуация: размещение ПЗУ для ПЛИС. Необходимо что бы на плате одновременно присутствовали

    посадочные места как под DIP так и SOIC корпуса, а на схеме электрической принципиальной символ был один.

  12. Позволю себе ещё раз задать тот же вопрос, так как не уверен, что чётко сформулировал его в своём предыдущем посте.

    Осциллограф и глаз-диаграмма позволяют задать для, допустим 8-битной шины следующее воздействие:

    11111111->00000000->00000000->11111111 и т.д.

    а хотелось бы

    00000000->10000000->00000000->01111111 и т.д.

  13. При симуляции длинной шины в HL, используя Oscilloscope, результат получается хороший, а Batch Simulation даёт очень высокий уровень помехи.

    Возник следующий вопрос: как задать разное воздействие отдельно для каждого проводника

    (если не ошибаюсь, это называется межсимвольная помеха).

  14. Почему есть желание использовать внутренние инструментарий Expedition, а не HyperLinx.

    Мне казалось, что при установке параметра Crosstalk в параметрах цепи, это будет использоваться при авто- или ручной трассировке, наряду с другими правилами(как расстояние между цепями и т.д). Т.е. ведёшь цепь, а она не может пройти через участки, на которых на ней будут наводиться помехи(рассчитанные хотя бы в грубом приближении). Так ли это и имеют ли к этому отношение SV и SA?

     

    Если это так, то смысл в SV и SA при наличии HyperLinx я вижу. А если не так, то однозначно нужно пользоваться HyperLinx?

  15. Прочитав Ваш ответ, понял что ошибся, спутав тип контакта и модели драйвера.

     

    Если, например, у символа Pin Type - Bidirectional, а генерируемая IBIS-модель в столбце signal_name содержит имя сигнала(напр AD(0)), то для правильной работы HL следует заменить имя сигнала на BI?

     

    Можно ли оставлять signal_name пустым?

  16. При попытке запустить Crosstalk Simulation выдаётся сообщение unable to simulate, причем в его не содержится в Analysis-> Review Hazards->Simulation -> unable to simulate.Так же в окне Crosstalk Waveforms нет никакого драйвера и не одной Aggressor Net, хотя пример тестовый, параллельные линии, в свойствах цепи установлен малый уровень помехи.

    Симуляция для одиночной линии проходит, но в случае если в опциях симуляции установить start at high в окне WaveScope в столбце Comment появляется сообщение Invalid, хотя визуально сигнал не отличается от начиняющегося с 0 (т.е они не пересекают запрещённые уровни напряжения).

  17. Возникают проблемы с подключением IBIS-модели(отсутствует готовая).

    Уважаемый Александр fill Филлипов на форуме Megratec было указал, что (ответ был не мне):

     

    "Помимо указанного Вами способа описания IBIS файла, есть еще и упрощенный способ, где каждому пину не ставится в соответствие модель. Кол-во строчек в секции [package] равно кол-ву разных типов пин. Например выдержка из такого файла :

     

    [Component] tech_f

    [Manufacturer] VeriBest

    [Package]

    R_pkg 0. NA NA

    L_pkg 0. NA NA

    C_pkg 0. NA NA

    [Pin] signal_name model_name

    1 GND GND

    2 VCC POWER

    3 IN inf

    4 OU ouf

    5 BI bif

    6 TR trf

    7 OD odf

     

    Присвоение модели будет происходить при чтении типа пина из PDB. Тогда нужно будет править только в одном месте — в PDB.

    При этом способе многим PDB можно поставить в соответствие один технологический файл IBIS. В приведенном примере у нескольких PDB будет стоять атрибут IBIS со значением tech_f. И несмотря на то что пинов в PDB будет разное кол-во и намного больше чем перечисленно в IBIS, все будет работать"

     

    Вопросы:

    1. При экспорте Expedition -> HyperLinx нужно ли переписывать *.ibs в папку библиотек HyperLinx?

    2. При работе в связке Expedition -> HyperLinx правильно ли я понял, что должно быть соответствие

    [Pin] <-> Pin Number

    signal_name <-> Pin Type

    3.Если сделать описания для всех ножек, то экспорт в HyperLinx происходит адекватно. Но если, например, для микросхемы имеющей Pin Type только Input и Output в модели имеется описание

     

    [Pin] signal_name model_name

    1 GND GND

    2 VCC POWER

    3 IN inf

    4 OU ouf

    или

    [Pin] signal_name model_name

    GND GND GND

    VCC VCC POWER

    IN IN inf

    OU OU ouf

    выдается сообщение

    ... pin 5 not loaded from ...

    ... pin 5 of component ... has no model

    Если возможно подробно опишите структуру секции [package] при которой число пинов в PDB больше чем перечисленно в IBIS.

    Каким образом при этом берётся значение [Pin] и signal_name.

    4. Каким образом поступать, если используется сигнал, отсутствующий в Pin Type в Expedition(например PCI) - что писать в signal_name?

  18. Доброго времени суток.

    Ситуация: необходимость post-layout анализа целостности сигнала и перекрёстных помех контроллера PCI в Expedition PCB встроеными средствами. Есть IBIS-модель сгенерированная ISE Xilinx для BGA микросхемы (т.к. используются не все контакты, неисползуемые пины не описываются в модели). В качестве модели для ответной части PCI (т.к. готовая отсутствует) берётся подправленная ручками(возможно кривыми :( ) модель микросхемы. Переименовываются только столбцы pin и signal_name.

    Компиляция модели IBIS Librarian проходит без ошибок,но при подключении модели к компоненту (Parts Database -> Component Properties) выдаётся сообщение

    "Model has Pin Mapping errors". Соответственно при при симуляции unable to simulate -> no IBIS model, хотя точно в ibs-файле указаны конкретный пин и линия.

     

    Вопрос 1 : Возможно ли при отсутствии модели для конкретного устройства использовать подправленную (заменой pin и signal_name) модель с такой же model_name (типом драйвера).

     

    Вопрос 2: Имеются где-либо в свободном доступе IBIS-модели ответной части PCI (разъёма).

     

    Вопрос 3: Каковы возможные причины того что модель отторгается пакетом? Возможно как-либо локализовать ошибку в файле IBIS-модели? Кто виноват и что делать? :blink:

     

    Заранее благодарен за ответ.

  19. Доброго времени суток.

    Как в HyperLynx-е присвоить IBIS-модель для всей микросхемы?

    Даже при наличии модели соответствующей конкретной микросхеме, получается только отдельно для каждого пина назначать модель драйвера .

    При последующем выборе модели для пинов микросхемы пакет вроде как "понимает" что нужно присваивать и модель нужно только "активровать"(т.е. при нажатии кнопки select готова подставиться требуемая модель,

    но для этого ещё надо нажать OK и так для каждого пина :wacko: ).

    Подскажите пожалуйста способ, что бы при наличии модели она ассоциировалась сразу со всей микросхемой.

     

    И ещё один вопрос вдогонку. Каково ваще мнение о качестве IBIS-моделей, генерируемых ISE Xilinx.

     

    Заранее благодарен за ответ :biggrin: .

  20. Во многих англоязычных доках упоминается SPICE-симуляция. По контексту это нечто широко известное и часто употребляемое.

    К своему стыду о назначении сей штуки догадываюсь опять-таки по контексту :( . Хотелось бы болеее точно узнать области применения, специфику, преимущества и инструментарий(пакеты или что-то подобное). Если вопрос вызывает улыбку, пожалуйста, отнеситесь снисходительно :blush: .

     

    Заранее благодарен за ответ.

  21. К пакету прилагается толковый туториал(правда на английском), в котором показаны основные функции.

     

    Вопрос: насколько не обходим этот их pre-layout analysis (это вроде когда топология ещё не разработана). Что действительно полезное можно расчитать заранее?

  22. Вопрос : как импортировать (для симуляции на предмет целостности сигнала и перекрёстных помех) плату, разведённую в Expedition PCB (Mentor), в пакет HyperLinx(Mentor). В HyperLinx-е доступно для импортирта туча форматов от других производителей, но для родного Expedition-овского .pcb не нашёл.

     

    И сразу другой вопрос, может кто знает. В томже Mentor-овском пакете (WG2004) при подключении IBIS-модели (хоть из Libraty Menedger-а, хоть из самого Expedition-а) происходят странные вещи. Вроде модель откомпилировалась, а при ассоциировании её в нужном поле когда появляется кнопка с многоточием, где можно выбрать модель, а когда и не появляется. (Причём это действует сразу для всей библиотеки, т.е. если кнопочка появляется то теоретически можно любому компоненту присвоить любую модель из имеющихся, а если нет - то вообще не одному. Путём непознанных манипуляций как-то получилось прикрутить модель к компоненту. но закономерностей не нашел. В другой библиотеке такого не вышло.)

     

    Заранее благодарен за ответ!

     

    P.S. Если выбрал не верный топик, прошу прощения у модераторов. Ибо новичёк.

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