Verilog编程之道 - Verilog语言特性

1.抽象级别:(行为级、RTL级、门级)

        行为级模型:1主要用于testbench;2着重于系统行为和算法描述,不在于电路实现;3、不可综合;4主要采用高级语言

        RTL级模型:1主要用于ASIC和FPGA设计;2着重于描述功能块内部与功能块之间的数据流与控制信号,着重于电路实现,在于如何在timing、area、power中作出平衡。3可综合出门级模型;4采用可综合的语言结构

        门级模型:1主要用于后端的物理实现;2实际电路的逻辑实现;3主要采用逻辑门、用户定义原语

2.保持一致

        尽量不要使用内嵌编译指令(//synopsys full_case paraller_case) 可能导致前后仿真不一致。

        小心使用casex和casez,也可能导致前后仿真不一致。

3常数

        Verilog采用四值逻辑:0、1、x、z;

        最简单的整数是十进制数,因此要避免如下写法:

case (sel[1:0])
    00: y = a;
    01: y = a;
    10: y = a;    //not execute  decimal 10
    11: y = a;    //not execute  decimal 11
endcase

        z可用?代替

        没有size限定的数,按照最左边的位进行拓展。

reg [11:0] a, b, c, d;
initial begin
    a = 'hx;    //xxx;
    b = 'h3x;   //03x;
    c = 'hz3;   //zz3;
    d = 'h0z3;  //0z3;
end

        负数以2的补码形式进行表示。

-8'd6     // -(8'd6)
4'shf     // -4'h1

实数real 采用双精度浮点数,有两种方式表示:十进制法和科学技术法。实数赋给整数时,按四舍五入转换后赋值。

字符串string 包含在两个“(双引号)之间的字符,使用reg操作时,每8-bit存一个字符。

4 数据类型

        Verilog中有两种数据类型:变量和线网,区别在赋值和保持的方式,代表不同的硬件结构。

        除了trireg之外,线网类型不能保存值,线网值由driver决定。

                wire用于逻辑门的驱动或连续赋值的驱动,多个相同驱动强度的driver驱动同一个wire时出现逻辑冲突,值为x。

                线逻辑类型线网wor wand trior triand用于解决多个driver驱动同一个线网时的逻辑冲突,分别多个驱动实现逻辑与 逻辑或

                tri0表示带有下拉电阻的线网,没有驱动时,值为0

                tri1表示带有上拉电阻的线网,没有驱动时,值为1

                supply0、supply1用于模型电源,只提供0和1值的线网。

        变量保持每次赋给他的值,直到下一次赋值。reg time integer初始值为x,real realtime 初始值为0.

        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值