本文主要是介绍V0 第10节 硬件设计描述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. MCDF 简介
- 遵循硬件设计描述的方式,介绍它的结构、功能、寄存器和时序
- 熟悉硬件描述的方式,也是进入验证领域的一项基本技能
- 多通道数据整形器(MCDF, multi-channel data formatter),它可以将上行uplink多个通道数据经过内部的FIFO,最终以数据包data packet的形式送出
- 上行数据和下行数据的接口协议不同
- 多通道数据整形器也有寄存器的读写接口,可以支持更多的控制功能
2. MCDF接口描述
系统信号接口
- CLK(0):时钟信号
- RSTN(0):复位信号,低位有效
通道从端接口
- CHx_DATA(31:0): 通道数据输入
- CHx_VALID(0):通道数据有效标志信号,高位有效
- CHx_READY(0):通道数据接收信号,高位表示接收成功
控制寄存器接口
- CMD(1:0)寄存器读写命令
- CMD_ADDR(7:0) 寄存器地址
- CMD_DATA_IN(31:0) 寄存器写入数据
- CMD_DATA_OUT(31:0) 寄存器读出数据
整形器接口
- FMT_CHID(1:0) 整形数据包的通道ID号
- FMT_LENGTH(4:0) 整形数据包长度信号
- FMT_REQ(0) 整形数据包发送请示
- FMT_GRANT(0) 整形数据包被允许发送的接受标识
- FMT_DATA(31:0) 数据输出端口
- FMT_START(0) 数据包起始标示
- FMT_END(0) 数据包结束标示
3. MCDF 接口时序
- 如果当前周期内的valid和ready同时为高,表示该数据被成功接收
- 如果当前周期的valid为高ready为低,表示该数据没有被接收成功,需要data和valid继续保持到下一个周期去检查ready信号是否拉高,直到ready拉高后数据才得以接收
- valid如果为低,则表示该周期不发送有效数据
- 在读写寄存器时需要给地址端口和指令接口对应的数据
- 如果要写寄存器应该保证地址端口对应的寄存器是配置寄存器,是可以读写的,而不是只读寄存器无法读写
- 如果要读寄存器,除了要传入正确的地址外,还需要注意读取的寄存器数值将在下一个周期由寄存器模块送出
整形器接口时序要复杂一些
4. MCDF寄存器描述
-
地址0x00 通道0控制寄存器32bits 读写寄存器
bit(0) 通道使能信号,1为打开,0为关闭,复位值为1
bit(2:1) 优先级,0为最高,3为最低,复位值为3
bit(5:3) 数据包长度,解码对应表为,0对应长度4,1对应长度8,2对应长度16,3对应长度32,其它数值(4-7)均暂时对应长度32,复位值为0
bit(31:6): 保留位,无法写入,复位值为0 -
地址0x04 通道1控制寄存器32bits 读写寄存器
同通道1控制寄存器描述 -
地址0x08 通道2控制寄存 32bits 读写寄存器
同通道1控制寄存器描述 -
地址0x10 通道0状态寄存器 32bits 只读寄存器
bit(7:0) 上行数据从端FIFO的可写余量,同FIFO的数据余量保持同步变化,复位值为FIFO的深度数
bit(31:8) 保留位,复位值为0 -
地址0x14 通道1状态寄存器 32bits 只读寄存器
同通道1状态寄存器描述 -
地址0x18 通道2状态寄存器32bits 只读寄存器
-
同通道1状态寄存器描述
5. MCDF结构 (MCDF mini版)
- 只保留了slave channel 和 arbiter
- 结构更为简单,目的在于大家能够着眼于更为简单的验证环境搭建
这篇关于V0 第10节 硬件设计描述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!