Verilog 交通灯控制器

简介:
设计一个交通灯控制器,在数码管上以红、黄、绿三种颜色显示当前状态的剩余时间。持续时间分别为:红灯30s,黄灯5s,绿灯30s。初始为红灯,依次变为绿灯、黄灯、红灯循环显示。输入时钟为1k Hz。
系统设计:
分析需求,可将交通控制器系统划分为generate_1s、controller、counter、splitter和decoder5_7共五个模块实现。
交通灯控制器顶层框图如下:
在这里插入图片描述
controller状态转移图如下:
在这里插入图片描述
Verilog完整代码实现如下:

/*-------------------------------------------------
Filename: traffic_light_controller.v
Function: 交通灯控制器顶层模块(用于综合成实际电路)
Author: Zhang Kaizhou
Date: 2019-11-17 14:28:50
-------------------------------------------------*/
`include "generate_1s.v"
`include "counter.v"
`include "controller.v"
`include "splitter.v"
`include "decoder5_7.v"
module traffic_light_controller(sys_clk, reset, data_high, data_low, state);
	//输入输出端口定义
	input sys_clk, reset;
	output [1 : 0] state;
	output [6 : 0] data_high, data_low;
	
	//内部寄存器及连线定义
	wire count_clk;
	wire [6 : 0] data;
	wire [3 : 0] data_shi, data_ge;
	
	//逻辑实现
	generate_1s		generate_1s_m0(.sys_clk(sys_clk), .reset(reset), .y(count_clk));
	counter			counter_m0(.count_clk(count_clk), .reset(reset), .data(data));
	controller		controller_m0(.clk(count_clk), .reset(reset), .din(data), .state(state));
	splitter		splitter_m0(.data(data), .data_shi(data_shi), .data_ge(data_ge));
	decoder5_7		decoder5_7_m0(.reset(reset), .data_shi(data_shi), .data_ge(data_ge), .data_high(data_high), .data_low(data_low));
endmodule
/*--------------------------------------
  • 21
    点赞
  • 301
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值