matlab与modelsim联合仿真,关于modelsim与matlab联合仿真效果

一,如何将matlab里面进行算法时所用的数据源放到modelsim里面进行调用。

1,将数据用matlab程序转化为二进制并存储到一个data.dat文件里面,这一步中,二进制的位数与verilog程序里面的输入端口的位数相同;data.dat文件名任意定,后缀名不变就行。

下面几句

fp = fopen('data.dat','w');

for i1 = 1:100

bin_I = int8_to_bin(Routdata(i1));

fprintf(fpi,'%d',bin_I);

fprintf(fpi,' ');

end

fclose(fp);

就是将100个数据源中的数据Routdata转化为二进制并存储起来,其中的 int8_to_bin是自己定义的8位的整型数据转化为二进制的函数。

2,在verilog里面打开数据文件data.dat并读取里面的数据。

reg [7:0] mem [99:0];//声明一个数组寄存器,位宽为8位,数组长度为100;

initial

$readmemb("data.dat",mem);//将数据读到数组寄存器中;

reg [6:0] cnt;

always@(posedge clk or negedge rst)

if(!rst)

cnt <= 7'b0;

else

begin

cnt <= cnt + 1'b1;

inI <= mem[cnt];

end

这样,inI就作为所设计模块的输入,可以进行modelsim仿真了。

二,如何将modelsim里面的仿真结果输出到matlab进行分析。

1,将modelsim仿真结果写入.txt文件,

integer fid;

initial

fid = $fopen("dataout.txt","w");

reg [6:0] cnt;

always@(posedge clk or negedge rst)

if(!rst)

cnt <= 7'b0;

else

if(cnt==7'd100)

$fclose(fid);

else

begin

cnt <= cnt + 1'b1;

$fwrite(fid,"%b",out);

end

其中,out为所设计模块处理后的输出,以二进制的形式存储到txt文件中。

2.在matlab中读取数据,进行分析。

fid = fopen('dataout.txt','r');

st = fseek(fid,0,'eof');

n = ftell(fid);

st = fseek(fid,0,'bof');

data_bin = fread(fid,n,'uchar');

fclose(fid);

for i1 = 1:n

if(data_bin(i1) == 49)||(data_bin(i1) == 48)

break;

end

end

这么多语句,先计算长度文件的长度,再将数据读出,主要是因为数据文件中,开头那一部分可能都是x值,要先去掉这些无效的值。

data_start = i1

data_bin1 = data_bin(i1:n);

len_data = length(data_bin1);

i2 = 0;

for i1 = 1:8:(len_data-7)

i2 = i2 + 1;

data_int(i2) = bin2int_8(data_bin1(i1+(0:7)));

end

plot(abs(data_int));

这样就可以画出图形进行分析了,其中的bin2int_8是自己定义的将8位二进制转化为10进制有符号数的函数。

综上,可以实现仿真的全过程,1,在matlab中生成数据源。2,在matlab中进行算法仿真,看效果。3,用verilog设计实现算法模块。4,将1中生成的数据转化后,在modelsim里面作为输入,进行modelsim仿真。5将modelsim仿真结果输出,再用matlab进行分析,与2中的结果进行比较。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MatlabModelsim联合仿真可以实现FPGA图像处理的验证。具体步骤如下: 1. 使用Matlab对原始图像进行处理,生成txt文档(例如post_img.txt),可以使用img_data_gen.m脚本来实现这一步骤。这个txt文档包含了图像的数据。 2. 在Modelsim中建立一个工程,命名为top_tb,并编写测试代码。测试代码中需要包含待测试的模块top.v,该模块包含了图像处理模块和图像生成模块(类似于VGA模块)。测试代码的文件名为top_tb.v。 3. 在测试模块top_tb中,可以进行仿真波形的查看。同时,通过代码中的逻辑,将VGA数据逐像素地写入到post_img.txt文档中。 4. 使用Matlab对post_img.txt文档进行处理,将其转换成图像的形式。可以使用img_data_show.m脚本来实现这一步骤。 通过以上步骤,就可以实现MatlabModelsim联合FPGA图像处理仿真。具体实现方法可以参考上述引用\[1\]和\[2\]中提供的原理图和步骤分析。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [Modelsim联合Matlab进行FPGA图像处理仿真与测试的学习总结(以RGB转Ycbcr转Gray为例)](https://blog.csdn.net/H19981118/article/details/124799121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值