- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通过文件读写方式实现Matlab和
【转】通过文件读写方式实现Matlab和Models
虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足。而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处理的函数,而且图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证的时候借助Matlab会大大加快算法验证的速度。
关于Matlab和Modelsim联合仿真,我从网上看到两种方法,一种是通过Link for Modelsim建立Matlab和Modelsim的联合仿真接口;另一种就是通过文件读写的方式实现Matlab和Modelsim的联合仿真。我没有仔细研究过第一种方法,我大概看了一下,感觉过程比较复杂,不过功能肯定也很强大,网上有一篇关于Link for Modelsim的文章target=_blank,有兴趣的朋友可以去看一看。关于第二种方法,只是通过几个文件读写函数就可以实现了,而且基本可以满足当前仿真的要求,所以这里主要讨论一下我所使用的这种方法,希望能够抛砖引玉吧,因为我也只能算个初学者而已。
1.Matlab产生数据用作Modelsim仿真
在FPGA进行算法验证的时候,经常需要输入仿真数据,这些数据可以用FPGA产生,但是如果数据产生过程很复杂的话,需要耗费很大的精力,并且产生的数据的准确性也不能保证。例如,如果要验证一个通信接收机的相关算法,那么我们就需要先产生发送数据,也就是说得先做一个发射机,如果这个过程也由FPGA实现的话,也是一个很复杂的过程。这时候我们就可以借助Matlab,利用Matlab内部自带的各种函数,产生需要的信号,再经过定点化,就作为FPGA接收模块的输入信号了。这样做无疑会节约很多时间和精力。
下面用一个简单的例子说明如何用Matlab产生的数据用作Modelsim仿真。
首先利用matlab产生一个周期256点8bit的正弦波数据,然后以16进制形式写入sin.txt文件
N=256;
n=1:256;
x=fix(128+(2^7-1)*sin(2*pi*n/N));
fid=fopen(sin.txt,wt);
fprintf(fid,%x\n,x);
fclose(fid);
下图是截取的产生的数据文件的内容
然后将产生的sin.txt文件复制到Modelsim的工程下,在Verilog文件中先定义一个8bit X256数组,然后通过$readmemh命令,将文件中的数据读入,相关的Verilog代码如下:
reg[7:0]data_mem[0:255];//定义一个8bit X256的数组
initial begin
$readmemh(sin.txt,data_mem);//将sin.txt中的数据读入存储器data_mem end
关于$readmemh的用法可以参见Verilog的参考书,这里就不详细说了。
后面就可以用data_mem作为你的测试数据了。例如可以通过以下代码,将data_mem的数据送给data_out:
always@(posedge clk)
begin if(rst)
begin data_out=8d0;
i=8d0;
end else begin data_out=data_mem[i];//将存储器中的数据输出
i=i+8d1;
end end
这样利用data_out就可以输出一个正弦波波形,下图是Molesim仿真产生的正弦波波形:
2.Matlab对Modelsim仿真生成的数据进行分析
Matlab对Modelsim仿真生成数据的处理也是通过文件读写实现的。即通过Verilog语句,将仿真过程中的某个信号写入文件,然后在Matlab中在把这个文件的数据读出来,就可以在Matlab中进行分析了。
下图也通过一个简单的例子,说明一下整个过程。
以下的Verilog语句实现将信号data_out的数据写入data_out.txt文件
integer w_file;
initial w_file=$fopen(data_out.txt);
always@(i)
begin
$fdisplay(w_file,%h,data_out);
if(i==8d255)//共写入256个数据
$stop;
end
下图是截取的data_out.txt的部分内容:
然后就可以编一小段Matlab的程序将data_out.txt中的数据读取进行分析了。下面一段Matlab的程序是将数据读取,并通过图形显示出数据的波形。
fid=fopen(data_out.txt,r);
for i=1:256;
num(i)=fscanf(fid,%x,1);%这句话的意思是从fid所指的文件以16进制方式读
您可能关注的文档
- 百年来中国人用过的英语课本.doc
- 百科名片 气质.doc
- 百科知识竞赛 文化知识.doc
- 皇帝家如何积攒 私房钱.doc
- 的存储方式 Json篇 以Cocos2D For I.doc
- 监控系统图象信号传输线缆的选择 同轴电缆 铜线 、双.doc
- 监控系统术语解释.doc
- 监控系统术语解释 1.doc
- 监理合同标准条件(9页).doc
- 监理新年规划3篇.doc
- 2025-2026学年小学书法练习指导三年级下册湘美版教学设计合集.docx
- 2025年L3级智能驾驶技术商业化落地路径探索报告.docx
- 医院感染防控策略分享.pptx
- 2025年数字经济网络直播设备供应链管理研究报告.docx
- 2025年阿联酋语培训机构品牌风险管理报告.docx
- 2025年工业化生产效率提升策略研究.docx
- 《2025年美发护理行业分析报告:专业线产品下沉与家用工具市场分析》.docx
- 《生物制药产业链自主可控评估:2025年单抗疫苗迭代技术专利布局分析》.docx
- 《2025年电商直播电商的互动游戏化与用户粘性提升》.docx
- 2025广东惠州市惠城区招聘社区工作站工作人员笔试备考题库含答案详解(b卷).docx
最近下载
- 民族学概论 全套课件.ppt VIP
- 杭州西奥电梯HAMCB TT树状图.pdf VIP
- HAMCB版-杭州西奥电梯XO-CON4342电气原理图纸接线图-HAMCB.pdf VIP
- 2024秋国开《法律职业伦理》形考任务一至三答案.docx VIP
- 西部证券-福耀玻璃-600660-首次覆盖报告-全球汽车玻璃龙头,海外扩张正当时-250613-40页.pdf
- 聊天的时候对方撤回消息,一招让你照样能看.pdf VIP
- 2025年电大《组织行为学》形考任务1-4答案 .pdf VIP
- 老挝钾盐勘探开发历史回顾及经验教训分析.pdf VIP
- 蒂森MC2详细说明.pdf VIP
- 公交公司安全工作总结.docx VIP
原创力文档


文档评论(0)