当前位置:首页 > 新闻资讯 > FPGA之家动态 >

FPGA基础(3)verilog综合相关基础

时间:2025-09-18      来源:FPGA_UCY 关于我们 0

1、在综合过程中,对于代码需要考虑

①数据类型如何转换为硬件

②常量如何映射成逻辑值

③语句如何转变为硬件

2、确保verilog语法写出来的模型是可以综合的

寄存器类型里:reg和integer类型可综合,time和real不可综合

在综合过程中:delay或者#10这种操作是无法综合的,会被忽略

3、连续赋值的综合过程,往往是将每一位综合出一个对应的门电路,有着一一对应的关系。

4、支持常量的部分选取,不支持非常量的部分选取,对于非常量下标会综合成多路选择器。

5、always语句中应包含所有读取的变量,否则综合出来的网表和实际功能不一致。

always@(A)

Z=A&B,

那么综合的结果是一个与门,A或B值变化结果都会变化,但是触发条件只有A,所以就少了B事件发生而触发Z值发生变化的情况,应该为always@(A or B)

6、锁存器的产生:(为什么产生的是锁存器,因为锁存器是电平敏感的)

①变量未能在always中所有可能的过程中被赋值(比如if语句中有else分支未对其赋值),就会推导出锁存器。

②局部变量未在所有分支中被赋值,也会产生锁存器。

③赋值前被引用,同样会产生锁存器。

避免锁存器的产生:

①通过full_case或者default指令来避免锁存器的产生,或者在case语句之前给变量进行默认赋值。

②当case各语句互斥时,通过使用parallel_case指令来避免优先级逻辑(潜逃可能会很深),而是综合成译码逻辑,各分支是并行的。

7、循环语句,包括for、repeat、while、forever,综合过程是对循环变量的每一个取值,复制for循环内的所有语句一次。

8、时序逻辑建模时使用非阻塞赋值(除非使用中间变量时可以使用阻塞赋值),组合逻辑建模时使用阻塞赋值,当变量在时钟沿变化时被赋值就会产生触发器,触发器个数与变量位数相同。

但是有一个例外,如果变量的赋值和引用出现在同一条语句中,则该变量被视为中间变量,不会产生触发器。

9、    多个时钟时,不同时钟控制的always语句内不能对同一个变量多次赋值,即对变量的赋值不能由多个时钟(也包括同一时钟的不同时钟沿即posedge和negedge)控制。

10、当产生触发器时,阻塞赋值和非阻塞赋值的综合是不一样。

always@(posedge clk)

begin

B=A;   //阻塞赋值


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

上一篇:FPGA流水线技术原理与实例

下一篇:

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言