差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
altera_10tra [2017/05/31 14:10] group002 |
altera_10tra [2021/10/03 01:34] (当前版本) gongyu |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | =====简易交通灯===== | + | ## 简易交通灯 |
| 本节将向您介绍Verilog语法之中的精髓内容——状态机,并且将利用状态机实现十字路口的交通灯。 | 本节将向您介绍Verilog语法之中的精髓内容——状态机,并且将利用状态机实现十字路口的交通灯。 | ||
| \\ | \\ | ||
| - | ====硬件说明与实现项目框图==== | + | ### 1. 硬件说明与实现项目框图 |
| - | ------- | + | |
| {{ ::jiaotongdeng.png?300 |}} | {{ ::jiaotongdeng.png?300 |}} | ||
| 上图为十字路口交通示意图分之路与主路,要求如下: | 上图为十字路口交通示意图分之路与主路,要求如下: | ||
| - | * 交通灯主路上绿灯持续15s的时间,黄灯3s的时间,红灯10s的时间; | + | * 交通灯主路上绿灯持续15s的时间,黄灯3s的时间,红灯10s的时间; |
| - | * 交通灯支路上绿灯持续7s的时间, 黄灯持续3秒的时间,红灯18秒的时间; | + | * 交通灯支路上绿灯持续7s的时间, 黄灯持续3秒的时间,红灯18秒的时间; |
| {{ ::状态机框架.png?300 |}} | {{ ::状态机框架.png?300 |}} | ||
| 根据上述要求,状态机设计框架分析如下: | 根据上述要求,状态机设计框架分析如下: | ||
| - | * S1:主路绿灯点亮,支路红灯点亮,持续15s的时间; | + | * S1:主路绿灯点亮,支路红灯点亮,持续15s的时间; |
| - | * S2:主路黄灯点亮,支路红灯点亮,持续3s的时间; | + | * S2:主路黄灯点亮,支路红灯点亮,持续3s的时间; |
| - | * S3:主路红灯点亮,支路绿灯点亮,持续10s的时间; | + | * S3:主路红灯点亮,支路绿灯点亮,持续10s的时间; |
| - | * S4:主路红灯点亮,支路黄灯点亮,持续3s的时间; | + | * S4:主路红灯点亮,支路黄灯点亮,持续3s的时间; |
| - | {{ ::状态示意图.png?300 |}} | + | // |
| - | ====Verilog代码==== | + | {{ ::状态示意图.png?500 |}} |
| - | ------ | + | // |
| + | } | ||
| + | |||
| + | ### 2. Verilog代码 | ||
| 首先是时钟分频部分: | 首先是时钟分频部分: | ||
| <code verilog> | <code verilog> | ||
| 行 171: | 行 174: | ||
| parameter time_s1 = 4'd15, | parameter time_s1 = 4'd15, | ||
| time_s2 = 4'd3, | time_s2 = 4'd3, | ||
| - | time_s3 = 4'd10, | + | time_s3 = 4'd7, |
| time_s4 = 4'd3; | time_s4 = 4'd3; | ||
| 行 273: | 行 276: | ||
| \\ | \\ | ||
| \\ | \\ | ||
| - | ====引脚分配==== | + | |
| - | ------- | + | ### 3. 引脚分配 |
| 小脚丫上正好有4路按键和4路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号 | 小脚丫上正好有4路按键和4路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号 | ||
| \\ | \\ | ||
| ^ 信号 ^ 引脚 ^ 信号 ^ 引脚 ^ | ^ 信号 ^ 引脚 ^ 信号 ^ 引脚 ^ | ||
| - | | **clk** | C1 | **rst** | L14 ^ | + | | **clk** | J5 | **rst** | J9 ^ |
| - | | **out[0]** | P2 | **out[1]** | N2 ^ | + | | **out[0]** | E14 | **out[1]** | E15 ^ |
| - | | **out[2]** | M2 | **out[3]** | P4 ^ | + | | **out[2]** | G15 | **out[3]** | D12 ^ |
| - | | **out[4]** | N3 | **out[5]** | M3 ^ | + | | **out[4]** | C14 | **out[5]** | C15 ^ |
| - | \\ | + | |
| \\ | \\ | ||
| 配置好以后编译下载程序。您也可以试试修改程序,观察修改代码对于FPGA内部电路所造成的影响。\\ | 配置好以后编译下载程序。您也可以试试修改程序,观察修改代码对于FPGA内部电路所造成的影响。\\ | ||
| - | ====小结==== | + | ### 4. 小结 |
| - | ------ | + | |
| 状态机是一类很重要的时序逻辑电路,是许多数字系统的核心部件,掌握状态机的使用是利用FPGA与CPLD进行开发的一项必会技能,本小节的交通灯程序即是利用三段式状态机描述方法实现的,希望读者能够快速掌握这项技能。 | 状态机是一类很重要的时序逻辑电路,是许多数字系统的核心部件,掌握状态机的使用是利用FPGA与CPLD进行开发的一项必会技能,本小节的交通灯程序即是利用三段式状态机描述方法实现的,希望读者能够快速掌握这项技能。 | ||