UART DUT 介绍、验证功能点提取、UVM 验证代码介绍、Debug 过程和联调过程、覆盖率收集等 UART(Universal Asynchronous Receiver-Transmitter)是一种异步全双工串行通信协议,将要传输的数据在串行通信与并行通信之间进行转换。作为把并行输入信号转成串行输出信号的芯片,UART 通常被集成于其他通讯接口的连结上,其工作原理是将数据的二进制位一位一位地进行传输。 DUT(Device Under Test)功能理解:DUT design Spec 如左图所示,DUT 有两种执行方式,一种是对外围设备接收的数据进行串行到并行的转换(RX 方向);另一种是对传输到外围的数据进行并行到串行的转换(TX 方向)。 DUT 模块理解: 1. APB interface:实现接口信号的解码,用于访问状态,配置寄存器,接收,发送数据到 FIFO。 2. transmit FIFO:8 位宽,16 位深,用于存储从 APB interface 中写入的数据,直到数据被传输逻辑读走,该 FIFO 可以被 disable,使其成为单字节寄存器。 3. receive FIFO:12 位宽,16 位深,用于存储上行端接收的数据以及错误位信息,直到数据被 APB 接口读走,该 FIFO 可以被 disable,使其成为单字节寄存器。 4. transmitter:将传输 FIFO 中的数据实现并行到串行的转换。 5. receiver:将对外围设备数据进行串行到并向的转换,同时还会执行溢出,奇偶校验,frame 错误检测和中断检测,并将其写入到 receive FIFO。 6. 波特率发生器:包含自由运行的计数器,产生内部 x16 时钟和 Baud16 信号。Baud16 是 UART 发射和接收控制提供定时信息。 7. interrupt generation:该控制器在每个外围设备的基础上实现另一级别的屏蔽,这样,全局的中断服务例程可以从系统中断服务器中读取。 UARTLCR_H 寄存器内部宽 29 位,但外部通过 AMBA APB 总线通过三次写入寄存器位置 UARTLCR_H、UARTIBRD 和 UARTFBRD 进行访问。UARTLCR_H 定义了传输参数、字长、缓冲区模式、传输停止位数、奇偶校验模式和中断生成。 波特率配置:波特率除数是由 16 位整数和 6 位小数部分组成的 22 位数字。波特率生成器使用该值来确定位周期。波特率除数 = UARTCLK /(16xBaud Rate)= BRDI + BRDF,其中 BRDI 是整数部分,BRDF 是小数点分隔的小数部分小数 m = integer(BRDF*2^n + 0.5)生成内部时钟启用信号 Baud16,它是一个 UARTCLK 宽脉冲流,平均频率为所需波特率的 16 倍。然后将该信号除以 16,得到传输时钟。 数据传输和接收:对于传输,数据被写入传输 FIFO。如果 UART 已启用,则会导致数据帧开始使用 UARTLCR_H 中指定的参数进行传输。数据继续传输,直到传输 FIFO 中没有数据为止。一旦数据写入传输 FIFO(即 FIFO 非空),BUSY 信号就会变高,并在传输数据时保持高电平。只有当传输 FIFO 为空,并且最后一个字符(包括停止位)已从移位寄存器传输时,BUSY 才被否定。即使 UART 可能不再启用,也可以将 BUSY 断言为 HIGH。 当接收器空闲为 idle 时(UARTRXD 连续 1,处于标记状态)且在数据输入上检测到低电平(已接收到起始位)时,接收计数器(时钟由 Baud16 启用)开始运行,并在正常 UART 模式下在该计数器的第八个周期对数据进行采样。如果 UARTRXD 在 Baud16 的第八个周期上仍然处于低位,则起始位有效,否则会检测到错误的起始位并将其忽略。如果起始位有效,则根据数据字符的编程长度,在 Baud16 的每 16 个周期(即一个位周期之后)对连续数据位进行采样。如果启用了奇偶校验模式,则检查奇偶校验位。如果 UARTRXD 高,则确认有效的停止位,否则会发生帧错误。 UART 读写时序: * UART 读写时序图 * UART 数据帧格式 起始位:发送 1 位逻辑 0(低电平),开始传输数据。 数据位:可以是 5~8 位的数据,先发低位,再发高位,一般常见的就是 8 位(1 个字节),其他的如 7 位的 ASCII 码。 校验位:奇偶校验,将数据位加上校验位,1 的位数为偶数(偶校验),1 的位数为奇数(奇校验)。 停止位:停止位是数据传输结束的标志,可以是 1/2 位的逻辑 1(高电平)。 空闲位:空闲时数据线为高电平状态,代表无数据。 UVM 验证代码介绍: * UVM 验证环境搭建 * UVM 验证用例编写 * UVM 验证结果分析 Debug 过程和联调过程: * Debug 工具选择 * Debug 过程 * 联调过程 覆盖率收集: * 代码覆盖率收集 * 数据覆盖率收集 * FSM 覆盖率收集 通过对 UART DUT 的介绍、验证功能点提取、UVM 验证代码介绍、Debug 过程和联调过程、覆盖率收集等,我们可以更好地了解 UART 模块的工作原理和验证方法,并提高我们对 UART 模块的设计和验证能力。
2024-08-27 11:02:43 6.21MB uart
1
ActionScript 3.0 是Adobe开发的编程语言,主要用于创建富互联网应用程序(RIA),特别是Flash Player和Adobe AIR平台。在本实例中,我们探讨的是如何使用ActionScript 3.0来实现一个水波效果,这通常涉及到图形渲染、动画原理以及时间轴控制等多个方面。 在ActionScript 2.0中,水波效果可能通过修改舞台上的对象属性,如透明度、位置或缩放,以模拟水面波动的效果。而ActionScript 3.0带来了许多性能提升和语法改进,使得创建更为复杂的视觉效果成为可能。 要实现水波效果,我们需要理解基本的图形绘制。在AS3.0中,可以使用Graphics类进行绘制,例如绘制线、曲线、填充区域等。在这个例子中,可能会创建一个或多个形状对象(如Sprite或Shape),然后利用Graphics类的方法绘制出水波的基础形态。 动画的核心在于时间。AS3.0中的 Tween 类和 enterFrame 事件可以用来实现平滑的动画效果。Tween 可以用于在指定时间内改变对象的属性,而 enterFrame 事件则会在每一帧时触发,适合做连续的动画更新。在水波动画中,可能会使用这两个工具来改变水波的形状、颜色或其他视觉属性,以模拟波动的效果。 再者,为了增加真实感,可能需要引入物理计算,如波浪的传播速度、振幅、频率等。这些参数可以通过数学公式来模拟,例如三角函数可以用来创建周期性变化的波形。通过动态调整这些参数,我们可以让水波看起来更加自然。 此外,AS3.0还支持事件处理和类的面向对象编程,这对于构建可扩展和维护的代码至关重要。在这个例子中,可能会创建一个WaterWave类,封装水波的生成、更新和销毁逻辑。类的实例化和方法调用可以帮助组织代码,使其更容易理解和调试。 在文件"exWaterWave"中,可能包含了实现这个水波效果的主要源代码文件。文件可能包括一个主文档类,负责创建舞台和初始化水波对象,以及一个或多个辅助类,如WaterWave类,用于处理波浪的绘制和动画。通过阅读和理解这些代码,我们可以深入学习到ActionScript 3.0中的图形绘制、动画制作、事件处理和面向对象编程等核心概念。 ActionScript 3.0写的水波例子是一个很好的学习资源,它涵盖了AS3.0中的图形编程、动画技术以及类的使用,对于提升在Flash平台上的编程技能大有裨益。通过分析和实践这个例子,开发者可以更好地掌握ActionScript 3.0的精髓,为创建更丰富的交互式内容打下坚实基础。
2024-08-27 10:37:05 33KB as3.0
1
C++游戏入门,有源码。 Visual C++游戏开发经典案例详解 源代码
2024-08-27 01:01:01 12.34MB
1
1、资源内容:历届数学建模比赛题汇整理资料和一些思路,源码参考。适用于打算参加数学建模思路参考及一些算法参数等。 2、适用人群:计算机,电子信息工程、数学等专业的学习者,作为java实战项目,课程设计,毕业设计“参考资料”参考学习使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。
2024-08-26 18:18:43 688KB 数学建模
1
【C++代码生成器】 C++代码生成器是一种工具,它使用编程语言(在这个案例中是Python)来自动生成C++源代码。这样的工具在软件工程中非常有用,尤其是在需要大量重复或结构化代码时,可以极大地提高开发效率,减少人为错误,并促进代码的标准化。 C++是一种静态类型、编译式的、通用的、大小写敏感的、不仅支持面向过程的编程,也支持面向对象的编程的程序设计语言。它的设计融合了Simula的面向对象特性与C语言的效率,因此C++代码通常比其他高级语言更底层,具有更高的性能,但同时也对程序员的要求更高。 Python作为生成C++代码的工具语言,有以下优点: 1. **易读性**:Python的语法简洁明了,易于理解和编写。 2. **动态类型**:Python的动态类型系统使得快速开发和原型设计变得简单。 3. **丰富的库支持**:Python有许多用于文本处理和生成的库,如`string`模块,`textwrap`模块等,可以方便地用来构造C++代码。 4. **跨平台**:Python可以在多个操作系统上运行,这意味着生成的C++代码生成器也可应用于多种环境。 【Python实现C++代码生成器】 使用Python编写C++代码生成器通常包括以下几个步骤: 1. **定义模板**:定义C++代码的基本结构和模式,这些模板可以是字符串或者使用模板库(如Jinja2)创建的模板文件。 2. **数据结构**:创建数据结构来存储要生成的C++类或函数的相关信息,如类名、成员变量、方法等。 3. **逻辑处理**:编写Python代码来处理数据,根据输入生成相应的C++代码。 4. **输出生成**:将生成的C++代码写入到文件中,这通常通过Python的`open()`函数和`write()`方法完成。 例如,`make_cpp_class`可能是一个Python脚本,用于根据输入的参数生成C++类的代码。这个脚本可能接收类名、成员变量列表和方法签名作为输入,然后将这些信息插入到预定义的C++类模板中。 一个简单的C++类模板可能如下所示: ```cpp class {{class_name}} { public: {% for var in variables %} {{var.type}} {{var.name}}; {% endfor %} {% for method in methods %} {{method.return_type}} {{method.name}}({{method.parameters}}); {% endfor %} }; ``` Python脚本会解析输入,替换模板中的占位符,生成类似下面的C++代码: ```cpp class MyClass { public: int myInt; std::string myString; void print()(); }; ``` 这样的工具在大型项目或者需要快速构建框架时尤其有用,能够帮助开发者快速搭建基础架构,从而专注于业务逻辑的实现。 C++代码生成器利用Python的灵活性和表达力,为C++开发提供了便利。它们降低了手动编写重复代码的工作量,提高了代码质量,并且有助于维护代码的一致性。通过深入理解这两种语言,开发者可以更好地利用这种组合来提升工作效率。
2024-08-26 17:01:11 30KB 代码生成器
1
Unity 波函数坍缩 工程,包含实力场景以及代码
2024-08-26 16:11:16 37KB unity
1
php源码 此源码是一款视频网站系统,你可以用这个来快速搭建自己的视频网站,安装简单、界面简洁、易于使用。用户可在网站上面注册登陆上传视频、发布评论与收藏视频,系统带护眼模式,有利于保护眼睛,与此同时提供了后台管理,管理员可以进行网站名称,logo等设置。网站采用响应式设计,因此不论你在什么设备浏览网站,都有非常好的体验。 安装说明: 第一步:安装网站 (需要宝塔+apache环境,最好PHP5.5) 1、导入数据库文件夹里面的数据库文件: 2、将PHP文件夹里面的文件全部上传网站根目录 3、修改config.php文件里面的数据库信息和域名 4、完成默认账号密码是 admin/admin 第二步:生成APP 1、安装Android Studio软件,Android Studio软件和安装视频教程下载地址https://yunpan.360.cn/surl_yQ7tcLrHiRy (提取码:6776) 2、将APP源码文件夹里面的文件夹复制到桌面,在按照视频教程生成APP
2024-08-26 16:09:09 153.44MB android ffmpeg
1
bln128 椭圆曲线 256位模乘算子 verilogHDL 源代码。全流水线架构,流水级数为40个CLK。DSP48资源使用量180个左右。
2024-08-26 15:50:13 21KB
1
opengl 超级宝典 第五版 源代码 opengl 超级宝典 第五版 源代码 opengl 超级宝典 第五版 源代码
2024-08-26 14:46:44 82.93MB opengl 超级宝典
1
RRTStar(Rapidly-exploring Random Tree Star)是一种路径规划算法,它是RRT(Rapidly-exploring Random Tree)算法的改进版本。RRTStar算法的主要特征在于它能够快速地找出初始路径,并随着采样点的增加,不断地对路径进行优化,直至找到目标点或达到设定的最大循环次数。 RRTStar算法通过在三维空间中构建一棵随机树,并不断扩展树的边界,逐步逼近目标点。算法采用了启发式函数和重新布线策略来提高规划效率和路径质量。启发式函数用于估计当前节点与目标点之间的距离,引导树的扩展方向。而重新布线策略则用于优化树的结构,避免树的过早收敛,形成更平滑的路径。 此外,RRTStar算法是渐进优化的,即随着迭代次数的增加,得出的路径会逐渐优化,但它在有限的时间内无法得出最优路径。这种算法对于解决无人机三维路径规划问题特别有效,能够快速生成可行且平滑的避障路径。总的来说,RRTStar算法通过引入启发式函数和重新布线策略,有效地提升了路径规划的效率和质量,是一种有效的路径规划方法。
2024-08-26 10:03:49 5KB matlab
1