微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 在拿到一个算法后要用Verilog实现 应该从哪入手?

在拿到一个算法后要用Verilog实现 应该从哪入手?

时间:10-02 整理:3721RD 点击:

拿到一个算法以后,应该先考虑些什么呢?如何对其进行构架设计呢?以前就只编写过功能性的代码对实现算法类的不知道从何入手,多谢大家帮忙了!大家能否推荐应该看些什么书呢?特别茫然啊

首先是化简,评估所需要的资源和速度!

补充楼上的:
先量化分析,再根据FPGA的特性调整 处理流程 来设计 构架
必须 完全 搞懂 算法的处理流程,并可自行调整。

谢谢大家,可是要是不用FPGA实现,而是ASIC,用软件对其后端综合实现,还要考虑资源的问题么?大家有什么这方面的书推荐么?

能否把你的算法简单说明一下呢?比如是关于哪个方面的,需要用到什么逻辑?

C建模,定点化,硬件实现

呵呵,期待高手解答。

一般来讲,如果设计规模不大,不需要很多开发人员的情况下,可以粗化分成两个步骤。
第一步当然就是算法部分,理清算法步骤,分析好可能的时序关系。
好的设计人员,在这一步应该考虑可测试性的问题,和结构实现的问题。
算法模型需要测试,如果建模层次过高,并且设计比较复杂,可能还需要对硬件结构进行高级语言的软件建模,来早期验证硬件结构能够正确实现算法。这些模型都需要验证,并且需要一定硬件设计的知识。
第二步就是模型转换成硬件描述,这一步和第一步里面建模的层次相关。第一步的模型层次越高,这一步的工作量就越大。并且如果对设计性能比较苛求的话,在这一步的优化工作也越多。
有些硬件上的优化,对性能有一定提升,但是在第一步建模的时候可能想不到,所以就看出来早期建模的时候如果能有非常深厚的硬件设计功力,就可以很早的时候给出较细层次的建模,并估算出性能。
早期算法建模相对来讲,使用高级语言较方便,比如上面有人说的c model,一个是和算法层次较近,另一个是检查结果较方便,可以模拟断言之类的,再一个会的人也比较多。当然现在什么systemc之类的语言也都在弥补这些中间地带。
后期硬件建模相对来讲,需要比较多的考虑可综合性的问题。要考虑使用的工具平台的问题。无论是fpga还是asic。硬件建模语言也分几个建模层次,可以根据项目周期,性能要求等等的要求来选择。有时候可以相信综合工具的能力,有时候不要太依赖它。综合工具在细粒度的逻辑化简上现在算法都基本比较成熟。但是大的架构上的化简能力很差。比如对于一个编码器,可以直接case的方式完成,基本不需要人工化简到门级。但你显然无法用几条语句描述出一个符合你要求的高性能cpu。在算法化简,架构优化上,工具还是无法和优秀工程师相比较的。所以如果追求极致性能,就尽量使用低层次的建模,人工设计架构。如果没有这种要求,而且对综合工具对编码风格(coding style, 很多工具应该都有这方面的介绍)的支持程度比较了解的话,就可以用高层次的建模,来加快开发速度。
如果设计规模较大,参与人员较多,就需要根据实际情况作出划分,这比较考验顶层规划人员的能力。
我的理解基本是这样。

在一条开发链条中,功力越深厚,就越可以把很多问题解决在自己的管辖范围内,为后面的开发人员提供方便。
因为问题发现的越晚,代价越大。
这也是好人品的体现

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top