资深工程师FPGA设计经验精华汇总

来源:ayx爱游戏官方网站作者:ayx爱游戏官方网站 日期:2024-04-13 浏览:
本文摘要:从大学时代第一次认识FPGA至今已有10多年的时间。至今忘记当初第一次在EDA实验平台上已完成数字秒表,抢答器,密码锁等实验时,那个激动劲。 当时由于没认识到HDL硬件描述语言,设计都是在MAX+plusII原理图环境下用74系列逻辑器件搭起一起的。

ayx爱游戏体育

从大学时代第一次认识FPGA至今已有10多年的时间。至今忘记当初第一次在EDA实验平台上已完成数字秒表,抢答器,密码锁等实验时,那个激动劲。

当时由于没认识到HDL硬件描述语言,设计都是在MAX+plusII原理图环境下用74系列逻辑器件搭起一起的。后来读书研究生,工作陆陆续续也用过QuartusII,Foundation,ISE,Libero,并且自学了verilogHDL语言,自学的过程中也渐渐体会到verilog的妙用,原本部分段语言就能已完成简单的原理图设计,而且语言的移植性可操作性比原理图设计强劲很多。

  工作过的朋友认同告诉,公司里是很特别强调规范的,尤其是对于大的设计(无论软件还是硬件),不按照规范回头完全是不能构建的。逻辑设计也是这样:如果不按规范做到的话,过一个月后调试时找到有拢,走再行看自己写出的代码,估算很多信号功能都忘了,更加不要说道检错了;如果一个项目做到了一半一个人回头了,接班人的估算得从头开始设计;如果必须在原本的版本基础上减少新功能,很有可能也得从头来过,很难做设计的可器重性。

在逻辑方面,我实在较为最重要的规范有这些:  1.设计必需文档化。要将设计思路,详尽构建等载入文档,然后经过严苛评审通过后才能展开下一步的工作。这样做到甸看上去很花上时间,但是从整个项目过程来看,意味著要比一上来就写出代码要节约时间,且这种作法可以使项目正处于高效率、可实现的状态。

  2.代码规范。  如果在另一个设计中的时钟是40ns,废黜周期恒定,我们只需对CLK_PERIOD展开新的例化就行了,从而使得代码更为更容易器重。

b.信号命名要规范化。  1)信号名不准小写,参数用大写。  2)对于低电平有效地的信号结尾能用_n标记,如rst_n。  3)端口信号排序要统一,一个信号只占到一行,最差按输入输出及从哪个模块回到哪个模块去的关系排序,这样在后期建模检验找错时后便利很多。

  4)一个模块尽可能要用一个时钟,这里的一个模块是指一个module或者是一个entity。在多时钟域的设计中牵涉到到横跨时钟域的设计中最差有专门一个模块做到时钟域的隔绝。这样做到可以让综合器综合出有优于的结果。

  5)尽可能在底层模块上做到逻辑,在高层尽可能做到例化,顶层模块不能做到例化,禁令经常出现任何胶连逻辑(gluelogic),哪怕意味着是对某个信号取反。理由同上。  6)在FPGA的设计上禁令用显人组逻辑产生latch,带上D触发器的latch的是容许的,比如配备寄存器就是这种类型。

  7)一般来说,转入FPGA的信号必需再行实时,以提升系统工作频率(板级)。  8)所有模块的输入都要寄存器化,以提升工作频率,这对设计做时序发散也是近于有益处的。

  9)除非是低功耗设计,不然不要用门控时钟--这不会减少设计的不稳定性,在要中用门控时钟的地方,也要将门控信号用时钟的上升沿打一拍电影再行输入与时钟谓之。  10)禁令用计数器方波后的信号做到其它模块的时钟,而要用改为时钟使能的方式,否则这种时钟满天飞的方式对设计的可靠性十分有利,也大大增加了静态时序分析的复杂性。如FPGA的输出时钟是25M的,现在系统内部要通过RS232与PC通信,要以rs232_1xclk的速率发送数据。

  时序是设计出来的  我的boss有在华为及峻龙工作的背景,大自然就给我们谈了一些华为及altera做到逻辑的一些东西,而我们的项目规范,也基本上是按华为的那一套去做到。在工作这几个月中,给我动容深达的是华为的那句话:时序是设计出来的,不是仿照出来的,更加不是湊出来的。在我们公司,每一个项目都有很严苛的评审,只有评审通过了,才能做到下一步的工作。以做到逻辑为事例,并不是一上来就开始写出代码,而是要再行写出总体设计方案和逻辑详细设计方案,要等这些方案评审通过,指出不切实际了,才能展开编码,一般来说这部分工作所占到的时间要远大于编码的时间。

  总体方案主要是牵涉到模块区分,一级模块和二级模块的模块信号和时序(我们拒绝把模块信号的时序波形叙述出来)以及将来如何测试设计。在这一级方案中,要确保在今后的设计中时序要发散到一级模块(最后是在二级模块中)。什么意思呢?我们在做到详细设计的时候,对于一些信号的时序认同不会做到一些调整的,但是这种时序的调整最多不能波及到本一级模块,而无法影响到整个设计。

忘记以前在学校做到设计的时候,由于不懂设计时序,常常因为有一处信号的时序不符合,结果被迫将其它模块信号的时序也改为一下,搞得人很沮丧。  在逻辑详细设计方案这一级的时候,我们早已将各级模块的模块时序都设计出来了,各级模块内部是怎么构建的也基本上确认下来了。由于做这一点,在编码的时候大自然就迅速了,最重要的是这样做到后可以让设计不会仍然正处于高效率的状态,会因为某一处的错误引发整个设计由头展开。


本文关键词:资深,ayx爱游戏体育,工程师,FPGA,设计,经验,精华,汇总,从

本文来源:ayx爱游戏体育-www.bzchangxin.com

0
无法在这个位置找到: foot.htm