• Verilog语法遗漏点


    1 关于参数定义

    Parameter:parameter只能定义在端口生命的前面,如

    Input[whith:0] a;

    Parameter whith=4;

    这样的参数定义出现在声明的后面会报错

    2 关于always

    always块不仅可以描述时序逻辑,也可以描述组合逻辑

    如wire a,b;  assign a=b

    与reg a; wire b;  always@(b) a=b;     可见,always块内允许阻塞赋值

    不过需要注意的是

    always中,等号左边的变量必须是reg型,而不能是wire型,无论是组合逻辑还是时序逻辑均成立,但是最终变量a被综合成了连线,而不是寄存器!!!!

    3 关于if  else

    If…else…语句,只能依附于always等程序模块不能单独使用,如果想单独使用,用三目运算符代替

    4 不定态X表示不可推断电平,高阻态Z相当于断路状态

    5 REG型量不一定被综合成寄存器

    Verilog中,块内被赋值的变量,都必须是寄存器reg类型!!如上述2中的介绍,但是reg型变量不一定被综合成寄存器,组合逻辑中被综合成互连,不完全组合逻辑中,描述成锁存器。所以寄存器变量不一定被综合成寄存器。

    6 归约运算符

    归约运算符是一种单目运算符;被操作数具有一定的位宽,操作的结果都是1位。

    如wire[3:0]bus 4’hf;

      Wire result = &bus;

      上述赋值相当于assign result=bus[0]&bus[1]&bus[2]&bus[3];//归约与运算符

    如果是|,相当于assign result bus[0]| bus[1]|bus[2]|bus[3];//归约或运算符

      如果是^,相当于………………………………………………………………..//归约异或运算符

    实例参数重载方式,这个是为了输入端口宽度进行灵活配置的方式(遇到再看)

    8 关于alwaya@()敏感列表

    Always@(posedge clk)

    Always@(signal)

    关于电平敏感,表示电平发生变化就执行块内的内容。

  • 相关阅读:
    cmake 学习记录
    OCRTesseract
    IEquatable<T>、IEnumerable<T>
    基于jackson 注解 入参 枚举 反序列化 实操
    基于jackson 将一个String 类型的Json字符串对外输出成 json 格式。
    mysql 中sql 语句查询今天、昨天、7天、近30天、本月、上一月 数据
    mysql 计算两个日期的天数
    iis上json解析失败404
    mybatis foreach split
    mybatis中大于等于小于等于的写法
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/9991670.html
Copyright © 2020-2023  润新知