【连载】 FPGA Verilog HDL 系列实例--------交通灯的控制

本文是FPGA Verilog HDL系列连载实例,详细介绍了如何设计一个交通灯控制系统,包括红、黄、绿灯的20s、5s、25s周期切换,并使用数码管进行倒计时显示。设计分为顶层模块traffic和分频模块clkgen,实现了信号的分频和红绿灯状态控制。实验结果显示了交通灯的正常工作流程。
摘要由CSDN通过智能技术生成

【连载】 FPGA Verilog HDL 系列实例

Verilog HDL 之 交通灯的控制

原理与要求: 

   在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序的通行。其中。红灯亮表示该道路禁止通行;黄灯亮表示停车;绿灯亮表示可以通行;倒计时显示器是用来显示允许通行或禁止通行的时间。交通灯控制器就是用于自动控制十字路口的交通灯和计时器,指挥各种车辆和行人安全通过。
下面我们就设计一个这样的:
1)、在十字路口设置一组红、黄、绿等,显示顺序为:红,绿,黄,红……
2)、设置一组数码管,以倒计时的方式显示允许通过或禁止通过的时间,其中绿灯、黄灯、红灯的持续时间为20s,5s,25s。

Verilog HDL实现

  实现步骤请参照 【连载】 FPGA Verilog HDL 系列实例--------8-3编码器。这里就不再赘述。

设计文件输入Verilog HDL代码。

  系统分为两个模块,一个是顶层traffic,一个是分频模块clkgen。

  分频模块clkgen的实现如下:

ContractedBlock.gif ExpandedBlockStart.gif clkgen.v
 1 //-------------------------------------------------------------------------------------------------
2 //
3 // File : clkgen.v
4 // Generated : 2011-07-24
5 // Author : wangliang
6 //
7 //-------------------------------------------------------------------------------------------------
8 `timescale 1 ns / 1 ps
9
10 module clkgen ( rst ,clkout ,clk );
11
12 input rst ;
13 wire rst ;
14 input clk ;
15 wire clk ;
16
17 output clkout ;
18 reg clkout ;
19
20 reg [31:0] count1;
21
22 always @ ( posedge clk or negedge rst)
23
24 begin
25 if ( rst== 1'b0 ) begin
26 clkout <= 1'b0;
27 count1 <= 17'b0;
28 end
29 else begin
30 if ( count1 >= 32'd25000000) begin
31 clkout <= ~clkout ;
32 count1 <=#1 17'b0;
33 end
34 else begin
35 count1 <= count1 + 1;
36
37 end
38 end
39 end
40 endmodule

   顶层traffic的实现如下:

ContractedBlock.gif ExpandedBlockStart.gif traffic.v
  1 //-------------------------------------------------------------------------------------------------
2 //
3 // File : traffic.v
4 // Generated : 2011-07-24
5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值