Приветствую всех!
Есть интересная задача - задать временные ограничения для проекта, работающего с АЦП MAX1186. Особенность АЦП в том, что шина данных у него мультиплексированная. Сам АЦП двухканальный, но шина одна.
Диаграмма его работы следующая:

Пользуясь статьями по Synopsys Design Constraint, сделал следующее:
Код
##ADC
#clock source to destination clock pin delay
set clkA_delay_max [expr 22.0*0.010]
set clkA_delay_min [expr 22.0*0.005]
#source to destination data pins delay
set bdA_delay_max [expr 22.0*0.010]
set bdA_delay_min [expr 22.0*0.005]
#ADC parameters
set Tco_max 8
set Tco_min 3
set usedTsu [expr $clkA_delay_max + $Tco_max + $bdA_delay_max]
set usedTh [expr $clkA_delay_min + $Tco_min + $bdA_delay_min]
set_input_delay -clock adcclk -max $usedTsu [get_ports {adc[*]}]
set_input_delay -clock adcclk -min $usedTh [get_ports {adc[*]}]
Данные с порта adc[*] поступают на регистры и в последующем обрабатываюся:
Код
adcclk=vcc;
adcclk.clk=80mhz;
adc_a[9..0]=adc[9..0];
adc_a[9..0].clk=adcclk;
adc_b[9..0]=adc[9..0];
adc_b[9..0].clk=!adcclk;
Ограничения, заданные таким образом выполняются, но работает проект не так, как нужно. В регистре adc_a данные канала "B" и наоборот.
Я так понимаю, что заданные ограничения распространяются только на восходящий фронт частоты adcclk. А как задать нисходящий?
Уже подумал, что нужно регистры тактировать частотой 80 Мгц с соответствующим сигналом разрешения записи то в один, то в другой. Но физически частота тактирования АЦП 40 МГц - сигнал adcclk. И окончательно запутался.
Подскажите как быть!
И, кстати, из pdf-ки на АЦП не ясно как правильно задать Tco_min, так как в таблице присутствует только max.