Quartus联合modelsim和Signaltap仿真
程序员文章站
2022-07-12 22:36:35
...
Quartus联合modelsim和Signaltap仿真
工具:Quartus Ⅱ9.0、modelsim10.4
项目:流水灯
- 仿真项目文件(flowLed.v)
module flowLed
(
input clk, //系统时钟
input rst_n, //系统复位,低电平有效
output reg [7:0] led //8个LED灯
);
reg [26:0] count;
//流水灯计数器
always @ (posedge clk or negedge rst_n)
begin
if (!rst_n) //低电平状态
count <= 27'd0;
else if (count < 27'd1000_0000) //时间调节
count <= count + 1'b1;
else
count <= 27'd0;
end
//通过移位寄存器控制IO口的高低电平,从而改变LED的显示状态
always @ (posedge clk or negedge rst_n)
begin
if(!rst_n)
led <=8'b11111111;
else
begin
case(count)
3'b000: led <= 8'b11111110;
3'b001: led <= 8'b11111101;
3'b010: led <= 8'b11111011;
3'b011: led <= 8'b11110111;
3'b100: led <= 8'b11101111;
3'b101: led <= 8'b11011111;
3'b110: led <= 8'b10111111;
3'b111: led <= 8'b01111111;
default: led <= led;
endcase
end
end
endmodule
激励文件(flowLed.vt)
`timescale 1 ps/ 1 ps
module flowLed_vlg_tst();
//constants
// general purpose registers
reg eachvec;
// test vector input registers reg
clk;
reg rst_n;
//wires
wire [7:0] led
// assign statements (if any)
flowLed i1 (
.clk(clk),
.led(led),
.rst_n(rst_n)
);
initial
begin
clk = 0;
rst_n = 1;
#20 rst_n = 0;
#60 rst_n =1;
end
always
#10 clk = ~clk;
endmodule
- modelsim仿真:
modelsim仿真结果
仿真实现流程
- 首先新建一个工程,命名为flowLed
- 设置设备数据
- 创建项目文件,顶层设计文件,它的实体名一定要与顶层设计文件名一致。
- 编写仿真测试文件testbench。processing->start->start Test Bench Temple writer
- 根据flowLed.v文件修改testbench
- 对工程进行一些设置:让quartus调用modelsim 点击Tools->Options…
- 开始仿真测试 Assignments->settings…->EDA Tool Settings->simulation->compile tset
bench->Tset Benchs…
8.开始编译仿真Tools->Run EDA Simulation Tool->EDA RTL Simulation,会自动打开modelsim。
signaltapⅡ仿真:
signaltapⅡ仿真结果:
仿真实现流程
- 连接好开发板,Tools->SignalTap Ⅱ Logic Analysizer进入Signaltap仿真页面
- 选择硬件
- 添加采样时钟和信号
- 设置采样方式,深度设为128,模式为连续采样, Type 选择Continuous。
- 重新编译 Quartus II 工程。
- 添加并下载 SOF 文件。
- 点击运行键,开始捕获信号。
下一篇: FPGA流水灯实验