欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > FPGA开发verilog语法基础2

FPGA开发verilog语法基础2

2025/5/2 6:30:11 来源:https://blog.csdn.net/qq1016019583/article/details/144394304  浏览:    关键词:FPGA开发verilog语法基础2

文章目录

  • 主体内容
    • 1 运算符
      • 1.1 算术运算符
      • 1.2 关系运算符
      • 1.3 逻辑运算符
      • 1.4 条件操作符
      • 1.5 位运算符
      • 1.6 移位运算符
      • 1.7 拼接运算符(个人认为是HDL的最大特色)
      • 1.8 运算符优先级
    • 2 注释
    • 3 关键字
  • 参考资料

主体内容

1 运算符

1.1 算术运算符

	+		-		*		/		%

       注意!!!/为整除,%求余数(取模运算)。

       使用算术运算符时,要注意以下问题:

       1,算术运算结果的位宽。算术表达式结果的长度由最长的操作数决定。在赋值语句下,算术结果的长度由等号操作符左端的目标长度决定

       2,有符号数和无符号数的使用。在设计中,要注意到哪些操作数应该是无符号数,哪些应该是有符号数:

       (1)无符号数值一般存储在线网、reg(寄存器)型变量及普通(没有符号标记s)的基数格式表示的整形数中。

​       (2)有符号数值一般存储在整形变量、十进制形式的整数、有符号的reg(寄存器)型变量及有符号的线网中。

1.2 关系运算符

>		<		<=		>=		==		!=		===(全等)	!==(非全等)

​ 使用关系运算符时,要注意以下问题:

​       1,在进行关系比较时,如果成立则结果为 1‘b1,否则返回的结果为 1’b0;若不确定则返回结果为不定制(x)。

​       2,若操作数长度不同,则长度短的操作数应在左边用0补齐。例如:'b1001 > 'b101100 等价于 'b001001 >= 'b101101,结果为假(0)。

​       3,值相同而位宽不同时,使用 == 时为真,使用 === 时为假。=== 和 !== 时对操作数进行按位比较,两个操作数必须完全一致,结果才是真,否则时0,若两个操作数对应位出现不定值 x 和高阻值 z,则可以认为是相同的。 === 和 !== 常用于 case 表达式的判别,所以又称为“case 等式运算符”。

1.3 逻辑运算符

​	!非   		&&||

​       注意!!!,这里的非是而不是!!

​       使用逻辑运算符时,要注意以下问题:

​       1,如果操作数是由多位组成的,则当操作数每一位都是0时才是逻辑0值只要有某一位为1,这个操作数就是逻辑1值

​       2,逻辑运算符的操作数只能是逻辑0或者逻辑1。若操作数中存在不定态x,则逻辑运算的结果也是不定态,例如a为4‘b1100,b为4’b01x0,则 !a = 0, !b = x, a && b = x,a||b = x。

1.4 条件操作符

​	?:	a?b:c	**如果a为真,为b,否则为c**
​	条件运算符是verilog中的唯一三目运算符。注意条件表达式的运算结果可以为x,这个判断比较复杂。

1.5 位运算符

~位取反		&位相与		|位相或		^位异或(不同为1)		^~位同或

​       位宽不同的数按运算时,会自动地将两个操作数按右端对齐会把位宽低的高位补0(即补至两者的最大位宽),再运算,运算结果的位宽与操作数中的位宽较大者中相同。

​       特别注意区分逻辑运算符和位运算符到底谁是单个符号,谁是两个符号!!!

1.6 移位运算符

<<	a<<b	将a左移b位		​	>>	a>>b	将a右移b位

​       注意主次!两种移位运算都用0来填补移出的空位。

​       另外要注意!!!左移时,位宽增加;右移时,位宽不变(移出去的位就没了)

4'b1001 << 2 = 6'b100100;
4'b1001 >> 1 = 4'b0100;

1.7 拼接运算符(个人认为是HDL的最大特色)

{}	{a,b}	将a和b拼接起来,作为一个新信号
a = 3'b101;
b = 5'b11110;c = {a, b[3:0]};		//c = 7'b1011110
d = {2{a}};				//d = 6'b101101

1.8 运算符优先级

在这里插入图片描述

2 注释

​       类型1:// 只到本行结束有效

​       类型2:/*

​       */ 两个符号间的内容均有效

​       注意!多行注释不允许嵌套,但是单行注释可以嵌套在多行注释中

3 关键字

​       变量命名时,不能与系统关键字重名,且所有关键字都是小写的。例如,ALWAYS不是关键字,它是标识符常用关键字如下:

在这里插入图片描述

参考资料

1,正点原子领航者ZYNQ7020视频

2,《verilog HDL数字集成电路设计原理与应用(第二版)》 蔡觉平等

3,文心一言搜索结果

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com