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仿真的时候一定要赋予初始值要不然就会保持高阻态的状态。
  • 相关阅读:
    反转链表
    linux shell 读取配置文件的一个例子
    python 笔记碎片
    工作笔记整理
    linux服务器之间文件互传
    工作软件收集
    linux同步时间
    利用linux的df和du命令查看文件和目录的内存占用
    windows常用快捷键
    SUSE 12 安装 python3.6
  • 原文地址:https://www.cnblogs.com/yskn/p/9322499.html
Copyright © 2011-2022 走看看