概述
RS232通信协议我就不讲了,自己在网上搜,我讲一下怎么发送,怎么用。
发送数据前,发送一直是高电平,发送数据前,先发送一个低电平的起始位,然后是八个电平的数据位,再然后是一个低电平的结束位,最后保持高电平,等待下一个数据到来。发送数据为8bit位宽,在9600波特率下依次将bit位输出作为中间8位的数据位。
下面给出的是RS232发送的模块,由于没有数据位的输入,所以内部写一个1hz时钟进行自加验证输出,通过串口助手观察发送数据是否正确
module RS232(
input clk,
input [7:0]k, //输入8bit发送数据
output reg dout=1 //发送位,起始高电平
); //FPGA交流群689408654
reg [15:0]cn=0;
reg hp9600hz=0;
always@(posedge clk)
begin
if(cn==2603)begin
cn<=0;
hp9600hz<=!hp9600hz;
end
else cn<=cn+1;
end
/* reg [30:0]cm=0; //内部1hz自加验证程序
reg hp1hz=0;
always@(posedge clk)
begin
if(cm>=24999999)begin
cm<=0;
hp1hz<=!hp1hz;
end
else cm<=cm+1;
end
reg [7:0]k=0;
reg [7:0]k2=0;
always@(posedge hp1hz)
begin
k<=k+1;
end*/
reg [3:0]m=0;
always@(posedge hp9600hz)
begin
k2<=k;
case(m)
0:if(k2!==k)begin dout<=0;m<=1;end
else dout<=1;
1:begin dout<=k[0];m<=2; end
2:begin dout<=k[1];m<=3; end
3:begin dout<=k[2];m<=4; end
4:begin dout<=k[3];m<=5; end
5:begin dout<=k[4];m<=6; end
6:begin dout<=k[5];m<=7; end
7:begin dout<=k[6];m<=8; end
8:begin dout<=k[7];m<=9; end
9:begin dout<=1;m<=0; end
endcase
end
endmodule
串口助手接收显示,注意发送的波特率是9600,这里选择9600波特率,接收是4个bit一个数据,组成16进制数。
最后
以上就是开朗小丸子为你收集整理的基于FPGA的RS232串口发送(含程序)的全部内容,希望文章能够帮你解决基于FPGA的RS232串口发送(含程序)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复