逻辑运算、按位运算、模块封装

发布于:2024-09-19 ⋅ 阅读:(140) ⋅ 点赞:(0)

### 基本运算符

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 语言函数调用的差异有所帮助。


网站公告

今日签到

点亮在社区的每一天
去签到