vivado如何调用matlab,vivado三种常用IP核的调用

本文介绍了Vivado中三种常用的IP核:时钟倍频ClockingWizard、ILA实时仿真器和BlockMemory ROM调用。通过配置ClockingWizard实现时钟信号倍频,ILA用于硬件级别的实时仿真,BlockMemory则展示了如何调用片内ROM存储波形数据。详细步骤包括IP核配置、代码调用及仿真结果展示,有助于加速FPGA开发进程。
摘要由CSDN通过智能技术生成

vivado三种常用IP核的调用

当前使用版本为vivado 2018.3

vivado的IP核,IP核(IP Core):Vivado中有很多IP核可以直接使用,例如数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、DDS等)。IP核类似编程中的函数库(例如C语言中的printf()函数),可以直接调用,非常方便,大大加快了开发速度。

今天介绍的是vivado的三种常用IP核:时钟倍频(Clocking Wizard),实时仿真(ILA),ROM调用(Block Memory)。

Clocking Wizard

该IP核可以将输入的时钟信号进行倍频,倍数可以大于1,也可以小于1,非常方便。

打开vivado 找到IP Catelog

e230b26692f480fcbbd8d2db98bd2886.png

在右侧输入栏中输入clk,找到Clocking Wizard

97b23f6497e9d382092fe9e8574090d5.png

双击该项目打开,根据开发板上晶振频率进行输入时钟配置

b61b945620f628e315f178b5e736e5be.png

配置需要输出的倍频频率

831ee1fb9898bab18df5c1cf8f6892ce.png

在最下方可选择IP核需要的引脚,我都没用到,因此全取消了(之前有遇到选择reset和lock引脚后IP核不能使用的情况,原因还未弄清楚)。

778f302ea430883c5086358895cd52ee.png

点击OK,并点击Generate,完成Clocking Wizard的配置

9d88c583915d244437ead5b1cb599828.png

在代码中对IP核进行调用

11e5ee972dd3653619664fe0bcf4ecd1.png

编写TESTBENCH,仿真结果如下

6ae1e99b17924461b836900b07cba3ab.png

ILA

ILA是用于实时仿真的IP核,在你将bit文件烧入芯片后,可在ILA核中看到你想观察的图像和数据。

打开IP Catelog,输入ILA

a3ee3cad54e7a7e42f5ca17146c5489f.png

双击打开项目,配置需要观察的端口数,采样的深度

34d9f9ffe6d884a8a4431782391d7362.png

配置观察端口的位数

bd5d8e5f62b2f667de08acb008808174.png

点击OK,和Generate完成IP核配置

0b2b27481c5cf5c2ef69ee8098f9862b.png

在代码中调用IP核

2b69c8a6e451b3bb1776261fa43b476d.png

完成工程综合后,下载文件,点击运行和循环,开始观察

47388944ab89ac7318a30bcf81776d65.png

Block Memory

该IP核调用片内ROM,可以用来储正弦波,三角波等波形。该IP核引用文件的格式为.coe,因此我们需要先使用Matlab生成一个.coe文件。

打开matlab,新建一个.m文件,输入以下代码生成一个位宽10位,深度1024的正弦波

width=10; %rom的位宽

depth=1024; %rom的深度

x=linspace(0,2*pi,depth); %在一个周期内产生1024个采样点

y_sin=cos(x); %生成余弦数据

y_sin=round(y_sin*(2^(width-1)-1))+2^(width-1)-1; %将余弦数据全部转换为整数

fid=fopen('C:\Users\Leixx\Desktop\sin_coe.coe','w'); %创建.coe文件

fprintf(fid,'%d,\n',y_sin); %向.coe文件中写入数据

fclose(fid); %关闭.coe文件

生成文件之后,用notepad++(或UltraEdit)打开,你会看见已经生成好的1024个数据,这时需要在文件的最开始添加下面两句:

memory_initialization_radix=10;

memory_initialization_vector =

radix表示是十进制显示。之后,在文件的最末尾,将最后一个数据后面的逗号改成分号,点击保存。

d040081a19f98a9d709358f2850e3f7b.png

bcaaac03d6790f57853fea769e91ff7a.png

打开vivado,点击IP Catalog,输入block

586876047e53022be4650e919a392631.png

双击打开项目,选择Single port ROM

f5ee40f6a8377e8a60a90e73f813d962.png

配置要存入的数据位宽和数据深度,我之前生成的是位宽10位,深度1024的数据

选择Always Enanbled,让IP核始终处于工作状态

70d74a6217685dd8a01aced408485af1.png

将之前生成好的文件载入IP核

abd5f0bb23d3486af53ebb61e56b41a7.png

点击OK和Generate,完成IP核配置

在代码中调用IP核,我这里DAC是低位在前

f38d2cc9746554649603224ec0aa00d3.png

编写好Testbench后,可以在仿真中看到正弦波,我这里因为低位在前,所以波形杂乱。

da883dbcee7d0488a3194b0414e5ca91.png

以上,便是vivado三种常用IP核的调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值