年轻人的第一次Quartus和Modelsim(Testbench)

本文详细介绍了如何利用Quartus免费版建立Verilog项目,编写DFF模块,以及通过SimulationWaveformEditor和Modelsim(Testbench)进行仿真操作。在Quartus中创建新项目,编写Verilog代码实现DFF,然后通过设置和运行仿真脚本来观察波形,验证设计功能。

这里以Quartus免费版举例

1. 项目建立:

  1. 打开Quartus,从【File=>NewProjectWizard】新建一个项目。
  2. 给项目设立文件夹,命名,并且选择Simulation为‘ModelSim—Altera’,‘Verilog’
  3. Finish结束(因为我没有打算烧板子,其他就不选)

图2

2. 编写Verilog设计文件:

1.从【File=>New】新建一个文件,选择【Design Files=>Verilog HDL File】新建v文件。
2. 开始编写Verilog。(代码引用来自: link

module dff(clk,clr,rst,d,q);//clr清0,rst复位
	input clk,clr,rst,d;
	output q;
	reg q;
	always@(posedge clk or posedge clr)
	begin
		if(clr==1'b1)q<=1'b0;
		else if(rst==1'b1)q<
ModelSim中编写Testbench有多种相关情况及对应方法: - **Testbench基本结构编写**:以一个简单的二选一多路选择器为例,编写对应的testbench如下: ```verilog `timescale 100ns/1ns //设置仿真步长(单位时间)/仿真精度(最高分辨率) module TB_mux21; //实体名,自行拟定,建议与元件实体名区分开来 //端口声明 reg A,B,C; //一般输入端口使用reg型 wire Y; //输出端口只能用wire型 //实例引用被测模块,格式: // .<实例端口名>(<欲链接的测试端口名>) //注:这里的testMux21就是一个自己起的名字,是用元件mux21实例化的一个对象 mux21 testMux21(.a(A),.b(B),.c(C),.y(Y)); initial //initial块(用begin/end括起来),只执行一次 begin A=0;B=0;C=0; //激励设置 #10 A=1; //#10即延时10个时间单位 #5 C=1; #10 B=1; #10 C=0; #20 A=0; #10 B=1; end endmodule ``` 此代码中,首先使用`timescale`指定仿真步长精度,接着定义测试模块`TB_mux21`,声明输入输出端口类型,实例化被测模块`mux21`,在`initial`块中设置激励信号并通过延时控制信号变化[^3]。 - **不同编程及仿真组合下Testbench编写**:`.v`格式源代码`.v`格式TestBench代码有3种编写方法,分别是LiberoSoc编程 + ModelSim仿真、ModelSim编程 + 仿真、第三方编程 + ModelSim仿真,但引用中未详细说明不同组合下Testbench编写的具体差异内容[^1]。 - **模块化工程中Testbench编写**:对于功能完善、规模较大的FPGA模块化设计,在编写testbench并仿真时,Vivado对此有很好的特性支持,使用Quartus + ModelSim也能达到同样效果,需对每个子模块进行仿真,不过引用未详细给出模块化设计中Testbench编写的具体步骤代码示例[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值