Я собираюсь разработать преобразователь последовательного интерфейса в параллельный в Verilog, который преобразует последовательный вход с быстрым тактовым сигналом в параллельный вход с более медленным тактовым сигналом. Я пробовал следующий код, который работает в RTL, но не проверяет Cadence Conformal. nclk в 16 раз быстрее clk. Последовательные данные поступают со скоростью nclk, а параллельные данные должны выходить с частотой clk.
sEEG - Последовательный вход eegOut - Параллельный выход
У меня могут быть только clk и nclk в качестве рабочих ссылок из-за ограничений контактной площадки с лентой.
Ниже приведен код, который я придумал, который хорошо работает в функциональном моделировании, но формальная проверка не работает.
module deserializer(sEEG, nclk, clk, eegOut);
input sEEG;
input nclk,clk;
reg [15:0] temp;
output reg [15:0] eegOut;
reg [4:0] i;
always @(negedge nclk) begin
temp[i] = sEEG;
i = i + 1;
end
always@(posedge clk) begin
i<=0;
eegOut <= temp;
end
endmodule