FPGA课程设计(一百进制、数字钟-交通灯).doc
文本预览下载声明
F
P
G
A
课
程
设
计
报
告
专 业:12级电子信息工程
班 级: 一 班
姓 名: 李 威
学 号: 120101011109
指导老师: 祝 宏
制作日期:2014年11月20号
1、任务书:
第九周(10月27号至11月2号):一百进制可逆计数器的模块原理设计,代码编写,波形仿真,代码调试,模块封装以及管脚分配任务。
第十周(11月3号至11月9号):完成第二道设计课题(交通灯)和第三道设计课题(多功能数字钟)模块原理设计,代码编写,波形仿真,代码调试,模块封装以及管脚分配任务。
第十一周(11月10号至11月16号):在实验室使用ED2-115开发板进行功能模块实际演示。
第十二周(11月17号至11月23号):完成对FPGA课程设计报告的书写。
2、报告内容:
设计课题一、一百进制可逆计数器
1)实验要求:设计一个可控的100进制可逆计数器,要求用DE2-115开发板下载。
计数器的时钟输入信号周期为1S。
以十进制形式显示。
有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。
clr
plus
minus
功能
0
×
×
复位为0
1
1
0
递增计数
1
0
1
递减计数
1
1
1
暂停计数
图1-1
2)信号定义:
分频模块:ncR: 暂停?;?CLOCK_50:500Hz分频?;??
s:1000Hz分频;
译码模块:indec_0~7: 译码输入;?outdec_0~7: 译码输出;?
计数模块:clk?: 脉冲?;?clear 复位端;?plus:加计数使能端;??????????
minus:减计?数使能端?;?cin:计数使能端?;
3)主要模块verilog代码及注示:??
module count100(clk,clear,plus,minus,qout,cin);
input clk,clear,plus,minus,cin; //输入由开关控制拨上为1,拨下为0
output [7:0] qout;
reg[7:0] qout;
always@ (posedge clk)
begin if (clear) qout=0; //如果复位端为1则执行复位功能
else if ((plus)(!minus)) // 若plus为1且minus为0 时加计数
begin
if (cin) //使能端为1时才进行计数
begin
if (qout[3:0]==9) //模为100的计数
begin
qout[3:0]=0;
if (qout[7:4]==9) qout[7:4]=0;
else qout[7:4]=qout[7:4]+1;
end
else qout[3:0]=qout[3:0]+1;
end
end
else if((!plus)(minus)) //若plus为0且minus为1进行减计数
begin if(cin)
if (qout[3:0]==0)
begin
qout[3:0]=9;
if (qout[7:4]==0) qout[7:4]=9;
else qout[7:4]=qout[7:4]-1;
end
else qout[3:0]=qout[3:0]-1;
end
Else //若plus和minus均为1则暂停
qout=qout;
end
endmodule
模块封装图:
5)对应各模块功能仿真波形(数据分析)分析及结论
图1-2
如图1-2所示当复位端clear为1时输出qout为0,当复位端clear为0时计数器开始正常计数
us
图1-3
如图
显示全部