作者: Duoqiang Liu,文章来源: FPGA算法工程师微信公众号
我们常说一句话:工欲善其事,必先利其器。
作为一名FPGA工程师,我们的任务就是把某些特定的逻辑行为雕刻到FPGA芯片上,通过设计逻辑电路达到预期目的。
FPGA的两个擅长领域:信号处理与高速接口。在产业界,企业也根据不同的应用需求,招聘从事信号处理或高速接口方向的工程师。
Xilinx公司FPGA产品类别
我们都很清楚,FPGA作为一种现场可编程芯片,高度灵活的设计实现,使得产品周期大大缩短,在产品形成批量投入市场前具有先天优势。
在接口方面,常用的有:CPRI、PCIe、GTH、Ethernet、SATA、DDR、Aurora、JESD204、I2C、SPI、UART等,在无线通信、图像、数据中心等领域到广泛使用。
例如,CPRI,我们可以去下载相应的规范进行了解。
前面写过的文章连接:《无线高速接口:什么是CPRI?》
大部分接口均由行业标准规范限定,以便于实现设备之间互联。部分特殊接口以某些厂家特定提供,适配指定的芯片及型号。
同时,我们利用FPGA内部丰富的LUT、DSP、RAM等资源,可以实现大规模复杂的系统设计。
人尽其才,物尽其用。FPGA适合拿来做流水和并行处理,因此大部分的数字信号处理都可以通过FPGA来实现。
对于数字信号处理,大部分集中在无线通信和图像处理领域,根据行业相关标准和工程需求,制定相应的信号处理过程和实现方案。
信号处理过程,即为算法链路的设计,需考虑整个系统的功能需求。算法人员根据功能需求进行算法设计,并将经仿真验证的算法提供给逻辑实现人员进行硬件电路实现。
FPGA工程师的主要任务,就是进行相应的逻辑实现和接口开发。但同时应该看到,从职业生涯成长角度看,我们既需要熟悉常用接口的应用,掌握逻辑实现方法和技巧,而算法设计也必不可少。
前面,我们探讨过提升FPGA工程师的核心竞争力,掌握基本功和设计方法学,极为重要。
对于接口和具体链路模块设计,我们只有通过具体的实践过程获取经验,同时了解相应的标准和规范,也大有益处。
然而,对于相关的信号处理过程,特别是涉及算法,我们怎样去比较深入的学习和实践呢?
我们知道MATLAB是一款工科神器,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
因此,我们可以根据这一常用的数学软件,进行持续性学习。
MATLAB应用领域
随着MATLAB的功能越来越强大,以至于美国为了制裁国内某些高校,禁止其使用MATLAB软件。国内目前尚无相关产品,能够替代MATLAB的强大能力。
不可否认的是,MATLAB确实为推动产业进步做出了巨大贡献。
当前常用的MATLAB版本有:
最新的MATLAB版本为R2021b,是R2021a的更新版,主要在激光雷达、RF PCB、信号完整性等方面进行更新和添加。
如果我们想学习关于数学统计、深度学习、信号处理、无线通信、图像处理、SOC开发、验证测试、图形仿真等方面的MATLAB实现,加深对相关技术的掌握程度,那么我们可以通过访问下面的网站:https://ww2.mathworks.cn/help/
例如,我们可通过Deep Learning Toolbox,基于MATLAB软件设计、训练和分析深度学习网络。
此外,作为MATLAB的重要应用,信号处理与无线通信自然也是必不可少的重要一环。
例如5G 、LTE、天线、相控阵、雷达、射频、卫星通信、信号完整性、WLAN等业界技术热点,具有相应的Toolbox,提供相关的设计方案和Demo,加快应用部署。
同样地,在图像处理和计算机视觉领域,我们可以获取相应的Toolbox进行设计和开发。
若对FPGA、ASIC和SoC方向感兴趣,我们可以通过以下的Toolbox进行滤波器设计、定点化、HDL源码设计等,大幅度提高生产力。
其他应用在此不一一例举,我们希望可以通过一些公开的资源和平台,提升自己的硬实力,并获得相应的回报。
FPGA工程师相比于IC设计工程师,可能会承担更多的工作项,除了都非常关心具体设计实现、时序约束和资源利用等因素外,我们还需要了解系统级设计方法、架构设计、系统调试和相关的算法知识。
在此祝愿朋友们,在新的一年,升职加薪,干出一番大事业!