Здравствуйте.
Делаю проект чтения данных с АЦП ADS9110 плиской MAX10.
Входные сигналы АЦП: CNVST, CS, SCLK, SDO и SDI.
Один модуль сначала конфигурирует АЦП, формируя сигналы CS, SCLK и SDI (выходной сигнал для ПЛИС), после этого начинает работать постоянно модуль чтения данных, формируя CNVST (2МГц), CS (2Мгц), SCLK (50МГц) и считывая данные по линиям SDO. Сигналы CS и SCLK объединяются по И и выдаются на пин mosi_ADS9110.
Как теперь это всё хозяйство описать констрейнами?
Т.к. сигнал SCLK формируется из основного клока ПЛИС, то его описание не вызывает вопросов. Так же нет вопросов при описании выходного сигнала SDI для АЦП (mosi_ADS9110), задержки указаны в datasheet.
tsu_CKDI - Setup time: SDI data valid to the SCLK capture edge - 1.2ns
tht_CKDI - Hold time: SCLK capture edge to (previous) data valid on SDI - 0.65ns
create_clock -period 20.000 -name {clk_50MHz_in} [get_ports {clk_50MHz_in}]
create_generated_clock -source {generator|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 2 -duty_cycle 50.00 -name CLK_100MHz {generator|altpll_component|auto_generated|pll1|clk[0]}
derive_clock_uncertainty
create_generated_clock -source {generator|altpll_component|auto_generated|pll1|clk[0]} -divide_by 2 -name ADC_CONF_CLK {adc_config:adc_conf|sck} #клок модуля конфигурирования
create_generated_clock -source {generator|altpll_component|auto_generated|pll1|clk[0]} -divide_by 2 -name ADC_MEAS_CLK {adc_read_quadSPI:adc_meas|sck} #клок модуля чтения
set_output_delay -clock [get_clocks {adc_config:adc_conf|sck}] -max 1.2 [get_ports {mosi_ADS9110}]
set_output_delay -clock [get_clocks {adc_config:adc_conf|sck}] -min -0.65 [get_ports {mosi_ADS9110}]
Теперь нужно как то описать минимальные задержки от спада CS до первого фронта SCLK и данных, и так же для фронта CS.
Т.е. в этом случае, в моем понимании, CS является клоком для сигнала SCLK и данных. Вот тут я не понимаю правильно ли я думаю. Если правильно, то создать виртуальный клок и описать задержки.