首页 新闻资讯 技术资料 论坛 网站地图
存储器 嵌入式软件 接口电路 软件开发 嵌入式系统 安防产品 计算机外设
电子元器件搜索:
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
维库电子市场网是知名的电子元器件交易网站, 为电子生产企业提供IC库存和技术资料查询服务。
位置: 首页 > 详细信息
  我的一点小经验 之2
出处:综合电子论坛 时间: 2007-11-09
levi 发布于 2007-2-9 1:15:54
表情我的一点小经验 之2


介绍testbench的设计方法,最好是用实例来说明。附件里面提供了我编写的一个小的程序。

上传的附件
   20072100141648.zip [ 1.28 KB ]

包括如下文件:

(1) cnt4: 4位计数器

(2) testbench: 测试模块。

cnt4定义为:

entity cnt4 is
port(reset, clock, clocken: in STD_LOGIC;
  qout: out STD_LOGIC_VECTOR(3 downto 0)
  );
end cnt4;
波形为:

上传的图片
  2007291211858.jpg [ 32.97 KB 1193×94 ] (缩略时请点击查看原图)

 

为了测试cnt4这个实体,采用了一个testbench实体专用作测试cnt4之用。定义很简单:

entity testbench is
end testbench;

可以看到,定义里面是空的。当然也可以不是空的。根据需要吧。

先看看testbench的仿真结果,也用波形描述:

上传的图片
  2007291215058.jpg [ 33.50 KB 1200×94 ] (缩略时请点击查看原图)

 

可以看到,上面两张图,描述的是同一个计数器功能,只是变量表示不太一样。

下面介绍testbench的实现原理。

(1)需要定义测试向量表,test_vector_list即是(请参考源代码,以下略)。

(2)定义待测元件:

component cnt4 is
  port(reset, clock, clocken: in STD_LOGIC;
   qout: out STD_LOGIC_VECTOR(3 downto 0)
   );
end component;
(3)待测元件实例化

u1: cnt4 port map(reset => reset, clocken => clocken, clock => clock, qout => qout);
(4)顺序读出测试向量表

  reset   <= test_vector_list(index).reset;
  clocken <= test_vector_list(index).clocken;
  clock   <= test_vector_list(index).clock;
  q_var   := test_vector_list(index).qout;
(5)激活计数器:

  wait for 10ns;
(6)校验

  ASSERT qout = q_var report "invalid state" severity Warning;

ok

以上只是testbench实现的方法之一,还有多种实现方法,以后有机会再描述。







「该帖子被 levi 在 2007-2-10 0:14:58 编辑过」
天上人间 发布于 2007-11-9 20:33:12
表情好东东呀,我喜欢,学习中
关闭】 【打印
相关专题  
软件开发
AD/DA
工业控制
医疗电子
安防产品
传感控制
电源系列
测试测量
CPLD/FPGA
嵌入式软件
嵌入式硬件
应用产品
IC设计
军工/航空航天
接口电路
开发工具
数控系统
综合电子技术
消费电子
通信产品
SOPC
存储器
嵌入式系统
嵌入式开发新闻
计算机外设

© 2007 百斯嵌入式开发网 网站地图