Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2258799
  • 博文数量: 187
  • 博客积分: 1457
  • 博客等级: 上尉
  • 技术积分: 2423
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-13 09:41
个人简介

如需要绘制PCB,设计电路可以和我联系。sunhenu@163.com.

文章分类

全部博文(187)

文章存档

2017年(2)

2016年(2)

2015年(7)

2014年(13)

2013年(80)

2012年(83)

分类: 嵌入式

2016-05-16 10:39:34

    因为工作原因,需要设计一个波形显示的东西。总体架构就采用了STM32+FPGA+ADC.就是利用ADC采集正弦信号,然后将采集到的数据放到FPGA的FIFO里面,接下来,STM32通过和FPGA进行数据通信,将FIFO里面的数据全部读取,然后STM32控制液晶显示器,将读取的数据以波形的形式进行显示。FPGA 主频150MHZ。
外部信号-->ADC-->FPGA-->STM32-->液晶屏            
这里主要的技术说明如下
一:其实这个工程主要是ADC的采样频率也不是太高500K-200K之间,所以就只是使用FPGA的FIFO,要是ADC的采样频率要求1M以上的话,估计就要使用SDRAM进行缓存数据了。
二:FPGA控制ADC转换可以很精确的控制ADC的转换时钟,可以最大程度的提高ADC的采样频率。如果使用STM32去控制ADC也是可以的,但是不能最大程度的发挥ADC的采样频率,因为STM32涉及进入中断,然后出中断,这个需要时间的,也许只用几us,但是对ADC已经是很长的时间。最主要的还是STM32不能并行的操控ADC芯片,这个就是CPU和FPGA的主要区别,顺序执行程序和并行执行程序。
三:FPGA和STM32进行通信。
1:简单的指令或者数据:利用FPGA例化一个SPI通信接口,STM32读写SPI接口和FPGA通信,这里用STM32主控,FPGA被控。
2:大一点数据的通信,利用FPGA例化一个FIFO或者DRAM,STM32直接读取FIFO或者DRAM,同样STM32是主控,这里特别注意一下STM32有FSMC的接口控制,这个东西可以读取RAM nandFLASH等等芯片,速度很快,可以将FIFO或者DRAM连接到STM32的FSMC接口,然后STM32读取数据。
3:大批量的数据通信了,就是每秒钟有M以上的数据量,那就外接SDRAM,然后FPGA控制USB芯片(ccy7c68013a用的比较多),或者PCI芯片。这里就没有STM32的事情,因为速度太快,STM32已经满足不了数据传输的要求了。比如一些PXI或者PCI的数据采集卡,都是通过这个架构来做的。
最后放几张工程的RTL视图和modelsim仿真波形图吧。


整个FPGA工程的RTL视图。读写数据模块,FIFO模块,ADC控制模块。



q是STM32读取数据的接口,这里使用8个通道,需要有个地址切换一下的。这样每次在读取8个通道数据需要一些时间的,
所以这里利用了FIFO可以储存一些数据,类似DMA的功能,但是读完数据到重新ADC写数据到FIFO总是要点时间的,最好
是不要配置8个通道,只利用4个通道,空闲出来FIFO给这4个通道做乒乓操作,这样就可以保证数据完全的连续了。


这是通道7读写读写时序放大后的波形,每个读时钟的上升沿出数据,这个之间有1-2个主频时钟延迟的,
按照FPGA150MHZ的主频计算,该通道最大读取频率是75MHZ。建议最大50MHZ读取吧。
阅读(9385) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

ff小核桃2019-03-21 09:45:41

您好,我正在做这块的毕业设计,可以参考一下您的源码吗?我留了QQ,你可以加一下我吗

ff小核桃2019-03-21 09:45:38

您好,我正在做这块的毕业设计,可以参考一下您的源码吗?我留了QQ,你可以加一下我吗

Dongmic2018-04-03 16:01:49

您好,我正在做这块的毕业设计,可以参考一下您的源码吗?可以付费的。邮箱:2396078445@qq.com