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

Duke_N

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

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

  • Посещение

Репутация

0 Обычный

Информация о Duke_N

  • Звание
    Участник
    Участник

Контакты

  • ICQ
    Array

Посетители профиля

967 просмотров профиля
  • KiV

  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 даёт очень высокий уровень помехи. Возник следующий вопрос: как задать разное воздействие отдельно для каждого проводника (если не ошибаюсь, это называется межсимвольная помеха).
×
×
  • Создать...