### 基本运算符
1. **加法** (`+`)
- 用于两个数值相加,例如 `a + b`。
2. **减法** (`-`)
- 用于从一个数值中减去另一个数值,例如 `a - b`。
3. **取模** (`%`)
- 用于计算两个数值相除后的余数,例如 `a % b`。
4. **反逻辑** (`!`)
- 用于取反一个布尔值,例如 `!a`,如果 `a` 是 `True`,结果就是 `False`。
5. **逻辑与** (`&&`)
- 用于两个布尔值的逻辑与操作,例如 `a && b`,只有当 `a` 和 `b` 都是 `True` 时结果才是 `True`。
6. **逻辑或** (`||`)
- 用于两个布尔值的逻辑或操作,例如 `a || b`,只要 `a` 或 `b` 其中一个是 `True`,结果就是 `True`。
### 比较运算符
1. **大于** (`>`)
- 用于判断左边的值是否大于右边的值,例如 `a > b`。
2. **小于** (`<`)
- 用于判断左边的值是否小于右边的值,例如 `a < b`。
3. **大于等于** (`>=`)
- 用于判断左边的值是否大于或等于右边的值,例如 `a >= b`。
4. **小于等于** (`<=`)
- 用于判断左边的值是否小于或等于右边的值,例如 `a <= b`。
5. **等于** (`==`)
- 用于判断两个值是否相等,例如 `a == b`。
6. **不等于** (`!=`)
- 用于判断两个值是否不相等,例如 `a != b`。
### 按位运算符
1. **按位取反** (`~`)
- 用于对每一位进行取反操作,例如 `~a`。
2. **按位与** (`&`)
- 对两个数值的对应位进行与操作,例如 `a & b`。
3. **按位或** (`|`)
- 对两个数值的对应位进行或操作,例如 `a | b`。
4. **按位异或** (`^`)
- 对两个数值的对应位进行异或操作,例如 `a ^ b`。
5. **按位同或** (`~^`)
- 对两个数值的对应位进行同或操作,结果与异或相反。
6. **右移** (`>>`)
- 将数值的位向右移动,例如 `a >> b`。
7. **左移** (`<<`)
- 将数值的位向左移动,例如 `a << b`。
### 多目运算符
1. **三元运算符** (`?:`)
- 这是一种简短的条件判断语法,格式为 `condition ? value_if_true : value_if_false`。
### Verilog 模块与 C 语言函数调用
在 C 语言中,可以将一部分功能封装成函数,这样可以方便地在代码中重复调用。例如:
```c
bool key(void) {
int key_cnt = 0;
while(key_pin == 0) {
for(int i = 0; i < 1000; i++);
key_cnt++;
if(key_cnt > 5)
return 1;
}
return 0;
}
```
在 Verilog 中,可以将功能模块封装成模块或 IP(集成电路设计),例如:
```verilog
module key #(
parameter CLK_FREQ = 100000000
)(
input clk_i,
input key_i,
output key_cap
);
```
以上内容希望对你理解基本运算符和 Verilog 模块调用与 C 语言函数调用的差异有所帮助。