DSPBuilder读书笔记一
传统的DSP(数字信号处理芯片)大都是基于固定的硬件架构,通过软件编程来实现各种复杂的信号运算与处理。设计者在选型的时候往往难以寻觅一款完全符合系统要求的片子。而基于FPGA这个硬平台的解决方案从很大程度上解决了设计者的苦恼,DSPBuilder就是Altera针对其FPGA器件在DSP领域的利器。
在拜读了Altera《DSP Builder Handbook.pdf》的第一个小节后,特权同学比较有感于一个系统设计的软硬实现划分。
传统的DSP设计如图1所示,设计者通过Matlab等强大的仿真工具在PC平台上验证好算法后,通常需要手动编写各种最终运行在嵌入式平台(即DSP)上的汇编代码或者C代码。当然可能会利用一些现成的函数库来加速开发,而相对而言,其速度性能或者说数据处理的吞吐量很大程度上受限于它所处的硬件平台。也就是说,DSP芯片的固有架构决定了算法实现的情况。退一步讲,如果对算法复杂度估计不足,在软硬齐头并进的开发中就很可能让已经制板的硬件系统成为不折不扣的“试验品”。
图1
而基于基本逻辑单元和存储器结构的FPGA,就不存在这些问题。设计者可以根据实际需要不断地配置调整内部的各个功能块,甚至常见的一种更神乎其神的方式是可以对原本在传统DSP芯片开发中无法改动的软硬件分工进行颠覆。
图2就是一个很好的软硬分工划分示意。从左到右,第一个流程是完全基于软件的算法实现方式,如果算法不太复杂,系统硬件也能够满足要求,这不失为一个很可行方式。因为基于软件的算法开发已经很成熟了(毕竟大多算法的早期验证都是在软件基础上进行的),有很多可直接调用的库函数可以借用。第二个流程复杂度高一点,算法的实现既有赖于硬件也需要软件帮忙,这个衔接和工作量划分很重要。特权同学有过一些实践,总结一点经验就是尽量把高吞吐量、重复性高的任务分给硬件来做,而软件更适合一些控制管理的工作。这就是软硬兼施,各自发挥他们的所长,目的也只有一个:更好的完成算法的实现。最后一个流程是杀手锏——完全用硬件来实现,这估计只有DSPBuilder量级的工具能够干这个活,甚至不用设计者明白HDL语言即可完成从一些算法仿真工具到HDL语言的转换,这估计就是DSPBuilder的卖点吧。
图2
对DSPBuilder了解不多,消化这个文档也是一个认识DSPBuilder的开始,希望接下来有机会更多的接触FPGA在算法实现方面的应用。