请教ISE中CHIPSCOPE的问题
.34
我查的中间的一个寄存器,明显和理解的有差别
.34
本来就不一致。
chipscope就是一个示波器。它能否看到你想要的波形取决于采样时钟,触发条件,采样深度等因素。
另外,在某些情况下,如果代码风格不是很好,加入chipscope会影响优化结果,可能导致行为都不一样。
Chipscope采样时钟和被采样对象的时钟一样,并且没有timing violation的话,信号应该和仿真的一致,除非FPGA运行和仿真的scenario不一样
看你怎么定义“一致”了。
你从chipscope看到的波形和触发条件还有存储深度有很大关系的。
比如,X信号只会在A信号的上升沿后跳变几下,可是你用了B信号好作为触发,或者使用立即触发,
所以你从Chipscope根本看不到X信号的变化。
这种情况当然可以说是和仿真“一致”的,但是我猜有可能这就是楼主所说的“不一致”的原因。
如果不是你工具用的不对,就是你代码写的有问题
大多数时候其实都是代码有缺陷
always@(negedge rst_n or posedge sclk_tx)
if(~rst_n) begin
data_right_o <= #1 24'h0;
data_left_o <= #1 24'h0;
end else if(!enable) begin
data_right_o <= #1 24'h0;
data_left_o <= #1 24'h0;
end else if(!read_start) begin
data_right_o <= #1 24'h0;
data_left_o <= #1 24'h0;
/*end else if(ws_tx_rise_3d) begin
data_right_o[23:16]<= #1 data_r;
end else if(ws_tx_rise_4d) begin
data_right_o[15:8] <= #1 data_r;
end else if(ws_tx_rise_5d) begin
data_right_o[7:0] <= #1 data_r;
end else if(ws_tx_rise_6d) begin
data_left_o[23:16] <= #1 data_r;
end else if(ws_tx_rise_7d) begin
data_left_o[15:8] <= #1 data_r;
end else if(ws_tx_rise_8d) begin
data_left_o[7:0] <= #1 data_r;
end*/
end else if(ws_tx_rise_2d) begin
data_right_o[23:16]<= #1 data_r;
end else if(ws_tx_rise_3d) begin
data_right_o[15:8] <= #1 data_r;
end else if(ws_tx_rise_4d) begin
data_right_o[7:0] <= #1 data_r;
end else if(ws_tx_rise_5d) begin
data_left_o[23:16] <= #1 data_r;
end else if(ws_tx_rise_6d) begin
data_left_o[15:8] <= #1 data_r;
end else if(ws_tx_rise_7d) begin
data_left_o[7:0] <= #1 data_r;
end
这段代码应该没有问题吧,采样时钟是sclk_tx
.34