fpga串口多字节发送、数据包发送

最近主管让我用串口循环发送数据包,这对单片机来说很简单,但是用fpga来做对我来说就有点难了,在查了点资料后就开始写,然后基本就那样了。

首先是读入发送的数据:

always@(posedge rst_n)
	$readmemh("E:\\ModelsimWork\\u\\src\\init.dat",dat_buf);

然后就是不断发送数据

always @ ( posedge clk or negedge rst_n )
	 if( !rst_n )
		 begin
			 i <= 4'd0;
			 rTX <= 1'b1;
			 
			 isDone <= 1'b0;
		 end
	 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 <= txdata[ i - 1 ]; end

			 4'd9 :
			 if( bps_clk ) begin i <= i + 1'b1; rTX <= 1'b1;isDone <= 1'b1; end

			 4'd10 :
			 begin i <= 1'b0; isDone <= 1'b0; end
		endcase

最后就是modelsim仿真波形
在这里插入图片描述
上图是我要发送的数据的一部分。modelsim仿真波形如下
在这里插入图片描述
两条红线之间的串口发送的一帧数据,txdata是当前发送的数据,tx_pin是串口TX引脚,低位在前,停止位1位,数据8位,无校验位,因此读出来是00010011,与发送数据相同。下图是串口发送的一包数据:
在这里插入图片描述
现在把modeldim工程放在这里:

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FPGA字节串口接收是指针对FPGA芯片进行的串口通信中,实现一次接收多个字节数据的功能。在串口通信中,常见的是逐个字节传输数据,而FPGA字节串口接收则可以一次接收并处理多个字节数据,提高数据传输效率。 实现FPGA字节串口接收的方法有多种,下面介绍一种常见的实现方式。 首先,需要使用FPGA芯片上的串口接口,并将其配置为接收模式。接着,通过时钟信号来控制数据的接收。一般来说,串口通信中使用的是异步通信协议,需要使用时钟信号来同步数据的传输。通过在FPGA设计中引入一个时钟模块,可以在接收数据时进行同步处理。 在数据接收过程中,需要通过串口接收模块将接收到的数据存储在FPGA的缓存中,以便后续的处理。可以使用FIFO(First In First Out)模型来实现数据的缓存,通过设置合适的缓存大小来存储多个字节数据。 对于接收到的多个字节数据,可以通过FPGA中的处理逻辑进行解析和处理。根据具体的需求,可以使用不同的解析算法来获取有效的数据,并进行相应的处理操作,比如数据存储、数据分析等。 需要注意的是,在进行FPGA字节串口接收时,需要考虑数据的一致性和完整性。通过设计合理的通信协议和校验机制,可以确保接收到的数据准确无误。 总之,FPGA字节串口接收是一种提高数据传输效率的方法。通过合适的硬件设计和处理逻辑,可以实现快速、准确地接收和处理多个字节串口数据。这对于需要高效通信和数据处理的应用场景具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值