原创 verlog语法要点

2010-2-26 11:41 3025 9 9 分类: FPGA/CPLD
verlog语法要点:
     module endmodule之间由两部分构成:接口描述和逻辑功能描述
     IO端口种类: input  output  inout
     相同位宽的输入输出信号可以一起声明, input[3:0] a,b; 不同位宽的必须分开写
     内部信号为reg类型,内部信号信号的状态: 0  1  x   z,  3'bx1=3'bxx1 x/z会往左扩展  3'b1=3'b001 数字不往左扩展
     逻辑功能描述中常用assign描述组合逻辑电路,always既可以描述组合逻辑电路又可以描述时序逻辑电路,还可以用元件调用方法描述逻辑功能
     always之间、assign之间、实例引用之间以及它们之间都是并行执行,always内部是顺序执行
     常量格式: <+/-><二进制位宽><'><进制><该进制的数值>:
          默认进制为10进制
          默认位宽为32位
          位宽是从二进制宽度角度而言的
          由位宽决定从低位截取二进制数2'hFF=2'b11,通常由被赋值的reg变量位宽决定
     parameter常用于定义延迟和变量位宽,可用常量或常量表达式定义
     变量种类: wire reg  memory
          IO信号默认为wire类型,除非指定为reg类型
          wire可以用作任何输入输出端口
          wire包括input output inout
          wire不带寄存功能
          assign赋值语句中,被赋值的信号都是wire类型
          assign之所以称为连续赋值,是因为不断检测表达式的变化
          reg类型可以被赋值后再使用,而不是向wire一样只能输出,类似VHDL中的buffer端口
          reg类型变量初始值为x (VHDL中初始值为本类型最小值,通常是0)
          always模块里被赋值的信号都必须定义为reg类型,因为always可以反复执行,而reg表示信号的寄存,可以保留上次执行的值
          reg类型变量与integer变量不同,即使赋负值,实质上也是按二进制无符号数存储的,integer是有符号数
          verilog中所有内部信号都是静态变量,因为它们的值都在reg中存储起来了
          memory型只有一维数组,由reg型变量组成
          memory初始化只能按地址赋值,不能一次性赋值
          1*256的memory写法: reg mema[255:0]     mema[3]=0;
          不同位宽的变量之间赋值,处理之前都以被赋值的变量位宽为准扩展或截取
          A[a:b] 无论a b谁大,a总是实际电路的信号高位,b总是实际电路的信号低位
          算术运算中如果有X值则结果为X
          for循环中的变量另外定义成integer,因为它不是实际信号,有正负;reg则以无符号数存在
     == 和!=只比较0、1,遇到z或x时结果都为x (x在if中算做假条件),结果可能是1、0、x
    
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条