网站如何做优化排名,免费制作图片视频的软件,wordpress 淘点金插件,网站开发的学习前言 书接上文【FPGA项目】沙盘演练——基础版报文收发_子墨祭的博客-CSDN博客#xff0c;前面我们做了基础版的报文收发#xff0c;相信对逻辑设计有了一定的认知#xff0c;在此基础上#xff0c;继续完善一个实际报文收发可能会遇到的一些处理#xff1a;
报文处理握手…前言 书接上文【FPGA项目】沙盘演练——基础版报文收发_子墨祭的博客-CSDN博客前面我们做了基础版的报文收发相信对逻辑设计有了一定的认知在此基础上继续完善一个实际报文收发可能会遇到的一些处理
报文处理握手与反压跨时钟域处理CDCCRC校验
一、项目要求 从上游模块接收报文数据对报文中的数据进行CRC校验生成CRC8校验码并附在报文后随数据输出发送给下游模块。注意接收与发送为两个时钟域所以需要异步FIFO进行跨时钟域处理。
1.1 接口时钟
接收与上游模块接口时钟频率180MHz
发送与下游模块接口时钟频率200MHz
1.2 接口时序
输入时序 输出时序 1.3 接口信号 信号 I/O 位宽 描述 系统接口信号 clk_in_180 I 1 系统时钟180Mhz rst_n_180 I 1 硬复位低有效 clk_out_200 I 1 系统时钟200Mhz rst_n_180 I 1 硬复位低有效 与上游模块接口信号 sop_in I 1 输入报文头指示信号高有效 eop_in I 1 输入报文尾指示信号高有效 vld_in I 1 输入报文数据有效信号高有效 din_rdy O 1 可以接收上游模块报文的指示信号高有效 data_in I 8 输入报文数据 与下游模块接口信号 sop_out O 1 输出报文头指示信号高有效 eop_out O 1 输出报文尾指示信号高有效 vld_out O 1 输出报文数据有效信号高有效 data_out O 8 输出报文数据 dout_rdy I 1 下游模块可以接收报文的指示信号高有效 1.4 数据格式
1.输入数据格式 输入数据的第一拍sop为报文参数head[2:0]指示报文前面有多少bit数据是无效的即
Head 0 第一行数据全部有效0 bit无效
Head 1 第一行数据最低bit无效1 bit无效
...
Head 7 第一行数据最高位有效7 bit无效 2.CRC校验前的数据格式 在做CRC校验之前需要将无效bit清除替换为0
并且参数head不参与CRC校验。 3.输出数据格式 输出数据要求向前对齐将CRC校验码附在报文之后并且在末尾填充0以补足8bit。 二、项目方案设计
2.1功能分解
通过前面的描述我们可以将功能分解为以下几块
报文处理包括接收的格式处理输出的格式处理CRC校验这里我们使用并行的CRC8算法跨时钟域处理这里我们使用异步FIFO握手与反压上个项目只是规定了包间隔2clk cycle但是发送方不遵守咋办这里就需要一个反压信号在你能接收的时候才打开使能。
2.2系统框图 问CRC在FIFO之后可以吗
2.3项目代码
方案写的这么清楚了代码还不是分分钟拿捏
当然这不是唯一的设计方案可以先自行考虑设计及验证。
若需完整代码工程后续再补充。 三、工程仿真
对激励数据做CRC校验然后与系统输出进行比数完全匹配则通过。 四、项目收获
方案设计的重要性任何项目都是始于方案设计前期需要花大量的功夫去理清思路方案设计完成代码实现只不过是水到渠成的事情。仿真的学习通过本项目完成了testbench的编写仿真验证是对自己设计的一次检验是实际项目缩短调试时间的最佳利器。对时序的理解时钟是FPGA的心跳任何时序操作都是发生在时钟的跳变沿。当采样发生在当前上升沿时刻数据变化是发生在下一时刻的上升沿。绘画时序图可以使用https://wavedrom.com/editor.html 每个模块的信号都可以画出时序图便于代码设计及调试
后记 这个算是一个标准的完备的数字逻辑设计虚拟项目学习。可以为我们系统设计奠定一个基础。 后续我们将进行实际项目演练。 咱们下期见~