1、HDLcoder产品介绍
图像处理分为两个部分:
这里主要讨论第一部分图像处理部分。
一般产品设计流程如下:
适用人群有以下两类:
这里先用一张slider来进行整体概括:
基于模型的设计的好处——算法验证不成功,进行优化会更加方便快捷,对下列的循环过程大大缩短开发时间。
相关演示(在matlab的example中有可以直接打开调用):
1、搭建模型:算法做好了,然后再添加实现的支路,就可以开始产生代码了。
产生代码时,只需要告诉HDL coder,需要将红色的模块变为HDL代码,即可以得到对应的HDL代码。
上面提到了两个重要的模块
(1)全幅帧处理变成像素处理的模块:
HDL工具会根据输入的图像的大小,自动产生同步信号,而不需要我们去管。
下面matlab还提供了很多演示模型:
我们来看看有哪些模型,加强学习:
1、滤波
可以看到模型中有两种支路,这里是为了证明这两种算法是完全一样的。
2、灰度的伽马校正
3、棒状图的平衡
4、边缘检测并将结果与原来图像重合
5、不完整图像的边缘检测工作
6、识别键盘键值
下面是一些成功案例:
HDL coder主要带来了两个方面的好处:
- 建立模型并做仿真
- 可以产生与仿真结果完全一样的HDL代码
2、HDL coder对传统HDL代码产生工具的优化
HDL产品的主要特征:
1、HDL coder的优点1
HDLcoder对传统工具的产品的优化有两个方面:1、对面积的优化2、对速度的优化
2、HDLworkflow advisor
对于不熟悉HDLcode的人,如果你模型建好了,可以使用HDLworkflow advisor来创建HDL代码,它可以一步一步的帮助你优化代码,完成你的设计
3、关键路径
这里面有个非常重要的东西:关键路径
simulink是一个基于图形设计的平台工具,他可以帮助你将关键路径在其内显示出来。如果是做硬件的,上面这个图应该可以看出来是个滤波器,如果要提高运行速度,只需要加一个寄存器将关键路径打断就可以将速度提上去了。
但是如果你不是设计硬件的,你也不知道往哪放寄存器,HDL提供了工具帮助你去找往哪放寄存器的功能,你只需将寄存器放在输入端或者输出端,软件会自动找出最佳的位置。而且加了寄存器后,不仅近将关键路径打乱了,还把算法也打乱了,你必须在其他地方都加一个同样数量的寄存器才能保证算法是正确的,HDL提供的工具同样帮你完成了这个设计。
加完以后,会将加的寄存器在模块中显示出来(橙色都是工具添加的)
如果你是做控制的,你有一部分算法跑的慢一点,有一部分算法需要跑的快一点。优化工具也考虑到了这一点,也能够利用这种快慢的不同去进行优化。
4、关键路径的预估
刚才提高的关键路径一定是要产生出代码,然后运行程序,运行完以后才能得到关键路径的信息。但是这个综合程序并不是matlab的,而是调用xilinx或altera的综合工具后才能得到的结果。这个一般有个问题。如果算法复杂,产生的代码较多,运行一次会花费的时间很长。matlab在产生代码的时候提供了一个估计。
5、资源的复用
刚才的都是速度优化。刚才滤波器设计中有6个乘法器,我们如果不在乎速度,只在乎资源的化,可以进行以下优化。这部分工作HDL coder可以自动的在产品里去做。
我们只需要告诉你的期望即可
做完优化后,会产生一个新的模型进行了哪些变化。
6、其他
代码和模型的双重追踪
资源运用报告——用来多少个四则运算而不是用来多少个logic
报告具有可跳转性
将代码插入到程序,在模型中得到留空白,你可以插入你成熟的代码。
将成熟的ip核加入到模型中