FPGA之FIFO详解,缓冲不定长报文
在项目开发中经常会遇到不定长报文的处理,典型的有modbus rtu等等,对于STM32端,有过工作经验的朋友,基本都会去选择比如空闲中断+dma,因为非常适合实现不定长报文的接收,如果本身带有freertos等轻型操作系统,那么在实际项目工作中则需要考虑到消息队列的设计和缓存,那么对于FPGA端,我们应该如果去如何去缓存一帧不定长的报文呢,在这篇博客里,笔者通过一个练习举例为大家说明,在FPGA设计中常用到的缓存不定长报文的方法,其本身也具有一定的普遍性。
设计一个模块包含读写位宽相同、读写深度是256的异步时钟FIFO,其中输入数据信号din和输入数据指示信号din_vld是属于clk_in时钟域的,上游模块负责写数据到本模块的FIFO中,但是报文长度不固定且小于100字节,所以有din_sop和din_eop两个信号作为报文开始和结束的指示信号,即当din_vld和din_sop同时为高时,表示输入一个报文的第一个字节,当din_vld和din_eop同时为高时,表示输入一个报文的最后一个字节。同时如果本模
共有 0 条评论