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

下载本文档

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

文档简介

1、郑州航空工业管理学院eda技术及应用课程设计报告 2012 届 通信工程 专业 1213071 班级 题目: 百进制计数器姓 名 学号 同 组人 201 4 年 6 月 25 日任 务 书百进制计数器设计要求() 技术范围为0 199() 可以在数码管上显示出计数值,且数值为十进制数() 计数方向:双向(即可递增递减计数)在eda实验箱上完成。1晶振为48 mhz2fpga 器件为altera 的ep1c6q240c83采用数码管显示一、 设计方案规划:1. 整体规划(确定输入与输出)时钟输入clk, 递增递减控制dir, 输入按键key,数码管选择输出引脚dig,数码管段输出引脚seg ,具

2、体如下: input clk;/输入时钟 input dir;/递增递减控制键 input1:0key;/输入按键 output 2:0 dig;/数码管选择输出引脚 output 7:0 seg;/数码管段输出引脚2. 功能划分与模块划分 a.秒信号产生部分 分频模块:计算机本身频率较大,显示时间短,为显示人眼可见,将高频率改为低频率,即增减周期。 b.按键消抖处理部分 按键消抖模块:作为机械开关键盘,在按键操作时,机械触点的弹性以及电压突跳等原因,在触点闭合或开启的瞬间出现电压抖动,所以处理后消除误触发。 c.计数处理部分 递增递减计数模块:计数要求在0-199之间可增可减。 d.数码管动

3、态扫描显示部分选择扫描显示数据和选择数码管显示位 e.显示译码部分 显示相对应的数据3. 各功能或各模块的功能细分,a. 分频模块 定义clk上升沿触发器 q定义计数器寄存器,计数部分b. 按键消抖模块 key输入按键 key_done按键消抖输出c. 递增递减计数模块 清零部分控制键dir,递增部分,递减部分,sum计数缓存器d.数码管动态扫描显示部分 显示不同各位的数据,选择对应的不同数码管,dig数码管选择e.显示译码部分 共阳数码管,低电平有效,seg数码管译码结果二、 各模块的实现方法,技术、要点 分频模块: always(posedge clk )/定义clk上升沿触发器。分频/秒

4、信号产生部分 begin q=q+1b1; if(q=26d24000000) begin q=0; /计数器清零 sec=sec;/致位秒标志 end end按键消抖:always (posedge q16) begindout1 = dir,key;dout2 = dout1;dout3 = dout2; endalways (negedge key_done0) begin keyen = keyen; endreg r_dir;always (negedge key_done2) begin r_dir = r_dir; end计数块 递增计数: always(posedge sec

5、or negedge key_done1)/ 200进制计数 begin if(!key_done1)/是清零键吗? sum12h198)sum=12h000; else sum3:0=sum3:0+4h1; /个位加1 if( sum3:0=4h9) begin sum3:0=0; sum7:4=sum7:4+4h1; /十位加1 if(sum7:4=4h9) begin sum7:4=0; sum11:8=sum11:8+4h1;/百位加1 end if(sum=12h199) sum11:0=12h000; end end end 递减计数:else if(!keyen) begin i

6、f(sum=12h000)sum=12h199; else sum3:0=sum3:0-4h1;/个位减1 if( sum3:0=4h0) begin sum3:0=4h9; sum7:4=sum7:4-4h1;/十位减1 if(sum7:4=4h0) begin sum7:4=4h9; sum11:8=sum11:8-4h1;/百位减1 end if(sum=12h000) sum11:0=12h199; end end 数码管动态扫描显示部分:always(posedge clk) /count17:15大约1ms改变一次 begincase(q16:15)/选择扫描显示数据2d0:dis

7、p_temp = sum3:0;/显示个位2d1:disp_temp = sum7:4;/显示十位2d2:disp_temp = sum11:8; /显示百位2d3:disp_temp = 4hf;/为15,全灭 endcasecase(q16:15)/选择数码管显示位2d0:dig_r = 3b110;/选择第一个数码管显示2d1:dig_r = 3b101;/选择第二个数码管显示2d2:dig_r = 3b011;/选择第三个数码管显示default:dig_r = 3b111;/选择第四个数码管显示endcase end七段码显示模块:always (posedge clk) /显示译码

8、,共阳数码管(低电平有效,即为0时亮) begin case(disp_temp) 4h0:seg_r = 8hc0;/显示04h1:seg_r = 8hf9;/显示14h2:seg_r = 8ha4;/显示24h3:seg_r = 8hb0;/显示34h4:seg_r = 8h99;/显示44h5:seg_r = 8h92;/显示54h6:seg_r = 8h82;/显示64h7:seg_r = 8hf8;/显示74h8:seg_r = 8h80;/显示84h9:seg_r = 8h90;/显示9default:seg_r = 8hff;/不显示 endcase end三、 模块的编写 mo

9、dule count199(clk,key,dir,dig,seg); input clk;/输入时钟 input dir;/递增递减控制 input1:0key;/输入按键 output 2:0 dig;/数码管选择输出引脚 output 7:0 seg;/数码管段输出引脚 reg 7:0 seg_r; /定义数码管输出寄存器 reg 2:0 dig_r; /定义数码管选择输出寄存器 reg25:0q;/定义计数器寄存器 分频计数器,最大26*22064*106分频 reg 3:0 disp_temp;/定义显示数据寄存器 reg11:0sum; /计数缓存器 reg sec,keyen;/

10、定义标志位 reg2:0dout1,dout2,dout3;/寄存器 wire2:0key_done; /按键消抖输出 assign dig=dig_r;/输出数码管选择 assign seg=seg_r;/输出数码管译码结果 always(posedge clk )/定义clk上升沿触发器。分频/秒信号产生部分 begin q=q+1b1; if(q=26d24000000) begin q=0; /计数器清零 sec=sec;/致位秒标志 end end/按键消抖处理部分 assign key_done = (dout1 | dout2 | dout3);/按键消抖输出 always (p

11、osedge q16) begindout1 = dir,key;dout2 = dout1;dout3 = dout2; end always (negedge key_done0) begin keyen = keyen; endreg r_dir;always (negedge key_done2) begin r_dir = r_dir; end always(posedge sec or negedge key_done1)/ 200进制计数 begin if(!key_done1)/是清零键吗? sum12h198)sum=12h000; else sum3:0=sum3:0+4h

12、1; /个位加1 if( sum3:0=4h9) begin sum3:0=0; sum7:4=sum7:4+4h1; /十位加1 if(sum7:4=4h9) begin sum7:4=0; sum11:8=sum11:8+4h1;/百位加1 end if(sum=12h199) sum11:0=12h000; end end end else if(!keyen) begin if(sum=12h000)sum=12h199; else sum3:0=sum3:0-4h1;/个位减1 if( sum3:0=4h0) begin sum3:0=4h9; sum7:4=sum7:4-4h1;/

13、十位减1 if(sum7:4=4h0) begin sum7:4=4h9; sum11:8=sum11:8-4h1;/百位减1 end if(sum=12h000) sum11:0=12h199; end end endend/数码管动态扫描显示部分always(posedge clk)/count17:15大约1ms改变一次 begincase(q16:15)/选择扫描显示数据2d0:disp_temp = sum3:0;/显示个位2d1:disp_temp = sum7:4;/显示十位2d2:disp_temp = sum11:8; /显示百位2d3:disp_temp = 4hf;/为1

14、5,全灭 endcasecase(q16:15)/选择数码管显示位2d0:dig_r = 3b110;/选择第一个数码管显示2d1:dig_r = 3b101;/选择第二个数码管显示2d2:dig_r = 3b011;/选择第三个数码管显示default:dig_r = 3b111;/选择第四个数码管显示endcase endalways (posedge clk) /显示译码,共阳数码管(低电平有效,即为0时亮) begin case(disp_temp) 4h0:seg_r = 8hc0;/显示04h1:seg_r = 8hf9;/显示14h2:seg_r = 8ha4;/显示24h3:seg_r = 8hb0;/显示34h4:seg_r = 8h99;/显示44h5:seg_r = 8h92;/显示54h6:seg_r = 8h82;/显示64h7:seg_r = 8hf8;/显示74h8:seg_r = 8h80;/显示84h9:seg_r = 8h90;/显示9default:s

温馨提示

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

评论

0/150

提交评论