# FSM基本信息

## 1. 芯片基本信息

根据`FSM/README.md`和`FSM/__init__.py`的分析，FSM芯片是一个用于按键消抖与单次触发脉冲生成的Mealy型有限状态机。

### 1.1 功能概述

- **主要功能**：实现按键的消抖处理和单次触发脉冲输出。
- **工作原理**：当检测到按键按下（`key_in=0`）时，状态机从`IDLE`状态转换到`PRESSED`状态，并在`PRESSED`状态输出一个时钟周期的高电平脉冲（`pulse_out=1`），然后立即返回`IDLE`状态。

### 1.2 输入输出端口

通过分析`FSM/__init__.py`，可以确定芯片的输入输出端口及其作用：

- **输入端口**：
  - `clk`：时钟信号，用于驱动状态机的状态转换。
  - `reset`：异步复位信号，高电平有效，用于将状态机复位到`IDLE`状态。
  - `key_in`：按键输入信号，低电平（0）表示按键按下。

- **输出端口**：
  - `pulse_out`：脉冲输出信号，高电平（1）表示按键被检测到并产生了一个单次触发脉冲。

### 1.3 芯片类型

- **芯片类型**：时序电路。
- **判断依据**：芯片有明确的时钟信号`clk`输入，状态机的行为依赖于时钟的边沿触发，因此它是一个时序电路。

## 2. 功能分类与功能点

根据`FSM/README.md`和代码分析，FSM的功能可以分为以下几大类：

### 2.1 状态管理

- **功能点1**：状态机初始化，复位时进入`IDLE`状态。
- **功能点2**：状态转换，从`IDLE`到`PRESSED`，再从`PRESSED`回到`IDLE`。

### 2.2 按键检测

- **功能点3**：在`IDLE`状态下检测`key_in`信号，当`key_in=0`时触发状态转换。

### 2.3 脉冲输出

- **功能点4**：在`PRESSED`状态下，输出一个时钟周期的高电平脉冲。

### 2.4 复位处理

- **功能点5**：在任意状态下，当`reset=1`时，状态机应能正确回到`IDLE`状态。

### 2.5 Mealy特性

- **功能点6**：输出`pulse_out`依赖于当前状态和输入`key_in`，符合Mealy型状态机的特性。

通过以上分析，我们对FSM芯片的基本信息有了清晰的了解，为后续的验证工作奠定了基础。