差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
10._交通灯 [2019/12/24 09:56]
anran [====硬件说明与实现项目框图====]
10._交通灯 [2021/10/05 23:40] (当前版本)
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?​500 |}} 
 +// 
 + 
 +### 2. Verilog代码
  
-{{:​状态示意图.png?​500 |}} 
-} 
-====Verilog代码==== 
------- 
 首先是时钟分频部分: 首先是时钟分频部分:
 <code verilog> <code verilog>
行 61: 行 63:
  //DEFINE PARAMETER  //DEFINE PARAMETER
  //​*******************  //​*******************
- parameter WIDTH = 3;​ + parameter WIDTH = 3; 
- parameter N = 5;+ parameter N = 5;
   
  //​*******************  //​*******************
行 78: 行 80:
  //​********************  //​********************
  //REGS  //REGS
- reg [WIDTH-1:​0] cnt_p,​cnt_n;​ + reg [WIDTH-1:​0] cnt_p,​cnt_n;​ 
- reg clk_p,​clk_n;​+ reg clk_p,​clk_n;​
  
  assign clkout = (N==1)?​clk:​(N[0])?​(clk_p&​clk_n):​clk_p;​  assign clkout = (N==1)?​clk:​(N[0])?​(clk_p&​clk_n):​clk_p;​
行 161: 行 163:
  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;
  //​交通灯的控制  //​交通灯的控制
行 278: 行 280:
 \\  ​ \\  ​
 \\  ​ \\  ​
-====引脚分配==== + 
--------+### 3. 引脚分配 
 小脚丫上正好有4路按键和4路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号 小脚丫上正好有4路按键和4路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号
 \\ \\
行 292: 行 295:
 配置好以后编译下载程序。您也可以试试修改程序,观察修改代码对于FPGA内部电路所造成的影响。\\ 配置好以后编译下载程序。您也可以试试修改程序,观察修改代码对于FPGA内部电路所造成的影响。\\
  
-====小结==== +### 4. 小结 
-------+
 状态机是一类很重要的时序逻辑电路,是许多数字系统的核心部件,掌握状态机的使用是利用FPGA与CPLD进行开发的一项必会技能,本小节的交通灯程序即是利用三段式状态机描述方法实现的,希望读者能够快速掌握这项技能。 状态机是一类很重要的时序逻辑电路,是许多数字系统的核心部件,掌握状态机的使用是利用FPGA与CPLD进行开发的一项必会技能,本小节的交通灯程序即是利用三段式状态机描述方法实现的,希望读者能够快速掌握这项技能。