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

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. Оказалось проблема в отсутствии контакта DIN (то ли деффект пайки, то ли ещё что-то другое). Большое спасибо всем, кто пытался помочь.
  3. Дык и я про то же. Но ведь если первая ПЛИС конфигурируется неправильно, должен падать в ноль сигнал INIT_B, а этого нет. С флешки же данные идут для всех ПЛИС, но застевают в первой ПЛИС. Поэтому DONE и не может стать в единицу. Просто на этом этапе проблему с неправильной разводкой питания я устранил, перейдя на интерфейс 2.5В, но ситуация не изменилась. :crying: Значит, возможно, проблема заключается не в этом. Мне главное определится с этим моментом. Просто уже, перепробовал все что пришло в голову :07: (правильность М0-М2, кз INIT_B и питания, кз DOUT и питания). Опыт у меня не очень большой, вот и прошу помощи у старших товарищей :05:
  4. Проделал следующий финт: изменил напряжение и VCCAUX и VCCO на 2.5В. Картина точно такая же, за исключением, естественно, амплитуд сигналов. И мысль моя такая - даже если DONE не восстает, данные с выхода DOUT всё ж должны идти? Или нет?
  5. Доброго времени суток! Столкнулся с проблемой загрузки ПЛИС. ПЛИС семейства Spartan-3E, ПЗУ - XCF16. ПЛИС грузятся последовательной цепочкой, первая в режиме Master Serial, остальные Slave Serial. При детальном рассмотрении устройства обнаружилась следующая ошибка в разводке: на входы VCCAUX подается не 2,5В, а 3,3В (такое же как и на VCCO). Соответственно мучает мысль: фатальна ли эта ошибка или дело может быть в чем то другом? И чем это всё грозит? Ситуация на сегодняшний день следующая: INIT_B - в единице PROG_B - в единице CCLK - присутствует DONE не устанавливается в единицу. Данные с флешки идут, причем похоже все. Уткнулся в то, что нет данных с выхода DOUT ПЛИС, которая Master Serial. В догонку вопрос: заинтересовало почему для всех сигналов, кроме DONE подтягивающий резистор 4.7к, а для DONE - 330?
  6. В статье приводились графики с пульсациями для одного керамического, десяти керамических и одного трёхвыводного. Пульсации для двух последних были одного уровня. Но вполне может быть, что это только рекламный трюк.
  7. Просматривая каталог компонентов наткнулся на статью "Использование 3-выводных проходных конденсаторов в цепях питания высокочастотных устройств" смысл которой сводился к тому, что конденсатор серии NFM18PC105R, благодоря пониженному ESL, с успехом заменяет десяток обычных керамических в цепи развязки. Подумал, что это здорово уменьшит число компонентов. А потом вспомнил, что на достаточно продвинутых платах (типа видеокарт) в цепях развязки наблюдал обычную керамику. Возник вопрос : какие минусы у 3-х выводных конденсаторов и применял ли кто-нибудь их.
  8. Возникли следующие вопросы по использованию 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 Какие проблемы с локальной базой и как это исправить?
  9. 1)Не нашёл где прописывается путь для файла Project Option для Library Manager 2) При начале создания символа в Symbol Wizard для Symbol Type почему-то доступна только опция PCB, соответственно после получения символов опция Genarate -> Schematic and Symbol остаётся неактивной
  10. Может кому поможет: чтобы расстояние между пинами символа было 5 мм подобрал следующие неочевидные настройки Unit 0.01 mm Length 254.0 Spacing 5 Grid step 50.8 Вопрос: Как из IO Designer экспортировать описание корпуса (cell) и как экспортировать весь part (без привязки к HDL-проекту). По какой причине неактивна опция Generate -> Schematic and SymbolS?
  11. Возникла проблема при попытке создания символа с помощью 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-у Заранее спасибо за ответ
  12. Вероятно подобный вопрос задавался, но мною не был найден. Если так - прошу прощения. Как правильно с точки зрения сквозного проектирования описать компонент таким образом, что бы одному символу соответствовал cell состоящий из посадочных мест для нескольких корпусов. Конкретная ситуация: размещение ПЗУ для ПЛИС. Необходимо что бы на плате одновременно присутствовали посадочные места как под DIP так и SOIC корпуса, а на схеме электрической принципиальной символ был один.
  13. Возможно ли в Expedition скопировать графический обьект из одного проекта в другой?
  14. Позволю себе ещё раз задать тот же вопрос, так как не уверен, что чётко сформулировал его в своём предыдущем посте. Осциллограф и глаз-диаграмма позволяют задать для, допустим 8-битной шины следующее воздействие: 11111111->00000000->00000000->11111111 и т.д. а хотелось бы 00000000->10000000->00000000->01111111 и т.д.
  15. При симуляции длинной шины в HL, используя Oscilloscope, результат получается хороший, а Batch Simulation даёт очень высокий уровень помехи. Возник следующий вопрос: как задать разное воздействие отдельно для каждого проводника (если не ошибаюсь, это называется межсимвольная помеха).
  16. Почему есть желание использовать внутренние инструментарий Expedition, а не HyperLinx. Мне казалось, что при установке параметра Crosstalk в параметрах цепи, это будет использоваться при авто- или ручной трассировке, наряду с другими правилами(как расстояние между цепями и т.д). Т.е. ведёшь цепь, а она не может пройти через участки, на которых на ней будут наводиться помехи(рассчитанные хотя бы в грубом приближении). Так ли это и имеют ли к этому отношение SV и SA? Если это так, то смысл в SV и SA при наличии HyperLinx я вижу. А если не так, то однозначно нужно пользоваться HyperLinx?
  17. Прочитав Ваш ответ, понял что ошибся, спутав тип контакта и модели драйвера. Если, например, у символа Pin Type - Bidirectional, а генерируемая IBIS-модель в столбце signal_name содержит имя сигнала(напр AD(0)), то для правильной работы HL следует заменить имя сигнала на BI? Можно ли оставлять signal_name пустым?
  18. При попытке запустить Crosstalk Simulation выдаётся сообщение unable to simulate, причем в его не содержится в Analysis-> Review Hazards->Simulation -> unable to simulate.Так же в окне Crosstalk Waveforms нет никакого драйвера и не одной Aggressor Net, хотя пример тестовый, параллельные линии, в свойствах цепи установлен малый уровень помехи. Симуляция для одиночной линии проходит, но в случае если в опциях симуляции установить start at high в окне WaveScope в столбце Comment появляется сообщение Invalid, хотя визуально сигнал не отличается от начиняющегося с 0 (т.е они не пересекают запрещённые уровни напряжения).
  19. Возникают проблемы с подключением 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?
  20. Доброго времени суток. Ситуация: необходимость 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: Заранее благодарен за ответ.
  21. Доброго времени суток. Как в HyperLynx-е присвоить IBIS-модель для всей микросхемы? Даже при наличии модели соответствующей конкретной микросхеме, получается только отдельно для каждого пина назначать модель драйвера . При последующем выборе модели для пинов микросхемы пакет вроде как "понимает" что нужно присваивать и модель нужно только "активровать"(т.е. при нажатии кнопки select готова подставиться требуемая модель, но для этого ещё надо нажать OK и так для каждого пина ). Подскажите пожалуйста способ, что бы при наличии модели она ассоциировалась сразу со всей микросхемой. И ещё один вопрос вдогонку. Каково ваще мнение о качестве IBIS-моделей, генерируемых ISE Xilinx. Заранее благодарен за ответ .
  22. Во многих англоязычных доках упоминается SPICE-симуляция. По контексту это нечто широко известное и часто употребляемое. К своему стыду о назначении сей штуки догадываюсь опять-таки по контексту :( . Хотелось бы болеее точно узнать области применения, специфику, преимущества и инструментарий(пакеты или что-то подобное). Если вопрос вызывает улыбку, пожалуйста, отнеситесь снисходительно . Заранее благодарен за ответ.
  23. К пакету прилагается толковый туториал(правда на английском), в котором показаны основные функции. Вопрос: насколько не обходим этот их pre-layout analysis (это вроде когда топология ещё не разработана). Что действительно полезное можно расчитать заранее?
  24. Вопрос : как импортировать (для симуляции на предмет целостности сигнала и перекрёстных помех) плату, разведённую в Expedition PCB (Mentor), в пакет HyperLinx(Mentor). В HyperLinx-е доступно для импортирта туча форматов от других производителей, но для родного Expedition-овского .pcb не нашёл. И сразу другой вопрос, может кто знает. В томже Mentor-овском пакете (WG2004) при подключении IBIS-модели (хоть из Libraty Menedger-а, хоть из самого Expedition-а) происходят странные вещи. Вроде модель откомпилировалась, а при ассоциировании её в нужном поле когда появляется кнопка с многоточием, где можно выбрать модель, а когда и не появляется. (Причём это действует сразу для всей библиотеки, т.е. если кнопочка появляется то теоретически можно любому компоненту присвоить любую модель из имеющихся, а если нет - то вообще не одному. Путём непознанных манипуляций как-то получилось прикрутить модель к компоненту. но закономерностей не нашел. В другой библиотеке такого не вышло.) Заранее благодарен за ответ! P.S. Если выбрал не верный топик, прошу прощения у модераторов. Ибо новичёк.
×
×
  • Создать...