Verilog串口通信问题
以下程序的功能为每次有接收中断产生后,将接收到的recdata存进rc_buf中,然后将rc_buf[1]通过串口发送给PC.我定义rc_buf是reg[7:0]rc_b...
以下程序的功能为每次有接收中断产生后,将接收到的recdata存进rc_buf中,然后将rc_buf[1]通过串口发送给PC. 我定义rc_buf是reg[7:0]rc_buf[2:0]; 现在的情况是我发送 11 22 33这个数组,它发送回给我的是11,请问下我这哪里有问题?
always@(posedge RI) //RI是串口接收中断标志位
begin
if(rst==0)begin
i=0;
end
else begin
rc_buf[i]<=recdata; //rcdata 上位机发送来的数据
i=i+1;
if(i==3) i=0;
end
senddata <= rc_buf[1]; //senddata 发送给上位机的数据
end
而且rc_buf[0]是33 展开
always@(posedge RI) //RI是串口接收中断标志位
begin
if(rst==0)begin
i=0;
end
else begin
rc_buf[i]<=recdata; //rcdata 上位机发送来的数据
i=i+1;
if(i==3) i=0;
end
senddata <= rc_buf[1]; //senddata 发送给上位机的数据
end
而且rc_buf[0]是33 展开
3个回答
展开全部
always@(*) //RI是串口接收中断标志位
begin
if(rst==0)
i=0; // i 定义成integer类型
else if(i==3)
i=0;
else if(RI) //rcdata 上位机发送来的数据
i=i+1;
end
always@(*)
begin
if(!rst)
rc_buf[i]=8'b0;
else if(RI)
rc_buf[i]=recdata;
end
assign senddata = rc_buf[1]; //senddata 发送给上位机的数据 定义成wire类型
可以试试,仅个人看法哈
begin
if(rst==0)
i=0; // i 定义成integer类型
else if(i==3)
i=0;
else if(RI) //rcdata 上位机发送来的数据
i=i+1;
end
always@(*)
begin
if(!rst)
rc_buf[i]=8'b0;
else if(RI)
rc_buf[i]=recdata;
end
assign senddata = rc_buf[1]; //senddata 发送给上位机的数据 定义成wire类型
可以试试,仅个人看法哈
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询