文档介绍:EDA技术与应用实验报告
姓名:汤思远
班级:电子1201班
学号:0909120523
指导老师:张俊老师
时间:2015-01-17
实验一、交通灯
一、实验目的
通过此实验让用户进一步了解、熟悉和掌握 CPLD/FPGA 开发软件的的使用方法及
Verilog HDL 的编程方法。学习简单状态机的设计和硬件测试。
二、实验内容
本实验的内容是设计一个简易的交通灯控制器,要求能实现红、绿、黄灯三种信号的控制并通过数码管显示倒计时时间。整个设计在SmartSOPC 实验箱上实现,用第一、第二个数码管显示A方向的倒计时时间,用第七、第八个数码管显示B方向的倒计时时间。此外,由于缺少交通灯模块,本实验用第一、第二、第三个LED灯代表A方向的红、绿、黄灯三种信号,用第六、第七、第八个LED灯代表B方向的红、绿、黄等三种信号。
三、实验原理
本实验设计的交通灯控制器要求实现对 A、B 两个方向的红、绿、黄灯三种信号的控制,并能实现时间显示的倒计时。因此每个方向的信号可用一个状态机实现(),状态的跳转顺序为红灯-绿灯-黄灯-红灯(另一个的状态应为绿-黄-红-绿),同时设计一个计时器,来记录每种灯的倒计时时间。最后将交通灯的状态信息输出至数码管和对应LED灯。注意,一个方向的红灯时间应和另一个方向的绿黄灯时间总和相等。
四、实验步骤
1) 启动Quartus II 建立一个空白工程,(器件为:EP3C55F484C8)。
2) 、,,进行综合编译,若在编译过程中发现错
误,则找出并更正错误,直至编译成功为止。
3) 参考基础实验《LED驱动》及《动态数码管显示》,建立并执行新的引脚绑定脚本文件:。(rst_n为PIN_B11);
4) 对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
5) 确保JP6上的LED0-LED7已通过跳线与FPGA引脚相连。
6) 按核芯板上的复位按键,观察交通灯是否正常运作。
5. 结构图
程序清单:
//*********************************************************
//** 交通灯实验
//** 控制模块:
//*********************************************************
module traffic_ctrl(clock,rst_n,lampa,lampb,acount,bcount);
input clock; //系统时钟48MHz
input rst_n; //同步复位信号,低电平有效
output [2:0] lampa; //控制A 方向三盏灯的亮灭;其中lampa[2:0]分
//别控制A 方向的绿灯、黄灯、红灯(低电平灯亮)
output [2:0] lampb; //控制B 方向三盏灯的亮灭;其中lampb[2:0]分
//别控制B 方向的绿灯、黄灯、红灯(低电平灯亮)
output [7:0] acount; //用于A 方向灯的时间显示,8 位BCD 码输出
output [7:0] bcount; //用于B 方向灯的时间显示,8 位BCD 码输出
wire clken;
reg [25:0] t;
//设置各种灯的计数器的预置数
parameter ared =8'd30, //30秒 ared = bgreen + byellow
ayellow =8'd5, //5秒
agreen =8'd15, //15秒
bred =8'd20, //20秒 bred = agreen + ayellow
byellow =8'd5, //5秒
bgreen =8'd25; //25秒
//产生1Hz时钟使能信号
always @(posedge clock)
begin
if(clken)
t <= 26'h0;
else
t <= t + 26'h1;
end
assign clken = (t >= 26'd47999999);
// A方向信号灯控制//
reg[2:0] lampa;
reg[7:0] acount;
reg acount_startred, acount_startgreen, acoun