原创 VHDL 可综合设计经验

2010-8-3 09:44 6685 9 9 分类: FPGA/CPLD

VHDL作为一种硬件描述和仿真语言,最终要实现的是实际硬件电路;为了得到可综合的有效设计,通常在编程时要注意以下几点:


 


1.命名约定



在大多数设计中,常常会忽视建立、采用一种良好的命名约定。拥有好的命名约定就意味着设计清爽而系统化,对于其他设计者也具有很好的可读性。拥有好的命名约定,设计者看到信号的名字就能够很容
易联想出其功能。



2.STD_LOGIC类型的使用



建议在设计用来综合的VHDL代码时只使用STD_LOGIC类型(对总线采用STD_LOGIC_VECTOR类型)。如果只使用这一种类型,那么在将各模块集成起来的时候就无须考虑类型转换。



3.谨慎使用BUFFER



对于打算在设计对象内部对输出端口进行反馈的设计,提倡将该输出端口定义成OUTPUT端口,并另外建立一个与此输出端口相关联的信号,然后用该信号在设计对象内部实现反馈。不提倡将输出端口定义为BUFFER并在内部反馈该端口。使用BUFFER声明会在将各个模块集成起来的时候引起问题,这是因为与声明成BUFFER的端口相连接的每一个端口都必须声明成BUFFER端口。



4.完整的敏感表



如果在时序进程的敏感表中未列全信号,那么其综合前和综合后的仿真结果可能会不同。Design compiler在读入敏感表不完整的VHDL源文件时将发出正在读人的文件具有不完整的敏感表的警告信息。


 



5.进程中不要混用组合逻辑和时序逻辑


 


总是提倡设计者将组合逻辑和时序逻辑分开来写,一个进程用于组合逻辑,另一个进程用于时序逻辑。这样做了之后,设计者就有两个更大的灵活性。使用不同的进程,也会让vHDL代码变得更有可读性。


 



6.保证IF语句与CASE语句的完整性



IF语句会综合出优先级编码器,而cAsE语句将综合出多路选择器。然而,无论采用哪一种语句,都建议列出全部条件而不遗漏任何未列出的条件。这样就能确保综合过程中不会产生一个意料之外的锁存器。


 



 


7.尽量不使用WAIT FOR XX ns语句和AFTER XXns语句


 


xx ns表明在执行下一操作之前需要等待的时间,但综合器不予支持,一般忽略该时间,而不会综合成某种元件,故对于包含此类语句的程序,仿真结果与综合结果往往不一致。


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条