|
发表于 2014-12-29 13:02:40
|
显示全部楼层
你好,我在学习你的串口模块的时候,在实践发送接收接口的时候(接收pc发送,并返回给pc)
测试发现当发送较多的数据的时候,会出现乱码的现象,数据少的时候不会。
后来我分析是发送的时序这里造成的原因,我分析如下。
教程里的程序如下:
else if( TX_En_Sig )
case ( i )
4'd0 :
if( BPS_CLK ) begin i <= i + 1'b1; rTX <= 1'b0; end
4'd1, 4'd2, 4'd3, 4'd4, 4'd5, 4'd6, 4'd7, 4'd8 :
if( BPS_CLK ) begin i <= i + 1'b1; rTX <= TX_Data[ i - 1 ]; end
4'd9 :
if( BPS_CLK ) begin i <= i + 1'b1; rTX <= 1'b1; end
4'd10 :
if( BPS_CLK ) begin i <= i + 1'b1; rTX <= 1'b1; end
4'd11 :
if( BPS_CLK ) begin i <= i + 1'b1; isDone <= 1'b1; end
4'd12 :
begin i <= 1'b0; isDone <= 1'b0; end
endcase
在发送完后 case 11我觉得不需要判断if( BPS_CLK ) ,应为这样会有一个累计误差。后来我修改成为
4'd11 :
begin i <= i + 1'b1; isDone <= 1'b1; end
后测试,pc发送多个数据,也没有错误。
不知道这是不是个问题,希望有人能回答我,以解我刚入门的菜鸟疑惑?
|
|