赞
踩
quartus II软件中提供了大量的IP核,我们可以根据需要提取IP核。在本实验中,假如我们提取了IP核:LPM_COUNTER。其接口如下:
module counter (
cin,
clock,
cout,
q);
input cin;
input clock;
output cout;
output [3:0] q;
功能:在每个clk的上升沿到来时,如果cin为1,则q进行自加,如果q满了,则cout产生进位输出。
`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
IP核的验证就是写一个testbench。在这里,我们添加了一个repeat语句,循环了20次,并且在每次循环中,cin都维持了一个时钟周期,故每次循环内部都会加1。
调用IP核其实和我们自己写的rtl一样,只是相比我们写的rtl,IP核内部的逻辑结构我们可能是看不懂的。所以有时候我们可能会心虚,没信心。其实完全没必要,我们只需要明白这个IP核的功能以及每个输入输出口的作用即可,其调用方式和我们自己写的rtl调用方式一样。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。