银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-07-01 | gingko | 初次建立 |
表5-1 算术运算符
操作符 | 执行的操作 | 操作数个数 | 表达式 |
+ | 加法运算 | 2 | rega + 10 |
- | 减法运算 | 2 | rega - 10 |
* | 乘法运算 | 2 | rega * 10 |
/ | 除法运算 | 2 | 23 / 10,运行结果为2。 |
表5-2 逻辑运算符
操作符 | 执行的操作 | 操作数个数 | 表达式 |
! | 逻辑求反 | 1 | !a |
&& | 逻辑与 | 2 | a && b |
|| | 逻辑或 | 2 | a || b |
表5-3 逻辑运算真值表
a | b | !a | !b | a && b | a || b |
1 | 1 | 0 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | 1 | 0 | 0 |
表5-4 关系运算符
操作符 | 执行的操作 | 操作数个数 | 表达式 |
< | 小于 | 2 | a < b |
> | 大于 | 2 | a > b |
< = | 小于等于 | 2 | a < = b |
> = | 大于等于 | 2 | a > = b |
wire data_out = sel_en ? a : b;
表5-5 按位运算符
操作符 | 执行的操作 | 操作数个数 | 表达式 |
~ | 按位求反 | 1 | ~a |
& | 按位与 | 2 | a & b |
| | 按位或 | 2 | a|b |
^ | 按位异或 | 2 | a^b |
~^,^~ | 按位同或 | 2 | a~^b,a^~b |
{signal1,signal2}
表5-6 移位运算符
操作符 | 执行的操作 | 操作数个数 | 表达式 |
» | 右移 | 2 | a » m,a为操作数,m为移的位数 |
« | 左移 | 2 | a « m,a为操作数,m为移的位数 |
表5-7 等式运算符
操作符 | 执行的操作 | 操作数个数 | 表达式 |
== | 等于 | 2 | a == b |
!= | 不等于 | 2 | a != b |
=== | 等于 | 2 | a === b |
!== | 不等于 | 2 | a !=== b |
表5-8 赋值运算符
操作符 | 执行的操作 | 操作数个数 | 表达式 |
= | 连续赋值 | 不定 | a = b |
= | 过程赋值 | 不定 | a = b |
< = | 过程赋值 | 不定 | a < = b |
assign a = b,当b信号发生变化时,a都随之变化。
其代码如下:
reg [9:0]b; //产生输入信号b,并使b从0加1直至加到1000 always@(posedge clk_25m) if(b == 10'd1000) b <= 10'd0; else b <= b + 1'd1; reg [8:0]a; //产生输入信号a,并使a从0开始加1直至500 always@(posedge clk_25m) if(a == 9'd500) a <= 9'd0; else a <= a + 1'd1; assign c = a[7] && b[9]; //逻辑与,a[7]与b[9]同时为真时c为真 assign d = a[7] || b[9]; //逻辑或,a[7]与b[9]至少一个为真时d为真 assign e = !a[7]; //逻辑非,a[7]为假时e为真
其代码如下:
assign f = a[7] & b[9]; //按位与,a[7]=1、b[9]=1,f=1 assign g = a[7] | b[9]; //按位或,a[7]、b[9]至少一个为1时,g=1 assign h = ~a[7]; //按位非,a[7]为0时,h=1 assign i = a[7] &~ b[9]; //按位与非,a[7]=1、b[9]=1,i=0 assign j = a[7] |~ b[9]; //按位或非,a[7]=0、b[9]=0,j=1 assign k = a[7] ^ b[9]; //按位异或,a[7]和b[9]相异,k=1 assign l = a[7] ~^ b[9]; //按位同或,a[7]和b[9]相同,l=1