EDA课程设计 百进制计数器_第1页
EDA课程设计 百进制计数器_第2页
EDA课程设计 百进制计数器_第3页
EDA课程设计 百进制计数器_第4页
EDA课程设计 百进制计数器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

郑州航空工业管理学院 EDA 技术及应用 课程设计报告 2012 届 通信工程 专业 1213071 班级 题目 题目 百进制计数器百进制计数器 姓 名 学号 同 组人 201 4 年 6 月 25 日 任 务 书 百进制计数器百进制计数器 设计要求 技术范围为 0 199 可以在数码管上显示出计数值 且数值为十进制 数 计数方向 双向 即可递增递减计数 在 EDA 实验箱上完成 1 晶振为 48 MHz 2 FPGA 器件为 ALTERA 的 EP1C6Q240C8 3 采用数码管显示 一 一 设计方案规划 设计方案规划 1 整体规划 确定输入与输出 时钟输入 clk 递增递减控制 dir 输入按键 key 数码管选择 输出引脚 dig 数码管段输出引脚 seg 具体如下 input clk 输入时钟 input dir 递增递减控制键 input 1 0 key 输入按键 output 2 0 dig 数码管选择输出引脚 output 7 0 seg 数码管段输出引脚 2 功能划分与模块划分 a 秒信号产生部分 分频模块 计算机本身频率较大 显示时间短 为显示人眼可见 将高频率改为低频率 即增减周期 b 按键消抖处理部分 按键消抖模块 作为机械开关键盘 在按键操作时 机械触点的 弹性以及电压突跳等原因 在触点闭合或开启的瞬间出现电压抖动 所以处理后消除误触发 c 计数处理部分 递增递减计数模块 计数要求在 0 199 之间可增可减 d 数码管动态扫描显示部分 选择扫描显示数据和选择数码管显示位 e 显示译码部分 显示相对应的数据 3 各功能或各模块的功能细分 a 分频模块 定义 clk 上升沿触发器 q 定义计数器寄存器 计数部分 b 按键消抖模块 key 输入按键 key done 按键消抖输出 c 递增递减计数模块 清零部分控制键 dir 递增部分 递减部分 sum 计数缓存器 d 数码管动态扫描显示部分 显示不同各位的数据 选择对应的不同数码管 dig 数码管选择 e 显示译码部分 共阳数码管 低电平有效 seg 数码管译码结果 二 各模块的实现方法 技术 要点各模块的实现方法 技术 要点 分频模块 always posedge clk 定义 clk 上升沿触发器 分频 秒信号产生部分 begin q q 1 b1 if q 26 d24000000 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 是清零键吗 sum12 h198 sum 12 h000 else sum 3 0 sum 3 0 4 h1 个位加 1 if sum 3 0 4 h9 begin sum 3 0 0 sum 7 4 sum 7 4 4 h1 十位加 1 if sum 7 4 4 h9 begin sum 7 4 0 sum 11 8 sum 11 8 4 h1 百位加 1 end if sum 12 h199 sum 11 0 12 h000 end end end 递减计数 else if keyen begin if sum 12 h000 sum 12 h199 else sum 3 0 sum 3 0 4 h1 个位减 1 if sum 3 0 4 h0 begin sum 3 0 4 h9 sum 7 4 sum 7 4 4 h1 十位减 1 if sum 7 4 4 h0 begin sum 7 4 4 h9 sum 11 8 sum 11 8 4 h1 百位减 1 end if sum 12 h000 sum 11 0 12 h199 end end 数码管动态扫描显示部分 always posedge clk count 17 15 大约 1ms 改变一次 begin case q 16 15 选择扫描显示数据 2 d0 disp temp sum 3 0 显示个位 2 d1 disp temp sum 7 4 显示十位 2 d2 disp temp sum 11 8 显示百位 2 d3 disp temp 4 hf 为 15 全灭 endcase case q 16 15 选择数码管显示位 2 d0 dig r 3 b110 选择第一个数码管显示 2 d1 dig r 3 b101 选择第二个数码管显示 2 d2 dig r 3 b011 选择第三个数码管显示 default dig r 3 b111 选择第四个数码管显示 endcase end 七段码显示模块 always posedge clk 显示译码 共阳数码管 低电平有效 即为 0 时亮 begin case disp temp 4 h0 seg r 8 hc0 显示 0 4 h1 seg r 8 hf9 显示 1 4 h2 seg r 8 ha4 显示 2 4 h3 seg r 8 hb0 显示 3 4 h4 seg r 8 h99 显示 4 4 h5 seg r 8 h92 显示 5 4 h6 seg r 8 h82 显示 6 4 h7 seg r 8 hf8 显示 7 4 h8 seg r 8 h80 显示 8 4 h9 seg r 8 h90 显示 9 default seg r 8 hff 不显示 endcase end 三 三 模块的编写模块的编写 module count199 clk key dir dig seg input clk 输入时钟 input dir 递增递减控制 input 1 0 key 输入按键 output 2 0 dig 数码管选择输出引脚 output 7 0 seg 数码管段输出引脚 reg 7 0 seg r 定义数码管输出寄存器 reg 2 0 dig r 定义数码管选择输出寄存器 reg 25 0 q 定义计数器寄存器 分频计数器 最大 2 6 2 20 64 10 6 分 频 reg 3 0 disp temp 定义显示数据寄存器 reg 11 0 sum 计数缓存器 reg sec keyen 定义标志位 reg 2 0 dout1 dout2 dout3 寄存器 wire 2 0 key done 按键消抖输出 assign dig dig r 输出数码管选择 assign seg seg r 输出数码管译码结果 always posedge clk 定义 clk 上升沿触发器 分频 秒信号产生部分 begin q q 1 b1 if q 26 d24000000 begin q 0 计数器清零 sec sec 致位秒标志 end end 按键消抖处理部分 assign key done dout1 dout2 dout3 按键消抖输出 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 是清零键吗 sum12 h198 sum 12 h000 else sum 3 0 sum 3 0 4 h1 个位加 1 if sum 3 0 4 h9 begin sum 3 0 0 sum 7 4 sum 7 4 4 h1 十位加 1 if sum 7 4 4 h9 begin sum 7 4 0 sum 11 8 sum 11 8 4 h1 百位加 1 end if sum 12 h199 sum 11 0 12 h000 end end end else if keyen begin if sum 12 h000 sum 12 h199 else sum 3 0 sum 3 0 4 h1 个位减 1 if sum 3 0 4 h0 begin sum 3 0 4 h9 sum 7 4 sum 7 4 4 h1 十位减 1 if sum 7 4 4 h0 begin sum 7 4 4 h9 sum 11 8 sum 11 8 4 h1 百位减 1 end if sum 12 h000 sum 11 0 12 h199 end end end end 数码管动态扫描显示部分 always posedge clk count 17 15 大约 1ms 改变一次 begin case q 16 15 选择扫描显示数据 2 d0 disp temp sum 3 0 显示个位 2 d1 disp temp sum 7 4 显示十位 2 d2 disp temp sum 11 8 显示百位 2 d3 disp temp 4 hf 为 15 全灭 endcase case q 16 15 选择数码管显示位 2 d0 dig r 3 b110 选择第一个数码管显示 2 d1 dig r 3 b101 选择第二个数码管显示 2 d2 dig r 3 b011 选择第三个数码管显示 default dig r 3 b111 选择第四个数码管显示 endcase end always posedge clk 显示译码 共阳数码管 低电平有效 即为 0 时亮 begin case disp temp 4 h0 seg r 8 hc0 显示 0 4 h1 seg r 8 hf9 显示 1 4 h2 seg r 8 ha4 显示 2 4 h3 seg r 8 hb0 显示 3 4 h4 seg r 8 h99 显示 4 4 h5 seg r 8 h92 显示 5 4 h6 seg r 8 h82 显示 6 4 h7 seg r 8 hf8 显示 7 4 h8 seg r 8 h80 显示 8 4 h9 seg r 8 h90 显示 9 default seg r 8 hff 不显示 endcase end endmo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论