quartus仿真不出

2025-03-10 17:26:25
推荐回答(2个)
回答1:

输入的激励有点小问题,没输出常见可能有二:1,复位信号的时间小于一个时钟周期,本设计中的START信号为0时至少要保持一个时钟周期以上,一般设计要求三个时钟周期;2,时序不对,因为你第一个进程产生敏感信号驱动下面两个进程,你给的激励永远不会触发后面两个进程,这时没有结果的根本原因,第一个进程有一个480分频信号产生驱动第二个进程,因此你START和stop或start和FIN都为1时,时钟信号要超过480拍,为了多输出几个结果应该远远大于480拍。

       希望对你有帮助!

modelsim10.1下测试激励:经验证是没问题的。

`timescale 1ns/1ps
module test;
reg  clk_240;
reg     start;
reg     stop;
reg     fin;
wire    [3:0]   cha3,cha2,cha1,cha0;
wire    [3:0]   km1,km0;
wire    [3:0]   min1,min0;

taxi DUT(.clk_240(clk_240),.start(start),.stop(stop),.fin(fin),.cha3(cha3),
         .cha2(cha2),.cha1(cha1),.cha0(cha0),.km1(km1),.km0(km0),.min1(min1),.min0(min0));

always #2 clk_240 = ~clk_240;

initial begin
 clk_240 = 0;
 start = 0;
 stop = 0;
 fin = 0;
 #300;
 start = 1;
 stop = 0;
 fin = 0;

 #5000;
 start = 1;
 stop = 1;
 fin = 0;
 #5000;
 start = 1;
 stop = 0;
 fin = 1;

 #5000;
 start = 1;
 stop = 1;
 fin = 0;
 #5000;
 start = 1;
 stop = 0;
 fin = 1;

 #5000;
 start = 1;
 stop = 1;
 fin = 0;
 #5000;
 start = 1;
 stop = 0;
 fin = 1;
 #5000;
 start = 1;
 stop = 1;
 fin = 0;

 #5000;
 start = 1;
 stop = 0;
 fin = 1;
 #5000;
 start = 1;
 stop = 1;
 fin = 0;

 #5000;
 start = 1;
 stop = 0;
 fin = 1;
 #5000;
 start = 1;
 stop = 1;
 fin = 0;
 #5000;
 start = 1;
 stop = 0;
 fin = 1;

 #5000;
 start = 1;
 stop = 1;
 fin = 0;
 #5000;
 start = 1;
 stop = 0;
 fin = 1;

 #5000;
 start = 1;
 stop = 1;
 fin = 0;
 #5000;
 start = 1;
 stop = 0;
 fin = 1;

 #5000;
 start = 1;
 stop = 1;
 fin = 0;
 #5000;
 start = 1;
 stop = 0;
 fin = 1;
 #5000;
 start = 1;
 stop = 1;
 fin = 0;

 #5000;
 start = 1;
 stop = 0;
 fin = 1;
 #5000;
 start = 1;
 stop = 1;
 fin = 0;
 #5000;
 start = 1;
 stop = 0;
 fin = 1;

 #10 $stop;
end

endmodule

回答2:

可能是时间参数不对,试着把仿真时间延长。