addi II 0 13 марта, 2018 Опубликовано 13 марта, 2018 · Жалоба Здравствуйте! Пытаюсь свой clk = 20Mhz умножить с помощью Vivado template PLL - MMCME2_ADV Вот мой инстанс: MMCME2_ADV #( .BANDWIDTH("OPTIMIZED"), // Jitter programming (OPTIMIZED, HIGH, LOW) .CLKFBOUT_MULT_F(35.0), // Multiply value for all CLKOUT (2.000-64.000). .CLKFBOUT_PHASE(0.0), // Phase offset in degrees of CLKFB (-360.000-360.000). // CLKIN_PERIOD: Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz). .CLKIN1_PERIOD(50.0), .CLKIN2_PERIOD(0.0), // CLKOUT0_DIVIDE - CLKOUT6_DIVIDE: Divide amount for CLKOUT (1-128) .CLKOUT1_DIVIDE(1), .CLKOUT2_DIVIDE(1), .CLKOUT3_DIVIDE(1), .CLKOUT4_DIVIDE(1), .CLKOUT5_DIVIDE(1), .CLKOUT6_DIVIDE(1), .CLKOUT0_DIVIDE_F(1.0), // Divide amount for CLKOUT0 (1.000-128.000). // CLKOUT0_DUTY_CYCLE - CLKOUT6_DUTY_CYCLE: Duty cycle for CLKOUT outputs (0.01-0.99). .CLKOUT0_DUTY_CYCLE(0.5), .CLKOUT1_DUTY_CYCLE(0.5), .CLKOUT2_DUTY_CYCLE(0.5), .CLKOUT3_DUTY_CYCLE(0.5), .CLKOUT4_DUTY_CYCLE(0.5), .CLKOUT5_DUTY_CYCLE(0.5), .CLKOUT6_DUTY_CYCLE(0.5), // CLKOUT0_PHASE - CLKOUT6_PHASE: Phase offset for CLKOUT outputs (-360.000-360.000). .CLKOUT0_PHASE(0.0), .CLKOUT1_PHASE(0.0), .CLKOUT2_PHASE(0.0), .CLKOUT3_PHASE(0.0), .CLKOUT4_PHASE(0.0), .CLKOUT5_PHASE(0.0), .CLKOUT6_PHASE(0.0), .CLKOUT4_CASCADE("FALSE"), // Cascade CLKOUT4 counter with CLKOUT6 (FALSE, TRUE) .COMPENSATION("ZHOLD"), // ZHOLD, BUF_IN, EXTERNAL, INTERNAL .DIVCLK_DIVIDE(1), // Master division value (1-106) // REF_JITTER: Reference input jitter in UI (0.000-0.999). .REF_JITTER1(0.0), .REF_JITTER2(0.0), .STARTUP_WAIT("FALSE"), // Delays DONE until MMCM is locked (FALSE, TRUE) // Spread Spectrum: Spread Spectrum Attributes .SS_EN("FALSE"), // Enables spread spectrum (FALSE, TRUE) .SS_MODE("CENTER_HIGH"), // CENTER_HIGH, CENTER_LOW, DOWN_HIGH, DOWN_LOW .SS_MOD_PERIOD(10000), // Spread spectrum modulation period (ns) (VALUES) // USE_FINE_PS: Fine phase shift enable (TRUE/FALSE) .CLKFBOUT_USE_FINE_PS("FALSE"), .CLKOUT0_USE_FINE_PS("FALSE"), .CLKOUT1_USE_FINE_PS("FALSE"), .CLKOUT2_USE_FINE_PS("FALSE"), .CLKOUT3_USE_FINE_PS("FALSE"), .CLKOUT4_USE_FINE_PS("FALSE"), .CLKOUT5_USE_FINE_PS("FALSE"), .CLKOUT6_USE_FINE_PS("FALSE") ) MMCME2_ADV_inst ( // Clock Outputs: 1-bit (each) output: User configurable clock outputs .CLKOUT0(CLKOUT0), // 1-bit output: CLKOUT0 .CLKOUT0B(CLKOUT0B), // 1-bit output: Inverted CLKOUT0 .CLKOUT1(CLKOUT1), // 1-bit output: CLKOUT1 .CLKOUT1B(CLKOUT1B), // 1-bit output: Inverted CLKOUT1 .CLKOUT2(CLKOUT2), // 1-bit output: CLKOUT2 .CLKOUT2B(CLKOUT2B), // 1-bit output: Inverted CLKOUT2 .CLKOUT3(CLKOUT3), // 1-bit output: CLKOUT3 .CLKOUT3B(CLKOUT3B), // 1-bit output: Inverted CLKOUT3 .CLKOUT4(CLKOUT4), // 1-bit output: CLKOUT4 .CLKOUT5(CLKOUT5), // 1-bit output: CLKOUT5 .CLKOUT6(CLKOUT6), // 1-bit output: CLKOUT6 // DRP Ports: 16-bit (each) output: Dynamic reconfiguration ports .DO(DO), // 16-bit output: DRP data .DRDY(DRDY), // 1-bit output: DRP ready // Dynamic Phase Shift Ports: 1-bit (each) output: Ports used for dynamic phase shifting of the outputs .PSDONE(PSDONE), // 1-bit output: Phase shift done // Feedback Clocks: 1-bit (each) output: Clock feedback ports .CLKFBOUT(CLKFBOUT), // 1-bit output: Feedback clock .CLKFBOUTB(CLKFBOUTB), // 1-bit output: Inverted CLKFBOUT // Status Ports: 1-bit (each) output: MMCM status ports .CLKFBSTOPPED(CLKFBSTOPPED), // 1-bit output: Feedback clock stopped .CLKINSTOPPED(CLKINSTOPPED), // 1-bit output: Input clock stopped .LOCKED(LOCKED), // 1-bit output: LOCK // Clock Inputs: 1-bit (each) input: Clock inputs .CLKIN1(clk), // 1-bit input: Primary clock .CLKIN2(CLKIN2), // 1-bit input: Secondary clock // Control Ports: 1-bit (each) input: MMCM control ports .CLKINSEL(1), // 1-bit input: Clock select, High=CLKIN1 Low=CLKIN2 .PWRDWN(PWRDWN), // 1-bit input: Power-down .RST(0), // 1-bit input: Reset // DRP Ports: 7-bit (each) input: Dynamic reconfiguration ports .DADDR(DADDR), // 7-bit input: DRP address .DCLK(DCLK), // 1-bit input: DRP clock .DEN(DEN), // 1-bit input: DRP enable .DI(DI), // 16-bit input: DRP data .DWE(DWE), // 1-bit input: DRP write enable // Dynamic Phase Shift Ports: 1-bit (each) input: Ports used for dynamic phase shifting of the outputs .PSCLK(PSCLK), // 1-bit input: Phase shift clock .PSEN(PSEN), // 1-bit input: Phase shift enable .PSINCDEC(PSINCDEC), // 1-bit input: Phase shift increment/decrement // Feedback Clocks: 1-bit (each) input: Clock feedback ports .CLKFBIN(CLKFBIN) // 1-bit input: Feedback clock ); Итого на выходе вместо ожидаемых 700МHz вижу наоборот деление частоты где в 2.5 раза Подскажите пожалуйста, кто знает, что не так Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_su 1 13 марта, 2018 Опубликовано 13 марта, 2018 · Жалоба Здравствуйте! Пытаюсь свой clk = 20Mhz умножить с помощью Vivado template PLL - MMCME2_ADV Вот мой инстанс: MMCME2_ADV #( .BANDWIDTH("OPTIMIZED"), // Jitter programming (OPTIMIZED, HIGH, LOW) .CLKFBOUT_MULT_F(35.0), // Multiply value for all CLKOUT (2.000-64.000). .CLKFBOUT_PHASE(0.0), // Phase offset in degrees of CLKFB (-360.000-360.000). // CLKIN_PERIOD: Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz). .CLKIN1_PERIOD(50.0), .CLKIN2_PERIOD(0.0), // CLKOUT0_DIVIDE - CLKOUT6_DIVIDE: Divide amount for CLKOUT (1-128) .CLKOUT1_DIVIDE(1), .CLKOUT2_DIVIDE(1), .CLKOUT3_DIVIDE(1), .CLKOUT4_DIVIDE(1), .CLKOUT5_DIVIDE(1), .CLKOUT6_DIVIDE(1), .CLKOUT0_DIVIDE_F(1.0), // Divide amount for CLKOUT0 (1.000-128.000). // CLKOUT0_DUTY_CYCLE - CLKOUT6_DUTY_CYCLE: Duty cycle for CLKOUT outputs (0.01-0.99). .CLKOUT0_DUTY_CYCLE(0.5), .CLKOUT1_DUTY_CYCLE(0.5), .CLKOUT2_DUTY_CYCLE(0.5), .CLKOUT3_DUTY_CYCLE(0.5), .CLKOUT4_DUTY_CYCLE(0.5), .CLKOUT5_DUTY_CYCLE(0.5), .CLKOUT6_DUTY_CYCLE(0.5), // CLKOUT0_PHASE - CLKOUT6_PHASE: Phase offset for CLKOUT outputs (-360.000-360.000). .CLKOUT0_PHASE(0.0), .CLKOUT1_PHASE(0.0), .CLKOUT2_PHASE(0.0), .CLKOUT3_PHASE(0.0), .CLKOUT4_PHASE(0.0), .CLKOUT5_PHASE(0.0), .CLKOUT6_PHASE(0.0), .CLKOUT4_CASCADE("FALSE"), // Cascade CLKOUT4 counter with CLKOUT6 (FALSE, TRUE) .COMPENSATION("ZHOLD"), // ZHOLD, BUF_IN, EXTERNAL, INTERNAL .DIVCLK_DIVIDE(1), // Master division value (1-106) // REF_JITTER: Reference input jitter in UI (0.000-0.999). .REF_JITTER1(0.0), .REF_JITTER2(0.0), .STARTUP_WAIT("FALSE"), // Delays DONE until MMCM is locked (FALSE, TRUE) // Spread Spectrum: Spread Spectrum Attributes .SS_EN("FALSE"), // Enables spread spectrum (FALSE, TRUE) .SS_MODE("CENTER_HIGH"), // CENTER_HIGH, CENTER_LOW, DOWN_HIGH, DOWN_LOW .SS_MOD_PERIOD(10000), // Spread spectrum modulation period (ns) (VALUES) // USE_FINE_PS: Fine phase shift enable (TRUE/FALSE) .CLKFBOUT_USE_FINE_PS("FALSE"), .CLKOUT0_USE_FINE_PS("FALSE"), .CLKOUT1_USE_FINE_PS("FALSE"), .CLKOUT2_USE_FINE_PS("FALSE"), .CLKOUT3_USE_FINE_PS("FALSE"), .CLKOUT4_USE_FINE_PS("FALSE"), .CLKOUT5_USE_FINE_PS("FALSE"), .CLKOUT6_USE_FINE_PS("FALSE") ) MMCME2_ADV_inst ( // Clock Outputs: 1-bit (each) output: User configurable clock outputs .CLKOUT0(CLKOUT0), // 1-bit output: CLKOUT0 .CLKOUT0B(CLKOUT0B), // 1-bit output: Inverted CLKOUT0 .CLKOUT1(CLKOUT1), // 1-bit output: CLKOUT1 .CLKOUT1B(CLKOUT1B), // 1-bit output: Inverted CLKOUT1 .CLKOUT2(CLKOUT2), // 1-bit output: CLKOUT2 .CLKOUT2B(CLKOUT2B), // 1-bit output: Inverted CLKOUT2 .CLKOUT3(CLKOUT3), // 1-bit output: CLKOUT3 .CLKOUT3B(CLKOUT3B), // 1-bit output: Inverted CLKOUT3 .CLKOUT4(CLKOUT4), // 1-bit output: CLKOUT4 .CLKOUT5(CLKOUT5), // 1-bit output: CLKOUT5 .CLKOUT6(CLKOUT6), // 1-bit output: CLKOUT6 // DRP Ports: 16-bit (each) output: Dynamic reconfiguration ports .DO(DO), // 16-bit output: DRP data .DRDY(DRDY), // 1-bit output: DRP ready // Dynamic Phase Shift Ports: 1-bit (each) output: Ports used for dynamic phase shifting of the outputs .PSDONE(PSDONE), // 1-bit output: Phase shift done // Feedback Clocks: 1-bit (each) output: Clock feedback ports .CLKFBOUT(CLKFBOUT), // 1-bit output: Feedback clock .CLKFBOUTB(CLKFBOUTB), // 1-bit output: Inverted CLKFBOUT // Status Ports: 1-bit (each) output: MMCM status ports .CLKFBSTOPPED(CLKFBSTOPPED), // 1-bit output: Feedback clock stopped .CLKINSTOPPED(CLKINSTOPPED), // 1-bit output: Input clock stopped .LOCKED(LOCKED), // 1-bit output: LOCK // Clock Inputs: 1-bit (each) input: Clock inputs .CLKIN1(clk), // 1-bit input: Primary clock .CLKIN2(CLKIN2), // 1-bit input: Secondary clock // Control Ports: 1-bit (each) input: MMCM control ports .CLKINSEL(1), // 1-bit input: Clock select, High=CLKIN1 Low=CLKIN2 .PWRDWN(PWRDWN), // 1-bit input: Power-down .RST(0), // 1-bit input: Reset // DRP Ports: 7-bit (each) input: Dynamic reconfiguration ports .DADDR(DADDR), // 7-bit input: DRP address .DCLK(DCLK), // 1-bit input: DRP clock .DEN(DEN), // 1-bit input: DRP enable .DI(DI), // 16-bit input: DRP data .DWE(DWE), // 1-bit input: DRP write enable // Dynamic Phase Shift Ports: 1-bit (each) input: Ports used for dynamic phase shifting of the outputs .PSCLK(PSCLK), // 1-bit input: Phase shift clock .PSEN(PSEN), // 1-bit input: Phase shift enable .PSINCDEC(PSINCDEC), // 1-bit input: Phase shift increment/decrement // Feedback Clocks: 1-bit (each) input: Clock feedback ports .CLKFBIN(CLKFBIN) // 1-bit input: Feedback clock ); Итого на выходе вместо ожидаемых 700МHz вижу наоборот деление частоты где в 2.5 раза Подскажите пожалуйста, кто знает, что не так Спасибо! Добрый день. Сам пока не пользовался этим компонентом. У вас вход RST=0, может попробовать подать на него сначала 1? А при задании другого коэффициента умножения или коэффициента деления картина изменяется? LOCKED устанавливается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 13 марта, 2018 Опубликовано 13 марта, 2018 (изменено) · Жалоба спасибо за поддержку, попробовал, клок не меняется CLKOUT0, CLKOUT1,..., CLKFBOUT одинаковы, даже при изменении CLKOUT1DIVIDE >1 LOCKED в нуле при RST = 1 или 0 Похоже PLL не запускается и что-то генерит по умолчанию Неужели необходимо ей что-то загонять по Dynamic Reconfiguration port чтобы она завелась? Изменено 13 марта, 2018 пользователем addi II Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 13 марта, 2018 Опубликовано 13 марта, 2018 (изменено) · Жалоба заработала PLLка, как ни странно надо было CLKFBIN завести на CLKFBOUT)... Вопрос теперь как делать фазовый сдвиг и в чем он делается, где то вычитал что якобы к градусах(десятичные значения) А как и куда эти градусы записывать не совсем понятно... и Еще вопрос , что-то теперь стал вивадо ругаться на превышении температуры, аж целых 17Вт рассчитала, теперь боюсь включать) Наверно надо написать какие нибудь констрейны, но те которые я пишу похоже вивадо не воспринимает create_clock -name clk -period 1.428 -waveform { 0 6.665 } [get_ports clk] create_clock -name clk_dac_out -period 1.428 -waveform { 0 6.665 } [get_ports clk_dac_out] Изменено 13 марта, 2018 пользователем addi II Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_su 1 13 марта, 2018 Опубликовано 13 марта, 2018 · Жалоба Если у вас кристалл 7-й серии, то руководство по MMCME2_ADV: ug472_7Series_Clocking.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 13 марта, 2018 Опубликовано 13 марта, 2018 · Жалоба Если у вас кристалл 7-й серии, то руководство по MMCME2_ADV: кристал artix-7, читал этот док перед созданием темы на форуме)... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться