状态机实现流水灯
实验目的
- 了解层次化设计概念,熟悉层次化设计流程。
- 熟悉项目设计步骤及逻辑训练。
概念
-
层次化设计:对一个很大的项目进行拆分,直到拆分成很容易实现的最小规模为止。
-
系统顶层模块只负责连线,将各功能模块正确地组合起来。各功能模块由对应的若干子模块组成,同一模块的子模块之间有着相应的级联关系。
-
流水灯的实现步骤
- 利用状态机实现流水灯的时序
- 创建一个时钟分频模块,用慢时钟驱动状态机
系统架构
模块名称 | 说明 |
---|---|
freq_slow | 时钟分频,产生慢时钟 |
led_driver | LED控制模块,用来控制切换 |
led_flow | 顶层模块,用于级联 |
端口名称 | 说明 |
---|---|
sys_clk | 系统时钟端口 |
rst_n | 系统复位端口,低电平有效 |
led_out | 输出,LED驱动端口 |
内部连线 | 说明 |
---|---|
clk_slow | 分频得到慢时钟信号 |
代码实现
-
freq_slow模块代码如下
// freq_slow模块,定义1s为周期的慢时钟 module freq_slow #(parameter CNT_MAX = 25'd24_999_999) (sys_clk, rst_n, clk_slow); input sys_clk; input rst_n; output reg clk_slow; // 定义0.5s寄存器 reg [24:0] cnt_1s; always@(posedge sys_clk or negedge rst_n) if