|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
xilinx ise12.3 FIFO generator 6.2
independent clk syn standard fifo.120x32bit.
仿真时先写入1,2,3……,然后读出来
前仿真完全正确,后仿真时读出数据则从4开始。不知为什么?非常奇怪!
有人说xilinx的ip fifo需要free running 时钟,testbech里面使用了啊,问题依旧。
这个我在硬件上实现了,和后仿结果一致。【xc5vsx50t ff665-2】ise10.1。
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 21:14:31 12/31/2010
// Design Name:
// Module Name: FIFOwei
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module FIFOwei(
input rst,
input wr_clk,
input rd_clk,
input [31 : 0] din,
input wr_en,
input rd_en,
output [31 : 0] dout,
output full,
output empty,
output prog_full
);
FIFO_120x32 YourInstanceName (
.rst(rst),
.wr_clk(wr_clk),
.rd_clk(rd_clk),
.din(din), // Bus [31 : 0]
.wr_en(wr_en),
.rd_en(rd_en),
.dout(dout), // Bus [31 : 0]
.full(full),
.empty(empty),
.prog_full(prog_full));
endmodule
、、-----------------------------------------------
test bench
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 20:22:07 12/31/2010
// Design Name: FIFO_120x32
// Module Name: D:/08MyFpga/Virtex5FIFO/testFIFO.v
// Project Name: Virtex5FIFO
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: FIFO_120x32
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
module testFIFO;
// Inputs
reg rst;
reg wr_clk;
reg rd_clk;
reg [31:0] din;
reg wr_en;
reg rd_en;
// Outputs
wire [31:0] dout;
wire full;
wire empty;
wire prog_full;
// Instantiate the Unit Under Test (UUT)
FIFOwei uut (
.rst(rst),
.wr_clk(wr_clk),
.rd_clk(rd_clk),
.din(din),
.wr_en(wr_en),
.rd_en(rd_en),
.dout(dout),
.full(full),
.empty(empty),
.prog_full(prog_full)
);
initial
forever
begin
rd_clk = 0;
#5;rd_clk=1;
#5;
end
/*
initial begin
forever
wr_clk = 0;
#20;wr_clk=1;
#20;
end
*/
initial begin
// Initialize Inputs
rst = 0;
wr_clk = 0;
din = 0;
wr_en = 0;
rd_en = 0;
// Wait 100 ns for global reset to finish
#500;
wr_en=1;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
wr_en=0;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;rd_en=1;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;rd_en=0;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=1;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=2;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=3;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=4;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=5;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=6;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=7;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=8;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=9;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=10;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=11;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=12;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=13;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=14;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=15;
#50;wr_clk=1;
#50;wr_clk=0;
#50;din=16;
#50;wr_clk=1;
#50;wr_clk=0;
/*
#50;wr_en=0;
#500;
#52;rd_en=1;
#1500;rd_en=0;
*/
#1000;
// Add stimulus here
end
endmodule |
|