文档详情

EDA课程设计 百进制计数器.doc

发布:2017-10-02约7.48千字共13页下载文档
文本预览下载声明
郑州航空工业管理学院 《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
显示全部
相似文档