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

DRP PLL Startan 6

Задался вопросом динамической реконфигурации модуля 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 другие нежели в описании. Есть у кого опыт по данному вопросу?

Изменено пользователем likeasm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот код основного модуля. Если под галочкой подразумевается .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

Изменено пользователем des00

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

речь шла о том, что когда через генератор IP Core - clock wizard вы делаете модуль формирования клока. Там среди прочего есть галочка сделать ему возможность менять частоту на лету или нет. Естественно она где - то среди кучи этих сигналов имеется, но так оно как то понятнее и удобнее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы.

речь шла о том, что когда через генератор IP Core - clock wizard вы делаете модуль формирования клока. Там среди прочего есть галочка сделать ему возможность менять частоту на лету или нет. Естественно она где - то среди кучи этих сигналов имеется, но так оно как то понятнее и удобнее

 

завтра, попробую синтезировать схему через IP core, может что-то другое получиться.

 

В итоге-то симулируется?

Да как-то коряво симулируется, адреса DADDR state машина выставляет согласно мануала, запись DWE и разрешение DEN тоже дергает. На шину данных DI почему-то выставляется состояния типа xx1011xx1x01, может так и задумано, чтобы не дергать не нужные биты. В общем в итоге после последнего state на выходы клоков CLKOUT0-CLKOUT5 устанавливается либо 1 либо 0, никакими меандрами и не пахнет.

Изменено пользователем likeasm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...