VHDL 是用来描述从抽象到具体硬件级别的工业标注语言,并已经成为一种通用的硬件设计交换媒介
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
FPGA仿真是验证你写的HDL代码是否符合设计要求的一项工作。
一功能仿真 ( 前仿真 )
功能仿真是指在一个设计中, 在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。 布局布线以前的仿真都称作功能仿真, 它包括综合前仿真( Pre-Synthesis Simulation )和综合后仿真( Post-Synthesis Simulation )。 综合前仿真主要针对基于原理框图的设计 ; 综合后仿真既适合原理图设计 , 也适合基于 HDL 语言的设计。
二时序仿真(后仿真)
时序仿真使用布局布线后器件给出的模块和连线的延时信息, 在最坏的情况下对电路的行为作出实际地估价。 时序仿真使用的仿真器和功能仿真使用的仿真器是相同的, 所需的流程和激励也是相同的; 惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时, 并且在仿真结果波形图中,时序仿真后的信号加载了时延, 而功能仿真没有。
你这个还有问题 同个信号混合了= <= 赋值, 改下。
你这个仿真时间要太长了,你最好吧代码里面的那些秒缩小。要不1秒根本不知道跑到什么时候。你的小时信号呢?难道你要运行个几个小时?
MAX_second ,MAX_minute,MAX_hour 多改小,这样仿真会很快出来,不改也无所谓,我testbench 运行1秒就停,之后你就一直运行吧,运行几个小时吧。
testbench 如下:
`timescale 1ns / 1ns
////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 09:54:43 05/30/2013
// Design Name: Clk
// Module Name: D:/AC/ISE/Clk/Clk_testv
// Project Name: Clk
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: Clk
//
// Dependencies:
//
// Revision:
// Revision 001 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
module Clk_test;
// Inputs
reg clk;
reg rst_n;
// Outputs
wire clk_second;
wire clk_minute;
wire clk_hour;
// Instantiate the Unit Under Test (UUT)
Clk uut (
clk(clk),
rst_n(rst_n),
clk_second(clk_second),
clk_minute(clk_minute),
clk_hour(clk_hour)
);
parameter clk_period = 4'd10;
initial begin
clk = 0;
forever #(clk_period) clk = ~clk;//100M 时钟信号
end
initial begin
// Initialize Inputs
rst_n = 0;
// Wait 100 ns for global reset to finish
#100;
rst_n = 1 ;
// Add stimulus here
#1_000_000_000 $stop; // 跑1秒就停止
end
endmodule
前仿真是指功能原理仿真,验证算法设计的对与否;
后仿真则是在前仿真的基础上,对具体FPGA的实现进行虚拟,会对资源的使用情况,整个设计的时序进行详细的测定。
当然还有很多细致的东西不能简单的表达清楚。一个良好的设计习惯,最好是两个仿真都做到充分,再将所设计的程序载入FPGA中运行。
引起仿真出现不定态的一个原因是被驱动输出的信号线此时没有驱动源,意思是说此时你的这个输出没有被其他网络驱动,具体可以查一下你的输入是不是reg驱动的。
不知道问题有没有理解偏,提供一个其他思路,祝好~
唉,代码都写错了!你以为写C语言呢,if(6'd1<=blocknum<=6'd7)改:
if(blocknum>= 6'd1 && blocknum <= 6'd7),错误的都改了吧!
以上就是关于VHDL FPGA仿真是什么全部的内容,包括:VHDL FPGA仿真是什么、急求懂FPGA的大侠帮我测试下这个程序 我用modelsim不知道怎么输入测试代码 谢谢、fpga的前仿真与后仿真的分界是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)