我是靠谱客的博主 开朗小丸子,最近开发中收集的这篇文章主要介绍基于FPGA的RS232串口发送(含程序),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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串口发送(含程序)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部