Verilog 学习笔记1

模块结构

二选一数据选择器描述:

image-20260726182529394

若a,b,s波形已知,就可以知道y的波形:

image-20260726182606584

写法:

1
2
3
4
5
module MUX21a (a,b,s,y);
input a,b,s;
output y;
assign y = (s ? a: b);
endmodule

另一个:边沿D触发器

image-20260726182721135

1. 模块说明部分

1
2
3
module Name ([端口离别]);
[端口信号声明]; // 输入输出属性,数据类型,位宽等
[参数声明];

例子:

1
2
3
4
5
module full_adder (A,B,CIN,S,COUT):
input [3:0] A,B;
input CIN;
output reg [3:0] S;
output COUT;

是这样的:

image-20260726183000601

2. assign

它是连续激活语句(它是总是处于激活状态)

默认是wire类型(代表电路间的连线)

1
2
assign y = a; 
assign y = a & b;

效果:

image-20260726183037292

例子:

1
2
assign M = B | C; 
assign Y = A & M;

M和Y都必须是wire类型

image-20260726183228286

3. 算术类型

  • 算术型

  • 逻辑性

    结果有1、0、x

    x代表不确定

    如果非0,x就是1

    Y = (2 < 3) && 1' bx; 结果就为x

  • 等价运算符

    == 代表等于

    === 代表case等于

image-20260726183629779

​ 这里的b代表在二进制下

  • 按位运算符

    如果操作数位宽不同,位宽小会自动在左添0

    结果与操作数位宽相同

  • 缩减运算符

    对多位二进制数,从左到右进行逻辑运算,最后只得到1位

    image-20260726183945032

  • 移位运算符

    >> 是右移,>>> 是算术右移

    image-20260726184023350

  • 拼接复制运算符

    {} 是拼接

    {{}} 是复制拼接

    image-20260726184111929

  • 条件运算符

    ?: