FPGA采集adc,IP核用法,AD驱动(上半部分)

embedded/2024/10/21 8:13:00/

未完结,明天补全

IP核:集成的一个现有的模块

串口写好后基本不会再修改串口模块内部的一些逻辑,将串口.v文件添加进来,之后通过他的上层的接口去对他进行使用,所以我们打包IP,之后就不用去添加源文件了,

IP Catalog ->集合;里面就是我们所有可以调用的集合

fft:快速傅里叶变换

如果创建了一个IP之后,我们就可以直接调用这个模块,这个模块里的功能都是完成了的,我们只需要对接口进行例化就行

对于我们要使用的串口模块,我们要把我们的控制信号给列举出来

把通信信号也列举出来

然后就是时钟复位信号clk,rstn

以及定义的两个参数:时钟频率SYSCLK_FREQ,波特率BUAD_RATE

在调用的时候也要给一些参数,可以改变串口IP的波特率

创建一个自己的IP:

block design就是一个画布

IP管理页面:

File Groups:文件组

Synthesis:可综合文件

当我们自己创立IP时,我们也可以通过我们输入的一些参数对IP进行配置,当我们这样去定义出来,例如

在打包IP时它会自动的给你识别成一个上层可配置的一个参数,就会给你在这儿列举出来

右键->添加一个总线接口,因为串口是已经有了总线不是没有总线

PortMap:端口的映射

串口协议中,其它信号可有可无,但Txd和rxd是必须要有的

因为我们并不是一个有地址的,有寄存器的总线协议,所以我们这边并没有一个地址映射

IP识别成功:

采用OC的一个IP:编译好后就不会再改变

实现:当串口发送一个特定值的时候,我的DAC的输出就是我的ADC的输入,就是我将我采集到的输出出去,否则的话就是如果发送的不是特定的值,或者是没有发送值,我的DAC就会输出一个正弦波

uart_0.veo :verilog语言的端口例化

端口例化时输入一般要给,输出可以不连

输入如果不连的话,我们一般要给个定值,没有输入就会导致内部的话就是一个未知状态

降频倍频:clock的IP

Docnav:赛灵思的文档,不仅是IP文档,还包括了软件使用,fpga的学习,各种各样的文档

Minimize Power:最小功耗

Minimize Output Jitter:最小输出抖动

系统时钟:

output clocks

若高电平复位:reset

若低电平复位:resetn

MMCM可以支持1/8的小数分频,并且只在out1里面有,PLL不支持

生成一个时钟模块:

有些IP提供test bench,有些只有例程工程

前面这段时间输出的时钟还没有到稳定状态,所以锁是拉低的,当锁拉高时,说明我们后面的时钟输出是一个稳定状态的,后面的时钟是一定可以用的

给的例程:直接去看IP,它是怎么去进行接口的输入输出的,然后我们就可以进行控制

当复位和锁同时为高的情况下,时钟是可以用的

将复位信号和锁的信号给&上,这样的话作为我们整体的复位信号

默认情况下输出正弦波,当我们的串口输入某个特定的值,那我就要dac输出一个我adc采集到的数据,如果接收到其它非特定值,那我继续输出正弦波

对于一块ROM储存空间:我将我的正弦波一个周期给存进去,输入我的地址,它输出我的当前地址对应的值,改变我的地址,输出我对应的值,地址不断的这样去反复的累加,输出的值就会是一个正弦的波形

Distributed memory generator:分布式储存器ram//LUT搭建

block memory generator:块储存器//现有

fpga中只有ram,而rom就是我在搭建这块ram的时候,把其写端口给取消掉

ram:既能存又能写

使用matlab生成一个coe文件,使其输出正弦波

dac_type是在串口的50M的时钟域下,他却用在了一个100M的时钟域里

如果是一个高速的信号,则有问题

将一个时钟下的数据移到另一个时钟下去使用,这时候我们就要用到双端口的fifo

先入先出

同步时钟的块ram:

commom clock black  ram

异步时钟的块ram

ila:逻辑分析仪

仿真没问题,下板有问题

因为我们的IP进行了时钟约束,所以我们不需要额外再添加system文件去给它约束

xdc文件的注释是一个#


http://www.ppmy.cn/embedded/129215.html

相关文章

2024-moectf Web WP

Web渗透测试与审计入门指北 得到一份网站源码,vscode打开,发现是AES解密,html给出了iv值和详细的加密方式,php给出了密文和key 按照源码的要求分别填入需要的东西,解密即可 flag值:moectf{H3r35__flYinG_k…

Win11右键默认显示更多选项

Win11默认显示 想要效果 解决方案1 先按住Shift键,再按右键试试。 解决方案2 1.启动命令行,输入命令 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve2.显示操作成功完成&#…

DIY我的世界磁力方块

引子 小朋友喜欢我的世界,就像当年我那代对俄罗斯方块的执着,考虑电子游戏伤眼睛,所以最近开始给小朋友买磁力方块。 一个将近1元多的价格,催生我DIY的念头。 正文 Freecad图,A,B,C,D处 放磁铁 5.14g 材料费 最后的成…

社招高频面试题

1.单例模式 面试突击50:单例模式有几种写法? 2.Mybatis缓存机制 MyBatis的一、二级缓存查询关系 一级缓存是SqlSession级别,不能跨SqlSession共享,默认开启。 二级缓存是基于mapper namespace级别的,可以跨SqlSessi…

【软件测试】JUnit

Junit 是一个用于 Java 编程语言的单元测试框架,Selenium是自动化测试框架,专门用于Web测试 本篇博客介绍 Junit5 文章目录 Junit 使用语法注解参数执行顺序断言测试套件 Junit 使用 本篇博客使用 Idea集成开发环境 首先,创建新项目&#…

Linux学习第二天

3.vmware的功能: 快照 创建快照: 拍摄此虚拟机的快照:记录保存虚拟机的当前状态,如果系统出现故障,可以通过快照还原(错删系统时可以找到快照的系统状态,然后恢复系统) 恢复快照…

WSL2配置代理解决git网络不通畅的问题

简述 书接上文,在WSL2下使用CrossSim,git的时候网络很差,通过代理解决这个问题。 旧版的解决方案一般是通过cat /etc/resolv.conf获取IP然后配置主机的端口,这样有时候并不能访问,并且一般会出现该问题:ws…

【人工智能-初级】第3章 k-最近邻算法(KNN):分类和Python实现

文章目录 一、KNN算法简介二、KNN算法的工作原理2.1 欧氏距离 三、K值的选择四、KNN算法的优缺点4.1 优点4.2 缺点 五、Python实现KNN分类5.1 导入必要的库5.2 加载数据集并进行预处理5.3 创建KNN分类器并进行训练5.4 模型预测与评估5.5 可视化K值对模型性能的影响 六、总结6.1…