【FPGA】Vivado 仿真

本文为 FPGA 学习总结,欢迎分享交流。

运行环境

  • windows10
  • Vivado 2018.3
  • Modelsim 10.7

如何对编写的代码进行仿真?仿真对于我们 FPGA 的设计十分重要,我们用几个简单的例子进行讲解。

Test bench 文件结构

完整的测试文件结构为:

module Test_bench();//通常无输入无输出
/* 信号或变量声明定义
逻辑设计中输入对应 reg 型
逻辑设计中输出对应 wire 型
使用 initial 或 always 语句产生激励
例化待测试模块
监控和比较输出响应 */
endmodule

根据实际情况会有顺序调换或简化。

时钟激励设计

/*----------------------------------------------------------------
时钟激励产生方法一:50%占空比时钟
----------------------------------------------------------------*/
parameter ClockPeriod=10;
initial
	begin
		clk_i=0;
		forever // 一直产生时钟
			#(ClockPeriod/2) clk_i=~clk_i;
    end

/*----------------------------------------------------------------
时钟激励产生方法二:50%占空比时钟
----------------------------------------------------------------*/
initial
	begin
		clk_i=0;
        always #(ClockPeriod/2) clk_i=~clk_i; // #代表延迟
	end

/*----------------------------------------------------------------
时钟激励产生方法四:产生固定数量的时钟脉冲
----------------------------------------------------------------*/
initial
	begin
		clk_i=0;
        repeat(6) // 下面的代码执行6次,产生3个周期的时钟
			#(ClockPeriod/2) clk_i=~clk_i;
	end

/*----------------------------------------------------------------
时钟激励产生方法五:产生非占空比为 50%的时钟(用于特殊场合)
----------------------------------------------------------------*/
initial
	begin
		clk_i=0;
		forever
			begin
				#((ClockPeriod/2)-2) clk_i=0;
				#((ClockPeriod/2)+2) clk_i=1;
			end
	end

复位信号设计

/*----------------------------------------------------------------
复位信号产生方法一:异步复位
----------------------------------------------------------------*/
initial
	begin
		rst_n_i=1;
		#100; // 延迟后产生,必须在时钟振荡后才起作用
		rst_n_i=
  • 14
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值