背景:100m时钟域里面有两个单比特信号,它们在同一时刻进行赋值操作。然后在250m的时钟域对其进行打两拍操作。然后使用ILA观察这两个信号的上升沿位置关系。
结果:
两个信号是wr_fdma_4ram_done与wr_one_circle_done
从上面两张图看到,两个信号有可能不是同时被采集到的!!!
if(!fdma_wbusy)
begin
case(rd_ram_en)
4'b0001:
begin
state <= WR_RAM2;
end
4'b0010:
begin
state <= WR_RAM3;
end
4'b0100:
begin
state <= WR_RAM4;
end
4'b1000://依次读4个ram
begin
if(wr_fdma_done_cnt == 32'd2239) //存储一圈数据标志,切换ddr存储空间
begin
wr_fdma_done_cnt <= 32'd0;
chose_ddr_addr <= ~chose_ddr_addr;
//fdma_waddr_r <= 32'd0;
change_ld_num <= change_ld_num + 1'b1 ;
wr_one_circle_done <= 1'b1;
end
else
begin
wr_fdma_done_cnt <= wr_fdma_done_cnt + 1'b1;
chose_ddr_addr <= chose_ddr_addr;
//fdma_waddr_r <= fdma_waddr_r;
change_ld_num <= change_ld_num ;
wr_one_circle_done <= 1'b0;
end
state <= IDLE;
wr_fdma_4ram_done <= 1'b1 ;
end
default:
begin
state <= IDLE;
end
endcase