MCDF说明文档

UVM——寄存器模型 寄存器模型概览 硬件中的各个功能模块可以由处理器来配置功能以及访问状态,而与处理器的对话即是通过寄存器的读写来实现的。 寄存器的硬件实现是通过触发器,而每一个比特位的触发器都对应着寄存器的功能描述(function specification)。一个寄存器一般由32个比特位构成,将单个寄存器拆分后,又可以分为多个域(field),不同的域往往代表着某一项独立的功能。单个的域可能由多个比特位构成,也可能有单一比特位构成,这取决于该域的功能模式可配置的数量。 而不同的域,对于外部的读写而言,又大致可以分为WO( 阅读详情

前言 : MCDF的说明文档,介绍了功能、信号、时序、寄存器等参数,方便后续实验时参考。

功能描述

  • 该设计称之为多通道数据整形器(MCDF, multi-channel data
    formatter),它可以将上行(uplink)多个通道数据经过内部的 FIFO,最终以数据包(data packet)的形式送出。
  • 上行数据和下行数据的接口协议不同,多通道数据整形器也有寄存器的读写接口,可以支持更多的控制功能。

在这里插入图片描述
从上图的 MDCF 结构来看主要可以分为如下几个部分:

  • 上行数据的通道从端(Channel Slave) ,负责接收上行数据,并且存储到其 FIFO 中。
  • 仲裁器(Arbiter) 可以选择从不同的 FIFO 中读取数据,进而将数据进一步传送至整形器 (formatter)。
  • 整形器(Formatter)将数据按照一定的接口时序送出至下行接收端。
  • 控制寄存器(Control Registers)有专用的寄存器读写接口,负责接收命令并且对 MCDF 的功能做出修改。

主要信号

  1. 系统信号接口

CLK(0):时钟信号。
RSTN(0):复位信号,低位有效。

  1. 通道从端接口

CHx_DATA(31:0):通道数据输入。
CHx_VALID(0):通道数据有效标志信号,高位有效。
CHx_READY(0):通道数据接收信号,高位表示接收成功。

  1. 整形器接口

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):数据包结束标示。

  1. 控制寄存器接口

CMD(1:0):寄存器读写命令。
CMD_ADDR(7:0):寄存器地址。
CMD_DATA_IN(31:0):寄存器写入数据。
CMD_DATA_OUT(31:0):寄存器读出数据。

接口时序

1. 通道从端接口时序

在这里插入图片描述

  • 当valid为高时,表示要写入数据。如果该时钟周期ready为高,则表示已经将数据写入;如果该时钟周期ready为低,则需要等到ready为高的时钟周期才可以将数据写入。

2. 整形器接口时序

在这里插入图片描述

  • 整形器发送数据是按照数据包的形式发送的,可以选择数据包的长度有4、8、16和32。整形器必须完整发送某一个通道的数据包后,才可以转而准备发送下一个数据包,在发送数据包期间,fmt_chid和fmt_length应该保持不变,直到数据包发送完毕。
  • 在整形器准备发送数据包时,首先应该将fmt_req置为高,同时等待接收端的fmt_grant。当fmt_grant变为高时,应该在下一个周期将fmt_req置为低。fmt_start也必须在接收到fmt_grant高有效的下一个时钟被置为高,且需要维持一个时钟周期。在fmt_start被置为高有效的同一个周期,数据也开始传送,数据之间不允许有空闲周期,即应该连续发送数据,直到发送完最后一个数据时,fmt_end也应当被置为高并保持一个时钟周期。
  • 相邻的数据包之间应该至少有一个时钟周期的空闲,即fmt_end从高位被拉低以后,至少需要经过一个时钟周期,fmt_req才可以被再次置为高。

3. 控制寄存器接口时序

在这里插入图片描述

  • 在控制寄存器接口上,需要在每一个时钟解析cmd。当cmd为写(WR)指令时,需要把数据cmd_data_in写入到cmd_addr对应的寄存器中;当cmd为读指令(RD)时,即需要从cmd_addr对应的寄存器中读取数据,并在下一个周期,将数据驱动至cmd_data_out接口。

寄存器描述

1. 地址0x00 通道1控制寄存器 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。

2. 地址0x04 通道2控制寄存器 32bits 读写寄存器

同通道1控制寄存器描述。

3. 地址0x08 通道3控制寄存器 32bits 读写寄存器

同通道1控制寄存器描述。

4. 地址0x10 通道1状态寄存器 32bits 只读寄存器

bit(7:0):上行数据从端FIFO的可写余量,同FIFO的数据余量保持同步变化。复位值为FIFO的深度数。
bit(31:8):保留位,复位值为0。

5. 地址0x14 通道2状态寄存器 32bits 只读寄存器

同通道1状态寄存器描述。

6. 地址0x18 通道3状态寄存器 32bits 只读寄存器

同通道1状态寄存器描述。

【IC验证】一文速通多通道数据整型器(MCDF) 设计模块的全称叫做multi-channel data formatter,他可以将上行多个数据通道的数据通过内部的SLAVE, FIFO给到仲裁器Arbiter, Arbiter选择从不同的FIFO中读取数据,给到下端的Formatter, 对数据进行整形,以数据包的形式送给下行的数据接收端。bit(5:3):数据包长度,解码对应表为, 0对应长度4,1对应长度8,2对应长度16,3对应长度32,其它数值(4-7)均暂时对应长度32。CHx_VALID(0):通道数据有效标志信号,高位有效。 阅读详情

相关推荐

MCDF实验4:魔龙的狂舞(从verilog到SV的入门lab4)_mcdf sv lab4

这6中,用二进制表示为0000_0000、0000_0100、0000_1000、0001_0000、0001_0100、0001_1000。chnl和reg的driver都是主动的发送数据给dut,而fmt的driver是被动的接受发送出来的数据。此时数据已经驱动到接口cmd_data_s2m处了,这时去采样接口处的数据就一定是要读的数据。bit(7:0):上行数据从端FIFO的可写余量,同FIFO的数据余量保持同步变化。模拟mcdf的功能接受寄存器的读写行为,对检测来的数据进行打包。

2401_86963562的博客 1122

SV实验0 DUT设计描述

MCDF(多通道数据整形器,Multi-Channel Data Formatter) 将上行(uplink)多个通道数据经过内部FIFO,并以数据包(data packet)的形式送出。 上行和下行数据的接口协议不同;MCDF有寄存器读写接口,可以支持更多控制功能。

PoPo's Blog 2654

dotnet OpenXML 读取 PPT 内嵌 ole 格式 Excel 表格的信息

在 Office 中,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式。本文来介绍如何读取 PPT 内嵌 ole 格式的 xls+ 表格的方法 在 Office 的 PPT 中,插入表格可以对应多个不同的方式: 通过 GraphicData 内嵌到 PPTX 页面里面 通过嵌入文件方式 通过 SmartArt 模拟的表格,本质上就是 S...

lindexi 3251

多通道数据整形器(MCDF)verilog设计(一)——通道从端模块 (slave_fifo)

多通道数据整形器MCDF(Multi-Channel Data Formatter),将多个通道的上行(umlink)数据经过内部的FIFO以数据包(data packet)的形式送出。

Xu__Xiaoyang的博客 2007

SV基础 | SV学习笔记(六)

覆盖组(covergroup) 与类相似, 一次定义后便可以多次实例化。covergroup可以包含一个或者多个coverpoint, 且全都在同一时间采集。covergroup可以定义在类中,也可以定义在interface或者module中。covergroup可以采样任何可见的变量,例如程序变量、接口信号或者设计端口。一个类里可以包含多个covergroup。当你拥有多个独立的covergroup时, 每个covergroup可以根据需要自行使能或者禁止。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1374

UVM入门和进阶实验2(part3)

UVM实验2核心知识点总结 核心内容概览 本实验重点涵盖UVM验证平台构建的5大关键技术: Phase机制 - UVM自动调度执行顺序,避免手动调用run() TLM通信 - 实现组件间数据交互(单向put/get、双向transport) 同步机制 - 事件(uvm_event)、屏障(uvm_barrier)实现跨组件同步 Sequence机制 - 通过sequencer-driver完成激励生成与发送 寄存器模型 - 抽象寄存器访问,支持前门/后门操作 关键技巧 TLM连接必须遵循端口类型匹配规则(p

84

MCDF实验2:冰雨的风暴(从verilog到SV的入门lab2)

在实验1,通过A产生动态数组并赋值给B,B再传给c,完成了激励的发送。总体来说很容易上手。而在实验2产生数据的方式、赋值的方式变为了抽象的概念,对于初学者可能不是很好理解,但你看完这篇文章,不会都难。

jackack的博客 1469

【1】AMBA_SOC_WWDG项目介绍与说明-IC验证自学入门

2、本项目推出背景: 1)很多之前咨询我的人,都已经学习了sytemverilog语言、UVM方法学,但是呢,没做过有价值的项目; 2)有的人做过培训班的项目(SRAM和MCDF),但是呢,都是跟着视频学,特别对于转行,很多细节没学懂,一知半解; 3)很多做器件或者没有那么相关专业的同学,有一定的基础,知道SRAM和MCDF项目写在简历上,都快成了扣分项,一直想找个好的更贴近公司实际使用的验证项目;基于上述一些点,我打磨了半年,推出了本项目,不夸张的说,这个项目不管对于转行还是在职的芯片验证工程师,学完的话

小白蒋-材料转行芯片验证 2394

UVM 入门实验5

1. 寄存器模型的完善和嵌入 定义uvm_reg和uvm_reg_block的以及mcdf_rgm寄存器模块。 // Dedicated register description [write-read reg] with uvm_reg type class ctrl_reg extends uvm_reg; `uvm_object_utils(ctrl_reg) uvm_reg_field reserved; rand uvm_reg_field pkt_len;

weixin_43373901的博客 698

UVM验证方法学高级主题

文章摘要(149字): 本文系统讲解了UVM验证方法学高级主题,重点涵盖VIP开发与SVA断言两大核心内容。VIP开发部分详细解析了APB验证IP的实现要点,包括架构设计、组件实现和覆盖率收敛标准。SVA断言部分深入探讨了sequence定义(延时/重复操作符)、property构建技巧及disable iff等关键语法。通过具体代码示例,展示了如何构建高效可靠的验证环境,为芯片验证工程师提供了从理论到实践的完整指导路径。

265

基于UVM的MCDF测试台设计与实现

MCDF(Multi-Channel Data Formatter)是一种面向高性能SoC的多通道数据调度与成帧协议,广泛应用于多媒体处理和通信基带系统中。其核心机制包括通道优先级仲裁、动态带宽分配、时间戳插入与数据包封装,支持多通道异步数据的高效聚合与传输。由于协议行为强依赖时序与状态转换,传统验证方法难以覆盖边界场景,易引发竞争条件、缓冲区溢出等DUT级缺陷。因此,必须引入基于UVM的结构化验证策略,实现高覆盖率与可重用测试平台的构建,为后续章节奠定技术基础。

weixin_35364187的博客 840

【数集项目之 MCDF】(一) 控制寄存器 control_register

本项目为MCDF数据整形器设计,所有的参考代码见我的github其中设计的参考文档见github文件中的MCDF修订版.docx文件。选择的工具链是,相关工具的安装与环境配置就不介绍了,可以参考其他文章。注意:不同的工具链代码可能有区别,例如一些集成开发环境不需要书写`include,而是直接将代码加入工程作为替代MCDF模块按照子模块划分,总共分为了、slvae_FIFO、arbiter、formatter这几个子模块和MCDF这个顶层模块。本章首先从控制寄存器。

SuperiorEE的博客 2206

MCDF.zip_MCDF verilog_forgotten87z_mcdf_mcdf设计_verilog hdl

设计一个多动能选择器,完整verilog代码

MCDF实验4:魔龙的狂舞(从verilog到SV的入门lab4)

1. 实验3结构包含moinitor、checker、generator、initiator、test,这已经是一个完整的仿真结构,实验4可以说是实验3结构的复制粘贴。 2. 实验4将设计变得更复杂,添加了reg寄存器模块,formatter模块。验证过程完全相同,需要像实验3的验证过程一样对这两个模块也做仿真验证。 设计中reg的功能是可以选择从哪个fifo接收数据,并且可以判断fifo余量(之前是margin),可以控制打包的长度。formatter做数据打包。

jackack的博客 2727

无线通信入门:3种键控法(ASK/FSK/PSK)原理图解与实战对比

本文深入解析无线通信中ASK、FSK、PSK三种基础键控法的原理与应用。通过图解对比,阐明幅移键控(ASK)简单低成本但抗干扰差,频移键控(FSK)稳健且应用广泛,相移键控(PSK)高效但复杂。文章结合实战场景,为物联网和嵌入式开发者在选型时提供关键指导,帮助平衡数据速率、成本、功耗与抗干扰需求。

weixin_29274969的博客 188

稳定性仿真(stb闭环增益仿真)

stb仿真主要是测试电路的稳定性,例如运放在闭环电路中的增益和相位裕度的值,从而判别电路是否正常工作。 以下是stb仿真的过程: (1)调用iprobe器件 从analogLib中调iprobe器件,通过器件中的箭头标识确定接入电路的方法,箭头起点端连运放的输出端,箭头的终点端连在反馈环路的作用端。iprobe器件连入电路后相当于理想导线。(iprobe器件连接在反馈回路上) (2)analyses设置 勾选stb和frequency,此处的频率范围设置在0.1~1GHz,Probe Instance/T

qq_36686804的博客 3万+

MCDF-实验3——随机约束与环境结构

本次实验需要升级实验2中的genenrator和initiator之间的数据生成和数据传输的处理。同时将何时结束测试的主动权讲给generator而非test。添加monitor和checker组件。提示:以下是本篇文章正文内容,下面案例可供参考1.$finish(),没有找到如何在generator中结束仿真的办法。2.约束块中的条件语句可以使用{staement1 -> statement2;3.%x格式是以16进制打印4.使用case语句可以取出相同id的数据。

ystery的博客 607

java对接海康实现页面实时播放和回放

前言:之前已经写过一篇关于视频的文章,因为觉得有很多优化的地方,也谢谢同行们加我微信跟我提了一些需求和意见,所以在过年的假期重新写了一个比较能扩张的版本。 上一个版本的连接:https://blog.youkuaiyun.com/weixin_45848110/article/details/119363602 与之前的版本不同之处: 1.不需要安装ffmpeg 2.不需要安装nginx 3.直接运行jar即可 4.之前是完全脱离海康sdk,回放的录像是保存到本地服务,现在是直接在海康硬盘录像机获取录像回放 5.实时播

weixin_45848110的博客 1万+

UVM - 寄存器模型如何使用?覆盖率怎么收集?

UVM 中,register model 的基本概念、常规使用。

u011536527的博客 1161

NDVI空间分布变化Slope趋势分析与F检验(自用)

1.NDVI数据预处理2.一元线性回归分析3.Slope趋势分析与F检验

什么都学亿点点的博客 9017

C#实战:5分钟搞定西门子S7-1200 PLC数据读写(S7netplus保姆级教程)

本文详细介绍了如何使用C#和S7netplus库快速实现与西门子S7-1200 PLC的数据读写。从环境准备、连接管理到数据读写高级技巧,提供了保姆级教程和实战方案,帮助开发者绕过常见陷阱,提升工业自动化项目的开发效率。

weixin_28432777的博客 283

电力电子转战数字IC20220706-08day41-43——路科实验4

路科实验4

weixin_39668316的博客 517

微信小程序 - 最新获取用户昵称 / 头像(wx.getUserProfile 接口被废弃后的代替方案)详细教程,2022 年之后的所有微信小程序,获取用户信息最新详细教程,附带示例源代码

微信小程序wx.getUserProfile接口废了用什么代替,微信小程序wx.getUserProfile不能用了怎么办,wx.getUserProfile失效有什么替代方案吗,微信新规定头像昵称填写最新教程,目前微信小程序最新获取用户头像昵称教程,微信小程序用户头像昵称获取规则调整公告,2022改版后的微信小程序如何获取用户头像和昵称信息,微信小程序官方废弃getUserProfile后如何实现获取用户信息,微信小程序wx.getUserProfile接口返回了默认头像昵称,微信小程序获取用户信息不

🏆 前端领域优质创作者 2万+

(24)UVM 寄存器建模

UVM 寄存器模型概览 寄存器 UVM寄存器中心化管理方式 uvm_reg相关概念 configure各参数函数 uvm_reg_block 寄存器建模要点和流程 关注作者 对于硬件有了解的读者,都知道寄存器是模块之间互相交谈的窗口。一方面可以通过读出寄存器的状态,获取硬件当前的状况,另外一方面也可以通过配置寄存器,使得寄存器工作在一定的模式下。

数字IC小白的日常修炼 1677

FPGA和USB3.0通信-USB3.0 PHY介绍

可以和FPGA搭配使用的USB3.0 PHY芯片通过之前的介绍<FPGA和USB3.0通信-USB3.0协议介绍USB3.0 PHY简介首先我们需要了解PHY具体完成哪些工作以及我利...

OpenFPGA的博客 4940

【DRAM存储器二十六】DDR4介绍-DDR4 SDRAM的主要技术特性之CA Parity、CRC Write date

详述DDR4的CA奇偶检验和写数据CRC校验功能

highman110的博客 1295
上一篇: 保姆级教程超硬核包会,SystemVerilog SV 断言
下一篇: MCDF实验0:权力的游戏(从verilog到SV的入门lab0)
Dypypp
博客等级 码龄7年 691粉丝 18原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值