首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

verilog,设计技巧

verilog,设计技巧

Ø
采用的描述级别越高,设计越容易,程序代码越简单;但耗用器件资源更多。对特定综合器,可能无法将某些抽象级别高的描述转化为电路!
Ø
基于门级描述的硬件模型不仅可以仿真,而且可综合,且系统速度快。

Ø
所有Verilog HDL编译软件只是支持该语言的一个子集。
Ø
尽量采用编译软件支持的语句来描述设计;或多个软件配合使用。
Ø
一般用算法级(写出逻辑表达式)或RTL级来描述逻辑功能,尽量避免用门级描述,除非对系统速度要求比较高的场合才采用门级描述。


(1)采用什么描述级别更合适?
Ø
系统级描述太抽象,有时无法综合成具体的物理电路;门级描述要求根据逻辑功能画出逻辑电路图,对于复杂的数字系统很难做到;
Ø
而算法级和RTL级描述级别适中,代码不是很复杂,且一般容易综合成具体的物理电路,故建议尽量采用算法级和RTL级来描述。
(2)怎样减少器件逻辑资源的耗用?
Ø
当器件容量有限时,为减少器件逻辑资源的耗用,建议少用if-else语句和case语句,尽量直接使用逻辑表达式来描述系统的逻辑功能;
Ø
或者用case语句取代if-else语句。






(一)
一个变量不能在多个always块中被赋值!这个问题一定要注意!否则编译不能通过。
当某个变量有多个触发条件时,最好将它们放在一个always块中,并用if-else语句描述在不同触发条件下应执行的操作!
(二)
在always块语句中,当敏感信号为两个以上的时钟边沿触发信号时,应注意不要使用多个if语句!以免因逻辑关系描述不清晰而导致编译错误。


(三)
当输出信号为总线信号时,一定要在I/O说明中指明其位宽!否则在生成逻辑符号时,输出信号被误认为是单个信号,而没有标明位宽,就不会当成总线信号。
(四)
当要用到计数器时,一定要根据计数最大值事先计算好所需的位宽!若位宽不够,则计数器不能计到你设定的最大值,当该计数器用作分频时,则输出时钟始终为0,所设计电路将不能按预定功能正常工作!

(五)
注意程序书写规范:语句应注意缩进,if-else语句注意对齐,应添加必要的注释!
(六)
注意区分阻塞赋值和非阻塞赋值的区别。
Ø
在一个源程序中,要么都采用阻塞赋值语句,要么都采用非阻塞赋值语句,最好不要混合使用,否则可能逻辑关系出错!
Ø
为易于综合,建议均采用非阻塞赋值语句!
返回列表