Добрый вечер.
Помогите с конгстреймом.
Есть параллельный АЦП (25 МГц).Его тактирую от отдельного кварцевого генератора.
С АЦП сигнал валидности данных (DV) тактирует ПЛИС (DE0-nano, Cyclone IV). Этот сигнал завожу на pll получаю 50 МГц и использую его для тактирования в SignalTap.
Вот код:
module Main (input clk,input [11:0] data_ADC,output clk_25,output clk_50,output lock,output [7:0] data);
reg [7:0] tmp;
reg [15:0] cont;
pll pll1(.inclk0(clk),.c0(clk_25),.c1(clk_50),.locked(lock));
always @(posedge clk_25)
begin
if(lock)
begin
cont <= cont + 1'b1;
if(cont == 16'b1111111111111111)
tmp <= tmp + 1'b1;
end
end
reg [11 : 0] adc_io_reg;
reg [11 : 0] adc_reg;
always @(negedge clk_25)
begin
if(lock)
{adc_reg, adc_io_reg} <= {adc_io_reg,data_ADC};
end
assign data = tmp;
endmodule
Файл sdc:
set_time_format -unit ns -decimal_places 3
derive_clock_uncertainty
create_clock -period 40.000 -name {clk} [get_ports {clk}]
create_clock -period 40.000 -name {virt_clk}
set_clock_groups -exclusive -group {clk virt_clk}
derive_pll_clocks
Вопрос: как описать описать тактирование по заднему фронту?
Или сдвитуть по фазе clk_25? Как тогда описать?
В SignalTap идёт один мусор.
Спасибо.