Question about Xilinx ISE IP Core Binary Counter

Status
Not open for further replies.

williamd4112

Newbie level 1
Joined
Mar 8, 2015
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
10
I have learned verilog for a while. But I almost work on basic components. This is the first time that I use IP core to generate some basic components.

I try the binary counter. Generate and instantiate successfully. But when I use my testbench to check its functionality, I got some strange problems.

This is my testbench:
PHP:
module Counter_t(
    );
	reg clk;
	wire[15:0] q;
	
	Counter counter(
		.clk(clk), // input clk
		.q(q) // output [15 : 0] q
	);
	
	always #5 clk = ~clk;
	initial begin
		clk = 0;
		$monitor("%g:\t%b\n",$time,q);
	end
endmodule

If it work properly, it should count in 10 unit time.
But output in monitor is the following ...
PHP:
0:	0000000000000000

105:	0000000000000001

115:	0000000000000010

125:	0000000000000011

135:	0000000000000100

Why ? Why it start after 100 unit time ? I have checked it data sheet, but I still have no idea.
 

I just tried it with Vivado 2014.3 and it correctly starts counting at a time unit of 5.

I then tried using ISE 14.7 and the counter starts up at 105 time units due to the following code in glbl.v:

Code Verilog - [expand]
1
2
3
4
5
6
7
initial begin
    GSR_int = 1'b1;
    PRLD_int = 1'b1;
    #(ROC_WIDTH)
    GSR_int = 1'b0;
    PRLD_int = 1'b0;
    end


ROC_WIDTH is 100000 with a `timescale 1ps/1ps which delays the GSR_int deassertion by 100 ns.

 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…