Altera_Forum
Honored Contributor
15 years agoQuestions about Clock Control Block, Clock Divider and TimeQuest
Hi,
My design is like this: a 50MHZ clock inputs to one the PLLs in Cyclone III, the PLL will generate a 240MHZ that will pass through a CCB( Clock Control Block) for global clock network. Then the 240MHZ will be divided by 4 (via synchronous counter) to generate a 60MHZ FPGA_CLOCK, divided by 6(again via synchronous counter) to generate 40MHZ (the clock is actually programmable for 20MHZ, 30MHZ, 40MHZ and 60MHZ) ADC_CLOCK; The FPGA_CLOCK and ADC_CLOCK will pass a multiplexer(2:1) and a CCB to clock dual-port RAM. The FPGA_CLOCK will pass through a CCB to clcok internal registers. The ADC_CLOCK will pass through a CCB the a ouput pin to clock external ADC. Here is my questions: 1) Are these Clock Control Blocks absolutely needed? 2) With TimeQuest, only the 50MHZ can be constrained by create_clock, and all other clocks should be constrained by create_generated_clock. Is this correct? 3) When a clock passes through a CCB, should I constrain its input and output clocks seperately? For example, in my design, the PLL output (240MHZ) passes through a CCB to clock dividers. I have "derive_pll_clocks" to constrain PLL's output that is the CCB's input. in sdc file already. Should I include the following sentence to constrain the CCB's output? create_generated_clock -name CLK_240MHZ -source [get_nets {mCLOCK|mPLL|altpll_component|auto_generated|wire_pll1_clk[0]}] [get_nets {mCLOCK|mPLL_BUF|clk_ctl_altclkctrl_9nd_component|wire_clkctrl1_outclk}] Thanks.