银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2019-02-18 | gingko | 初次建立 |
操作符 | 执行的操作 | 操作数个数 | 表达式 |
+ | 加法运算 | 2 | rega + 10 |
- | 减法运算 | 2 | rega - 10 |
* | 乘法运算 | 2 | rega * 10 |
/ | 除法运算 | 2 | 23 / 10,运行结果为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 |
操作符 | 执行的操作 | 操作数个数 | 表达式 |
< | 小于 | 2 | a < b |
> | 大于 | 2 | a > b |
< = | 小于等于 | 2 | a ⇐ b |
>= | 大于等于 | 2 | a >= b |
con_expression ? true_expression : false_expression;
wire data_out = sel_en ? a : b;
其运行结果为:若sel_en为真,data_out的值取a;否则,data_out的值取b。
操作符 | 执行的操作 | 操作数个数 | 表达式 |
~ | 按位求反 | 1 | ~a |
& | 按位与 | 2 | a & b |
| | 按位或 | 2 | a | b |
^ | 按位异或 | 2 | a ^ b |
~^,^~ | 按位同或 | 2 | a ~^ b,a ^~ b |
{signal1,signal2}
操作符 | 执行的操作 | 操作数个数 | 表达式 |
» | 右移 | 2 | a » m,a为操作数,m为移的位数 |
« | 左移 | 2 | a « m,a为操作数,m为移的位数 |
操作符 | 执行的操作 | 操作数个数 | 表达式 |
== | 等于 | 2 | a == b |
!= | 不等于 | 2 | a != b |
=== | 等于 | 2 | a === b |
!== | 不等于 | 2 | a !=== b |
操作符 | 执行的操作 | 操作数个数 | 表达式 |
= | 连续赋值 | 不定 | a = b |
= | 过程赋值 | 不定 | a = b |
⇐ | 过程赋值 | 不定 | a ⇐ b |
根据原理中描述的算数运算符使用规则,首先定义两个有初始值的变量,然后对两个变量进行“加、减、乘、除”运算,然后通过Signaltap工具观察运行结果是否与实际相符。其代码如下:
reg [5:0]x1 = 6'd10; reg [5:0]y1 = 6'd25; assign a = x1 + y1;//加法运算符表达式,运行结果a=6'd35; assign b = y1 - x1;//减法运算符表法式,运行结果b=6'd15; assign c = 2 * x1;//乘法运算符,运行结果c=6'd20; assign d = y1 / 5;//除法运算符,运行结果d=6'd5; //注意:若y1无法被除尽时,小数位直接省去,只保留整数位;
其代码如下:
reg x2 = 1'b1; reg y2 = 1'b0; assign e = !x2;//逻辑求反表达式,运行结果e=0; assign f = x2 && y2;//逻辑与表达式,运行结果f=0; assign g = x2 || y2;//逻辑或表达式,运行结果g=1;
其代码如下:
reg [3:0]x3 = 4'd3; reg [3:0]y3 = 4'd8; reg [3:0]z3 = 4'd8; assign h = (x3 < y3) ? (y3 - x3) : 4'd0;//小于号表达式,运行结果h=5; assign i = (x3 > y3) ? 4'd0 : (y3 + x3);//大于号表达式,运行结果i=11; assign j = (y3 <= z3) ? (y3 - x3) : 4'd0;//小于等于号表达式,运行结果i=5; assign k = (y3 >= z3) ? (y3 - x3) : 4'd0;//大于等于号表达式,运行结果i=5;
其代码如下:
reg [3:0]x4 = 4'b0101; reg [3:0]y4 = 4'b1001; assign l = ~x4;//按位求反表达式,运算结果l=4’b1010; assign m = x4 & y4;//按位与表达式,运算结果m=4'b0001; assign n = x4 | y4;//按位或表达式,运算结果n=4'b1101; assign o = x4 ^ y4;//按位异或表达式,运行结果0=4’b1100; assign p = x4 ~^ y4;//按位同或表达式,运行结果p=4'b0101;
其代码如下:
reg [3:0]x5 = 4'b0101; reg [3:0]y5 = 4'b1100; assign q = {x5,y5};//拼接运算符表达式,运行结果q=8'b01011100;
其代码如下:
reg [3:0]x6 = 4'b1001; assign r = x6 << 3;//左移表达式,运行结果r=4'b1000; assign s = x6 >>3;//右移表达式,运算结果s=4'b0001;
1、将硬件正确连接,如图5.1所示。
2、将编写好的代码进行编译,并将要观察的所有输出信号添加到Sinaltap中; 3、通过Signaltap工具对所有运算结果进行采集,采集结果如图5.2所示。