这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
icore3l_fpga_12 [2020/11/25 09:04] zgf 创建 |
icore3l_fpga_12 [2022/03/19 15:27] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-11-25 | zgf | 初次建立 | | | V1.0 | 2020-11-25 | zgf | 初次建立 | | ||
行 32: | 行 31: | ||
* 功能上,通过状态切换实现led的闪烁,根据功能描述,可以知道,LED闪烁功能状态包括LED亮状态和LED灭状态,以及状态转移判断条件(state_sig=1?)。 | * 功能上,通过状态切换实现led的闪烁,根据功能描述,可以知道,LED闪烁功能状态包括LED亮状态和LED灭状态,以及状态转移判断条件(state_sig=1?)。 | ||
* 在state_idle状态,LED显示1秒蓝色,便于状态转移的观察;1秒后,状态转移信号有效,状态机跳转到state_led_on状态,点亮LED;再过1秒,状态转移信号有效,状态机跳转到state_led_off状态,关断LED;当标志信号再次到来,状态转移信号有效,状态机又跳转到state_led_on状态,点亮LED;如此循环实现led闪烁功能。根据这些信息可以画出状态转移图如下: | * 在state_idle状态,LED显示1秒蓝色,便于状态转移的观察;1秒后,状态转移信号有效,状态机跳转到state_led_on状态,点亮LED;再过1秒,状态转移信号有效,状态机跳转到state_led_off状态,关断LED;当标志信号再次到来,状态转移信号有效,状态机又跳转到state_led_on状态,点亮LED;如此循环实现led闪烁功能。根据这些信息可以画出状态转移图如下: | ||
- | + | {{ :icore3l:icore_fpga_12_1.png?direct |图 12-1 状态转移示意图}} | |
- | 图 12-1 状态转移示意图 | + | |
* 状态转移信号state_sig是通过对25Mhz的系统时钟信号进行计数实现的。以系统时钟上升沿作为触发信号进行计数。计数满25M时,则计数时间持续1秒钟,跳转控制信号拉高1个时钟周期。代码如下: | * 状态转移信号state_sig是通过对25Mhz的系统时钟信号进行计数实现的。以系统时钟上升沿作为触发信号进行计数。计数满25M时,则计数时间持续1秒钟,跳转控制信号拉高1个时钟周期。代码如下: | ||
<code verilog> | <code verilog> | ||
行 83: | 行 82: | ||
//此时只是状态的转移,LED状态还未改变。 | //此时只是状态的转移,LED状态还未改变。 | ||
else | else | ||
- | led_state <= led_state; | + | led_state <= led_state; |
end | end | ||
`state_led_on:begin | `state_led_on:begin |