




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
郑州航空工业管理学院EDA技术及应用》课程设计报告2012 届 通信工程 专业1213071 班级题目: 百进制计数器姓 名 学号同组人2014 年6月 25日任务书百进制计数器设计要求(1) 技术范围为 0~199(2) 可以在数码管上显示出计数值, 且数值为十进制数(3) 计数方向:双向(即可递增递减计数)在EDA实验箱上完成。1.晶振为 48MHz2.FPGA器件为ALTERA 的EP1C6Q240C83.采用数码管显示一、设计方案规划:整体规划(确定输入与输出)时钟输入
clk,
递增递减控制
dir,
输入按键
key,
数码管选择输出引脚
dig,
数码管段输出引脚
seg,具体如下:inputclk;// 输入时钟inputdir;// 递增递减控制键input[1:0]key;// 输入按键output[2:0]dig;// 数码管选择输出引脚output[7:0]seg;// 数码管段输出引脚功能划分与模块划分a.秒信号产生部分分频模块:计算机本身频率较大,显示时间短,为显示人眼可见,将高频率改为低频率,即增减周期。按键消抖处理部分按键消抖模块:作为机械开关键盘,在按键操作时,机械触点的弹性以及电压突跳等原因,在触点闭合或开启的瞬间出现电压抖动,所以处理后消除误触发。计数处理部分递增递减计数模块:计数要求在 0-199之间可增可减。数码管动态扫描显示部分选择扫描显示数据和选择数码管显示位显示译码部分显示相对应的数据各功能或各模块的功能细分,分频模块定义clk上升沿触发器定义计数器寄存器,计数部分b.按键消抖模块key 输入按键key_done 按键消抖输出递增递减计数模块清零部分控制键 dir,递增部分,递减部分,sum计数缓存器数码管动态扫描显示部分显示不同各位的数据,选择对应的不同数码管,dig数码管选择显示译码部分共阳数码管,低电平有效, seg数码管译码结果二、各模块的实现方法,技术、要点分频模块:always@(posedgeclk)// 定义clk上升沿触发器。分频 //秒信号产生部分beginq=q+1'b1;if(q==26'd24000000)beginq=0;//sec=~sec;//
计数器清零致位秒标志endend按键消抖: always@(posedgeq[16])begindout1<={dir,key};dout2<=dout1;dout3<=dout2;endalways@(negedgekey_done[0])beginkeyen=~keyen;endregr_dir;always@(negedgekey_done[2])beginr_dir=~r_dir;end计数块递增计数:always@(posedgesecornegedgekey_done[1])//200 进制计数beginif(!key_done[1])// 是清零键吗?sum<=12'h000;elsebeginif(r_dir)beginif(!keyen)beginif(sum>12'h198)sum<=12'h000;elsesum[3:0]<=sum[3:0]+4'h1; // 个位加1if(sum[3:0]==4'h9)beginsum[3:0]<=0;sum[7:4]<=sum[7:4]+4'h1; // 十位加1if(sum[7:4]==4'h9)beginsum[7:4]<=0;sum[11:8]<=sum[11:8]+4'h1;// 百位加1endif(sum==12'h199)sum[11:0]<=12'h000;endendend递减计数:
elseif(!keyen)beginif(sum==12'h000)sum<=12'h199;elsesum[3:0]<=sum[3:0]-4'h1;//
个位减
1if(sum[3:0]==4'h0)beginsum[3:0]<=4'h9;sum[7:4]<=sum[7:4]-4'h1;//
十位减
1if(sum[7:4]==4'h0)beginsum[7:4]<=4'h9;sum[11:8]<=sum[11:8]-4'h1;//
百位减
1endif(sum==12'h000)sum[11:0]<=12'h199;endend数码管动态扫描显示部分 :always@(posedgeclk) //count[17:15]begincase(q[16:15])2'd0:disp_temp=sum[3:0];2'd1:disp_temp=sum[7:4];2'd2:disp_temp=sum[11:8];
大约1ms改变一次//选择扫描显示数据//显示个位//显示十位// 显示百位2'd3:disp_temp=4'hf;
//为15,全灭endcasecase(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;
//选择数码管显示位//选择第一个数码管显示//选择第二个数码管显示//选择第三个数码管显示//选择第四个数码管显示endcaseend七段码显示模块:
always@(posedgeclk)//
显示译码
,共阳数码管
(低电平有效,即为0时亮)begincase(disp_temp)4'h0:seg_r=8'hc0;4'h1:seg_r=8'hf9;
//显示//显示
014'h2:seg_r=8'ha4;//显示24'h3:seg_r=8'hb0;//显示34'h4:seg_r=8'h99;//显示44'h5:seg_r=8'h92;//显示54'h6:seg_r=8'h82;//显示64'h7:seg_r=8'hf8;//显示74'h8:seg_r=8'h80;//显示84'h9:seg_r=8'h90;//显示9default:seg_r=8'hff;//不显示endcaseend三、模块的编写modulecount199(clk,key,dir,dig,seg);inputclk;// 输入时钟inputdir;// 递增递减控制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;//regsec,keyen;//
定义显示数据寄存器计数缓存器定义标志位reg[2:0]dout1,dout2,dout3;//
寄存器wire[2:0]key_done;//
按键消抖输出assigndig=dig_r;//assignseg=seg_r;//always@(posedgeclk)//
输出数码管选择输出数码管译码结果定义clk上升沿触发器。分频
//秒信号产生部分beginq=q+1'b1;if(q==26'd24000000)beginq=0;//sec=~sec;//
计数器清零致位秒标志endend//按键消抖处理部分assignkey_done=(dout1|dout2|dout3);always@(posedgeq[16])begindout1<={dir,key};dout2<=dout1;dout3<=dout2;end
//按键消抖输出always@(negedgekey_done[0])beginkeyen=~keyen;endregr_dir;always@(negedgekey_done[2])beginr_dir=~r_dir;endalways@(posedgesecornegedgekey_done[1])//200begin
进制计数if(!key_done[1])//
是清零键吗
?sum<=12'h000;elsebeginif(r_dir)beginif(!keyen)beginif(sum>12'h198)sum<=12'h000;elsesum[3:0]<=sum[3:0]+4'h1;if(sum[3:0]==4'h9)beginsum[3:0]<=0;sum[7:4]<=sum[7:4]+4'h1; //
//
个位加1十位加
1if(sum[7:4]==4'h9)beginsum[7:4]<=0;sum[11:8]<=sum[11:8]+4'h1;//百位加1endif(sum==12'h199)sum[11:0]<=12'h000;endendendelseif(!keyen)beginif(sum==12'h000)sum<=12'h199;elsesum[3:0]<=sum[3:0]-4'h1;//
个位减
1if(sum[3:0]==4'h0)beginsum[3:0]<=4'h9;sum[7:4]<=sum[7:4]-4'h1;//
十位减
1if(sum[7:4]==4'h0)beginsum[7:4]<=4'h9;sum[11:8]<=sum[11:8]-4'h1;//
百位减
1endif(sum==12'h000)sum[11:0]<=12'h199;endendendend//数码管动态扫描显示部分always@(posedgeclk)//count[17:15]
大约
1ms改变一次begincase(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,全灭endcasecase(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;endcaseend
选择第一个数码管显示选择第二个数码管显示选择第三个数码管显示选择第四个数码管显示always@(posedgeclk)// 显示译码,共阳数码管(低电平有效,即为 0时亮)begincase(disp_temp)4'h0:seg_r=8'hc0; //显示04'h1:seg_r=8'hf9; //显示14'h2:seg_r=8'ha4; //显示24'h3:seg_r=8'hb0; //显示34'h4:seg_r=8'h99; //显示44'h5:seg_r=8'h92; //显示54'h6:seg_r=8'h82; //显示64'h7:seg_r=8'hf8; //显示74'h8:seg_r=8'h80; //显示84'h9:seg_r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024市场营销师影响力评估框架试题及答案
- 本地化营销策略探讨试题及答案
- 酒店就业形势分析试题及答案
- 酒店经营管理师专业素养考察试题及答案
- 营销项目的风险评估与管理试题及答案
- 微生物检验员职业分析试题及答案
- 酒店客户服务试题及答案
- 网络工程师智能路由方案题目及答案
- 商务礼仪师接待技巧试题及答案
- 酒店管理师风险评估试题及答案
- GB/T 39560.2-2024电子电气产品中某些物质的测定第2部分:拆解、拆分和机械制样
- 语文-山东省济南市2024-2025学年高中三年级九月摸底考试(暨开学考)试题和答案
- 国家计量院计量器具检定收费标准
- 2024年领导干部任前廉政知识测试试卷题库及答案
- 内部设施零星维修服务 投标方案(技术方案)
- 糖尿病足溃疡创面治疗专家共识
- 机电金结设备安装自检报告
- 陕西省2024年高中学业水平合格考数学试卷试题(含答案)
- 血液透析室内瘘针滑脱pdca汇报
- 水利安全生产风险防控“六项机制”右江模式经验分享
- 文言文阅读训练:《辽史-马得臣传》(附答案解析与译文)
评论
0/150
提交评论