VasiaMVR
Участник-
Постов
45 -
Зарегистрирован
-
Посещение
Весь контент VasiaMVR
-
Вот это и смущает, что на всех отладках стоит внешний фапч, однако на SP605 можно убрать/поставить 2 нулевых резистора и подать на прямую. x4 x1 PLL все равно, там 1.25 гига в любом случае. единственно использую 1 PLL на 2 линии. с SSC пока не игрались, обязательно проверим. После тестов оказалось, что из 20 плат не хотят работать 2 причем одна в верхнем слоте, другая в верхнем и иногда ниже. Отваливается, когда запускаем обмен под максимум при этом переключается более 60% ножек в том числе и в 0 банке. Пока основная мысль помеха на REFCLK.
-
0.1 взято с SP605, единствено REFCLK не через ICS874001, а напрямую через 0.1. (может тут собака порылась надо глянуть. спасибо ) Так точно. ньюансы видели, соблюдены.
-
Спасибо за совет. Ситуация немного проясняется. Похоже дело в физике. Одна плата нормально работает в данном слоте, остальные кто чаще, кто реже сбоит. Забыл сказать это 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)
-
PCIe сбоит в слоте для видеокарты
VasiaMVR опубликовал тема в ISA/PCI/PCI-X/PCI Express
Добрый вечер. Прошу помощи. Есть устройство PCIe 4x v1.0 работает нормально во всех слотах, кроме слота для видео в платах с интегрированным видео. Система запускается, устройство видится, но через некоторое время отваливается. Конфигурационное пространство читается, но весь обмен запрещен. Биты разрешения сброшены. Если в диспетчере устройств отключить/включить устройство начинает работать, но потом опять отваливается. Не пойму в чём засада. Можно как-то узнать что не нравиться винде(мосту) и почему отключается устройство? P.S. Проблема чаще на новых материнках с Intel процом, есть старая c AMD там тоже было, но буквально 3 раза за полгода работы. -
День добрый. Удалось победить? Наткнулись на похожую проблему, только битые первые два значения по спаду, после загрузки ПЛИС (если данные не нули в 100% неправильно. нули всегда правильно) далее всё вроде верно. У Вас камень какой (У нас 45LXT) ?
-
Условия работы огласите плиз (полный день, удаленка или др. вилку зарплаты).
-
Программист ПЛИС Xilinx
VasiaMVR ответил Arion9 тема в Предлагаю работу
Удаленная разработка по контракту опыт более 10 лет. Контакты: vasiamvr гав rambler тчк ru -
Удаленка возможна или только Москва?
-
Разовая работа для RF разработчика
VasiaMVR ответил sekat тема в Предлагаю работу
Наверное всё-таки MHz? I,Q после канального фильтра или он тоже нужен? Тактовая I и Q какая (всегда одна или диапазон)? Регулировка мощности я так понимаю не нужна. А более конкретно можно (Максимальный разбаланс амплитуд, фазовая ошибка и.т.д.) И вообще не очень строгие это для BPSK. -
Нужен разработчик под Spartan6
VasiaMVR ответил alkinoy тема в Предлагаю работу
Удаленка возможна или обязательно в Киеве? -
Нужен разработчик под Spartan6
VasiaMVR ответил alkinoy тема в Предлагаю работу
Так, как вы описали боюсь не выйдет. Как вы собираетсь делать точную задержку на логике? Коммутатор это тоже логика со своеё задержкой + поскольку в спартане урезаны внутренние коммутационные блоки задержка разводки тоже порядка 1 ns . Фазироваться с первым сигналом тоже надо. Это будет шаманство с мучениями каждый раз, когда надо будет что-то изменить или добавить. Для того, что-бы два выхода были сфазированы надо использовать трегеры в ножках. Для формирования используем максимально возможную частоту, в пределах периода тактовой двигать при помощи DCM. Где-то так. -
Требуются специалисты FPGA
VasiaMVR ответил Alexander_optic тема в Предлагаю работу
удалёнка возможна? -
Denis_KAS Улыбнуло, тогда у меня встречное требование к работодателю Способность платить большой объем денег без ощущения возникновения внутреннего напряжения
-
Не стоит делить частоту на триггере и затем использовать её в качестве тактовой если потом надо перепривязывать назад к 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; где-то так.
-
PCIe 4x на Spartan6
VasiaMVR ответил VasiaMVR тема в ISA/PCI/PCI-X/PCI Express
А SerDes здесь и не нужны (вообще-то их много, столько-же сколько IOB). Нужны GTP Transceivers их в XC6SLX45T как раз 4. Если глянуть на User Guide (ug386 - Spartan6, ug196 -Virtex5), то по структуре они одинаковы, есть-ли принципиальные различия я ещё не знаю. Спасибо, но надо именно Spartan6 и без внешней физики -
PCIe 4x на Spartan6
VasiaMVR опубликовал тема в ISA/PCI/PCI-X/PCI Express
Необходима реализация PCIe 4x на Spartan6. Подскажите оптимальное(или просто) решение данной задачи. вот несколько вариантов, может кто ещё что подскажет. 1. (ответ знаю а вдруг ...) встроенное ядро поддерживает только 1x, как прикрутить ещё 3x ? 2. Взять IP Endpoint от Xilinx для Virtex5 и (доработать напильником) развести в Spartan6 (что скорее всего буду делать). Может кто пробывал? 3. ядро от PLDA. Вроде у них заявлена поддержка Spartan6. Но у мну его нет. Если кто поделиться буду благодарен. 4. Написать все самому ... долго, ... очень долго ............. и много читать (на англицком :( ), но зато потом можно долго гордиться :). Help me please. -
А зарплата у него тоже как у иного коллектива, или как всегда на одного с сошкой десяток с ложкой?
-
А чем WinDriver не устраивает? Передачу некоторых данных приходящик от DSP в PCI шину через ПЛИС как я понимаю, т.е нужно разработать прошивку для ПЛИС или она есть? Каким образом будут передаваться данные от DSP к ПЛИС известно или с этим тоже нужно разбираться? Удаленка возможна или только Питер?
-
Удаленная работа возможна или только постоянка?