在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2600|回复: 1

怎样在FPGA上验证自己做的电路是正确的?

[复制链接]
发表于 2009-4-30 04:56:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
举个最简单的例子,我要测试下面这个module:
module sum_a2b(result, ready, start, clock, a, b););//累加无符号整数a到b:result=a+(a+1)+...+(b-1)+b,完成后ready高电平,启动时start为高电平
output [7:0] result;
output ready;
input start;
input clock;
input [3:0] a;
input [3:0] b;
reg [7:0]result;
reg ready;
reg [7:0]result_in;
reg [3:0]k;
always @(posedge clock)
if(start)
begin
k<=a;
result_in<=8'b0;//初始累加值为0
ready<=1'b0;//置未完成标记
end
else if (k<=b)
begin
result_in<=result_in+k;//累加一次
k<=k+1;//计数一次
end
else
begin
result<=result_in;//输出累加和
ready<=1'b1;//置完成标记
end
endmodule

现在想用一批数据来测试一下,我可以编写一个测试模块,从文件中读入一批a和b以及result(共计N个),存储到测试模块的三个内部数组中(分别为a_array,b_array,result_array),执行一个循环,依次从这3个数组中取a,b,送sum,等sum_a2b计算完后再比较result:
module test_sum_a2b_v;
parameter N=4;
reg [3:0]a_array[N-1:0];
reg [3:0]b_array[N-1:0];
reg [7:0]result_array[N-1:0];
integer i;
// Inputs
reg start;
reg clock;
reg [3:0] a;
reg [3:0] b;

// Outputs
wire [7:0] result;
wire ready;

// Instantiate the Unit Under Test (UUT)
sum_a2b uut (
.result(result),
.ready(ready),
.start(start),
.clock(clock),
.a(a),
.b(b)
);
always #100 clock=!clock;
initial begin

$readmemb("a.txt",a_array);
$readmemb("b.txt",b_array);
$readmemb("result.txt",result_array);

// Initialize Inputs
start = 0;
clock = 0;
a = 0;
b = 0;

// Wait 100 ns for global reset to finish
#100;

// Add stimulus here
$display("Test begin!");
for(i=0;i<N;i=i+1)
begin
start=1;
a=a_array;
b=b_array;

#200;
start=0;
wait (ready);
$display("Time:%d,Test %d:a=%b,b=%b,sum=%b,result=%b",$time,i,a,b,result_array,result);
#200;
end
$display("Test end!");
end

endmodule
其中:
a.txt中内容:
@00
0000
1110
1010
0011

b.txt中内容:
@00
0000
1110
1101
1100

result.txt中内容:
@00
00000000
00001110
00101110
01001011

我在Xilinx ISE9.2i中进行仿真,结果无问题.经过综合,也正确.现在我把这个module生成了bit文件,下载到FPGA中,可是,我怎样才能给它喂数据a和b呢?通过FPGA开发板上的开关吗?也太慢了,而且开发板上的开关也太少了.有没有其他方法可以给要测试的module喂数据,而且可以取出结果的的方法.比如我在C语言里要测试一个函数,我可以生成一个数据文件,从这个数据文件中取要运算的数据,然后调用要测试的函数,返回结果存储到另一个文件中,这样,我就可以比较一批数据结果和期望结果,从而验证被测的函数功能正确与否.
现在我综合出netlist,想生成sum_a2b这个module的bit文件并下载到FPGA中,怎样做一个测试模块,能从我的3个文件中读入数据,并派送给sum_a2b来测试呢?还有这个测试模块也能综合吗?也能生成bit文件吗?如何把它配置到FPGA中?如何把数据放入ROM中?比较困惑.请指教

发表于 2009-4-30 09:43:52 | 显示全部楼层

验证

使用芯片内部的存储器:把测试数据存在芯片内部的存储器,再做好相应的测试逻辑。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 20:10 , Processed in 0.041869 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表