RTL乒乓运算模块设计 - Submodule Design

本文详细介绍了RTL设计中的APB2pingpong_ave_reg_intf模块,涉及APB接口转换、pingpong_ave_reg寄存器管理,以及ODF分析模块,包括数据包解析、校验和控制。后续章节还讨论了ADF生成和乒乓平均运算的实现,展示了关键技术细节和状态机设计。

本文为RTL乒乓运算模块设计的子模块设计。


1. APB2pingpong_ave_reg_intf

1.1. Function Description

该模块可借鉴使用APB到标准握手桥模块,即APB2standard_handshake_bridge 设计

区别在于APB接口的pslverr由寄存器模块给出,此处只根据pwrite作分选

1.2. Interface Description

接口如下

Group Signal Direction Width(bits) Description
APB_intf prstn input 1 异步低复位
pclk input 1 时钟,为36MHZ
paddr input 32 APB地址,用于对pingpong_ave_reg内寄存器片选
psel input 1 APB选通,用于对pingpong_ave_reg选通
penable input 1
pwrite input 1 高写低读
pwdata input 32 写入数据
prdata output 32 读出数据
pready output 1
pslverr output 1 传输是否错误
pingpong_ave_intf waddr output 32 写地址
wdata output 32 写数据
wr_en output 1 写使能
wready input 1 写准备
wslverr input 1 写错误,当地址错误或写入只读寄存器时该信号拉高
raddr output 32 读地址
rdata input 32 读数据
rdata_val input 32 读数据有效
rd_en output 1 读使能
rready input 1 读准备
rslverr input 1 读错误,当地址错误或不可读寄存器时该信号拉高

1.3. RTL coding

module apb2pingpong_ave_reg_intf(
	input 						prstn,
	input 						pclk,
	
	//APB interface
	input	[31:0]				paddr,
	input						pwrite,
	input						psel,
	input						penable,
	input	[31:0]				pwdata,
	output	[31:0]				prdata,
	output						pready,
	output						pslverr,
	
	//pingpong_ave_reg interface
	output	[31:0]				waddr,
	output	[31:0]				wdata,
	output						wr_en,
	input						wready,
	input						wslverr,
	
	output	[31:0]				raddr,
	input	[31:0]				rdata,
	input						rdata_val,
	output						rd_en,
	input						rready,
	input						rslverr
	);


assign wr_en = pwrite && psel && penable;

assign waddr = paddr;

assign raddr = paddr;

assign wdata = pwdata;

assign pready = (pwrite)? wready:rdata_val;

assign prdata = rdata;

assign rd_en = (!pwrite) && psel && !rdata_val;

assign pslverr = (pwrite)? wslverr:rslverr;

endmodule

2. ODF_analysis

2.1. Function Description

该模块主要是解析AXIS串行输入的ODF数据,根据协议内容解析、校验。

同时根据外部控制信号对AXIS输入进行屏蔽,防止透传变量被新的ODF覆盖

根据读指令,对待平均数据串行读出。

2.2. Feature List

● 基于AXIS接口串行输入ODF协议包,时钟aclk为150MHZ

● 对ODF协议解析,若校验和通过,寄存协议包中各变量

● 可控制AXIS接口屏蔽,防止新的ODF进入

2.3. Interface Description

Group Signal Direction Width(bits) Description
AXIS_intf aclk input 1 AXIS时钟
arstn input 1 AXIS低电平异步复位
tdata_ODF input 32 AXIS数据
tvalid_ODF input 1 tdata有效
tlast_ODF input 1 指示最后一个tdata
tready_ODF output 1 tvalid握手信号
ODF analysis output
frame_length output 16 数据包长度
frame_counter output 32 数据帧计数
arrive_time output 32 到达时间
alpha output 16 透传变量α
beta output 16 透传变量β
gamma output 16 透传变量γ
lambda output 16 透传变量λ
Sample_A_fixed_type output 8 变量A修订数据类型
Sample_B_fixed_type output 8 变量B修订数据类型
Sample_C_fixed_type output 8 变量C修订数据类型
Sample_D_fixed_type output 8 变量D修订数据类型
rdata_Sample_A_FIFO output 16 串行输出待平均变量A
rdata_val_Sample_A_FIFO output 1 串行输出待平均变量A有效
rdata_Sample_B_FIFO output 16 串行输出待平均变量B
rdata_val_Sample_B_FIFO output 1 串行输出待平均变量B有效
rdata_Sample_C_FIFO output 16 串行输出待平均变量C
rdata_val_Sample_C_FIFO output 1 串行输出待平均变量C有效
rdata_Sample_D_FIFO output 16 串行输出待平均变量D
rdata_val_Sample_D_FIFO output 1 串行输出待平均变量D有效
ODF_analysis_done output 1 一包ODF解析完毕标志
ODF analysis control
rd_en_Sample_A_FIFO input 1 待平均变量A读出标志
rd_en_Sample_B_FIFO input 1 待平均变量B读出标志
rd_en_Sample_C_FIFO input 1 待平均变量C读出标志
rd_en_Sample_D_FIFO input 1 待平均变量D读出标志
ODF_block_en input 1 ODF协议包阻塞标志

2.4. FSM Description

由于校验和在ODF最后一项,所以当ODF通过AXIS输入之后,先解析其中的变量,待平均数据ABCD则直接写入FIFO,解析的同时计算校验和。

最后如果校验和成功则ODF_analysis_done拉高一拍。若校验失败,则将FIFO复位,ODF_analysis_done不拉高

状态机如下

在这里插入图片描述

由于我们根据协议解析ODF,所以必须用到一个计数器ODF_cnt标注当前tdata传输的是ODF的第几项,同时可以借助该计数器将上述状态机实现。

注意ODF_cnt==10+2a时,check_suim_correct和rst_fifo不可同时变化,合成一张图则如下

在这里插入图片描述

2.5. RTL coding


module ODF_analysis(
	input 						arstn,
	input 						aclk,
	
	//AXIS interface
	input			[31:0]		tdata_ODF,
	input						tvalid_ODF,
	input						tlast_ODF,
	output						tready_ODF,
	
	//ODF analysis output
	output	reg		[15:0]		frame_length,
	output	reg		[15:0]		frame_counter,
	output	reg		[31:0]		arrive_time,
	output	reg		[15:0]		alpha,
	output	reg		[15:0]		beta,
	output	reg		[15:0]		gamma,
	output	reg		[15:0]		lambda,
	output	reg		[7:0]		sample_A_fixed_type,
	output	reg		[7:0]		sample_B_fixed_type,
	output	reg		[7:0]		sample_C_fixed_type,
	output	reg		[7:0]		sample_D_fixed_type,
	
	output			[7:0]		rdata_sample_A_FIFO,
	output						rdata_val_sample_A_FIFO,
	output			[7:0]		rdata_sample_B_FIFO,
	output						rdata_val_sample_B_FIFO,
	output			[7:0]		rdata_sample_C_FIFO,
	output						rdata_val_sample_C_FIFO,
	output			[7:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值