计算机组成原理自学笔记番外篇——模块结构简介 assign

  • 模块结构
  • assign

模块结构:

module 模块名([端口列表]);

[端口信号声明;]

[参数声明;]

常用语句:

  • assign
  • always
  • 底层模块调用

endmodule

2选1多路选择器的Verilog描述

#2选1多路选择器

#模块名 端口列表
module MUX21 (a,b,c,d);
    #端口信号声明
    #说明哪个是输出,哪个是输入
    input a,b,c;
    output d;
    #assign语句
    assign d = (a?b:c);
endmodule

边沿D触发器的Verilog描述

#边沿D触发器

module DFF(CLK,D,Q);
    output Q;
    input CLK,D;
    reg Q;
    always @(posedge CLK)
        Q<=D;
endmodule

模块说明部分:

端口信号声明:输出输入的属性 数据类型 位宽  名称

参数声明:parameter 数据类型 参数名 = 初值

模块名

是电路的名字,由用户指定的,一般与文件名一致

端口列表

电路的输入/输出信号名称列表,信号是由用户指定的,各个名称用逗号隔开

端口信号声明

声明端口信号的输入输出属性、信号的数据类型,信号的位宽

输入输出属性:input output inout

信号的数据类型:wire  线类型

                             reg   寄存器类型

位宽:[n1:n2]

同一类信号用逗号隔开

位宽不做说明的话,默认是一位

数据类型不做说明,默认是wire型

参数声明

参数的名称+初值

例子

module full_adder (A,B,CIN,S,COUT);
    input [3:0] A,B;
    input CIN;
    output reg [3:0]S;
    output COUT;
endmodule

S位宽是4位。对应信号为S[3]S[2]S[1]S[0]

assign语句

连续赋值语句

assign y=a;

assign y =a&b;  

总是处于激活状态,只要表达式中的操作数有变化,立即进行计算和赋值(区别于过程赋值语句)

赋值目标必须是wire(电路间的连线)

算术型

*乘法

/除法

+加法

-减法

%求余   只能是整数,取第一个操作数的符号

**求幂

逻辑型

!非

&&与

||或

结果可以为 1 0 x(不确定)

不是0或者x就一定是1

表达式要加括号

等价运算符

==等于

!=不等于

===case等于

!==case不等于

等于和不等于结果是 0 1 x

对于x和z,认为是不确定的,比较结果也是x

case运算,结果只能是1或者0

对于x和z认为是确定的值,参加比较

按位运算符

~ 按位非

&按位与

|按位或

^按位异或

~^按位同或

^~按位同或

操作数为1位或者多位的二进制数,除了按位非以外(一个),可以是两个及以上

位宽不一样的,自动左填0补齐

结果与操作数位宽相同

缩减运算符 

&缩减与

~&缩减与非

|缩减或

~|缩减或非

^缩减异或

~^缩减同或

^~缩减同或

缩减运算的操作数是1位或者多位二进制数

缩减运算操作数只有一个,将该数的各位自左向右进行逻辑运算,结果只有一位

移位运算符

>>右移

<<左移

>>>算术右移

<<<算术左移

格式:操作数 移位符 n;

向左、右移动n位 

对有符号数的算术右移自动补齐符号位

其他的自动补零

拼接复制运算符

{}  拼接               {操作数1,操作数2,操作数3, ...}         将多个操作数拼接起来

{{}} 复制拼接      {n{操作数1,操作数2,操作数3, ...}}     将多个操作数复制n遍拼接起来

可以组合使用

条件运算符

 ?:用于条件赋值

Y=A? B : C

如果 A=1,Y=B

如果A=0,Y=C

如果A=x,Y=x

可以嵌套

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值