ModelSim环境基于VHDL语言的testbench书写.docVIP

ModelSim环境基于VHDL语言的testbench书写.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ModelSim环境基于VHDL语言的testbench书写

testbench顾名思义就是一个测试台,它对外没有接口,所以实体部分为空,但它要对要测试的器件提供激励信号,这其实就是最简单的testbench,以下是具体的操作步骤: 1.首先基于QuartusII建立的一个新的工程,编译通过,这其实就是我们要测试的源文件DUT(design under test)counter.vhd. library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is port(clk: in std_logic; ????? reset: in std_logic; ????? en: in std_logic; ????? q: out std_logic_vector(3 downto 0)); end counter; architecture behave of counter is ??? signal q_n: std_logic_vector(3 downto 0); begin ??? process(clk, reset, en, q_n) ??? begin ??????? if (reset = 1) then ??????????? q_n = (others = 0);--òì2???á? ??????? elsif rising_edge(clk) then ??????????? if en = 1 then ??????????????? q_n = q_n + 1; ??????????? end if; ??????? end if; ??? end process; ??? q = q_n; end behave; 2.打开ModelSim,指定路径为Quartus工程所在目录;建立新的仿真工程,添加文件(DUT)。 3.编译DUT文件到仿真库中(右键DUT,选择compile). 4.写testbench文件(counter_tb.vhd)。首先选择view-source-show language templates,然后选择file-new-source-vhdl,双击creat testbench,选择Design Unit Name为DUT文件,点击finish,模板创建完成,然后右键取消read only ,自己添加测试信号。 LIBRARY ieee? ; USE ieee.std_logic_unsigned.all? ; USE ieee.std_logic_1164.all? ; ENTITY counter_tb? IS ???? constant ClockPeriod: time := 40 ns; END ; ? ARCHITECTURE counter_tb_arch OF counter_tb IS ? component counter is ??????? port(clk: in std_logic; ??????????? reset: in std_logic; ??????????? en: in std_logic; ??????????? q: out std_logic_vector(3 downto 0)); ??? end component counter;????????? ??? ??? signal clock, rst, en: std_logic; ??? signal q: std_logic_vector(3 downto 0); begin ??? CounterInstance: counter port map(clock, rst, en, q); ??? ??? simProcess: process ??? begin ??????? rst = 1; ??????? wait for 50 ns; ??????? rst = 0 ; ??????? wait for 1000 ns; ??????? rst = 0 ; ??? end process simprocess; ??? ??? en = 0 after 0 ns, ??????? 1 after 50 ns, ??????? 0 after 850 ns, ??????? 1 after 900 ns;?? ??? ??? ClockProcess: process(clock, rst) ??? begin ??????? if (rst = 1) then ??????????? clock = 0; ??????? else ??????????? clock = not clock afte

文档评论(0)

ytucd96 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档