- 博客(53)
- 收藏
- 关注
原创 ZYNQ--10G PCS/PMA手册解读
从发送端XGMII的输入端口xgmii_txd[63:0]开始计时(直到该数据出现在收发端接口的gt_txd[31:0]上),通过7系列核心的XGMII接口配置在发送方向的延迟为20个周期的txoutclk。对于Zynq-7000、virtex7和kintex7设备,收发器差分参考时钟(refclk_p/refclk_n端口)必须运行在156.25 MHz,但对于32位10GBASE-R内核,差分参考时钟必须运行在312.5 MHz。在传输的情况下,帧由开始字符(S)和结束字符(T)分隔。
2024-04-07 16:44:22 953
原创 AD9361手册解读
Tx FIR滤波器也可以通过1、2或4的因子进行插值,如果不需要,也可以绕过它。过滤器抽头存储在16位双补码格式,并且抽头的数量是可配置的最少16个抽头和最多128个16组的抽头。一旦进入ALERT状态,并对rfpll进行了适当的校准,ENSM就可以进入Rx、Tx或FDD状态。回到警戒状态或等待清除该位。Rx FIR滤波器还可以按1、2或4的倍数抽取,如果不需要,也可以绕过它。该滤波器提供固定的+6dB增益,以最大限度地提高动态范围,因此可编程增益通常设置为- 6dB,以产生0 dB的净增益。
2024-03-20 16:51:39 3149
原创 ZYNQ--GT收发器(RX)
RX弹性缓冲器被设计成在两个不同的时钟域(RXUSRCLK和XCLK)之间架桥,XCLK是从CDR中恢复的时钟。为了允许纠正,每个GTX/GTH收发器TX定期传输一个或多个特殊字符,GTX/GTH收发器RX可以根据需要在RX弹性缓冲区中删除或复制这些字符。通过在RX弹性缓冲区过满时删除字符,在RX弹性缓冲区过空时复制字符,可以防止RX弹性缓冲区溢出或下溢。高速串行数据从板上的迹线流入GTX/GTH收发器RX的PMA,进入PCS,最后进入FPGA逻辑。接收未对齐位的RX在右侧。字节对齐的RX并行数据在左侧。
2024-03-11 17:35:29 1782
原创 ZYNQ--GT收发器(TX)
当开启8B/10B编码器时,TX_DATA_WIDTH属性必须配置为20位、40位或80位,此时FPGA的TX接口只使用TXDATA端口。当绕过8B/10B编码器时,TX_DATA_WIDTH属性可以配置为任何可用的宽度:16,20,32,40,64或80位。8B/10B是一种工业标准编码方案,它为实现直流平衡(传输的1和0的比例应该正好是50%)和有界视差而交换每字节两个比特的开销,以允许合理的时钟恢复。GTX/GTH收发器具有内置的8B/10B TX路径,无需消耗FPGA资源即可对TX数据进行编码。
2024-03-11 17:06:16 1734
原创 ZYNQ--AXI_DMA使用
在BD中,有ZYNQ核引出GP口去控制DMA,映射到PS端就是DMA设备。对于DMA寄存器的操作就是DMA的初始化等一系列操作。下图是GP所分配的地址空间,与PS端DMA设备的基址一致。从图中可以看出,起始数据从0x0000000开始,也就是少写了8个64bit数据。再看末尾地址,也是对应的上8个64位地址,所以写数据操作整体没有问题。),将流数据写入到DMA在转换为AXI_FULL类型送入到PS端的HP接口;数据分析:在PL侧写入了512个64bit的数据,等于512Byte个字节。
2024-03-07 21:35:34 633
原创 ZYNQ--关于一些SDK调试问题记录
注意选完之后application中必须勾选运行内核,否则不运行main文件。在Target Setup中的Debug Type中选择如下即可。
2024-03-05 22:49:35 367
原创 MCU设计--M3内核详解(2)
内核架构FETCH取指单元DEC指令译码EXEC执行LSU内存取数ETM_INTF调试接口STATUS状态上报内核-寄存器不同指令集支持不同的寄存器分配。R13用于主堆栈指针(MSP),进程堆栈指针(PSP)R13 连接寄存器存储子程序指针,提高速度R15 程序计数器PC剩下的一些指令的预取
2024-03-04 22:53:11 370
原创 ZYNQ-PS与PL交互(AXI_LITE)
两种设计,一种由PS通过AXI_LITE将数据放入PL端的BRAM中,但后读出。另外一种PS端通过AXI_LITE将数据直接写入到PL端。
2024-03-03 14:54:02 714
原创 ZYNQ-AXI4_LITE
为写的数据的掩码,写的数据为32bit,4个Byte,所以WSTRB为4bit位宽,WSTRB为4位对应4Byte的数据。分为三个通道,写地址通道,写数据通道,应答通道。其中AWPROT,WSTRB用的比较少。保护信号,3bit全设置0即可。
2024-02-29 11:59:13 233
原创 数字IC验证23915--寄存器方法
UVM提供了两种用来跟踪寄存器值的方式,我们将其分为自动预测(auto prediction)和显式预测(explicit)。uvm_reg_sequence提供的方法。
2023-09-15 09:30:44 333
原创 数字IC验证23912--寄存器模型
在具备了MCDF总线UVC之后,需要实现adapter。每一个总线对应的adapter所完成的桥接功能即是在uvm_reg _bus_op和总线transaction之间的转换。示例囊括了mdf_bus_agent的所有组件:sequence item、sequencer、driver、monitor和agent。在具备了寄存器模型mcdf_rgm、总线UVC mcdf_bus_agent和桥接reg2mcdf_adapter之后,就需要考虑如何将adapter集成到验证环境中去:。
2023-09-13 22:28:44 307
原创 数字IC验证23909--sequence发送相关
第二,读者需要意识到,parent sequence的虚方法pre_do()、mid_do()和post_do()会发生在发送item的过程中间。·第一,sequence和item自身的优先级,可以决定什么时刻可以获得sequencer的授权。这些完整的细节有两个部分需要注意。
2023-09-09 14:59:34 49
原创 数字IC验证23908--sequence
item是基于uvm_object类,这表明了它具备UVM核心基类所必要的数据操作方法,例如copy()、clone()、compare()、record()等。item通常应该具备有什么类型的数据成员呢?我们将它们划分为如下几类:·控制类。譬如总线协议上的读写类型、数据长度、传送模式等。·负载类。一般指数据总线上的数据包。·配置类。用来控制driver的驱动行为,例如命令driver的发送间隔或者有无错误插入。·调试类。
2023-09-08 22:47:47 72
原创 数字IC验证23907--UVM实验3
在top的base_test类中注册回调类并且绑定,将回调类中的虚方法添加进去。1、定义回调类,并在回调类中声明需要覆写的虚方法。3、继承cb类,并且在其中覆写方法。
2023-09-07 22:43:57 127
原创 数字IC验证23906--callback
除了UVM提供新的类方便组件之间的同步之外,另外一种同步方式回调函数(callback)也方便了类的封装复用。通常情况下得到了一个封闭的包,其中的类如果有些成员方法需要修改,或者需要扩展新的方法时,应该怎么做呢?如果这个包是外来的,那么维护方法不建议去修改这个类本身。如果我们通过类的继承来满足这一要求,又无法在该包环境中用新的子类替换原来的父类,那么UVM的覆盖机制(override)可以帮忙。
2023-09-06 16:29:57 111
原创 数字IC验证23906--同步元件barrier
在SV模块中,多个线程的同步除了可以通过semaphore和mailbox来进行,也可以通过fork-join的结构控制语句块来控制整体的运行节奏。然而对于UVM环境中的多个独立组件,SV的这些方法都受到了作用域的局限。. UVM提供了一个新的类uvm_barrier来对多个组件进行同步协调,同时为了解决组件独立运作的封闭性需要,也定义了新的类uvm_barrier pool来全局管理这uvm_barrier对象。
2023-09-06 15:42:59 65
原创 数字IC验证23906--TLM2浅介
与TLM1.O相比,TLM2.0提供了更丰富更强大的传输特性,它们主要包括:·双向的阻塞或者非阻塞接口·时间标记·统一的数据包通过这些特性,TLM2.0使得接口之间的通信更趋于标准化,更容易为系统构建抽象模型。虽然TLM2.O一开始作为SystemC标准库的一部分(由C++实现),但是由于RTL与SystemC模型的混合仿真趋势,要求SV也能够有与之匹配的接口便于日后的互相嵌套。本节将重点介绍TLM2.0的特性、它在UVM中的实现方式以及通过一些例码使读者了解其使用方式。
2023-09-06 11:19:36 112
原创 数字IC验证23906--通信管道
文章目录TLM FIFOanalysis portAnalysis TLM FIFORequest & Response通信管道TLM FIFO在一般TLM传输过程中,无论是initiator给target发起一个transaction,还是initiator从target获取一个transaction,transaction最终都会流向consumer中(initiator和targe都是可以是consumer) 。consumer在没有分析transaction时,我们布望将一对象先存储
2023-09-06 09:59:24 48
原创 数字IC验证23904--组件家族
文章目录uvm_driveruvm_monitoruvm sequenceruvm_agentuvm_scoreboard关于两个不常用的比较类uvm_scoreboard示例uvm_driver从该类会从uvm sequencer中获取事务(transaction),经过转化进而在接口中对DUT进行时序激励。任何继承于uvm driver的类需要注意的是,该类是参数化类,因此在定义时需要声明参数的类型。首先看uvm_driver类的定义:class uvm_driver # (type REQ=
2023-09-04 11:25:49 53
原创 UVM实验1
请使用消息过滤方法set_report_verbosity_level_hier()在uvm_message_test:build_phase()中屏蔽所有层次的消息,也就是不允许有任何 uvm_message_test 及其以下组件的消息在仿真时打印出来。注意这地方最后一个参数uvm_component parent,此处用于构建钩子形成层次化,有底层到顶层路径关系,当前的component_create ->top -> uvm_test ->uvm_component,所以此处参数可以填this。
2023-09-04 09:49:12 135
原创 数字IC验证23901--UVM实验0
vsim -novopt work.sv_class_inst -classdebug使用此命令。在sv_class_inst中定义了一个类不继承于uvm的任何一个类。● 了解 UVM 验证顶层盒子与 SV 验证顶层盒子之间的联系。● 理解 SV 和 UVM 之间的关系。● 掌握启动 UVM 验证的必要步骤。● 懂得如何编译 UVM 代码。
2023-09-01 10:17:23 59
原创 数字IC验证23901--消息管理
在UVM环境中或者环境外,只要有引入uvm_pkg,均可以通过下面的方法来按照消息的严重级别和冗余度来打印消息。
2023-09-01 09:27:59 59
原创 数字IC验证23831--config机制
首先要分析set路径:root->uvm_test_top->c1->val1/str1;get 路径:root->uvm_test_top->c1->val1/str1。”来表示任意的层次,类似于正则表达式的用法。
2023-08-31 22:25:35 97
原创 数字IC验证23831-- phase机制
UVM-1.1之后,结束仿真的机制有且只有一种,那就是利用objection挂起机制来控制仿真结束。
2023-08-31 17:32:59 166 1
原创 数字IC验证23831--类库,工厂,覆盖
将浏览完UVM工厂后,你有没有觉得它就像一个大大的乐高世界。一旦把那些组件装载盒子注册之后,接下来的UVM环境搭建就变得更加容易、更方便日后维护了。整个UVM世界的构建,离不开factory的三个核心要素∶注册、创建和覆盖。utils.uvmUVM学习中的一大阻碍就是,实现某一种效果的方法有很多种,但是对于初学者,你只需要掌握最常用的一种实现方式,就足够了!因为我们最终需要掌握UVM世界的全貌,而不是研究全部的用法,毕竟我们时间非常有限!
2023-08-31 15:45:17 332 1
原创 数字IC验证23829--实验4a
该模块需要模拟mcdf的硬件功能,将三个通道信箱内的数据打包与fmt输出的数据做比较。后面的类就是顶层,可以针对不同的功能,制定不同的顶层。
2023-08-30 09:36:23 360 1
原创 数字IC验证23824--SV实验3
再此注释掉两个通道,打印出obj_id等于400,说明李花了400 次trans类,req和rsp各一次。我在这里修改约束范围,可以编译,无法仿真。在pkg1中,信箱在gen中例化,在agent中与init中两信箱句柄同时指向一个对象。trans类中修改约束,在base_test的new中修改trans。注意:这地方的约束必须要符合trans类中的约束,要不会发生错误。在pkg2的agent中没有连接信箱,要求在test中连接。重复了3次的数据结果都一样。
2023-08-24 16:48:56 701 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人