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

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA课程设计 百进制计数器

郑州航空工业管理学院 《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

您可能关注的文档

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档