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

VasiaMVR

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

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

  • Посещение

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


  1. Вот это и смущает, что на всех отладках стоит внешний фапч, однако на SP605 можно убрать/поставить 2 нулевых резистора и подать на прямую. x4 x1 PLL все равно, там 1.25 гига в любом случае. единственно использую 1 PLL на 2 линии. с SSC пока не игрались, обязательно проверим. После тестов оказалось, что из 20 плат не хотят работать 2 причем одна в верхнем слоте, другая в верхнем и иногда ниже. Отваливается, когда запускаем обмен под максимум при этом переключается более 60% ножек в том числе и в 0 банке. Пока основная мысль помеха на REFCLK.
  2. 0.1 взято с SP605, единствено REFCLK не через ICS874001, а напрямую через 0.1. (может тут собака порылась надо глянуть. спасибо ) Так точно. ньюансы видели, соблюдены.
  3. Спасибо за совет. Ситуация немного проясняется. Похоже дело в физике. Одна плата нормально работает в данном слоте, остальные кто чаще, кто реже сбоит. Забыл сказать это Sparat6 FG(G)484 Понял, что поставил не те кондеры по питанию GTP стоит 0.1 в ug386 минимум 0.22 Курил ераты нашел http://www.xilinx.com/support/answers/35237.htm Как специально почти все ноги в 0 банке использую как выход (VCCO = 3.3) . Буду уменьшать токи, может поможет. Может кто подсказать правильность задания атрибутов для GTP, может что подкрутить? Не пойму только почему глюки проявляются в одном слоте :05: (ближнем к процу/мосту) --PLL Attributes CLKINDC_B_0 => (TRUE), CLKRCV_TRST_0 => (TRUE), OOB_CLK_DIVIDER_0 => (4), PLL_COM_CFG_0 => (x"21680a"), PLL_CP_CFG_0 => (x"00"), PLL_RXDIVSEL_OUT_0 => (1), PLL_SATA_0 => (FALSE), PLL_SOURCE_0 => "PLL0", PLL_TXDIVSEL_OUT_0 => (1), PLLLKDET_CFG_0 => (b"111"), -- CLKINDC_B_1 => (TRUE), CLKRCV_TRST_1 => (TRUE), OOB_CLK_DIVIDER_1 => (4), PLL_COM_CFG_1 => (x"21680a"), PLL_CP_CFG_1 => (x"00"), PLL_RXDIVSEL_OUT_1 => (1), PLL_SATA_1 => (FALSE), PLL_SOURCE_1 => "PLL0", PLL_TXDIVSEL_OUT_1 => (1), PLLLKDET_CFG_1 => (b"111"), PMA_COM_CFG_EAST => (x"000008000"), PMA_COM_CFG_WEST => (x"000008000"), TST_ATTR_0 => (x"00000000"), TST_ATTR_1 => (x"00000000"), --TX Interface Attributes CLK_OUT_GTP_SEL_0 => ("TXOUTCLK0"), TX_TDCC_CFG_0 => (b"11"), CLK_OUT_GTP_SEL_1 => ("REFCLKPLL1"), TX_TDCC_CFG_1 => (b"11"), --TX Buffer and Phase Alignment Attributes PMA_TX_CFG_0 => (x"00082"), --x"80082" TX_BUFFER_USE_0 => (TRUE), TX_XCLK_SEL_0 => ("TXOUT"), TXRX_INVERT_0 => (b"011"), PMA_TX_CFG_1 => (x"00082"), --x"80082" TX_BUFFER_USE_1 => (TRUE), TX_XCLK_SEL_1 => ("TXOUT"), TXRX_INVERT_1 => (b"011"), --TX Driver and OOB signalling Attributes CM_TRIM_0 => (b"00"), --"10" TX_IDLE_DELAY_0 => (b"011"), --"010" CM_TRIM_1 => (b"00"), --"10" TX_IDLE_DELAY_1 => (b"011"), --"010" --TX PIPE/SATA Attributes COM_BURST_VAL_0 => (b"1111"), COM_BURST_VAL_1 => (b"1111"), --RX Driver,OOB signalling,Coupling and Eq,CDR Attributes AC_CAP_DIS_0 => (false), OOBDETECT_THRESHOLD_0 => (b"111"), PMA_CDR_SCAN_0 => (x"6404040"), PMA_RX_CFG_0 => (x"05ce048"), PMA_RXSYNC_CFG_0 => (x"00"), RCV_TERM_GND_0 => (true), RCV_TERM_VTTRX_0 => (false), RXEQ_CFG_0 => (b"01111011"), TERMINATION_CTRL_0 => (b"10100"), TERMINATION_OVRD_0 => (FALSE), TX_DETECT_RX_CFG_0 => (x"1832"), AC_CAP_DIS_1 => (FALSE), OOBDETECT_THRESHOLD_1 => (b"111"), PMA_CDR_SCAN_1 => (x"6404040"), PMA_RX_CFG_1 => (x"05ce048"), PMA_RXSYNC_CFG_1 => (x"00"), RCV_TERM_GND_1 => (true), RCV_TERM_VTTRX_1 => (FALSE), RXEQ_CFG_1 => (b"01111011"), TERMINATION_CTRL_1 => (b"10100"), TERMINATION_OVRD_1 => (FALSE), TX_DETECT_RX_CFG_1 => (x"1832"), --synthesis translate_off --PRBS Detection Attributes 11.3 не знает -- RXPRBSERR_LOOPBACK_0 => ('0'), -- RXPRBSERR_LOOPBACK_1 => ('0'), --synthesis translate_on --Comma Detection and Alignment Attributes ALIGN_COMMA_WORD_0 => (1), COMMA_10B_ENABLE_0 => (b"1111111111"), DEC_MCOMMA_DETECT_0 => (TRUE), DEC_PCOMMA_DETECT_0 => (TRUE), DEC_VALID_COMMA_ONLY_0 => (TRUE), MCOMMA_10B_VALUE_0 => (b"1010000011"), MCOMMA_DETECT_0 => (TRUE), PCOMMA_10B_VALUE_0 => (b"0101111100"), PCOMMA_DETECT_0 => (TRUE), RX_SLIDE_MODE_0 => ("PCS"), ALIGN_COMMA_WORD_1 => (1), COMMA_10B_ENABLE_1 => (b"1111111111"), DEC_MCOMMA_DETECT_1 => (TRUE), DEC_PCOMMA_DETECT_1 => (TRUE), DEC_VALID_COMMA_ONLY_1 => (TRUE), MCOMMA_10B_VALUE_1 => (b"1010000011"), MCOMMA_DETECT_1 => (TRUE), PCOMMA_10B_VALUE_1 => (b"0101111100"), PCOMMA_DETECT_1 => (TRUE), RX_SLIDE_MODE_1 => ("PCS"), --RX Loss-of-sync State Machine Attributes RX_LOS_INVALID_INCR_0 => (8), RX_LOS_THRESHOLD_0 => (128), RX_LOSS_OF_SYNC_FSM_0 => (FALSE), RX_LOS_INVALID_INCR_1 => (8), RX_LOS_THRESHOLD_1 => (128), RX_LOSS_OF_SYNC_FSM_1 => (FALSE), --RX Elastic Buffer and Phase alignment Attributes RX_BUFFER_USE_0 => (TRUE), RX_EN_IDLE_RESET_BUF_0 => (TRUE), RX_IDLE_HI_CNT_0 => (b"1000"), RX_IDLE_LO_CNT_0 => (b"0000"), RX_XCLK_SEL_0 => ("RXREC"), RX_BUFFER_USE_1 => (TRUE), RX_EN_IDLE_RESET_BUF_1 => (TRUE), RX_IDLE_HI_CNT_1 => (b"1000"), RX_IDLE_LO_CNT_1 => (b"0000"), RX_XCLK_SEL_1 => ("RXREC"), --Clock Correction Attributes CLK_COR_ADJ_LEN_0 => (1), CLK_COR_DET_LEN_0 => (1), CLK_COR_INSERT_IDLE_FLAG_0 => (FALSE), CLK_COR_KEEP_IDLE_0 => (FALSE), CLK_COR_MAX_LAT_0 => (20), CLK_COR_MIN_LAT_0 => (18), CLK_COR_PRECEDENCE_0 => (TRUE), CLK_COR_REPEAT_WAIT_0 => (0), CLK_COR_SEQ_1_1_0 => (b"0100011100"), CLK_COR_SEQ_1_2_0 => (b"0000000000"), CLK_COR_SEQ_1_3_0 => (b"0000000000"), CLK_COR_SEQ_1_4_0 => (b"0000000000"), CLK_COR_SEQ_1_ENABLE_0 => (b"0001"), CLK_COR_SEQ_2_1_0 => (b"0000000000"), CLK_COR_SEQ_2_2_0 => (b"0000000000"), CLK_COR_SEQ_2_3_0 => (b"0000000000"), CLK_COR_SEQ_2_4_0 => (b"0000000000"), CLK_COR_SEQ_2_ENABLE_0 => (b"0000"), CLK_COR_SEQ_2_USE_0 => (FALSE), CLK_CORRECT_USE_0 => (TRUE), RX_DECODE_SEQ_MATCH_0 => (TRUE), CLK_COR_ADJ_LEN_1 => (1), CLK_COR_DET_LEN_1 => (1), CLK_COR_INSERT_IDLE_FLAG_1 => (FALSE), CLK_COR_KEEP_IDLE_1 => (FALSE), CLK_COR_MAX_LAT_1 => (20), CLK_COR_MIN_LAT_1 => (18), CLK_COR_PRECEDENCE_1 => (TRUE), CLK_COR_REPEAT_WAIT_1 => (0), CLK_COR_SEQ_1_1_1 => (b"0100011100"), CLK_COR_SEQ_1_2_1 => (b"0000000000"), CLK_COR_SEQ_1_3_1 => (b"0000000000"), CLK_COR_SEQ_1_4_1 => (b"0000000000"), CLK_COR_SEQ_1_ENABLE_1 => (b"0001"), CLK_COR_SEQ_2_1_1 => (b"0000000000"), CLK_COR_SEQ_2_2_1 => (b"0000000000"), CLK_COR_SEQ_2_3_1 => (b"0000000000"), CLK_COR_SEQ_2_4_1 => (b"0000000000"), CLK_COR_SEQ_2_ENABLE_1 => (b"0000"), CLK_COR_SEQ_2_USE_1 => (FALSE), CLK_CORRECT_USE_1 => (TRUE), RX_DECODE_SEQ_MATCH_1 => (TRUE), --Channel Bonding Attributes CHAN_BOND_1_MAX_SKEW_0 => (1), CHAN_BOND_2_MAX_SKEW_0 => (1), CHAN_BOND_KEEP_ALIGN_0 => (FALSE), CHAN_BOND_SEQ_1_1_0 => (b"0001001010"), CHAN_BOND_SEQ_1_2_0 => (b"0001001010"), CHAN_BOND_SEQ_1_3_0 => (b"0001001010"), CHAN_BOND_SEQ_1_4_0 => (b"0110111100"), CHAN_BOND_SEQ_1_ENABLE_0 => (b"0000"), CHAN_BOND_SEQ_2_1_0 => (b"0100111100"), CHAN_BOND_SEQ_2_2_0 => (b"0100111100"), CHAN_BOND_SEQ_2_3_0 => (b"0110111100"), CHAN_BOND_SEQ_2_4_0 => (b"0100011100"), CHAN_BOND_SEQ_2_ENABLE_0 => (b"0000"), CHAN_BOND_SEQ_2_USE_0 => (FALSE), CHAN_BOND_SEQ_LEN_0 => (1), RX_EN_MODE_RESET_BUF_0 => (TRUE), CHAN_BOND_1_MAX_SKEW_1 => (1), CHAN_BOND_2_MAX_SKEW_1 => (1), CHAN_BOND_KEEP_ALIGN_1 => (FALSE), CHAN_BOND_SEQ_1_1_1 => (b"0001001010"), CHAN_BOND_SEQ_1_2_1 => (b"0001001010"), CHAN_BOND_SEQ_1_3_1 => (b"0001001010"), CHAN_BOND_SEQ_1_4_1 => (b"0110111100"), CHAN_BOND_SEQ_1_ENABLE_1 => (b"0000"), CHAN_BOND_SEQ_2_1_1 => (b"0100111100"), CHAN_BOND_SEQ_2_2_1 => (b"0100111100"), CHAN_BOND_SEQ_2_3_1 => (b"0110111100"), CHAN_BOND_SEQ_2_4_1 => (b"0100011100"), CHAN_BOND_SEQ_2_ENABLE_1 => (b"0000"), CHAN_BOND_SEQ_2_USE_1 => (FALSE), CHAN_BOND_SEQ_LEN_1 => (1), RX_EN_MODE_RESET_BUF_1 => (TRUE), --RX PCI Express Attributes CB2_INH_CC_PERIOD_0 => (8), CDR_PH_ADJ_TIME_0 => (b"01010"), PCI_EXPRESS_MODE_0 => (TRUE), RX_EN_IDLE_HOLD_CDR_0 => (TRUE), RX_EN_IDLE_RESET_FR_0 => (TRUE), RX_EN_IDLE_RESET_PH_0 => (TRUE), RX_STATUS_FMT_0 => ("PCIE"), TRANS_TIME_FROM_P2_0 => (x"03c"), TRANS_TIME_NON_P2_0 => (x"19"), TRANS_TIME_TO_P2_0 => (x"064"), CB2_INH_CC_PERIOD_1 => (8), CDR_PH_ADJ_TIME_1 => (b"01010"), PCI_EXPRESS_MODE_1 => (TRUE), RX_EN_IDLE_HOLD_CDR_1 => (TRUE), RX_EN_IDLE_RESET_FR_1 => (TRUE), RX_EN_IDLE_RESET_PH_1 => (TRUE), RX_STATUS_FMT_1 => ("PCIE"), TRANS_TIME_FROM_P2_1 => (x"03c"), TRANS_TIME_NON_P2_1 => (x"19"), TRANS_TIME_TO_P2_1 => (x"064"), --RX SATA Attributes SATA_BURST_VAL_0 => (b"100"), SATA_IDLE_VAL_0 => (b"100"), SATA_MAX_BURST_0 => (9), SATA_MAX_INIT_0 => (27), SATA_MAX_WAKE_0 => (9), SATA_MIN_BURST_0 => (5), SATA_MIN_INIT_0 => (15), SATA_MIN_WAKE_0 => (5), SATA_BURST_VAL_1 => (b"100"), SATA_IDLE_VAL_1 => (b"100"), SATA_MAX_BURST_1 => (9), SATA_MAX_INIT_1 => (27), SATA_MAX_WAKE_1 => (9), SATA_MIN_BURST_1 => (5), SATA_MIN_INIT_1 => (15), SATA_MIN_WAKE_1 => (5)
  4. Добрый вечер. Прошу помощи. Есть устройство PCIe 4x v1.0 работает нормально во всех слотах, кроме слота для видео в платах с интегрированным видео. Система запускается, устройство видится, но через некоторое время отваливается. Конфигурационное пространство читается, но весь обмен запрещен. Биты разрешения сброшены. Если в диспетчере устройств отключить/включить устройство начинает работать, но потом опять отваливается. Не пойму в чём засада. Можно как-то узнать что не нравиться винде(мосту) и почему отключается устройство? P.S. Проблема чаще на новых материнках с Intel процом, есть старая c AMD там тоже было, но буквально 3 раза за полгода работы.
  5. День добрый. Удалось победить? Наткнулись на похожую проблему, только битые первые два значения по спаду, после загрузки ПЛИС (если данные не нули в 100% неправильно. нули всегда правильно) далее всё вроде верно. У Вас камень какой (У нас 45LXT) ?
  6. Условия работы огласите плиз (полный день, удаленка или др. вилку зарплаты).
  7. Удаленная разработка по контракту опыт более 10 лет. Контакты: vasiamvr гав rambler тчк ru
  8. Удаленка возможна или только Москва?
  9. Наверное всё-таки MHz? I,Q после канального фильтра или он тоже нужен? Тактовая I и Q какая (всегда одна или диапазон)? Регулировка мощности я так понимаю не нужна. А более конкретно можно (Максимальный разбаланс амплитуд, фазовая ошибка и.т.д.) И вообще не очень строгие это для BPSK.
  10. Удаленка возможна или обязательно в Киеве?
  11. Так, как вы описали боюсь не выйдет. Как вы собираетсь делать точную задержку на логике? Коммутатор это тоже логика со своеё задержкой + поскольку в спартане урезаны внутренние коммутационные блоки задержка разводки тоже порядка 1 ns . Фазироваться с первым сигналом тоже надо. Это будет шаманство с мучениями каждый раз, когда надо будет что-то изменить или добавить. Для того, что-бы два выхода были сфазированы надо использовать трегеры в ножках. Для формирования используем максимально возможную частоту, в пределах периода тактовой двигать при помощи DCM. Где-то так.
  12. Denis_KAS Улыбнуло, тогда у меня встречное требование к работодателю Способность платить большой объем денег без ощущения возникновения внутреннего напряжения
  13. Не стоит делить частоту на триггере и затем использовать её в качестве тактовой если потом надо перепривязывать назад к 50. Лучший вариант, когда всё работает от одной тактовой с разрешениями. Есть DLL, PLL и др. блоки предназначенные для этого я бы сделал так: process(Clk) --из 50 МГц получаем !!!разрешение!!! 25 мгц для пиксельклока begin if rising_edge(Clk) then PixelClock_en<=PixelClock_en+1; --зачем +1 ??? можно просто not PixelClock_en end if; end process; process(Clk) --для увеличения адреса SRAM begin if rising_edge(Clk) then if PixelClock_en='0' then Address<=Address+1; end if; end if; end process; SRAM_CE<='0'; --SRAM_OE<=PixelClock; --стробируем по пикслеьклоку. Квазисинхронный режим??? -- если нужно постоянно читать, можно вообще SRAM_OE<='0' на время чтения и не дергать лишний раз буфера, кроме этого сокращается время на чтение см ниже. --SRAM_A<=Address; -- вот это интересней см ниже -- чтение из SRAM Есть следующие задержки --1. от CLK до выходных ножек ПЛИС. Если так вывести, то задержка будет меняться от разводки, можно (вообще-то нужно) задать макс. значение (для Xilinx см OFFSET OUT) --2. от ADDR SRAM до DATA SRAM см datasheet на SDRAM. --3. от ножек ПЛИС до регистров. задать макс. значение (для Xilinx см OFFSET IN) -- Сумма трех задержек меньше периода тактовой, в данном случае 40нс, что много (смотря сколь-ко логики нагородить на данных) и можно не ставить дополнительные регистры в ножках, но все-же лучше так -- Единственно, если стробировать SRAM_OE для 2. максимальное из (ADDR -> DATA) и ((ОЕ -> DATA) + 20 нс). process(Clk) begin if rising_edge(Clk) then if PixelClock_en='0' then SRAM_A<=Address+1; --не забудь поставить атрибут, что-бы синтез не выкинул одинаковые регистры. Можно без +1, тогда атрибут не нужен, но будет дополнительная задержка на такт. end if; SRAM_OE<=not PixelClock_en; --не забудь поставить атрибут, что-бы синтез не выкинул одинаковые регистры. end if; end process; --process(PixelClock) --выдаём данные на VGA порт --begin -- if rising_edge(PixelClock) then -- if Blank='1' then -- кадр -- R<=SRAM_D(14 downto 10); -- считываем данные с SRAM -- G<=SRAM_D(9 downto 5); -- B<=SRAM_D(4 downto 0); -- else --бланк-интервалы - форсируем цвет в 0 -- R<="00000"; -- G<="00000"; -- B<="00000"; -- end if; -- end if; --end process; --Blank<=HBlank and VBlank; -- =0 когда обратный ход луча(по строке или кадру), 1 - когда идёт отображение кадра -- регистр один на вход и выход, лучше добавить ещё один. process(Clk) --выдаём данные на VGA порт begin if rising_edge(Clk) then if PixelClock_en='0' then SRAM_D_reg<=SRAM_D; if Blank='1' then -- кадр R<=SRAM_D_reg(14 downto 10); -- считываем данные с SRAM G<=SRAM_D_reg(9 downto 5); B<=SRAM_D_reg(4 downto 0); else --бланк-интервалы - форсируем цвет в 0 R<="00000"; G<="00000"; B<="00000"; end if; Blank<=HBlank and VBlank; -- задерживаем на такт, другие выходные сигналы тоже задержать. end if; end if; end process; где-то так.
  14. А SerDes здесь и не нужны (вообще-то их много, столько-же сколько IOB). Нужны GTP Transceivers их в XC6SLX45T как раз 4. Если глянуть на User Guide (ug386 - Spartan6, ug196 -Virtex5), то по структуре они одинаковы, есть-ли принципиальные различия я ещё не знаю. Спасибо, но надо именно Spartan6 и без внешней физики
  15. PCIe 4x на Spartan6

    Необходима реализация PCIe 4x на Spartan6. Подскажите оптимальное(или просто) решение данной задачи. вот несколько вариантов, может кто ещё что подскажет. 1. (ответ знаю а вдруг ...) встроенное ядро поддерживает только 1x, как прикрутить ещё 3x ? 2. Взять IP Endpoint от Xilinx для Virtex5 и (доработать напильником) развести в Spartan6 (что скорее всего буду делать). Может кто пробывал? 3. ядро от PLDA. Вроде у них заявлена поддержка Spartan6. Но у мну его нет. Если кто поделиться буду благодарен. 4. Написать все самому ... долго, ... очень долго ............. и много читать (на англицком :( ), но зато потом можно долго гордиться :). Help me please.
  16. А зарплата у него тоже как у иного коллектива, или как всегда на одного с сошкой десяток с ложкой?
  17. А чем WinDriver не устраивает? Передачу некоторых данных приходящик от DSP в PCI шину через ПЛИС как я понимаю, т.е нужно разработать прошивку для ПЛИС или она есть? Каким образом будут передаваться данные от DSP к ПЛИС известно или с этим тоже нужно разбираться? Удаленка возможна или только Питер?
  18. Удаленная работа возможна или только постоянка?
×
×
  • Создать...