3 EDA技术实用教程 【基础知识1】

1.模块语句及表达方式

module 模块名(模块端口名表);
       模块端口和功能描述
endmodule

任何可综合的最基本模块都必须以关键词module开头;endmodule 是模块结束语句,旁边不加任何标点符号。

2.端口语句,端口信号,端口模式

Verilog的端口模式有如下三种,用于定义端口上数据的流动方向和方式。

(1)input:输入端口
定义的通道为单向只读模式,即规定数据只能通过此端口被读入模块实体中。

(2)output:输出端口
定义的通道为单向输出模式,即规定数据只通过此端口从模块实体向外流出,或者说可以将模块中的数据向此端口赋值。

(3)inout:双向端口
定义的通道确定为输入输出双向端口,即从端口的内部看,可以对此端口进行赋值,或通过此端口读入外部的数据信息;而从端口的外部看,信号可由此端口流出,也可向此端口输入信号,如RAM的数据口、单片机的I\O口等。

input 端口名1,端口名2...;
output 端口名1,端口名2...;
inout 端口名1,端口名2...;
input [msb:lsb] 端口名1,端口名2...;
//msb和lsb分别表示信号矢量的最高位和最低位
例如
output [3:0] C,D;
//表示定义了4个四位位宽的矢量或总线端口信号C[3:0],D[3:0]

3.Verilog的四种逻辑状态

  • 0.含义有四个,即二进制数0,低电平,逻辑0,事件为伪的判断结果
  • 1.含义有四个,即二进制数1,高电平,逻辑1,事件为真的判断结果
  • z或Z。表示高阻态或者高阻值
  • x或X。表示不确定或者未知的逻辑状态

4.按位逻辑操作符

5.等式操作符

==:位数相等,逐位比较,位数不等,高位补0进行比较,这时当每一位都相等时,输出位1,否          则为0;此外,如果含未知值x和高阻态z,则都为假

===:把x和z都当成确定的值进行比较,当表述完全相同输出1,不同输出0.且对于位数不等的数              不会像==那样高位补0,而会直接判断两数据不等。

6.并位操作运算符

并位操作运算符用{ }表示,可以将两个或多个信号按照二进制位拼接起来,作为一个数据信号使用。如{s1,s2},s1,s2取0或1,合并后新信号的取值范围是两位二进制数:00,01,10,11.

同时也可以嵌套使用,简化某些重复的表述,例如

{a1,b1,4{a2,b2}}={a1.b1,{a2,b2},{a2,b2},{a2,b2},{a2,b2}}={a1,b1,a2,b2,a2,b2,a2,b2,a2,b2}

7.Verilog的数字表达形式

Verilog中表示一个二进制数格式一般如下

<位宽>'<进制><数字>

B:二进制;  O:八进制 ;  D:十进制; H:十六进制

2'B10表示两位二进制数10;

4'B1011表示四位二进制数1011;

4'hA表示一位十六进制数A或者四位二进制数1010

3'D7表示3位二进制数111

再如:

S[3:0]=1的等号右侧1应该为0001,正式写法为4'B0001

S[5:0]=7中的7应该等于6'B000111

5'Bz=5B'zzzzz

verilog还可以定义有符号二进制数,如,8’b10000100和8'sb是不一样的,前者是无符号数,后者是有符号数,其最高位1是符号位 .sb是限定有符号二进制数的进制限定关键词。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酥酥_2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值