zoukankan      html  css  js  c++  java
  • verilog 实用的小技巧

    (之后还会持续的更新)

    移位操作的实现:

      verilog有一种非常简单的移位操作实例如下:

    reg [3:0] source;
    reg out;
    
    {out,source[3:0]}={source[3:0],1'b0};//向左移位。且不循环
    {source[3:0],out}={1'b0,source[3:0]}//向右移位,且不循环
    {out,source[3:0]}={source[3:0],source[3]};//向左循环移位
    

    切记不能使用多驱动对同一个网线进行赋值:

      编译verilog时往往会出现如下错误:Error (10028): Can't resolve multiple constant drivers for net "cnt[24]" at TIME_Ctr.v(37),这是初学者往往遇到的错误,这是受C语言代码的影响所造成的。也就是一个

    变量往往在多个always语句中赋值,会产生竞争与冒险的行为,所以我们写在一个always语句中也只对一个变量赋值。verilog不同于其他的编程语言的特点(并发性)要时刻的铭记于心。

    在编写testbench的注意事项

    1. 仿真调用模块时应尽可能的用按端口进行赋值
    2. 仿真的模块的输入应为reg类型,输出应该为线网类型,这点要注意这和函数的形参传值不一样,这个是相当于是用外部寄存器或是线网来链接这个模块,这点要非常的注意!(其实顶层在调用子模块的时候也是一个道理)
    3. clock仿真的时候一定要赋予初始值要不然就会保持高阻态的状态。
  • 相关阅读:
    15.Mysql之undo 日志浅谈02
    14.Mysql之redo log -checkpoint浅谈01
    13. Mysql之二进制日志(binlog)
    [C]使用argv的5种方法
    [Python]sys.stdin.readline(), sys.stdout.write(), sys.stdin.write()
    temporadas[i][2]三种等价形式
    time.h中time(NULL),stdlib.h中srand(), rand()
    strstr函数的使用
    [C]toupper, tolower
    [Python]List Comprehension
  • 原文地址:https://www.cnblogs.com/yskn/p/9322499.html
Copyright © 2011-2022 走看看