自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 system verilog,可改变参数的计数器模块

(1)因为需要将 count_number 与 MAX_COUNT 对比,所以 count_number 的位宽必须与 MAX_COUNT 一致。假设需要计数 20 个 clk,那么向 MAX_COUNT 赋值 5'd26,BITS_W 赋值 5'd5。MAX_COUNT 是需要的最大计数值,BITS_W 是用来匹配 MAX_COUNT 的位宽。(2)调用时,实例化的对象名必须放在 parameter 传参之后。设计一个可改变计数规模的计数器。

2025-04-11 16:14:37 181

原创 system verilog,定义包含约束、字段自动化的数据传输类

如果没有 solve before,仿真会产生两种求解顺序:先随机产生一个 sel 后再据此产生wdata_num ,或先随机产生一个 wdata_num 后再据此产生 sel。`uvm_object_utils_begin(class_name) 和 `uvm_object_utils_end 必须配对使用。`uvm_field_array_int(array_name, FLAG) 用于注册动态数组类型的字段。`uvm_field_int(var_name, FLAG) 用于注册整数类型的字段。

2025-04-09 14:28:10 341

原创 借用2位寄存器,对信号四分频的方法

pclk_neg 有效时 pclk 被拉低,pclk_pos 有效时 pclk 被拉高,完成四分频。可以看到 clk_cnt[1] 在 4 个 clk 的循环内是 0、0、1、1,刚好可以作为四分频的完整周期。clk_cnt 经历 2'b00、2'b01、2'b10、2'b11 四个状态的循环,其中每个状态保持一个 clk。分别得到 clk_cnt[1] 的上升沿信号 pclk_pos,下降沿信号 pclk_neg。如上所述,clk_cnt[1] 以 4 个 clk 做循环,刚好是一个四分频。

2025-04-01 14:21:47 248

原创 使用 system verilog 编写,用于简化 UVM 结构的宏的学习心得

ifndef tc_macro_sv // 如果没有定义 tc_macro_sv,就执行下面的命令,定义 tc_marto_sv// 使用 package 进行打包,方便维护endtask \endclassendpackage::tc_macro_pkg // 后缀 ::tc_macro_pkg 不是必要`endif。

2025-03-07 17:24:54 450

原创 学习用于混仿的测试用例,并编写过温下电的测试用例的知识总结 第二部分

使用 event 来实现多个进程之间的同步处理,例如一个进程等待 event 发生,当该 event 发生后那么对应的进程将会被执行。同一个initial begin end内的语句是顺序执行的,所以两个 begin end顺序执行,并且单个begin end内也是顺序执行。event实际上是一个静态对象句柄指向一个同步的对象,并且触发 event 和等待 event 的触发成对使用。注意,如果使用@(event);等待事件触发,等待的时间必须小于触发的时间,即要在事件触发之前,将@(event);

2025-03-03 17:20:18 715

原创 学习用于混仿的测试用例,并编写过温下电的测试用例的知识总结

(1)"uvm_root" 是 uvm 的顶层类,使用 "uvm_root::get()" 实例化一个 "uvm_root" 类的对象;(2)使用 ".set_timeout()" 调用设置超时的功能;(3)".timeout(10ms)" 传递 10ms 给延迟参数。注意:1.声明数组,和定义数组大小必须分开,byte a[] = new[256];是错误的;2.写入数据时,索引左小右大。mstate[0:5] 正确;mstate[5:0] 错误。

2025-02-28 20:12:50 631

原创 《UVM 实战》 第二章 Episode 1

在 my_interface.sv 中定义 interface 类 my_interface。// 48bit的以太网目的地址// 48bit的以太网源地址// 以太网类型// 携带数据的大小// 所有数据的校验值// 对 pload 添加约束函数,规定 pload 的大小endclass// 模拟的校验算法// post_randomize 是 UVM 自带函数,在某个类的实例的 randomize 被调用后// 自动调用。

2024-11-05 10:38:02 860 1

原创 Verilog 中有符号数的位扩展,计算,四舍五入,饱和截取。

总位宽 M ,小数位宽 N ,最高位是符号位.有两种表示方法。(1)MQN。(2)(1,M,N)。例如,8 位有符号小数 100.11001 ,可以表示为:8M6 ,或 (1,8,6)。

2024-08-13 14:56:04 1224

原创 基于 Xilinx 提供的 BUFGCE 的门控时钟设计

与 BUFG 不同,BUFGCE 由一个时钟输入、一个时钟输出、一个时钟使能信号构成。这个原语基于 BUFGCTRL 并以一些引脚连接逻辑高电位和低电位。图 2-7 表明了 BUFGCE 和 BUFGCTRL 的关联。LOC 约束可用于手动布置 BUFGCE 和 BUFGCE_1 的位置。使能信号线路使用了 BUFGCTRL 的 CE 引脚,使能信号必须满足预设时间的要求。违反此预设时间会产生毛刺。

2024-06-18 21:32:24 928

原创 使能时钟的设计,使用时能时钟代替分频时钟

FPGA 内部时钟使用逻辑计数分频产生的时钟,一般不推荐直接将其用于内部逻辑。若不希望使用 PLL 资源,可以考虑使用使能时钟进行分频。使能时钟进行分频的好处:(1)避免时钟过多,会造成不稳定;(2)保持一个时钟,减少跨时钟域;(3)时序设计可以使用 “ 多周期约束 ”。

2024-06-15 22:19:54 626

原创 Vivado 实现倍数含有小数的分频器设计

由上得知,62.5 个时钟 A ,产生 1 个低频时钟 B ( 62.5 分频,即 1 个输入时钟 A ,产生 1/62.5 个低频时钟 B)。取公约数 5 进行化简:需要 1 个 62 分频,1 个 63 分频,共 125 个输入时钟 A ,产生 2 个 低频时钟 B。说明需要 5 个 62 分频,5 个 63 分频,共 625 个输入时钟 A ,产生 10 个 低频时钟 B。但电路无法产生 0.5 个时钟,因此将其扩大为:625 个时钟 A ,产生 10 个低频时钟 B。频率是时钟周期的倒数。

2024-06-14 11:32:20 873

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除