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

ovs_pavel

Свой
  • Постов

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

  • Посещение

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


  1. Вечер добрый. Не поделитесь опытом приема данных с Marvell'a. Суть проблемы в следующем. Персоналка подключается к плате на которой стоит Marvel в режиме 1Гбит (GMII). В режиме GMII идет нестабильный прием данных, т.е. например с персоналки подаю пакет с MAK-адресом 122334455667, а на приемной стороне (сделал тестовое ФИФО в которое все пишу по RX_En) получаю 162334455667. Вообщем биты "вылетают" при приеме. Зависимость получается и от раскладки проекта (меняю тестовые сигналы - переназначаю, также меняется и положение вылетающих битов). Хотя весь проект сделан абсолютно синхронно от тактовой частоты приемопередатчика RX_CLK. Привязываю к ней и данные и соответствующие управляющие сигналы на входе и после этого начинаю их анализ, ну все как полагается. Возникает несколько вопросов: необходимо ли вводить констрейны на входную шину данных? Двигали ли вы входную частоту по фазе относительного входной шины данных (где то уже по моему проскальзывало упоминание про нестабильный режим работы марвела)? Ну и какие могут быть еще подводные камни?
  2. День добрый. Не подскажите как сделать задержку для тактовой частоты в testbenche. Т.е. есть две частоты. Для 1-ой: initial begin Ext_Clock = 1'b0; end always #5 begin Ext_Clock = ~Ext_Clock; end Вторая имеет тот же самый период, но, например, на 3нс начинается позже. Вообщем что-то удалось с помощью следующей конструкции (сейчас ее осмысливаю): initial begin Ext_Clock = 0; Ext_Clk_fb = 0; #3; Ext_Clk_fb = 1; forever begin #10 Ext_Clock = 1; #11 Ext_Clk_fb = 1; #10 Ext_Clock = 0; #11Ext_Clk_fb = 0; end end Окончательный вариант: initial begin Ext_Clock = 0; forever #10 Ext_Clock = ~Ext_Clock; end initial begin Ext_Clk_fb = 0; #3 // Устанавливаемая задержка forever #10 Ext_Clk_fb = ~ExtR_Clk_fb; end
  3. В доках на xilinx пишут что эта шина более быстрая. К тому же у нее всего десяток сигналов. Просто я с MIPSами работал и их шина (сигналы) показалась похожей на MCI, хотя и мультиплексированная. Ну да ладно. Сейчас посмотрим на PLB.
  4. Коллеги, при использовании встроенного процессора PowerPC и входящего в состав EDK контроллера памяти DDR2, этот контроллер подключается по шине MCI (или как она называется в EDK PPC440MC - это для 440-го ядра PowerPC). Но я хочу подключить к этой шине свой контроллер памяти. При этом "вытащить" наружу сигналы шины, чтобы они задышали, что то не получается. В самом EDK все ее сигналы я вывел (там просто во вкладке порты выбрал меню - "Connected to External Port"). В ISE, при создании Template для PowerPC, все сигналы шины появились. Все компилируются, но шина молчит. Возможно для нее надо задать адресное пространство (хотя я думал что на нее отображается все внутреннее адресное пространство), но как это сделать пока для меня непонятно.
  5. Спасибо всем. Ошибку нашел. Вместо всех 8-ми согласующих резисторов 1% 49,9Ом, поставили 1% 49,9кОм (слава снабжению). Как признак этого видимо был флаг приемопередатчика - длина кабеля более 100 метров (при реальной длине 1,5 метра). Теперь настраиваем далее.
  6. В продолжение борьбы с Marvell'ом. После загрузки регистров (из примера для платы xilinx ML505) формируется в 19-ом контрольном регистре признак - Auto-Negotiation Error. Этот признак может быть следствием четырех ошибок: 1. MASTER/SLAVE does not resolve (эта ошибка отпадает, т.к. в 15-ом разряде 10-го контрольного регистра не формируется признак ошибки MASTER/SLAVE configuration fault detected), 2. parallel detect fault (эта ошибка также отпадает, т.к. в 4-ом разряде 6-го регистра не возникает признак ошибки Parallel Detection Fault), 3. no common HCD - либо эта ошибка, 4. link does not come up after negotiation is completed - либо эта. Про "no common HCD" - пока ничего не нашел (в поиске). Кто подскажет, в каком направлении еще копать? При этом из 10-го регистра "1000BASE-T Status Register Page 0, Register 10" считывается значение 16'h4C00, т.е. С: Link Partner 1000BASE-T Full-Duplex Capability Link Partner 1000BASE-T Half-Duplex Capability т.е. с персоналки он Marvell вроде прочитал, что она может работать на 1Гб и полный дуплекс, т.е. пакеты какие то прошли, но не до конца.
  7. День добрый. Коллеги, не поделитесь информацией по программированию регистров данного кристалла по интерфейсу MDIO. Не могу заставить кристалл работать на 1Gb. Видимо что-то не до конца прописал. 100Mb видит, а 1Gb нет. По форуму поискал, но не нашел нужной информации. Интересует что прописываете по управляющим регистрам. Если не сложно хоть кусок из загрузочного кода.
  8. Да действительно, не зависит от тактовой MDC. На Phy 88E1111 подал в качестве 25МГц - 125 (((. Не досмотрел. И видимо контроллер MDIO "сошел с ума".
  9. Если сигнал с выхода DCM через BUFG попытаться вывести на пин, то произойдет ошибка mapper'а. Не разводится тактовый сигнал на выходной пин. Добавляется дополнительный блок между в тактовый сигнал, имхо. Хотя в цифре стабильность определяется задатчиком, ну не знаю... Не делал просто так раньше, а тут приходиться писать проект под чужую плату. Вообщем я бы так не делал (поставил бы разветвитель частоты и раздал бы тактовую).
  10. На схеме я привел крайний вариант, рабочий. А если вот убрать ODDR модули и подать сигналы с выходов DCM на пин (он больше никуда и не идет), то и начинают сыпаться ошибки. А не знаете насчет применения этих буферов ODDR2. Сейчас времянку прогнал вроде все в порядке. Но как будет в работе и на климатике - вопрос. Вдруг фронты поплывут. Все-таки DCM - надежнее. А описание про применение выхода ODDR2 в качестве тактового сигнала - не найду.
  11. Коллеги, а насколько хуже будет использовать вместо тактовой с DCM, подать тактовую с ODDR2, т.е. написать что-то вроде: ODDR2 #( .DDR_ALIGNMENT ("NONE"), // Sets output alignment to "NONE", "C0" or "C1" .INIT (1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1 .SRTYPE ("SYNC") // Specifies "SYNC" or "ASYNC" set/reset ) ODDR2_25MHz ( .Q (w_25_out), // 1-bit DDR output data .C0 (w_FX_25MHz), // 1-bit clock input .C1 (w_FX_25MHz_n), // 1-bit clock input .CE (1'b1), // 1-bit clock enable input .D0 (1'b1), // 1-bit data input (associated with C0) .D1 (1'b0), // 1-bit data input (associated with C1) .R (1'b0), // 1-bit reset input .S (1'b0) // 1-bit set input ); Т.е. с прямого и инверсного выходов DCM пропустить это все через DDR-регистр. Вроде как сам Xilinx рекомендует использовать эту технику, но вот только я нигде не нашел по тайминам соотношений, т.е. как будут дрожать фронты и т.д. Если использовать такую схему, то компилятор вроде не ругается. А так, через установленный ранее DCM, можно будет двигать фазу сигнала. Что думаете? Вообщем сейчас получилась такая схема тактирования, которая работает но схема на мой взгляд полный гемморой Да нет, я все подаю правильно. Просто я DCM скопировал из подмодуля проекта. А вернее будет запись .CLKIN (w_Clk_125_MHz), т.е. на вход DCM подаем сигнал именно с выхода BUFG. __________________.doc
  12. Вываливает такую ошибку: Phase 4.2 Initial Placement for Architecture Specific Features ERROR:Place:1238 - Component "U9/DCM_SP_Clk_25_MHz" does not have a feasible site. There are 12 potential locations for the component: Location "DCM_X0Y1" cannot be used to place the component due to following error condition(s): ERROR:Place:1201 - Component <U9/DCM_SP_Clk_25_MHz> of type DCM is not placeable because it has locked loads placed in regions: CLOCKREGION_X1Y7. There is a restriction that the clock loads of a DCM must be in a horizontally adjacent clock region to the DCM. It is recommended that a BUFG be used for this clock signal so that the clock loads can be placed anywhere on the device. If the clock driver or clock loads are locked or area grouped, please ensure that they are constrained to horizontally adjacent clock regions. Location "DCM_X0Y3" cannot be used to place the component due to following error condition(s): ERROR:Place:1201 - Component <U9/DCM_SP_Clk_25_MHz> of type DCM is not placeable because it has locked loads placed in regions: CLOCKREGION_X1Y7. There is a restriction that the clock loads of a DCM must be in a horizontally adjacent clock region to the DCM. It is recommended that a BUFG be used for this clock signal so that the clock loads can be placed anywhere on the device. If the clock driver or clock loads are locked or area grouped, please ensure that they are constrained to horizontally adjacent clock regions. И т.д. вывалил все DCM-ы, т.е. вроде как использовать их не могу. Привожу часть проекта как подцепил DCM. BUFG BUFG_Clk_125_MHz ( .I (Clk_125_MHz), .O (w_Clk_125_MHz) - это тактовая частота. Она разводится внутри кристалла. От нее же тактируется и DCM следующим образом: ); DCM_SP #( .CLKDV_DIVIDE (2.0), .CLKFX_DIVIDE (10), .CLKFX_MULTIPLY (2), .CLKIN_DIVIDE_BY_2 ("FALSE"), .CLKIN_PERIOD (8), .CLKOUT_PHASE_SHIFT ("NONE"), .CLK_FEEDBACK ("1X"), .DESKEW_ADJUST ("SYSTEM_SYNCHRONOUS"), .DLL_FREQUENCY_MODE ("LOW"), .DUTY_CYCLE_CORRECTION ("TRUE"), .PHASE_SHIFT (0), .STARTUP_WAIT ("FALSE") ) DCM_SP_Clk_25_MHz ( .CLK0 (w_CLK0), .CLK180 (), .CLK270 (), .CLK2X (), .CLK2X180 (), .CLK90 (), .CLKDV (), .CLKFX (w_Phy_25MHz), .CLKFX180 (), .LOCKED (w_Lock_25MHz), .PSDONE (), .STATUS (), .CLKFB (w_CLK0), .CLKIN (Clk_125_MHz), .PSCLK (), .PSEN (1'b0), .PSINCDEC (), .RST (1'b0) ); assign Phy_25MHz = w_Phy_25MHz; assign Phy_GTXClk = w_CLK0; Эти два сигнала (Phy_GTXClk и Phy_25MHz) не тактируют внутри кристалла ничего, просто выдаются наружу. В usf-файле прописал ограничение на PIN "Phy_GTXClk_BUFG.O" CLOCK_DEDICATED_ROUTE = FALSE; но не помогает. Как можно тактовую развести на DCM, чтобы не ругался разводчик??
  13. Вечер добрый. Не подскажите по интерфейсу "Management Interface (MDIO + MDC)" м/сх Marvell. На нее клок постоянно подавать нельзя, только при обращении, судя по даташиту: "A continuous clock stream is not expected. The maximum frequency supported is 8.3 MHz." Сегодня пытался считать с нее, но выдает все "1". Может в этом проблема. Ранее работал с AMD-ым Phy AM79C874 (100MBit). Там тоже такой же интерфейс, но клок у меня был заведен постоянно и работало все как часы. Здесь же не так. Завтра буду проверять предположение по поводу клока.
  14. В продолжении борьбы с 6-ым спартаном. Плату отремонтировали (перепаяли ПЛИС). КЗ пропало. В цепи JTAG все видится (и конфигурашка, и ПЛИС). Но ситуация с программированием осталась на старом месте. Т.е. проект заливается. DONE становиться в состояние 1, но проект на стартует. Уже все проверил. На DONE стоит резистор в 330 Ом. Опция DONE_DRIVE_HIGH включена. По питанию помех нет. Прошивка конфигурашки с верификацией проходит нормально. Поднимал скорость JTAGа до максимальной - 12МГц. Все ОК. Сейчас решили собрать третью плату на которой только ПЛИС, два стабилизатора (3,3 и 1,2В) и разъем. Чтобы исключить вообще все. Ну конечно и кондеры по питанию. Даже не знаю где еще копать. А у кого либо были случаи закупки "левых" 6-ых спартанов? Просто не знаю на что уже и думать. Питание Vccaux по даташиту допускает установку 3,3В... В этом же не может быть причина?
  15. Вечер добрый. Вообщем сегодня поднял ПЛИСину. При отпайки ПЛИС оторвали враги две дорожки. Разъем звонится перестал. Позвонил ПЛИСину (вывод TDI на землю) - КЗ. Получается выгорел лишь один контакт. Все остальное в норме. Как получилось, непонятно. Вроде всегда аккуратно, да и ПЛИСину чтобы убить хотя бы статикой надо постараться. До этого ни разу не было такого. Вот уже подумываю о том чтобы в будущих схемах буфера по JTAGу закладывать, на всякий случай от дурака.
  16. При разной полярности звонится одинаково. Пытался замерять сопротивление при разной длине от ПЛИС, как от предполагаемого источника КЗ, (но есть только одно переходное отверстие), результат примерно одинаков. Может не хватает точности тестера. А на счет 1,5 Ом, так сопротивление самих щупов примерно 1,3 Ома. Остальное это длина дорожки. У меня был случай выгорания (или вообще невозможности программирования одного из пользовательских контактов ПЛИС, сейчас уже и не припомню). Но его сопротивление я тогда не замерял((.
  17. Посмотрел все сигналы JTAG. TCK, TMS и TDO есть, а вот TDI нет. Снял кабель программирования и прозвонил пин TDI на землю на плате. Оказалось КЗ (1,5 Ома). Т.е. вход ПЛИС TDI закорочен. Ведь чтобы контакт так выгорел вроде не похоже. Обыяно сопротивление побольше. Да и ПЛИС не потребляет ток, не разогревается. Пока меня не было на плату устанавливали (допаивали) два банка памяти и видимо (возможно разогрели ПЛИС) что то под ПЛИСой коротит. Поэтому видимо по TDO информация о ПЛИС и конфигурашке считывается, а далее по TDI данные не проходят и iMPACT выдает такой баян. Попробую завтра попросить, чтобы прогрели ПЛИС, может, если это что то вроде кусочка припоя, расплавится к какому либо пину под ПЛИС. Ведь сначала работы этого не было. Либо на рентген тащить и смотреть что под ПЛИСой находиться.
  18. День добрый. Как и предположил Boris, стоял не тот номинал резистора по сигналу DONE (хотя по перечню и схеме - 330Ом, поставили таки 4,7кОм). Перепаял ((((. И пошли новые глюки. Теперь стала дурить цепочка JTAG. Выдает такой баян: Attempting to identify devices in the boundary-scan chain configuration... INFO:iMPACT - Current time: ?? 29. ??? 11:4PROGRESS_START - Starting Operation. Identifying chain contents...'0': : Manufacturer's ID = Xilinx xcf16p, Version : 13 INFO:iMPACT:1777 - Reading C:/Xilinx/12.3/ISE_DS/ISE/xcfp/data/xcf16p.bsd... INFO:iMPACT:501 - '1': Added Device xcf16p successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '1': : Manufacturer's ID = Xilinx xc6slx45, Version : 4 INFO:iMPACT:1777 - Reading C:/Xilinx/12.3/ISE_DS/ISE/spartan6/data/xc6slx45.bsd... INFO:iMPACT:501 - '1': Added Device xc6slx45 successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '2': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '3': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '4': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '5': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ... до 31 ---------------------------------------------------------------------- ERROR:iMPACT - A problem may exist in the hardware configuration. that the cable, scan chain, and power connections are intact, that the specified scan chain configuration matches the actual hardware, and that the power supply is adequate and delivering the correct voltage. ---------------------------------------------------------------------- Хотя вчера все по цепи JTAG определялось ОК. Сейчас сижу перепроверяю JTAG. Хотя вроде бы м/сх он находит (если посмотреть в начале списка, то там как раз и есть мои м/сх, но далее идет брею).
  19. Понятно. Да я уже попытался отойти от внешней частоты (хотя она подается, по крайней мере идет от генератора). Подаю на тестовые сигналы (их 16 штук) различные константы, т.е. вообще отошел от частоты, простая логика. Во время заливки прошивки в ПЛИС по JTAGу на этих пинах состояние "1", т.е. пока идет программирование они в Z-состоянии как и положено, а после прошивки переходят в состояние 0, вне зависимости от того что я задал на них. Насчет ошибки в пинах, не могли же ошибиться в разводке всех 16-ти пинов. И еще по потреблению тока тоже интересный момент. Во время прошивки потребление - 300мА. После прошивки - 600мА. Далее через несколько секунд опять 300мА. Вот такие чудеса. Сколько работаю (уже скоро 12 лет) такого не было ни разу. Даже Virtex5, куда более сложный девайс и то без проблем.
  20. На счет тактовой - я уже константы подаю на тестовые сигналы. Полазил по зарубежным сайтам - они рекомендуют тоже самое что и Boris_TS: There are a handful of problems that might prevent a Xilinx Virtex series FPGA from operating correctly after the DONE pin goes High: 1. A slow rise time on the DONE pin 2. An incorrect startup clock 3. Insufficient clock cycles to complete the startup sequence 4. Contention between DONE signals on configured vs. unconfigured devices А можно поподробней про "самый простой способ" или ссылку как его использовать (описание). Модуль чипскоп как то пробовал, но он мне не понравился (хотя использовал только для просмотра внутренних сигналов во время отладки проекта). А вот про "блинкер" что то не слышал.
  21. Ну у меня немного по другому. 1,2В у Вас подавалось непосредственно на Spartan3 как Vccint и вышла из стоя именно ПЛИС. А у меня ситуация немного иная. Подали на конфигуратор вместо 1,8В - 2,5В. Конфигуратор умер и видимо ПЛИС тоже, хотя и не совсем понятно по каким цепям.
  22. Да в том то и дело что и резистор 330 Ом стоит на месте (может по расстоянию далеко от ПЛИС, около 5 см), и опцию Drive Done Pin High включил. Рекомендуете посмотреть на длительность фронта сигнала Done? Тут же не совсем тогда ясен вопрос прошивки через JTAG, т.е. загрузки bit-файла. Я в установках кабеля (cable setup) снижал рабочую частоту JTAG до 1,5МГц. Ситуация та же самая.
  23. День добрый коллеги. Никак не могу подружиться с 6-ым спартаном. Вообщем о проблеме. В цепь JTAG последовательно включены сначала ПЛИС, затем XC6SLX45-3FGG676I, затем конфигуратор XCF16PFSG48C. При подаче питания эти 2 м/сх обнаруживаются по цепи JTAG. Идентификаторы м/сх считываются, т.е. все вроде работает. 1. Зашиваем проект (bit-файл) в ПЛИС по JTAGу. iMPACT выдает: ---------------------------------------------------------------------- INFO:iMPACT - Current time: ?? 28. ??? 12:2PROGRESS_START - Starting Operation. Maximum TCK operating frequency for this device chain: 15000000. Validating chain... Boundary-scan chain validated successfully. '1': Programming device... LCK_cycle = NoWait. LCK cycle: NoWait done. '1': Reading status register contents... [0] CRC ERROR : 0 [1] IDCODE ERROR : 0 [2] DCM LOCK STATUS : 1 [3] GTS_CFG_B STATUS : 1 [4] GWE STATUS : 1 [5] GHIGH STATUS : 1 [6] DECRYPTION ERROR : 0 [7] DECRYPTOR ENABLE : 0 [8] HSWAPEN PIN : 1 [9] MODE PIN M[0] : 1 [10] MODE PIN M[1] : 1 [11] RESERVED : 0 [12] INIT_B PIN : 1 [13] DONE PIN : 1 [14] SUSPEND STATUS : 0 [15] FALLBACK STATUS : 0 INFO:iMPACT:2219 - Status register values: INFO:iMPACT - 0011 1100 1110 1100 INFO:iMPACT:579 - '1': Completed downloading bit file to device. INFO:iMPACT:188 - '1': Programming completed successfully. LCK_cycle = NoWait. LCK cycle: NoWait INFO:iMPACT - '1': Checking done pin....done. '1': Programmed successfully. PROGRESS_END - End Operation. Elapsed time = 5 sec. Вообщем проект залился, но на тестовых пинах все время нули, т.е. как будто ПЛИС в состоянии сброса. Посмотрел на состояние сигнала DONE (оттянут на +3,3В), ведет себя как и положено, т.е. во время прошивки в состоянии 0, а после уходит в состояние 1. 2. Пробовал прошивать конфигурашку. Ситуация абсолютно аналогичная (ПЛИС с конфигурашки грузится как master serial). С конфигурашки идет CCLK, данные (посмотрел) также сигнал DONE сначала в 0, а после заливки прошивки с конфигурашки уходит в 0. Но ПЛИС молчит((.
×
×
  • Создать...