在 fpga、asic 或 soc 硬件上编程实现功能
硬件设计是通过编程在自定义电路上实现功能的过程。系统和算法开发人员通常在 simulink® 和 matlab® 中开始硬件设计,然后编写规范文档以供硬件设计团队手动创建其硬件描述语言 (hdl)的表示。之后,该 hdl 表示会用来对 fpga 或 asic 硬件进行编程。这些硬件通常是片上系统 (soc) 的一部分。
手动编写底层 hdl 代码会限制硬件设计团队探索不同的架构,增加错误数量,并使算法难以在其他工程中重用。
借助 matlab 和 simulink,您可以探索各种算法,并确定哪些算法最耗费计算资源,因而可以从硬件设计中受益。探索之后,您可以使用 soc blockset™ 对 soc 架构进行仿真。
您还可以通过几个步骤来细化硬件设计,其中每个步骤都可以对照前一个步骤或原始算法进行验证:
- 调整算法以处理连续的数据流。硬件设计在大多数时候需要处理的都是这种数据流。
- 通过硬件设计组件的定点量化或实现,在数值准确性和效率之间进行权衡。
- 添加微架构,如并行机制、时序、反馈回路和实现硬件设计所需的其他功能。
您可以使用 simulink 和 matlab 中模块和函数来细化硬件设计。您也可以使用现成的 dsp、无线、视频/图像处理或深度学习 ip。根据具体应用的要求,许多研发人员都会用到上述中的几项。
您可以对照前一个步骤或原始算法来验证流程中的每个步骤。通过 hdl verifier™ 中的协同仿真或验证组件生成等方法,您可以重用任一表示来帮助硬件设计团队验证其手写 hdl 代码。您还可以通过运行 fpga 在环测试在连接到 matlab 或 simulink 的 fpga 或 soc 硬件上原型化硬件就绪的实现模型。
在全连接的硬件设计工作流中,您可以以使用 hdl coder™ 生成功能正确的 hdl 代码作为硬件设计实现流程的开始。这种方法还有一项优势,就是它具有从设计到模型和需求的完全可追溯性。这对于功能安全型工作流(如 do-254、iso 26262 和 iec 61508)至关重要。