集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1918|回复: 1

【Modelsim常见问题】TestBench中端口reg和wire定义解惑

[复制链接]
荼蘼 发表于 2021-7-2 14:57:55 | 显示全部楼层 |阅读模式

TestBench中端口reg和wire定义解惑


很多学员在学习TestBench的编写的时候,容易死记概念,最典型的就是,被测试模块的输入端口在测试文件中要定义成reg,输出端口要定义为wire。
例如,最典型的这种写法,大家都能看得懂
  1. reg clk;
  2. initial clk = 0;
  3. always #10 clk = ~clk;

  4. led_run led_run
  5. (
  6.     .clk50(clk),
  7.     .led(led)
  8. );
复制代码

那我现在换一种写法,我定义一个中间信号,名叫clkin,然后按照下述方法写:
  1. reg clk;
  2. initial clk = 0;
  3. always #10 clk = ~clk;

  4. wire clkin;

  5. assign clkin = clk;

  6. led_run led_run
  7. (
  8.     .clk50(clkin),
  9.     .led(led)
  10. );
复制代码

这个时候,被测试模块的输入端口就链接到了clkin这个被定义为wire型的信号上,是不是就与我们所说的基本规律相违背了呢?


这个实际就是看你有没有真正理解激励信号的意义,使用reg定义激励信号,然后我们可以通过对reg信号在不同的时候赋予不同的值来产生激励。如果使用reg信号定义的信号名称和你的被测试模块的端口在测试文件中的命名一样,就可以默认连接上,第一种写法就是这种形式。在第二种写法中,增加了一个中间信号,这个信号是个wire型的,一端连接到了reg型的clk这个信号上,另一端连接到了被测试模块的clk50输入端口。实质上等同于直接将reg型的clk信号直接连接到被测试模块的clk50上,所以并没有冲突。


为什么我在最开始讲测试文件的编写时候要重点使用示波器和信号发生器来类比,就是希望大家真正理解这些信号的实质。
lihongkun16 发表于 2021-7-3 08:59:30 | 显示全部楼层
【Modelsim常见问题】TestBench中端口reg和wire定义解惑
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 09:13 , Processed in 0.059446 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表