likeasm 0 16 мая, 2014 Опубликовано 16 мая, 2014 (изменено) · Жалоба Задался вопросом динамической реконфигурации модуля PLL_ADV для Spartan 6. Скачал DRP модуль для Spartan 6, действовал по мануалу xapp879.pdf, cобрал проект в ISE 14.3. Начал симулировать... Тут PLL начал ругаться: Warning : Address DADDR=00101 is unsupported at PLL_ADV instance main.PLL_ADV_inst at time Warning : Address DADDR=00101 is unsupported at PLL_ADV instance main.PLL_ADV_inst at time Warning : Address DADDR=00101 is unsupported at PLL_ADV instance main.PLL_ADV_inst at time Warning : Address DADDR=00111 is unsupported at PLL_ADV instance main.PLL_ADV_inst at time Warning : Address DADDR=00111 is unsupported at PLL_ADV instance main.PLL_ADV_inst at time Warning : Address DADDR=01000 is unsupported at PLL_ADV instance main.PLL_ADV_inst at time такое ощущение, что адреса регистров реконфигурации PLL другие нежели в описании. Есть у кого опыт по данному вопросу? Изменено 16 мая, 2014 пользователем likeasm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 16 мая, 2014 Опубликовано 16 мая, 2014 · Жалоба вы в модуле PLL не забыли поставить галочку возможности переконфигурирования на лету? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
likeasm 0 16 мая, 2014 Опубликовано 16 мая, 2014 (изменено) · Жалоба Вот код основного модуля. Если под галочкой подразумевается .DEN, то им управляет DRP State машина. Или разговор, про другую галочку? module main( input wire DRP_SADDR, input wire DRP_SEN, input wire DRP_RST, output wire CLKOUT0, output wire CLKOUT1, output wire CLKOUT2, output wire CLKOUT3, output wire CLKOUT4, output wire CLKOUT5, output wire DRP_SRDY ); wire [15:0] DO; wire [15:0] DI; wire [4:0] DADDR; STARTUP_SPARTAN6 STARTUP_SPARTAN6_inst ( .CFGCLK(CFGCLK), // 1-bit output: Configuration logic main clock output. .CFGMCLK(CFGMCLK), // 1-bit output: Configuration internal oscillator clock output. .EOS(EOS), // 1-bit output: Active high output signal indicates the End Of Configuration. .CLK(1'b0), // 1-bit input: User startup-clock input .GSR(1'b0), // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name) .GTS(1'b0), // 1-bit input: Global 3-state input (GTS cannot be used for the port name) .KEYCLEARB(1'b0) // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM) ); PLL_ADV #( .BANDWIDTH("OPTIMIZED"), // "HIGH", "LOW" or "OPTIMIZED" .CLKFBOUT_MULT(20), // Multiply value for all CLKOUT clock outputs (1-64) .CLKFBOUT_PHASE(0.0), // Phase offset in degrees of the clock feedback output (0.0-360.0). .CLKIN1_PERIOD(20.0), // Input clock period in ns to ps resolution (i.e. 33.333 is 30 .CLKIN2_PERIOD(0.0), // MHz). // CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for CLKOUT# clock output (1-128) .CLKOUT0_DIVIDE(20), .CLKOUT1_DIVIDE(20), .CLKOUT2_DIVIDE(20), .CLKOUT3_DIVIDE(20), .CLKOUT4_DIVIDE(20), .CLKOUT5_DIVIDE(20), // CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for CLKOUT# clock output (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), // CLKOUT0_PHASE - CLKOUT5_PHASE: Output phase relationship for CLKOUT# clock output (-360.0-360.0). .CLKOUT0_PHASE(0.0), .CLKOUT1_PHASE(0.0), .CLKOUT2_PHASE(0.0), .CLKOUT3_PHASE(0.0), .CLKOUT4_PHASE(0.0), .CLKOUT5_PHASE(0.0), .CLK_FEEDBACK("CLKFBOUT"), // Clock source to drive CLKFBIN ("CLKFBOUT" or "CLKOUT0") .COMPENSATION("SYSTEM_SYNCHRONOUS"), // "SYSTEM_SYNCHRONOUS", "SOURCE_SYNCHRONOUS", "EXTERNAL" .DIVCLK_DIVIDE(1), // Division value for all output clocks (1-52) .REF_JITTER(0.1), // Reference Clock Jitter in UI (0.000-0.999). .RESET_ON_LOSS_OF_LOCK("FALSE") // Must be set to FALSE ) PLL_ADV_inst ( .CLKFBDCM(CLKFBDCM), // 1-bit output: PLL_ADV feedback output to compensate if the PLL_ADV is driving // the DCM .CLKFBOUT(CLKFBOUT), // 1-bit output: PLL_ADV feedback output // CLKOUT0 - CLKOUT5: 1-bit (each) output: Clock outputs .CLKOUT0(CLKOUT0), .CLKOUT1(CLKOUT1), .CLKOUT2(CLKOUT2), .CLKOUT3(CLKOUT3), .CLKOUT4(CLKOUT4), .CLKOUT5(CLKOUT5), // CLKOUTDCM0 - CLKOUTDCM5: 1-bit (each) output: Clock output to directly drive DCM when cascading PLL to // DCM .CLKOUTDCM0(CLKOUTDCM0), .CLKOUTDCM1(CLKOUTDCM1), .CLKOUTDCM2(CLKOUTDCM2), .CLKOUTDCM3(CLKOUTDCM3), .CLKOUTDCM4(CLKOUTDCM4), .CLKOUTDCM5(CLKOUTDCM5), .DO(DO), // 16-bit output: DRP output bus .DRDY(DRDY), // 1-bit output: DRP ready output .LOCKED(LOCKED), // 1-bit output: PLL_ADV lock status output .CLKFBIN(CLKFBIN), // 1-bit input: Feedback clock input .CLKIN1(CLKIN1), // 1-bit input: General clock input .CLKIN2(CLKIN2), // 1-bit input: Unsupported .CLKINSEL(1'b1), // 1-bit input: Always connect high .DADDR(DADDR), // 5-bit input: DRP address .DCLK(DCLK), // 1-bit input: Clock input for DRP .DEN(DEN), // 1-bit input: DRP enable .DI(DI), // 16-bit input: DRP Data Input .DWE(DWE), // 1-bit input: DRP write enable .REL(REL), // 1-bit input: Unsupported .RST(RST) // 1-bit input: Reset input ); drp_pll U1(.SADDR(DRP_SADDR), .SEN(DRP_SEN), .SCLK(DRP_SCLK), .RST(DRP_RST), .SRDY(DRP_SRDY), .DO(DO), .DRDY(DRDY), .LOCKED(LOCKED), .DWE(DWE), .DEN(DEN), .DADDR(DADDR), .DI(DI), .DCLK(DCLK), .RST_PLL(RST)); assign CLKIN1=CFGMCLK; assign CLKFBIN=CLKFBOUT; assign DRP_SCLK=CFGMCLK; endmodule drp_pll.v main.v Изменено 17 мая, 2014 пользователем des00 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 17 мая, 2014 Опубликовано 17 мая, 2014 · Жалоба речь шла о том, что когда через генератор IP Core - clock wizard вы делаете модуль формирования клока. Там среди прочего есть галочка сделать ему возможность менять частоту на лету или нет. Естественно она где - то среди кучи этих сигналов имеется, но так оно как то понятнее и удобнее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 0 17 мая, 2014 Опубликовано 17 мая, 2014 · Жалоба xilinx прекрасен В итоге-то симулируется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
likeasm 0 17 мая, 2014 Опубликовано 17 мая, 2014 (изменено) · Жалоба Спасибо за ответы. речь шла о том, что когда через генератор IP Core - clock wizard вы делаете модуль формирования клока. Там среди прочего есть галочка сделать ему возможность менять частоту на лету или нет. Естественно она где - то среди кучи этих сигналов имеется, но так оно как то понятнее и удобнее завтра, попробую синтезировать схему через IP core, может что-то другое получиться. В итоге-то симулируется? Да как-то коряво симулируется, адреса DADDR state машина выставляет согласно мануала, запись DWE и разрешение DEN тоже дергает. На шину данных DI почему-то выставляется состояния типа xx1011xx1x01, может так и задумано, чтобы не дергать не нужные биты. В общем в итоге после последнего state на выходы клоков CLKOUT0-CLKOUT5 устанавливается либо 1 либо 0, никакими меандрами и не пахнет. Изменено 17 мая, 2014 пользователем likeasm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться