Altera_Forum
Honored Contributor
10 years agoConstraining interface with multiply clocks
Hi
I got the following problem: FPGA is controlling DDS (AD9910) driver with internal clock sysclk running at 640 MHz. The spec says that dds control pins are sampled with sys_clk running 1/4 of sysclk = 160MHz and control signals timing should be ts = 1.75ns, th=0 ns, to that clock. FPGA control logic is running at 80MHz ( main FPGA clock got same source as DDS clock, but it goes thru clock buffer device). DDS got special pin SYNC_inp to synchronize its internal clock that should be run with 1/16 of sysclk = 40MHz. I want to generate that signal from FPGA pll to synchronize control signals from FPGA to DDS sys_clk clock. How should i write the constrains as all 3 clocks of interrest are with different frequencys. In pll i created 40MHz clock that is shifted 180 degrees compared to 80MHz control logic in FPGA. create_generated_clock -name DDS_SYNQ_CLOCK_ext -source [get_pins {inst5|m25_pll_inst|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk}] [get_ports {DDSA_SYNC_INp}] -multiply_by 4 I used multply by 4 as DDS sampling signal is running at 160MHz ( am I correct) assuming 0 ns path delays I wrote output delays are: set_output_delay -clock { DDS_SYNQ_CLOCK_ext } -max 1.75 [get_ports {DDS_CONTROL_SIGNALS [*]}] set_output_delay -clock { DDS_SYNQ_CLOCK_ext } -min 0.0 [get_ports {DDS_CONTROL_SIGNALS [*]}] my question is Is it correct, should be there any multicycle as DDS_CONTROL_SIGNALS run at 80MHz and they are sampled by external device with 160MHz clock ?