白志恒eda实验报告Word文档格式.docx
- 文档编号:15154033
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:12
- 大小:90.68KB
白志恒eda实验报告Word文档格式.docx
《白志恒eda实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《白志恒eda实验报告Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
此外,由于缺少交通灯模块,本实验用第一、第二、第三个LED灯代表A方向的红、绿、黄灯三种信号,用第六、第七、第八个LED灯代表B方向的红、绿、黄等三种信号。
3.实验原理
本实验设计的交通灯控制器要求实现对A、B两个方向的红、绿、黄灯三种信号的控制,并能实现时间显示的倒计时。
因此每个方向的信号可用一个状态机实现,状态的跳转顺序为红灯-绿灯-黄灯-红灯(另一个的状态应为绿-黄-红-绿),同时设计一个计时器,来记录每种灯的倒计时时间。
最后将交通灯的状态信息输出至数码管和对应LED灯。
注意,一个方向的红灯时间应和另一个方向的绿黄灯时间总和相等。
4.实验步骤
1)启动QuartusII建立一个空白工程,然后命名为traffic_test.qpf(器件为:
EP3C55F484C8)。
2)完成交通灯控制模块traffic_ctrl.v、交通灯显示模块traffic_display.v,加入顶层模块traffic_test.v,进行综合编译,若在编译过程中发现错
误,则找出并更正错误,直至编译成功为止。
3)参考基础实验《LED驱动》及《动态数码管显示》的引脚绑定脚本文件setup.tcl,建立并执行新的引脚绑定脚本文件:
setup.tcl。
(rst_n为PIN_B11);
4)对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
5)确保JP6上的LED0-LED7已通过跳线与FPGA引脚相连。
6)按核芯板上的复位按键,观察交通灯是否正常运作。
5.结构图
5.程序清单:
traffic_test.v(已完成),traffic_ctrl.v(未完成),traffic_display.v(未完成)。
1.traffic_test.v
//*********************************************************
//**交通灯实验
//**顶层模块:
traffic_test.v
moduletraffic_test(clock,rst_n,seg,dig,lampa,lampb);
inputclock;
//系统时钟(48MHz)
inputrst_n;
//复位信号,低电平有效
output[2:
0]lampa;
//A方向红、绿、黄灯
0]lampb;
//B方向红、绿、黄灯
output[7:
0]seg;
//数码管段码输出
0]dig;
//数码管位码输出
//内部线网
wireclken;
wire[7:
0]acount;
0]bcount;
//交通灯控制模块
traffic_ctrltraffic_ctrl(
.clock(clock),
.rst_n(rst_n),
.lampa(lampa),//A方向红、绿、黄灯
.lampb(lampb),//B方向红、绿、黄灯
.acount(acount),//A方向倒计时
.bcount(bcount)//B方向倒计时
);
//交通灯显示模块
traffic_displaytraffic_display(
.bcount(bcount),//B方向倒计时
.seg(seg),//数码管段码输出
.dig(dig)//数码管位码输出
endmodule
2.traffic_ctrl.v
//**控制模块:
traffic_ctrl.v
moduletraffic_ctrl(clock,rst_n,lampa,lampb,acount,bcount);
//系统时钟48MHz
inputrst_n;
//同步复位信号,低电平有效
//控制A方向三盏灯的亮灭;
其中lampa[2:
0]分
//别控制A方向的绿灯、黄灯、红灯(低电平灯亮)
//控制B方向三盏灯的亮灭;
其中lampb[2:
//别控制B方向的绿灯、黄灯、红灯(低电平灯亮)
//用于A方向灯的时间显示,8位BCD码输出
//用于B方向灯的时间显示,8位BCD码输出
//设置各种灯的计数器的预置数
parameterared=8'
d30,//30秒ared=bgreen+byellow
ayellow=8'
d5,//5秒
agreen=8'
d15,//15秒
bred=8'
d20,//20秒bred=agreen+ayellow
byellow=8'
bgreen=8'
d25;
//25秒
//产生1Hz时钟使能信号
always@(posedgeclock)
begin
if(clken)
clk_cnt<
=26'
h0;
else
=clk_cnt+26'
h1;
end
assignclken=(clk_cnt>
d47999999);
//
//A方向信号灯控制
reg[2:
reg[7:
regacount_startred,acount_startgreen,acount_startyellow;
//用于倒数计数器的复位
//状态机A
reg[1:
0]currentstate_A,nextstate_A;
//以下状态机A的代码自己完成
always@(posedgeclken)begin
currentstate_A<
=nextstate_A;
end
always@(posedgeclockornegedgerst_n)begin
if(!
rst_n)begin
currentstate_A<
=0;
acount_startgreen<
elseif(clken)begin
case(currentstate_A)
0:
beginif(acount!
=0)
lampa<
=3'
b110;
nextstate_A<
=2'
b00;
else
b01;
acount_startgreen<
=1;
end
1:
b101;
b10;
acount_startyellow<
end
2:
b011;
acount_startred<
default:
begincurrentstate_A<
endcase
end
//倒数计数器A
always@(posedgeclock)
if(clken)begin
if(acount_startred)
acount<
=ared;
acount_startred=0;
elseif(acount_startgreen)
=agreen;
acount_startgreen=0;
elseif(acount_startyellow)
=ayellow;
acount_startyellow=0;
=acount-1'
b1;
//B方向信号灯控制
regbcount_startred,bcount_startgreen,bcount_startyellow;
//状态机B
0]currentstate_B,nextstate_B;
//以下状态机B的代码自己完成
currentstate_B<
=nextstate_B;
currentstate_B<
case(currentstate_B)
beginif(bcount!
lampb<
nextstate_B<
bcount_startgreen<
bcount_startyellow<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 白志恒 eda 实验 报告