用quartus建了一个IP核,求指数e^x,用modelsim仿真时输出和输入一样,为什么呢?
时间:10-02
整理:3721RD
点击:
这个IP核是浮点型的
这是IP核生成的模块
module exe (
clock,
data,
result);
input clock;
input [31:0] data;
output [31:0] result;
wire [31:0] sub_wire0;
wire [31:0] result = sub_wire0[31:0];
exe_altfp_exp_alc exe_altfp_exp_alc_component (
.clock (clock),
.data (data),
.result (sub_wire0));
endmodule
这是测试程序
module exe_test;
reg [31:0] h;
reg clock;
wire [31:0] exp;
always #50 clock=~clock;
initial begin
clock=0;h=32'b0;
#100 h=32'b00111111100000000000000000000000;
#100 $finish;
end
exe M1 (
.clock(clock),
.data(h),
.result(exp));
endmodule
这是IP核生成的模块
module exe (
clock,
data,
result);
input clock;
input [31:0] data;
output [31:0] result;
wire [31:0] sub_wire0;
wire [31:0] result = sub_wire0[31:0];
exe_altfp_exp_alc exe_altfp_exp_alc_component (
.clock (clock),
.data (data),
.result (sub_wire0));
endmodule
这是测试程序
module exe_test;
reg [31:0] h;
reg clock;
wire [31:0] exp;
always #50 clock=~clock;
initial begin
clock=0;h=32'b0;
#100 h=32'b00111111100000000000000000000000;
#100 $finish;
end
exe M1 (
.clock(clock),
.data(h),
.result(exp));
endmodule
菜鸟求指教啊
是延时设少了,需要多个时钟才能输出正确的值
1个cycle也太短了吧
话说它的ip输出没有valid么
感觉不太合理啊
这个应该怎么设置呢
你的ip生成的core应该有设置的地方吧 或者文档之类的介绍的东西
没有一个输出有效的信号的话 难道要外部弄个counter来生成这种东西? 不清楚
有一个异步清零信号,和使能信号
h=32'b0;
#100 h=32'b00111111100000000000000000000000;
#100 $finish;
首先输入了一个h=32‘b0,这个在浮点数中表示0,结果输出应该为1,而1的浮点表达式正好是接下来的输入32'b00111111100000000000000000000000;,而仿真的时间又太短了,所以看到输入和输出的结果一样。将仿真的时间放长一些看看。
仿真时间放长后,开始几个时钟周期有的是输入值,有的是不定值,在15个时钟输出正确的值,16个时钟有输出输入值,下个时钟以后都是正确的值了,这才是有效值,应怎么筛选呢
嗯,值得思考滴问题。
IP核有相关设置,有一项是Output latency in clock cycles!
