给串口模块加入FIFO

  根据Dvm-gli的博客(彬哥的论坛),彬哥的串口发送程序在用户需要连续进行数据发送时,使用起来不方便,因为每发送一个数据,都要给出一个相应的发送脉冲。这时可以在用户和uart_transfer之间加入一个fifo模块,用户只需要把要发送的数据写入fifo,自动由uart_transfer模块进行发送,这样使用上方便一些。
  主要端口如下,
  这里写图片描述
  需要注意的信号有两个,一个是uart_transfer在什么时候去读取fifo_tx,另外一个是什么时候给uart_fifo传送tx_start(发送使能)信号。
  对于fifo_tx的读取使能rd_en,我们这样处理:(1)在fifo_tx不为空的时候,empty会有一个从高电平到低电平的跳变,我们使用下降沿检测电路作为首个rx_en的使能信号。(2)接下来,数据从fifo_tx的dout引脚输出,接入uart_transfer的din引脚,给出发送使能信号tx_start,发送完成后产生tx_done_tick发送完成脉冲信号,以后我们就使用tx_done_tick作为fifo_tx的读取使能信号rd_en。需要注意的是在最后一个数据从fifo_tx输出后,empty拉高,fifo_tx此时已空,那么最后一个tx_done_tick产生时fifo_tx早已空,故最后一个tx_done_tick不能使用。综上,我们可以得出fifo_tx的读取使能信号rd_en的产生形式如下:
  这里写图片描述
  对于串口发送模块的发送使能信号tx_start,根据Xilinx的FIFO IP核文档的描述,在rd_en信号为高的的下一个时钟周期,数据从dout输出。为了使数据在tx_start使能信号有效前稳定下来,我们将rd_en信号打慢两拍,作为tx_start信号。
  这里写图片描述
  

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
FPGA(现场可编程门阵列)是一种可编程逻辑器件,它可以根据需要进行重新配置,以实现各种不同的功能。串口是一种用于数据传输的通信接口,常用于连接电脑和外部设备。而FIFO(First In First Out,先进先出)是一种存储数据的缓冲区,数据以先进先出的方式进行读写。 FPGA串口转发进FIFO是指将串口接收到的数据通过FPGA进行转发,并将其存储到FIFO缓冲区中。这个过程可以分为以下几个步骤: 首先,需要确定使用的FPGA开发板和串口通信的协议。通常情况下,我们可以选择UART(通用异步收发器)协议来进行串口通信。 然后,在FPGA上设计一个接收串口数据的模块。这个模块的功能是接收串口信号,并将其转换为数字信号,以便FPGA进行处理。 接着,设计一个FIFO模块。这个模块的作用是接收来自串口数据接收模块的数据,并以先进先出的方式存储到FIFO缓冲区中。当有新数据到达时,FIFO模块会将其写入到FIFO中。 最后,设计一个发送模块,将FIFO缓冲区中的数据取出,并通过串口发送出去。这个模块的功能是读取FIFO缓冲区中的数据,并将其转换为串口信号,以便发送出去。 通过以上设计,就可以实现FPGA串口转发进FIFO的功能。当有数据通过串口发送过来时,FPGA会将其接收并存储到FIFO中,然后从FIFO中读取数据,并通过串口发送出去。这样就实现了串口数据的转发功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值