首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]关于UART的,测试却找不到原因

[求助]关于UART的,测试却找不到原因

设计UART的过程中遇到难以解决的问题,调试过程中,rst信号生成起始信号来开始传输数据,rm168,在内部直接置数out_xy然后利用out_xybuffer每次移8bit来给Txmiter。控制移位的是txmit的表示传输完毕的信号,后仿正确,然后下载到板子上,按rst信号后输出却是00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 89 01 23 11

即总是只有输出最后816进制,即108个二进制。采用其他的rm置数都是这样,换用其他数据也是只有816进制数据。

换用其他的波特率以及开发板产生相应时钟,也一样的结果。

 

 

在这个问题上纠缠了很久

 ,不知道之前的数据去哪了!

 ,不知道之前的数据去哪了!

[此贴子已经被作者于2007-3-8 1:06:02编辑过]

assign out_xy[rm*2-1:0]='hFFFFFFF89012311;

always@ (posedge clk1146x ) begin     //out_xybuffer 

       if(rst)

              out_xybuffer <= 0;

       else if (ready&&(!ecsm_ready)) begin

 

              out_xybuffer <= out_xy;

       end

       else if (tx_ready&&(!tx_rdy_reg)) 根据txmiter传输完毕的信号移位数据

       begin

              out_xybuffer[rm*2-1:8] <= out_xybuffer[rm*2-9:0];

              out_xybuffer[7:0] <= 8'b0;

       end

       else

              out_xybuffer <= out_xybuffer;

end

 

assign din[7:0] = out_xybuffer[rm*2-1:rm*2-8];

 

 

 

always@ (posedge clk1146x ) begin //outcounter

       if(rst)

              outcounter <= 0;

       else if (ready&&(!ecsm_ready))

              outcounter <= 0;

       else if (tx_ready&&(!tx_rdy_reg))

              begin

              outcounter[(m+7)/8*2-1:1] <= outcounter[(m+7)/8*2-2:0];

              outcounter[0] <= 1'b1;

       end

       else

              outcounter <= outcounter;

end

always@ (posedge clk1146x ) begin //outcounter

       if(rst)

              outcounter <= 0;

       else if (ready&&(!ecsm_ready))

              outcounter <= 0;

       else if (tx_ready&&(!tx_rdy_reg))

              begin

              outcounter[(m+7)/8*2-1:1] <= outcounter[(m+7)/8*2-2:0];

              outcounter[0] <= 1'b1;

       end

       else

              outcounter <= outcounter;

end

返回列表