当前位置: 首页 > article >正文

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

未完结,明天补全

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.kler.cn/news/363101.html

相关文章:

  • 面试总结一
  • shell脚本-函数
  • stm32 nor flash fats 文件系统加载失败问题
  • 无人机之自主飞行关键技术篇
  • Llama Tutor:开源 AI 个性化学习平台,根据主题自动制定学习计划
  • #每日一题#自动化 2024年10月
  • 判断路径是否存在os.path.lexists(path)
  • ORA-12170: TNS:Connect timeout occurred
  • Vue Google 广告的配置
  • Kafka、Kafka Streams、Drools、Redis 和分布式数据库的风控系统程序
  • 应用程序性能优化:从操作系统到算法的全方位攻略
  • Django安装中遇到的问题
  • 关于k8s中,存储卷的使用
  • C语言中比较优雅的错误定义
  • django教育网站-计算机设计毕业源码89335
  • 一小时快速入门Android GPU Inspector
  • 并发面试题-谈谈你对AQS的理解
  • AI人工智能改变我们的学习和生活
  • GoFly快速开发框架集成ZincSearch全文搜索引擎-ZincSearch是ElasticSearch轻量级替代搜索引擎
  • 电商商品详情的“速食攻略”:快速利用API接口的幽默指南
  • 力扣每日一题3185. 构成整天的下标对数目 II
  • 什么是分库分表?为什么要分库分表?什么时候需要分库分表?怎么样拆分?(数据库分库分表详解)
  • 从0到1学习node.js(express模块)
  • Nginx+Tomcat 动静分离
  • NFC读写器web插件如果引用js文件
  • leetcode动态规划(十三)-目标和