集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1255|回复: 4

verilog 基础语法-数据类型 常量 变量

[复制链接]
fpga_feixiang 发表于 2019-3-1 15:16:32 | 显示全部楼层 |阅读模式
2.数据类型 常量 变量
    常量:
&nbsp; &nbsp; &nbsp; &nbsp; 整数:<位宽 num'><进制 b|o|d|h><数字>,例如 4'b1010
&nbsp; &nbsp; &nbsp; &nbsp; x值(不定值)和z值(高阻值,也可用?代替)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; x和z可以标识某一位或者某一个数字
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4'b10x0,4'bx,4'b101z,4'bz,4'b?
&nbsp; &nbsp; &nbsp; &nbsp; 负数:整数最前面加-
&nbsp; &nbsp; &nbsp; &nbsp; 下划线:分割数字部分,更加易读(8'b1000_1000)
&nbsp; &nbsp; 参数:parameter
&nbsp; &nbsp; &nbsp; &nbsp; parameter 参数名=表达式;
&nbsp; &nbsp; &nbsp; &nbsp; 表达式只能是数字或者定义过的参数
&nbsp; &nbsp; 变量:
&nbsp; &nbsp; &nbsp; &nbsp; wire型:wire [n-1:0] 数据名;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wire表示信号,常用来表示assign关键字指定的组合逻辑信号
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wire型信号可以用作输入,输出
&nbsp; &nbsp; &nbsp; &nbsp; reg型:reg [n-1:0] 数据名;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 对存储单元的抽象
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 常用来表示always模块内的指定信号,常代表触发器
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; always块内被赋值的每一个信号都必须定义为reg型
&nbsp; &nbsp; &nbsp; &nbsp; memory型:reg [n-1:0] 存储器名[m-1:0];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reg [n-1:0]表示基本存储单元的大小
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 存储器名[m-1:0]表示基本存储单元的个数,存储空间的容量
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 对存储器进行地址索引的表达式必须是常数表达式
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 一个n位寄存器可以在一条赋值语句里进行赋值,而一个完整的存储器不行
&nbsp; &nbsp; 运算符及表达式:
&nbsp; &nbsp; &nbsp; &nbsp; 基本运算符:+ - * / %
&nbsp; &nbsp; &nbsp; &nbsp; 位运算符:~ & | ^ ^~
&nbsp; &nbsp; &nbsp; &nbsp; 逻辑运算符:&& || !
&nbsp; &nbsp; &nbsp; &nbsp; 关系运算符:< > <= >=
&nbsp; &nbsp; &nbsp; &nbsp; 等式运算符:== != (不管x、z,结果可能是不定值)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; === !==(对参数的x、z都进行比较)
&nbsp; &nbsp; &nbsp; &nbsp; 移位运算符:<< >>
&nbsp; &nbsp; &nbsp; &nbsp; 位拼接运算符:{ },将几个信号拼接起来,例如{a,b[3:0],w,3'b100}
&nbsp; &nbsp; &nbsp; &nbsp; 缩减运算符:C =&B;C =|B;C =^B;
&nbsp; &nbsp; &nbsp; &nbsp; 优先级别:和c语言差不多,加括号
&nbsp; &nbsp; 赋值语句:
&nbsp; &nbsp; &nbsp; &nbsp; 1)非阻塞赋值方式(b <= a)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a.块结束才完成赋值
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; b.b的值不是立刻就改变的
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.在可综合的模块中常用
&nbsp; &nbsp; &nbsp; &nbsp; 2)阻塞赋值方式(b = a)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a.赋值语句执行完成后,块才结束
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; b.b的值在赋值语句执行后立刻改变
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.可能会产生意想不到的结果
&nbsp; &nbsp; &nbsp; &nbsp; 简单理解:
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 非阻塞赋值用了多个触发器,每次时钟到达,所有触发器都触发一次
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 阻塞赋值连到同一个触发器上,时钟到达,导致所有寄存器被赋值
---------------------
zhangyukun 发表于 2019-3-2 09:38:43 | 显示全部楼层
verilog 基础语法-数据类型 常量 变量
大鹏 发表于 2019-3-2 16:02:47 | 显示全部楼层
verilog 基础语法-数据类型 常量 变量
zxopenljx 发表于 2025-4-6 17:51:54 | 显示全部楼层
verilog 基础语法-数据类型 常量 变量
lihongkun16 发表于 2025-4-7 09:02:21 | 显示全部楼层
verilog 基础语法-数据类型 常量 变量
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-2 04:13 , Processed in 0.059842 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表