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

FPGA数字信号处理前沿

       生活在这个色彩斑斓的世界里,大家的身边存在太多模拟信号比如光能、电压、电流、压力、声音、流速等。数字信号处理作为嵌入式研发的一个经久不衰热门话题,可以说大到军工武器、航空航天,小到日常仪器、工业控制,嵌入式SOC芯片数字信号处理相关应用无处不在,本科期间很多同学都选修或者必修过“数字信号处理”的课程,但是当时很多内容听得都很模糊,听了些理论、记了些公式,刷刷题再考考试,这门课程就算结束了,可能也没有相关的课程设计。

       等到真正参加工作从事嵌入式软件开发后,“FPGA数字信号处理”这个名词确实常常在耳畔响起,这时候再想去系统学习却发现很难摸到头脑,一方面是市面很少有相关教程或者应用案例,另一方面是需要很多相关背景知识,工作阅历的支撑。

       比方说首先数字信号处理中有很多概念:序列变换、频谱分析、时域频域、卷积滤波、上下变频等,这些听起来就很绕脑;其次还需要会使用matlab做一些数据模拟和分析,而对于FPGA研发来说可能还需要modelsim和matlab的联合去验证分析问题;再次对于数字信号处理而言其中应用最多的点在乘加运算上,FPGA做高速ADC实时采集滤波定点数计算,而产品成本限制又要求选择性价比较高的FPGA器件,那么在逻辑资源有限的情况下,特别是乘法器资源,就比较考验研发者的FPGA设计能力,通过面积时间互换方法在性能和成本之间找到一个平衡点;最后一般情况下大多产品会使用前端ARM或者DSP,配合后端FPGA的架构,所以想从全局角度理解整个产品,对于嵌入式软件架构也要有些了解,哪些工作放在前端实现合适,哪些工作放在后端实现合适,前后端SOC芯片之间报文通信的方式等要能理清楚。

       为了把“FPGA数字信号处理”这个博客写得尽量通俗易懂贴近项目,笔者课下也做了很多功课,我们从理论到实践出发的方式,先理一理书本上数字信号处理的相关理论知识,工作后再去看本科期间经典书籍,有了工作积累很多东西会有更深刻理解,首先理论部分会整理编写十到十五篇博客放在“FPGA基础知识”专栏方便大家查阅,这部分的理论知识也经常会用到;其次会联合matlab和modelsim仿真,在现实需求中设计出不同性能和阶数的FIR滤波器并上板分析观察效果现象并做合理总结;再次会把FFT傅里叶变化的IP核研读一遍,同样去联合matlab和modelsim仿真,通过开发板DAC发出叠加频率的正弦波输入,ADC采样FFT还原出采样的波形频率和幅值验证我们的设计。

       最后想整理一个数字信号处理的软件框架供,具有较强的通用性供大家项目参考,为了还原整个软件的实施,硬件上正在去绘制一个接口插件板,板载AD9220的ADC芯片和相关运放调节电路、配有低端MCU的STM32F103CBT6芯片和编码器按键、一个OLED屏幕,直插到现有的豌豆开发板CMOS摄像头端子上,MCU和FPGA间串口TTL电平通信,用户通过按键编码器在OLED屏幕上设定FPGA驱动AD9708的DAC芯片输出不同频率叠加的波形,硬件上通过SMA端子连接到AD9220的ADC芯片。FPGA采样计算滤波,还原出叠加波形的频率和幅值,通过报文串口发送到MCU处理并同时动态显示在OLED屏幕上。

       “数字信号处理”这本书当然也存在几个不同的版本,这里笔者准备了一本经典电子版英文的“Understanding Digital Signal Procesing”同时也附带了其中文翻译版,如有需要的同学私信即可,国外英文书籍写得相比国内教程更容易理解,博客理论撰写整理参考高西全老师的“数字信号处理”第四版和万永菁老师“数字信号处理”的课程,FPGA数字信号处理则参考了杜勇老师和高亚军老师的相关书籍。

    

http://www.lryc.cn/news/324391.html

相关文章:

  • 【Android】系统启动流程分析 —— init 进程启动过程
  • 抖音视频批量下载软件可导出视频分享链接|手机网页视频提取|视频爬虫采集工具
  • 鸿蒙Harmony应用开发—ArkTS-@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化
  • 深度解析:Elasticsearch写入请求处理流程
  • 数据结构:堆和二叉树遍历
  • [Halcon学习笔记]在Qt上实现Halcon窗口的字体设置颜色设置等功能
  • ArcGis 地图文档
  • 【C语言】动态内存分配
  • 算法思想总结:位运算
  • 四、HarmonyOS应用开发-ArkTS开发语言介绍
  • 3 Spring之DI详解
  • Web框架开发-Ajax
  • Python爬虫之urllib库
  • Docker学习笔记 - 常用命令
  • 数学建模(Topsis python代码 案例)
  • gateway网关指定路由响应超时时间
  • docker 和K8S知识分享
  • MySQL--select count(*)、count(1)、count(列名) 的区别你知道吗?
  • 使用verilog设计实现16位CPU及仿真
  • Python将字符串转换为datetime
  • Vue 3 + TypeScript + Vite的现代前端项目框架
  • 浏览器强缓存和弱缓存的主要区别
  • 深度学习-2.9梯度不稳定和Glorot条件
  • 地宫取宝dfs
  • Ollama 运行 Cohere 的 command-r 模型
  • 2024年C语言最新经典面试题汇总(11-20)
  • arm linux应用程序crash分析一般方法
  • Web安全防护技术解决方案
  • 流畅的 Python 第二版(GPT 重译)(十一)
  • Blender 3D建模要点