Jump to content

    

shide_3

Участник
  • Content Count

    339
  • Joined

  • Last visited

Everything posted by shide_3


  1. спасибо. буду дальше мозговать. вот да, http://www.youtube.com/watch?v=gXvuhWfjQcQ - вот что-то типа втягивающего реле наиболее подошло бы. Купить на автобарахолке не проблема. Но с ним трудновато будет обеспечить нужное расстояние перемещения... Цитата(Plain @ Jan 19 2016, 17:30) Стеклоподъёмник. Мощность тоже известна — может и руку придавить. жалко машину. только купил)
  2. Цитата(Herz @ Jan 19 2016, 12:42) Вы ничего не написали ни о расстоянии, ни о точности позиционирования, ни о скорости перемещений. точность примерно до миллиметра. скорость не имеет значения.
  3. Цитата(_pv @ Jan 19 2016, 12:30) далеко перемещать-то надо? дополнительно к разобранным принтерам и сканерам (там правда 1 ось) можно еще CD/DVD приводы / дисководы разобрать там сантиметров на 5-6 подвижки. порядка на 10 - 20 см (не уточнили пока). а от сидирома привод какую нагрузку способен выдержать?
  4. Здравствуйте! Занимаюсь приемом serial data с lvds АЦП на Virtex 4. Задаю в констрейнах следующее: КодNET "D0A_n" OFFSET = IN 0 ns BEFORE "FCO_n"; NET "FCO_n" TNM_NET = "FCO_n"; TIMESPEC "TS_FCO_n" = PERIOD "FCO_n" 8 ns HIGH 50 %; NET "D0A_p" OFFSET = IN 0 ns BEFORE "FCO_p"; NET "FCO_p" TNM_NET = "FCO_p"; TIMESPEC "TS_FCO_p" = PERIOD "FCO_p" 8 ns HIGH 50 %; Где D0A - это и есть serial data, а FCO - это frame clock, который затем умножается на DCM в 4 раза и получается clk4x, и этот клок уже стробирует данные в ISERDES. Вот что выдает STA: Код================================================================================ Timing constraint: COMP "D0A_n" OFFSET = IN 0 ns BEFORE COMP "FCO_n"; 2 items analyzed, 2 timing errors detected. (2 setup errors, 0 hold errors) Minimum allowable offset is   4.779ns. -------------------------------------------------------------------------------- Slack:                  -4.779ns (requirement - (data path - clock path - clock arrival + uncertainty))   Source:               D0A_n (PAD)   Destination:          ISERDES_inst (FF)   Destination Clock:    clk4x rising at 0.000ns   Requirement:          0.000ns   Data Path Delay:      2.508ns (Levels of Logic = 2)   Clock Path Delay:     -2.051ns (Levels of Logic = 3)   Clock Uncertainty:    0.220ns   Data Path: D0A_n to ISERDES_inst     Location             Delay type         Delay(ns)  Physical Resource                                                        Logical Resource(s)     -------------------------------------------------  -------------------     A9.PADOUT            Tiopp                 1.365   D0A_n                                                        D0A_n     B9.DIFFI_IN          net (fanout=1)        0.000   IBUFDS_inst0/SLAVEBUF.DIFFIN     B9.I                 Tiodi                 0.000   D0A_p                                                        IBUFDS_inst0/IBUFDS     ILOGIC_X2Y95.D       net (fanout=1)        0.063   D0A     ILOGIC_X2Y95.CLK     Tisdck_D_BOTH         1.080   ISERDES_inst                                                        ISERDES_inst     -------------------------------------------------  ---------------------------     Total                                      2.508ns (2.445ns logic, 0.063ns route)                                                        (97.5% logic, 2.5% route)   Clock Path: FCO_n to ISERDES_inst     Location             Delay type         Delay(ns)  Physical Resource                                                        Logical Resource(s)     -------------------------------------------------  -------------------     C12.PADOUT           Tiopp                 1.116   FCO_n                                                        FCO_n     C13.DIFFI_IN         net (fanout=1)        0.000   IBUFGDS_inst/SLAVEBUF.DIFFIN     C13.I                Tiodi                 0.000   FCO_p                                                        IBUFGDS_inst/IBUFDS     DCM_ADV_X0Y2.CLKIN   net (fanout=1)        1.039   FCO     DCM_ADV_X0Y2.CLKFX   Tdmcko_CLKFX         -6.249   DCM_AUTOCALIBRATION_DCM_BASE_inst/DCM_BASE_inst                                                        DCM_AUTOCALIBRATION_DCM_BASE_inst/DCM_BASE_inst     ILOGIC_X2Y95.CLK     net (fanout=0)        2.043   DCM_AUTOCALIBRATION_DCM_BASE_inst/clk4x     -------------------------------------------------  ---------------------------     Total                                     -2.051ns (-5.133ns logic, 3.082ns route) Вопрос: как понимать, что Tdmcko_CLKFX = -6.249 ns? И вообще, если data path всегда будет больше clock path, то мой констрейн никогда не сойдется? Пожалуйста, подскажите, как действовать? Я же должен как-то распознать начало кадра...
  5. Цитата(dm.pogrebnoy @ Jan 10 2016, 15:42) Если нет возможности использовать bufio, можно взять iddr, на его тактовый вход подать сигнал с bufg (который в свою очередь идет с DCM в режиме повторения DCO), на вход данных подать DCO, а на выходе подсчитвать количество 0 и 1 на одном из выходов триггера на некотором промежутке времени. И на основании этих данных через функционал динамического сдвига фазы DCM непрерывно подстраивать фазу, таким образом что бы количество 0 и 1 было примерно одинаково. Соответственно сигнал с bufg будет близок по фазе с DCO. Исходники такой системы выравнивания фазы выкладывал на этом форуме пользователь dsmv, http://electronix.ru/forum/index.php?showt...t&p=1265034 ответьте пожалуйста на один единственный ламерский вопрос: если использовать цепь обратной связи DCM и завести выходной клок на CLKFB, то входной клок и все выходные клоки DCM выравниваются по фазе? (об этом написано в user guide) если да, то зачем тогда нужно их дополнительно выравнивать? пожалуйста, просветите, не могу никак разобраться...
  6. Цитата(dm.pogrebnoy @ Jan 10 2016, 15:42) Если нет возможности использовать bufio, можно взять iddr, на его тактовый вход подать сигнал с bufg (который в свою очередь идет с DCM в режиме повторения DCO), на вход данных подать DCO, а на выходе подсчитвать количество 0 и 1 на одном из выходов триггера на некотором промежутке времени. И на основании этих данных через функционал динамического сдвига фазы DCM непрерывно подстраивать фазу, таким образом что бы количество 0 и 1 было примерно одинаково. Соответственно сигнал с bufg будет близок по фазе с DCO. мне почему-то представляется, что при таком подходе не обязательно входной клок и выход DCM будут совпадать по фазе. Они могут быть и сдвинуты на 90 градусов, и при этом тоже количество нулей и единичек на выходе триггера будет равным. Поправьте пожалуйста если чего-то не понял
  7. Цитата(dsmv @ Jun 27 2014, 15:59) Добрый день По ходу своей работы постоянно сталкиваюсь с необходимостью принять синхронные данные с внешнего устройства. Причён тактовый сигнал как правило заходит на обычную ножку ПЛИС. В результате различных экспериментов я сделал узел автоподстройки тактовой частоты. Получилось решение, которое не зависит от партии ПЛИС, температуры и переразводки ПЛИС. Несколько раз я на этом форуме уже давал ссылку. Вот ещё раз: ctrl_dcm_phase_v8 здравствуйте! мне почему-то представляется, что при таком подходе не обязательно входной клок и выход DCM будут совпадать по фазе. Они могут быть и сдвинуты на 90 градусов, и при этом тоже количество нулей и единичек на выходе триггера будет равным. Поправьте пожалуйста если чего-то не понял
  8. Цитата(dm.pogrebnoy @ Jan 10 2016, 14:42) Если нет возможности использовать bufio, можно взять iddr, на его тактовый вход подать сигнал с bufg (который в свою очередь идет с DCM в режиме повторения DCO), на вход данных подать DCO, а на выходе подсчитвать количество 0 и 1 на одном из выходов триггера на некотором промежутке времени. И на основании этих данных через функционал динамического сдвига фазы DCM непрерывно подстраивать фазу, таким образом что бы количество 0 и 1 было примерно одинаково. Соответственно сигнал с bufg будет близок по фазе с DCO. Исходники такой системы выравнивания фазы выкладывал на этом форуме пользователь dsmv, http://electronix.ru/forum/index.php?showt...t&p=1265034 спасибо за ссылку. получается, что в любом случае нужно динамически подстраивать фазу, и того что я задал OFFSET между входными данными и DCO, все равно недостаточно? по идее же PAR сам должен обеспечивать это соотношение уже внутри плис...
  9. Цитата(Timmy @ Jan 9 2016, 19:32) Надо в дизайне выравнивать клоковые линии. У вас, видимо, clk4x пошёл прямо на BUFIO, а clk - через BUFG, отсюда разница набегает. И констрейны надо правильно писать, я не просто так советовал изучать appnote. как раз нет. я не имею возможности использовать BUFIO, поскольку сигналы DCO не заведены на clock capable ножки ПЛИС (а просто на Global clock пины). Кстати, во всех xapp применяется BUFIO для выравнивания, а как тогда быть?можно для этого использовать просто DCM?
  10. Цитата(Timmy @ Jan 7 2016, 21:14) Отрицательный тайминг - это DCM компенсирует задержку в петле обратной связи, очевидно, петля через CLK получилась более длинная, чем путь CLK4X. странно, а как тогда анализировать констрейны, он же никогда не сойдется при таком раскладе
  11. Цитата(Timmy @ Jan 5 2016, 22:40) Для начала советую полностью разобраться с xapp866. попробую обязательно разобраться, но все же было бы хорошо понять , откуда берется этот отрицательный тайминг в STA : DCM_ADV_X0Y2.CLKFX Tdmcko_CLKFX -6.249 , из-за которого clock path тоже получается отрицательным и констрейн не сходится..
  12. Цитата(faa @ Jan 5 2016, 17:13) Как вариант, можно переписывать из serdes по фронту фрейма (используя его как клок), только с клоковыми доменами надо аккуратно. Вы имеете ввиду в качестве clkdiv использовать частоту фрейма? поскольку выходной регистр serdes'а (тот который мы затем читаем) защелкивается по clkdiv В принципе, у меня сейчас так и сделано Код    ISERDES_inst : ISERDES    generic map (       BITSLIP_ENABLE => TRUE, -- TRUE/FALSE to enable bitslip controller       DATA_RATE => "DDR", -- Specify data rate of "DDR" or "SDR"       DATA_WIDTH => 8, -- Specify data width - For DDR 4,6,8, or 10                        -- For SDR 2,3,4,5,6,7, or 8       INIT_Q1 => '0',  -- INIT for Q1 register - '1' or '0'       INIT_Q2 => '0',  -- INIT for Q2 register - '1' or '0'       INIT_Q3 => '0',  -- INIT for Q3 register - '1' or '0'       INIT_Q4 => '0',  -- INIT for Q4 register - '1' or '0'       --INIT_Q5 => '0',  -- INIT for Q3 register - '1' or '0'       --INIT_Q6 => '0',  -- INIT for Q4 register - '1' or '0'       INTERFACE_TYPE => "NETWORKING", -- Use model - "MEMORY" or "NETWORKING"       IOBDELAY => "BOTH", -- Specify outputs where delay chain will be applied                           -- "NONE", "IBUF", "IFD", or "BOTH"       IOBDELAY_TYPE => "FIXED", -- Set tap delay "DEFAULT", "FIXED", or "VARIABLE"       IOBDELAY_VALUE => 0, -- Set initial tap delay to an integer from 0 to 63       NUM_CE => 1, -- Define number or clock enables to an integer of 1 or 2       SERDES_MODE => "MASTER" --Set SERDES mode to "MASTER" or "SLAVE" --      SRVAL_Q1 => '0', -- Define Q1 output value upon SR assertion - '1' or '0' --      SRVAL_Q2 => '0', -- Define Q1 output value upon SR assertion - '1' or '0' --      SRVAL_Q3 => '0', -- Define Q1 output value upon SR assertion - '1' or '0' --      SRVAL_Q4 => '0'         --SRVAL_Q5 => '0',         --SRVAL_Q6 => '0'         ) -- Define Q1 output value upon SR assertion - '1' or '0'    port map (       O => open,    -- 1-bit output       Q1 => DA(0),  -- 1-bit output       Q2 => DA(1),  -- 1-bit output       Q3 => DA(2),  -- 1-bit output       Q4 => DA(3),  -- 1-bit output       Q5 => DA(4),  -- 1-bit output       Q6 => DA(5),  -- 1-bit output       SHIFTOUT1 => shiftout0a, -- 1-bit output       SHIFTOUT2 => shiftout1a, -- 1-bit output       BITSLIP => '0',     -- 1-bit input       CE1 => '1',        -- 1-bit input       CE2 => '0',        -- 1-bit input       CLK => clk4x,        -- 1-bit input       CLKDIV => CLK00,  -- 1-bit input       D => D0A,            -- 1-bit input       DLYCE => '0',    -- 1-bit input       DLYINC => '0',  -- 1-bit input       DLYRST => '0',  -- 1-bit input       OCLK => '0',      -- 1-bit input       REV => '0',        -- 1-bit input       SHIFTIN1 => '0', -- 1-bit input       SHIFTIN2 => '0', -- 1-bit input       SR => '0'           -- 1-bit input    ); СLK00 это и есть frame clk, только с выхода DCM (для того чтобы выровнять по фазе FCO и clk4x): Код   DCM_BASE_inst : DCM_BASE    generic map (       CLKDV_DIVIDE => 4.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5                            --   7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0       CLKFX_DIVIDE => 1,   -- Can be any interger from 1 to 32       CLKFX_MULTIPLY => 4, -- Can be any integer from 2 to 32       CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature       CLKIN_PERIOD => 2.0, -- Specify period of input clock in ns from 1.25 to 1000.00       CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift mode of NONE or FIXED       CLK_FEEDBACK => "1X",         -- Specify clock feedback of NONE or 1X       DCM_AUTOCALIBRATION => TRUE, -- DCM calibrartion circuitry TRUE/FALSE       DCM_PERFORMANCE_MODE => "MAX_RANGE",   -- Can be MAX_SPEED or MAX_RANGE       DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or                                              --   an integer from 0 to 15       DFS_FREQUENCY_MODE => "HIGH",   -- LOW or HIGH frequency mode for frequency synthesis       DLL_FREQUENCY_MODE => "HIGH",   -- LOW, HIGH, or HIGH_SER frequency mode for DLL       DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE       FACTORY_JF => X"F0F0",          -- FACTORY JF Values Suggested to be set to X"F0F0       PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 1023       STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE    port map (       CLK0 => CLK00,         -- 0 degree DCM CLK ouptput       CLK180 => open,     -- 180 degree DCM CLK output       CLK270 => open,     -- 270 degree DCM CLK output       CLK2X => open,       -- 2X DCM CLK output       CLK2X180 => open, -- 2X, 180 degree DCM CLK out       CLK90 => open,       -- 90 degree DCM CLK output       CLKDV => open,       -- Divided DCM CLK out (CLKDV_DIVIDE)       CLKFX => clk4x,       -- DCM CLK synthesis out (M/D)       CLKFX180 => open, -- 180 degree CLK synthesis out       LOCKED => open,     -- DCM LOCK status output       CLKFB => CLK00,       -- DCM clock feedback       CLKIN => FCO ,      -- Clock input (from IBUFG, BUFG or DCM)       RST => '0'           -- DCM asynchronous reset input    );
  13. Цитата(faa @ Jan 5 2016, 16:04) Вот тут смотрите, как у аналогов сделано, файл cf_adc_if.v, frame захватывается одновременно с данными и по нему выравнивают данные. У xilinx есть примеры (xapp524, xapp1071), но там все намного развесистее. спасибо , но все же хотелось бы без bitslip обойтись, поскольку нет возможности запустить тестовую последовательность ацп..
  14. здравствуйте. может ли буфер fx2lp в режиме slave fifo считываться повторно через usb? при каких условиях это может происходить? Считываю осциллограммы из контроллера, которые записываю туда из ПЛИС, и у меня происходит именно так, из него подряд много раз считывается одно и то же (по целому буферу - 4 x 512 байт), до тех пор пока в fifo контроллера со стороны мастера (ПЛИС) не будет записана новая осциллограмма (потом тоже самое с ней). может кто испытывал такую проблему?
  15. слишком замудренно я пишу. попробую поставить вопрос попроще: можно ли КАК нибудь программно (со стороны USB) определить, записан ли ПОЛНОСТЬЮ slave-fifo буфер контроллера ez-usb fx2 ?
  16. прошу прощения, сразу не конкретизировал, был не в курсе сам, просто программированием софта для PC занимается другой человек.. в общем, проблема может быть в следующем: ПЛИС заполняет буфер ez-usb до тех пор пока он не заполнится. Но как программно узнать, заполнился ли этот буфер????, ведь может же такое произойти (и наверняка происходит), что программа читает буфер контроллера в тот момент, пока ПЛИС в него записывает, а такой функции, чтобы узнать сколько байт находится в буфере, у Сайпресса нет... работал раньше с FT245 от FTDI, для него в библиотеке dll такая функция есть, и с ним все работало нормально... PS. Packet End у нас формируется автоматически, самим контроллером.
  17. гаснет lcd

    ок, все решилось заменой маски в строке BTCTL |= BTFRFQ1 | BTFRFQ0 на простое присваивание; всего не углядишь.. спасибо
  18. гаснет lcd

    добрый вечер! как думаете, почему может гаснуть lcd панель (ITS-G0824), подключенная а МК в static режиме? загорается буквально на секунду при включении питания и всё! вот собстно программа, (сделано так, что я зажигаю все сегменты индикатора), к XT1 подключен часовой кварц: void main(void) { unsigned int i,j; WDTCTL = WDTPW + WDTHOLD; LCDCTL = LCDSON | LCDON | LCDP2 | LCDP1; // S0 - S35 BTCTL |= BTFRFQ1 | BTFRFQ0 ; do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0x47FF; i > 0; i--); // Time for flag to set } while (FLL_CTL0 & LFOF);// OSCFault flag still set? IFG1 &= ~OFIFG; FLL_CTL1 |= SELM_A; for( int j = 0; j < 16 ; ++j ) { LCDMEM [ j ] = 0xFF ; } while(1) {} }
  19. здравствуйте. Такой странный вопрос, если сконфигурировать ногу плис как выход , выдать на нее периодический сигнал, и подключить ее к ВЫХОДУ другой кмоп микросхемы, где сидит логический ноль, то будет ли КЗ и сгорит ли выход плис?
  20. Цитата(SM @ Feb 25 2015, 19:41) Это зависит от того, какой мощности тот, другой, выход, и какой мощности выход ПЛИС. Скорее всего, ничего не сгорит, а на шине будут "странные" уровни. Но, может, и сгорит. КЗ не будет, так как ограничение выходного тока ПЛИС обычно значительно меньше ограничения по току КЗ источника питания. то-то я и смотрю, пару раз лепил подобные косяки, и ничего не сгорало.. было интересно, почему так происходит... все-таки более чем вероятно, что максимальный ток ноги ПЛИС будет превышен, или не факт? конкретно с чем было дело - это Virtex 4 и Сypress ez-usb fx2
  21. добрый вечер. уважаемые знатоки, не проясните ли один момент? в общем есть входной сигнал ADCI и клок CLK. в тайминг репорте прочитал вот это : Setup/Hold to clock CLK ------------+------------+------------+------------------+--------+ | Setup to | Hold to | | Clock | Source | clk (edge) | clk (edge) |Internal Clock(s) | Phase | ------------+------------+------------+------------------+--------+ ADCI<0> | -0.715®| 4.209®|CLK10 | 0.000| и для эксперимента задал для ADCI offset in = -0.715 ns (то есть СLK опережает ADCI на 0.715). но после имплементации в отчете написано что все тайминги сошлись.. как это так получилось? -0.715 - это же по сути data delay - clock delay (от входных пинов до регистра), и я задал столько же в констрейне. стало быть, должно получиться что Tsu для этого регистра будет нулевым (0.715 -0.715 = 0)? ISE семерка, спартан 3.
  22. Цитата(SM @ Feb 2 2015, 11:39) Было бы странно, если бы считался. слак - это ЗАПАС - если он нулевой, то констрейн выполнен, но без запаса. но все-таки странновато, что во временном отчете, что Квартуса, что ISE, data path -это время от data входа плис до выхода триггера. у всех ли плис время tpd триггера больше времени tsu того же триггера? и вот это я не пойму--- Setup/Hold to clock CLK6I ------------+------------+------------+------------------+--------+ | Setup to | Hold to | | Clock | Source | clk (edge) | clk (edge) |Internal Clock(s) | Phase | ------------+------------+------------+------------------+--------+ ADCI<0> | -0.715®| 4.209®|CLK20N | 0.000| ------------+------------+------------+------------------+--------+ что здесь означает hold to clk (4.209)? откуда оно берется? СLK(входной) я задал 80 ns. cоответственно СLK20N = 24 ns
  23. Как ни странно, в ТаймКвесте слак в 0 ns тоже не считается ошибкой...
  24. Цитата(des00 @ Jan 29 2015, 18:50) вы живете в информационном вакууме ? http://www.nationaldefense.ru/includes/per...45/detail.shtml Да если и научатся делать целиком свои плисины, то их будут на тележке возить Не пойму, чем харахорятся авторы статьи, на которую Вы дали ссылку, тем что сделали плату компьютера на процессоре Intel Atom? или тем что сами развели плату?
  25. разрешите поинтересоваться, что Вас сподвигло использовать данные плис? неужто проблема сейчас купить Циклон1/Циклон2? или тут дело принципа?