запутался, не понимаю как правильно реализовать передачу данных с одного клока на другой.
Пусть у меня есть два клока,
Код
wire Clk400, Clk200;
my_pll my_pll_module(Clk50, Clk400, Clk200);
my_pll my_pll_module(Clk50, Clk400, Clk200);
которые я получаю с одного PLL и эти клоки имеют частоты 400 и 200МГц соответственно.
Мне часто надо переводить два данных с клока 200 в одно данное в клоке 400 и наоборот.
Можно конечно это делать и с помощью ФИФО, но вроде тут нечего конвейеризовать, поэтому хочется сделать например так:
Код
reg In400;
reg Out200[0:1];
reg In200[0:1];
reg Out400;
reg TempOut400, TempIn400;
always @(posedge Clk400)
begin
// переводим из 400 в 200
TempIn400<=In400;
if(Clk200) Out200<={TempIn400, In400};
// переводим из 200 в 400
if(Clk200) {Out400, TempOut400}<=In200;
else Out400<=TempOut400;
end
reg Out200[0:1];
reg In200[0:1];
reg Out400;
reg TempOut400, TempIn400;
always @(posedge Clk400)
begin
// переводим из 400 в 200
TempIn400<=In400;
if(Clk200) Out200<={TempIn400, In400};
// переводим из 200 в 400
if(Clk200) {Out400, TempOut400}<=In200;
else Out400<=TempOut400;
end
но у меня всегда при компиляции проекта возникают слаки от Clk200 к Out200 и Out400.
Посоветуйте, пожалуйста, кто знает, как с этим можно побороться!
Спасибо
ИИВ