Verilog基础知识

  1. 模块
    Verilog HDL语言的基本单元为模块(module),一个模块代表一个特定功能的电路,它的基本结构为:
    Verilog基础知识
  2. 模块调用
    调用的语法格式为:
    模块名<参数列表>实例名(端口列表);
    如需多次调用:
    模块名<参数列表>实例名1(端口列表1);
    <参数列表>实例名2(端口列表2);

    还可以使用阵列调用方式:
    模块名<实例阵列名>阵列边界;
  3. 端口对应方式
    1、 端口位置对应:模块名<参数表>实例名(<信号1>,<信号2>,……);
    2、 端口名称对应: 模块名<参数表>实例名(.端口名1(<信号名1>),.端口名2(<信号2>)……);
    为了增强程序的可维护性与易读性,推荐使用第二种端口对应方式。
  4. 位宽不匹配
    1) 未连接端口,输入端赋值被置为z。
    2) 端口位宽不同:
    Verilog基础知识
  5. 内置的门级器间
    Verilog基础知识
  6. 连续赋值语句
    作用:对线网进行赋值(wire型变量)。
    显示连续赋值 assign #=assignment expression
    隐式连续赋值
    <net_declaration><derive_strength>#=assignment expression
    例:wire(strong0,weak1)[3:0]#(2,1,3)w=(ab)&(mn);
  7. 逻辑运算符
    算术运算符:加法(+),减法(-),乘法(*),除法(/)和取模(%)
    算术运算的结果位宽由最终赋值结果的位宽决定。

关系运算符:大于(>),小于(<),大于等于(>=),小于等于(<=),比较结果为1bit信号,成立为“1‘b1”,否则为“1’b0”,不确定状态为“1‘bx”,操作数的位宽不同时,位宽短的信号左边补0.

相等运算符:等于(),不等于(!=),全等(=),非全等(!==)。等于与不等于为逻辑等式运算符,结果由操作数的值决定,而全等和非全等运算符对操作数进行按位比较。两个操作数必须完全一致。

逻辑运算符:逻辑运算符有三种,逻辑与(&&)、逻辑或(||)、逻辑非(!)。前两种为双目运算符,最后一个则为单目运算符。操作数只能为0或1。如果操作数为1位则0为假1为真,多位则全0为逻辑0,只要有一位为1则为逻辑1.

按位运算符:五类,按位取反(),按位与(&),按位或(|),按位异或(^),按位同或(^) ,按位运算符是对每一位进行运算。位少的会在高位补0.

归约运算符:与(&),或(|),异或(^),以及相应的非操作。归约运算符的操作数只有一个,由低向高操作。

移位运算符:左移位(<<),右移位(>>),所移动的位数由右边的操作数决定。

条件运算符:条件运算符为唯一的三目运算符表达形式为:
<条件表达式>?<表达式1>:<表达式2>
条件表达式为真时,输出表达式1,为假时输出表达式2.
例:assign out=(!sel)?in1:in2;

连接和复制运算符:连接运算符({}),复制运算符({{}}),又称拼接运算符。
拼接:{信号1某几位,信号2某几位,……}
重复运算符({{}})将一个表达式放入双重括号中,复制因子在第一层。。

相关文章:

  • 2022-12-23
  • 2021-04-28
猜你喜欢
  • 2021-07-08
  • 2021-05-09
  • 2021-06-24
  • 2021-09-01
  • 2022-12-23
  • 2021-05-21
  • 2021-06-12
相关资源
相似解决方案