第二节 FPGA的modelsim仿真

第二节 FPGA的modelsim仿真

第一节我们进行了组合逻辑电路与或非的设计,现在进行仿真。我们一般所进行的仿真是功能仿真,也叫前仿真。首先先看缩减运算的仿真,这里需要自己写testbench。笔者用的是ISE,可以直接联合modesim仿真。仿真代码如下:
`module vtf_and_gate;

// Inputs
reg [3:0] a;

// Outputs
wire [1:0] s;//输出拿一根线引出来

// Instantiate the Unit Under Test (UUT)
and_gate uut (
	.a(a), 
	.s(s)
);

initial begin
	// Initialize Inputs
	a = 0;

	// Wait 100 ns for global reset to finish
	#100 
   
	// Add stimulus here
	
	#20  a=4'b1010;
	#20  a=4'b1011;
	#20  a=4'b1100;
	#20  a=4'b0000;
	#20  a=4'b0011;
	#20  a=4'b1111;
end

endmodule
`在这里插入图片描述
可以看出缩减运算中是全为1才会输出1。这里注意一下,输入变化,输出立刻会跟随变化吗?怎么没有延时呢?
因为我们这里仅仅进行的是功能仿真。仅仅只是考虑了编写的verilog hdl功能正确与否。在实际电路中,因为线路的长短温度不一样会导致有毛刺,从而产生错误输出。这就是竞争与冒险,在后续的时序仿真中我们会讲如何消除。
下面在进行逻辑与的仿真,代码如下:module vtf_and_gate;

// Inputs
reg [1:0] a;
reg [1:0] b;
// Outputs
wire [1:0] s;//输出拿一根线引出来

// Instantiate the Unit Under Test (UUT)
and_gate uut (
	.a(a), 
	.b(b),
	.s(s)
);

initial begin
	// Initialize Inputs
	a = 0;
	b=0;
	// Wait 100 ns for global reset to finish
	//#100 
   
	// Add stimulus here
	
	#20 
	a=2'b01;
	b=2'b10;
	#20 
	a=2'b01;
	b=2'b01;
	#20 
	a=2'b11;
	b=2'b11;
	#20 
	a=2'b11;
	b=2'b00;
end

endmodule

在这里插入图片描述
逻辑与只要a,b有值即为真。
再看按位与。只要将程序中的&&改成&就好啦,程序在第一节里。
在这里插入图片描述
是不是对比很明显,接下来可以下载到板子上,利用按键给与门信号,输出接发光二极管,就可以实际的观察啦。注意下载程序的时候fpga中的sdram是掉电丢失数据的,所以可以下载到flash中。自己用自己的开发板测试把。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页