1.[UVM源代码研究] 谈谈uvm中的浅拷贝(shallow copy)与深拷贝(deep copy)
2.stm32 定时器中断
3.STM32F103正点原子学习笔记系列——串口
4.quartus ii13.1与13.0有什么区别
[UVM源代码研究] 谈谈uvm中的浅拷贝(shallow copy)与深拷贝(deep copy)
在探讨UVM(Universal Verification Methodology)中的浅拷贝(shallow copy)与深拷贝(deep copy)之前,我们先对相关概念进行简要介绍,以便于理解以下讨论。浅拷贝和深拷贝是对象编程领域中基本概念,不仅限于系统Verilog(SV)和UVM(Universal Verification Methodology)。
浅拷贝:这一概念涉及的tsp源码是拷贝对象的指针,即浅拷贝只复制指向对象内存空间的指针,使得目标对象与源对象共享同一内存空间。浅拷贝的局限性在于当内存空间被销毁时,所有指向该空间的指针必须重新定义,否则会导致野指针错误。
深拷贝:与此相反,深拷贝确保源对象和拷贝对象完全独立,两者之间互不影响,包括内存空间内容也被复制一份。例如,基本类型如Int、Double,以及结构体(struct)、枚举(Enum)会自动执行深拷贝,而类类型的对象则需区分浅拷贝与深拷贝。
在UVM中,`uvm_object`类提供了`copy`与`clone`函数来实现对象的拷贝。
`copy`函数为非虚拟、无返回值的函数,不能被重写,但`do_copy`函数为虚拟函数,588ku 源码可以通过重写`do_copy`函数实现对`copy`函数的间接重写。调用`copy`函数前,目标对象需先创建,以实现源对象内部对象的深拷贝赋值,而不会对目标对象本身分配空间。
`clone`函数为虚拟函数,返回`uvm_object`类型,可以被重写。由于返回值类型限制,`clone`只能通过`$cast`来实现目标对象类型的转换,而不能直接赋值。`clone`函数返回一个指向源对象类型的`uvm_object`句柄,因此目标对象类型必须与源对象一致(通过`$cast`检查),以确保成功执行`clone`操作,且目标对象不需要事先分配空间,因为`clone`会自动分配新空间。
`copy`函数的实现中,除了`do_copy`之外的第行的`__m_uvm_field_automation(rhs, UVM_COPY, "")`完成了在`field_automation`中的配置实现。如果未重写`do_copy`函数,则所有拷贝行为依赖于`__m_uvm_field_automation`函数。
`uvm_object_defines.svh`文件在第行实现了将`copy`传入参数转换为局部变量`local_data__`,该变量类型为通过`uvm_object_untils_begin`传入的参数类型。`local_data__`在后续的`uvm_field_automation`宏中根据传入的标志位进行相应操作,以`uvm_field_object`为例。
在`uvm_field_object`中,关于`UVM_COPY`的zedgraph所有示例源码具体操作表明,调用`copy`的源对象不能为空。如果`FLAG&UVM_NOCOPY`位为1,则直接结束代码执行。如果`FLAG&UVM_REFERENCE`位为1,或者`local_data__.ARG == null`,则将目标对象的`ARG`对象句柄指向源对象的`ARG`句柄。这种做法对于未分配空间的对象赋值,以避免错误。`UVM_REFERENCE`的应用场景主要针对`uvm_component`类型的对象注册,确保在进行`copy`和`clone`时执行浅拷贝,避免深拷贝导致的问题。
`uvm_component`类型在`copy`时默认执行深拷贝,而`UVM_REFERENCE`标志位则实现浅拷贝。例如,在`apb_env`中,`bus_monitor`和`bus_collector`被例化为`master`中的`monitor`和`collector`,同时`cfg`对象也传递给`master`。通过`field_automation`的修改,可以观察到`uvm_top`在打印树型结构时,`apb_monitor`和`cfg`对象的打印信息。
总结而言,UVM中的默认拷贝/克隆操作为深拷贝,`UVM_REFERENCE`标志位用于实现浅拷贝。理解这些概念对于在UVM中进行对象拷贝时避免错误至关重要。
stm 定时器中断
本文将深入探讨STM的内部定时器中断机制,它是安卓 php 源码通过内部定时器的计数器工作原理,当计数器达到预设值时触发中断,由CPU进行处理。理解这一部分对于控制STM的精确时间管理至关重要。 首先,定时器中断的核心在于时基单元的设置。CK_PSC,即预分频器时钟源,通常使用系统时钟频率,例如TIM2,即使在TIM2属于APB1外设且APB1时钟为MHz时,实际应用中可能通过库函数调整为MHz。PSC寄存器用于调整计数器时钟频率,通过与PSC的值进行分频操作,降低计数器速率。计数器(CNT)则基于时钟源递增,当达到预设的自动重装载寄存器(ARR)值后重置并触发中断。 在源码实现中,我们通过示例展示了如何使用TIM2定时器每1秒产生一次中断。这涉及到配置TIM2的外设时钟、设置计时器的时钟源、预分频器(PSC)和自动重装载寄存器(ARR),从而实现计数器溢出频率为1Hz。接下来,需要开启TIM2的更新中断,配置NVIC以确保中断被正确处理,并最终启用TIM2使其运行。地球仪源码 至此,完成了STM内部定时器中断的详细配置和中断处理流程。欲了解更多详细内容,可参考blog.uwenya.cc/.htm...。STMF正点原子学习笔记系列——串口
数据通信的基础概念涉及到串行和并行通信、单工、半双工、全双工通信以及同步、异步通信。串行通信仅需一根线传输数据,而并行通信则需要多根线。通信方向的分类包括单工(数据单向传输)、半双工(双向传输需分时进行)和全双工(同时双向传输)。同步通信共享同一时钟信号,而异步通信则通过在数据中加入起始位和停止位来同步。
串口(RS)是按位发送和接收的接口,常见的有RS、RS和RS等。RS接口的典型配置包括数据输出(TXD)和数据输入(RXD),以及地线(GND)。在Stm中,主要关注的接口是TXD、RXD和GND。RS与CMOS/TTL电平之间存在差异:RS的逻辑1为-~-3V,逻辑0为+3~+V,而CMOS电平的逻辑1为3.3V,逻辑0为0V。TTL电平的逻辑1为5V,逻辑0为0V。由于电平的不兼容,CMOS/TTL不能直接与RS进行信息交换。
RS通信协议包括:启动位(必须占1位,电平为逻辑0),有效数据位(可选5-9位,LSB在前,MSB在后),校验位(可选1位,可不设置),以及停止位(必须有,可选0.5-2位,电平为逻辑1)。RS异步通信协议的这些要素是通信过程中的关键组成部分。
STM的USART(通用同步异步收发器)可以与外部设备进行全双工异步通信,其主要特征包括数据寄存器(DR)、波特率部分、波特率寄存器(BRR)等。在进行读写操作时,只能操作数据寄存器。USART的波特率部分依赖于挂载在哪个时钟总线上,如APB1或APB2。在设置波特率时,需要计算USARTDIV的值,该值取决于挂载的时钟频率和使用的波特率。
HAL库为STM提供了外设初始化和中断回调机制,MspInit()是一个留给用户定义的接口,用于完成GPIO、NVIC、CLOCK等的初始化。串口USART的初始化涉及到GPIO的配置、时钟通道的选择、中断优先级的设置等。通过HAL库的函数,可以以中断或阻塞的方式实现USART/UART的异步通信。
IO引脚的复用功能使得GPIO端口既能够用于输入/输出,也能被其他非GPIO外设控制。在F1系列的STM中,有多种引脚复用配置选项,允许用户根据需求灵活配置。
编程实战和源码解读部分则涉及到实际的项目开发和代码理解,包括如何在特定项目中应用上述通信原理和库函数,以及如何通过阅读和分析源码来深入理解底层实现和优化代码。
quartus ii.1与.0有什么区别
Altera公司今天宣布发布Quartus® II软件.1版,通过大幅度优化算法以及增强并行处理,与前一版本相比,编译时间平均缩短了%,最大达到%,进一步扩展了在软件效能方面的业界领先优势。软件还包括最新的快速重新编译特性,适用于客户对Altera Stratix® V FPGA设计进行少量源代码改动的情形。采用快速重新编译特性,客户可以重新使用以前的编译结果,从而保持性能,不需要前端设计划分,进一步将编译时间缩短了%。
软件和IP产品市场主任Alex Grbic评论说:“我们的Quartus II软件一直能够随每一代FPGA产品一起发展,这是源于我们一开始便设计好的优异成熟的软件体系结构。采用Quartus II最新版软件的新功能以及增强特性,我们高端FPGA的编译时间比竞争产品快2倍,性能提高了%。”
这一最新版还增强了高级设计工具,扩展了Quartus II软件的领先优势,因此,客户提高了效能,受益于Altera器件前沿的功能。Quartus II软件.1版增强了其Qsys系统集成工具、DSP Builder基于模型的设计环境,以及面向OpenCL™的Altera SDK。
·Altera Qsys系统集成工具自动连接知识产权(IP)功能和子系统,从而显著节省了时间,减轻了FPGA设计工作量。使用Qsys,设计人员能够无缝集成多种业界标准接口,包括,Avalon、ARM® AMBA AXI、APB和AHB接口,加速了系统开发。在Quartus II软件v.1中,Qsys增强了系统可视化能力,支持同时查看Qsys系统的多个视图,进一步提高了效能。这样,通过在新外设中增加或者连接组件,更容易修改您的系统。
·面向OpenCL的Altera SDK现在全面投产,是业界唯一通过一致性测试的FPGA OpenCL解决方案,符合Khronos集团定义的OpenCL规范。它提供了软件友好的编程环境,在Altera优选电路板合作伙伴计划电路板上使用FPGA,或者使用Altera Cyclone® V SoC开发板时,支持在Altera SoC上设计高性能系统。
·Altera DSP Builder设计工具支持系统开发人员在其数字信号处理(DSP)设计中高效的实现高性能定点和浮点算法。为工程师在设计过程中提供更多的选择,更加灵活的设计,Altera DSP Builder高级模块库现在可以集成到MathWorks HDL Coder中。对快速傅里叶变换(FFT)处理的改进包括运行时长度可变FFT,以及GHz极高数据速率的超采样FFT,以优异的性能和多种灵活的选择来实现这些通用DSP功能。
Quartus II软件.1版包括Altera同类最佳的IP,延时降低了%,资源利用率提高了%以上,同时保持了客户的性能不变,也保持了最常用和性能最高的IP的吞吐量。这些IP内核包括G、G和G以太网,以及G至G Interlaken。
关于Quartus II软件v.1特性的详细信息,请访问Altera的Quartus II软件新增功能网页。
价格和供货信息
现在可以下载订购版和免费网络版的Quartus II软件v.1。Altera的软件订购程序将软件产品和维持费用合并在一个年度订购支付中,简化了获取Altera设计软件的过程。Quartus II软件订户可以收到ModelSim®-Altera入门版软件,以及IP基本套装的全部许可,它包括Altera最流行的IP (DSP和存储器)内核。一个节点锁定的PC许可年度软件订购价格为2,美元,可以通过Altera的eStore购买。
对于一个节点锁定的PC许可,面向OpenCL的SDK年度软件订购的价格是美元。关于OpenCL的Altera优选电路板合作伙伴计划及其合作伙伴的其他信息,或者希望了解所支持的所有电路板的详细信息,并进行购买,请访问Altera网站的OpenCL部分。