数据常量定义:
parameter AD_IN_DW = 16 , //每个ad数据位宽
parameter AD_IN_CHANNEL = 32 , //ad数据通道数
parameter CODED_OUT_DW = 32 //编码后gt通道发送数据位宽
这些数据都可以根据实际情况再修改。
再根据上述数据,定义:
localparam FIFO_SEND_NUM = AD_IN_DW * AD_IN_CHANNEL / CODED_OUT_DW;
每次循环从fifo中读出FIFO_SEND_NUM个数据。
输入输出信号:
input rst_n , //复位信号
input clk_50M , //系统时钟50MHz
input ad_wr_clk , //fifo的写时钟
input coded_clk, //编码时钟,控制编码流程,并作为fifo的读时钟
input ad_en , //上升沿表明开始数据传输工作,下降沿表明结束数据传输工作
input wr_en , //写使能信号,高电平期间写入数据到fifo中
input [AD_IN_DW-1:0] ad_data , //写入的16位ad信号
output reg [CODED_OUT_DW-1:0] coded_data, //输出的编码信号
output reg [3:0] coded_ctr //输出的控制信号,用于控制数据对齐
数据编码状态机:
整体流程如下:
解码模块还需要根据修改后的编码模块,在原有代码基础上再进行一些对应的修改。暂时先依照编码流程,初步设计一个解码模块状态机,后面实际修改代码时,可能会有一些内容需要再修改。
数据解码状态机:
整体流程如下:
目前正在对编码模块进行对应修改,之后再将解码模块修改完善。学长给的模版中有个数据对齐模块,不太确定实际是否需要。调试好各个模块后再将各个模块拼接起来,上板子用信号发生器实际检测功能。
本文章使用limfx的vscode插件快速发布