EDA课程设计 百进制计数器.doc
文本预览下载声明
郑州航空工业管理学院
《EDA技术及应用》
课程设计报告
2012 届 通信工程 专业 1213071 班级
题目: 百进制计数器
姓 名 学号
同 组人
201 4 年 6 月 25 日
任 务 书
百进制计数器
设计要求
技术范围为0 ~ 199
可以在数码管上显示出计数值,且数值为十进制数
计数方向:双向(即可递增递减计数)
在EDA实验箱上完成。
1.晶振为48 MHz
2.FPGA 器件为ALTERA 的EP1C6Q240C8
3.采用数码管显示
设计方案规划:
整体规划(确定输入与输出)
时钟输入clk, 递增递减控制dir, 输入按键key,数码管选择输出引脚dig,数码管段输出引脚seg ,
具体如下:
input clk;//输入时钟
input dir;//递增递减控制键
input[1:0]key;//输入按键
output [2:0] dig;//数码管选择输出引脚
output [7:0] seg;//数码管段输出引脚
功能划分与模块划分
a.秒信号产生部分
分频模块:计算机本身频率较大,显示时间短,为显示人眼可见,将高频率改为低频率,即增减周期。
b.按键消抖处理部分
按键消抖模块:作为机械开关键盘,在按键操作时,机械触点的弹性以及电压突跳等原因,在触点闭合或开启的瞬间出现电压抖动,所以处理后消除误触发。
c.计数处理部分
递增递减计数模块:计数要求在0-199之间可增可减。
d.数码管动态扫描显示部分
选择扫描显示数据和选择数码管显示位
e.显示译码部分
显示相对应的数据
各功能或各模块的功能细分,
分频模块
定义clk上升沿触发器
q定义计数器寄存器,计数部分
按键消抖模块
key输入按键
key_done按键消抖输出
递增递减计数模块
清零部分控制键dir,递增部分,递减部分,sum计数缓存器
d.数码管动态扫描显示部分
显示不同各位的数据,选择对应的不同数码管,dig数码管选择
e.显示译码部分
共阳数码管,低电平有效,seg数码管译码结果
各模块的实现方法,技术、要点
分频模块: always@(posedge clk )//定义clk上升沿触发器。分频//秒信号产生部分
begin
q=q+1b1;
if(q==26
begin
q=0; //计数器清零
sec=~sec;//致位秒标志
end
end
按键消抖:always @(posedge q[16])
begin
dout1 = {dir,key};
dout2 = dout1;
dout3 = dout2;
end
always @(negedge key_done[0])
begin
keyen = ~keyen;
end
reg r_dir;
always @(negedge key_done[2])
begin
r_dir = ~r_dir;
end
计数块
递增计数: always@(posedge sec or negedge key_done[1])// 200进制计数
begin
if(!key_done[1])//是清零键吗?
sum=12h000;
else
begin if(r_dir)
begin
if(!keyen)
begin if(sum12h198)sum=12h000;
else
sum[3:0]=sum[3:0]+4h1; //个位加1
if( sum[3:0]==4h9)
begin
sum[3:0]=0;
sum[7:4]=sum[7:4]+4h1; //十位加1
if(sum[7:4]==4h9)
begin
显示全部