当前位置:   article > 正文

第四课:IP核调用之计数器

第四课:IP核调用之计数器

提取IP核

quartus II软件中提供了大量的IP核,我们可以根据需要提取IP核。在本实验中,假如我们提取了IP核:LPM_COUNTER。其接口如下:

module counter (
	cin,
	clock,
	cout,
	q);

	input	  cin;
	input	  clock;
	output	  cout;
	output	[3:0]  q;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

功能:在每个clk的上升沿到来时,如果cin为1,则q进行自加,如果q满了,则cout产生进位输出。

验证IP核

`timescale 1ns/1ps

module counter_tb;

	reg cin;
	reg clk;
	wire cout;
	wire[3:0] q;
	
	counter counter0(
		.cin(cin),
		.clock(clk),
		.cout(cout),
		.q(q)
	);
	
	initial clk = 1;
	always #1 clk = ~clk;
	
	initial begin
		repeat(20)begin
			cin = 0;
			#5;
			cin = 1;
			#2;
			cin = 0;
		end
		#20;
		$stop;
	end
endmodule 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

IP核的验证就是写一个testbench。在这里,我们添加了一个repeat语句,循环了20次,并且在每次循环中,cin都维持了一个时钟周期,故每次循环内部都会加1。

仿真波形

在这里插入图片描述

总结

调用IP核其实和我们自己写的rtl一样,只是相比我们写的rtl,IP核内部的逻辑结构我们可能是看不懂的。所以有时候我们可能会心虚,没信心。其实完全没必要,我们只需要明白这个IP核的功能以及每个输入输出口的作用即可,其调用方式和我们自己写的rtl调用方式一样。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/607814
推荐阅读