ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:132.44KB ,
资源ID:4945028      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4945028.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于verilog数字秒表的设计实现--生产实习报告.docx)为本站上传会员【人****来】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于verilog数字秒表的设计实现--生产实习报告.docx

1、 生产实习报告 班 级: 通信13-2班 姓 名: 闫振宇 学 号: 1306030222 成 绩: 电子与信息工程学院 信息与通信工程系 基于verilog数字秒表的设计实现 1. 概述 12 硬件描述语言HDL ( HardwareDescription Langyage) 是一种用形式化方法来描述数字电路和系统的语言

2、数字电路系统的设计这里用这种语言可以从上层倒下层逐层描述自设计思想用一系列分层的模块来表示极其复杂的数字系统,然后用EDA 工具逐层验证,把其中需要为具体物理电路的模块组合由自动综合工具转换到门级电路网表。Verilog HDL 是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。使用VERILOG 进行系统设计时采用的是从顶至下的设计,自顶向下的设计是从系统机开始巴西同划分为若干个基本单元,然后再把每个单元划分为下一层的基本单元,这样

3、下去直到可以直接用EDA 元件库中的基本元件来实现为止。 2. 设计目的及要求 a. 有源晶振频率:50MHZ; b. 测试计时范围:00’00”00 ~ 59’59”99,显示的最长时间为59分59 秒; c. 数字秒表的计时精度是10ms; d. 显示工作方式:六位BCD七段数码管显示读数,两个按钮开关(一个按钮使秒表复位,另一个按钮控制秒表的启动/暂停)。 3. 设计原理 秒表的逻辑结构较简单,它主要由四进制计数器、十六进制计数器、分频器、数据选择器、和显示译码器等组成。在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清

4、零信号,以便秒表能随意停止、启动以及清零复位。 秒表有共有6个输出显示,其中6个显示输出数据,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应;6个计数器的输出全都为BCD码输出,这样便与同显示译码器连接。 利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功能。所有数字逻辑功能都在CPLD器件上用Verilog语言实现。这样设计具有体积小,设计周期短,调试方便,故障率地和修改升级容易等特点。 本设计采用依次采用以下设计方法: 1) 按键输入缓存,键盘消抖设计; 2) 分频产生0.01秒信号,产生100HZ的时钟信号设计; 3) 数码管动态扫描显

5、示设计; 4) 3-8译码器显示(译码)设计; 5) 流水线式计数方法设计。 4. 设计原理框图 秒表计时器设计原理框图,如图4-1所示。 图4-1 秒表计时器设计原理框图 根据设计原理框图4-1,以及设计的要求及目的,可以将Verilog HDL语言设计的秒表计时程序分为四大模块: 1) 按键输入缓存,按键消抖模块; 2) 分频产生100HZ的时钟信号模块; 3) 数码管动态扫描显示驱动模块; 4) 计时处理部模块。 5. 软件设计 5.1 按键输入缓存,按键消抖模块 常在按键较少时可用硬件方法消除抖动,一般采用RS触发器作为常用的消抖电路,如果按键较多时,常用

6、软件消除抖动。在EDA的设计应用中,软件消抖的方法即可使用 RS 触发器进行消抖,也可通过检测按键按下的时间进行消抖。 5.1.1 按键输入缓存,按键消抖程序: always@(posedge count[16]) begin key_inner<=key; end always@(posedge key_inner[0]) begin key_flag=~key_flag; end 5.1.2 键盘消抖工作原理: 设置输入信号key[1:0],设置一个模值为 4 的控制计数器key_inner,判断计数寄存器count的第16位的上升沿,检测到key_inner为高

7、电平。由于计数寄存器的位数为18位。则说明在0.01s内可以检测到4次高电平。 在人工按键key=‘1’时,key_inner为‘1’,如连续 4 次检测到高电平则key_inner一直为‘1’。4 次以上检测到高电平key_inner依旧为‘1’,也一直输出高电平。这就确保了当按键信号持续高电平0.01s 以上按键信号才有效。抖动期间的高电平持续时间不足以输出高电平。如没有连续 4 次以上检测到高电平,则 key_inner为‘0’。 再判断 key_inner的上升沿(按键按下为下降沿,弹起为上升沿),每当key_inner[0]出现一次上升沿(按键按下并弹起),key_flag将取反

8、一次(设置key_flag的初值为‘0’)。 5.2 分频产生100HZ的时钟信号模块 5.2.1 分频产生100HZ的时钟信号程序: always@(posedge clk) begin if(count==249999) begin clk_100hz<=~clk_100hz; count<=0; end else count<=count+1; end 分频原理图,如图5-1所示。 图5-1 分频原理图 5.2.2 分频原理: 由于开发板的输入频率为50MHZ的时钟信号,说明1s产生个时钟信号。每个时钟信号持续的时间为s,由

9、于秒表计时器的最小单位为0.01s,所以要将50MHZ的时钟信号进行分频,得到100HZ的时钟信号,即0.01s。 5.3 数码管动态扫描显示驱动模块 5.3.1 数码管动态扫描显示驱动程序: always@(posedge count[15]) begin count3b=count3b+1; case(count3b) 3'd5:dis_dat=hour[3:0]; 3'd4:dis_dat=hour[7:4]; 3'd3:dis_dat=hour[11:8]; 3'd2:dis_dat=hour[15:12];

10、 3'd1:dis_dat=hour[19:16]; 3'd0:dis_dat=hour[23:20]; default:dis_dat=4'bxxxx; endcase sel=count3b; end always@(dis_dat) begin case(dis_dat) 0 : seg = 8'b1100_0000;//显示“0” 1 : seg = 8'b1111_1001;//显示“1” 2 : seg = 8'b1010_0100;//显示“2” 3 : seg = 8

11、'b1011_0000;//显示“3” 4 : seg = 8'b1001_1001;//显示“4” 5 : seg = 8'b1001_0010;//显示“5” 6 : seg = 8'b1000_0010;//显示“6” 7 : seg = 8'b1111_1000;//显示“7” 8 : seg = 8'b1000_0000;//显示“8” 9 : seg = 8'b1001_0000;//显示“9” default:seg = 8'bxxxxx

12、xxx; endcase end 5.3.2 数码管动态扫描显示原理: 数码管动态扫描显示表,如表5-1所示。 表5-1 数码管动态扫描显示表 六位数码管 xxxx xxxx xxxx xxxx xxxx xxxx hour 23:20 19:16 15:12 11:8 7:4 3:0 count3b 5 4 3 2 1 0 dis_dat 0-9 0-9 0-9 0-9 0-9 0-9 由于数码管显示一共有6位,计数寄存器共有18位,则判断计数寄存器的第15位的上升沿即可。则在每0.01s内判断数码管显示判断8次。

13、每判断一次,确定一次一只七位数码管的显示数字。由于在0.01s内六只数码管会发生数值上的变化,共有6只数码管,所以只需要判断8次就能确定秒表计时器0.01s秒内的变化。 将hour显示的值赋给显示数据寄存器dis_dat,再判断dis_dat的值,来确定每只数码管显示的数值。 5.4 计时处理部模块 5.4.1 计时处理程序: always@(posedge clk_100hz) begin if(~key_inner[1]&&key_flag==1) begin hour=24'h0; end else if(!key_flag)

14、 begin hour[3:0]=hour[3:0]+1; if(hour[3:0]==4'ha) begin hour[3:0]=4'h0; hour[7:4]=hour[7:4]+1; if(hour[7:4]==4'ha) begin hour[7:4]=4'h0; hour[11:8]=hour[11:8]+1; if(hour[11:8]==4'ha) begin hour[11:8]=4'h0; hour[15:12]=hour[15:12]+1; if

15、hour[15:12]==4'h6) begin hour[15:12]=4'h0; hour[19:16]=hour[19:16]+1; if(hour[19:16]==4'ha) begin hour[19:16]=4'h0; hour[23:20]=hour[23:20]+1; end if(hour[23:20]==4'h6) hour[23:20]=4'h0; end end end end end

16、 end 5.4.2 计时处理原理: 计时器处理流程框图,如图5-2所示。 图5-2 计时器处理流程框图 判断复位键用key_flag为启动/暂停的切换标志,判断key_flag是否为‘1’,为‘1’说明计数暂停,为‘0’说明计数开始;key_inner[1]是输入信号端,按键未按下时,key_inner[1]为‘1’,按下后为‘0’,~key_inner[1]判断为‘1’,则说明,在程序暂停的情况下,控制按键可使秒表计时器清零。 百秒位,十秒位,秒位是十进制计数,十秒位,分位,十分位是6进制计数。 6. 实验设计原理图 实验设计原理图,如图6-1所示。 图6-1 实验

17、设计原理图 实验设计有三个输入位,key[1:0]为手动输入端,key[0]为启动/暂停控制键,key[1]是复位控制键。clk是时钟输入端。输出分为sel[2:0]为数码管的位选,实验中共有6只数码管,则可以选择8位的位选。seg[7:0]是数码管的段选,将每一位的数字进行显示。 7. 心得体会 在将近两周的学习时间内,大致了解了利用Verilog HDL硬件描述语言来编写简单的程序代码。并对所编写的程序结合开发板得以实现,对所编写的程序进行仿真得到了理论值,结合开发板得到了实际结果。在学习的过程中,要了解一种新语言,要了解这种语言的语法结构,书写格式,特殊语句实现的操作等。在老师的指

18、导下,在比较紧的时间内学习了FPGA利用Verilog语言编写程序的流程以及QuartusⅡ软件的使用方法及操作。学到了很多的知识,也看到了软件的强大的功能。在整个的学习过程中,有过疑问,在编写中出现了很多的错误,但经过想老师请教,与同学讨论,都得以解决。本实验使用Verilog语言编写秒表计时器的程序,实验中将程序分为四个模块,按键输入缓存,按键消抖模块,分频产生100HZ的时钟信号模块,数码管动态扫描显示驱动模块,计时处理部模块。按照模块的划分对程序进行编写,经四个模块连通起来实现秒表计时的功能。希望有机会做到更多有趣的实验,丰富自己,让自己学到更多的知识。 参考文献 [1]陈耀省.V

19、erilog秒表设计.2012:1517. [2]大彬哥.基于Verilog HDL的数字计时器的设计.2013:11. 附件: module led_on ( input[1:0]key, //输入信号 input clk, //输入频率为50MHZ的时钟 output reg [2:0]sel, //数码管位选 output reg [7:0]seg, //数码管段选 output en //3-8译码器使能 ); reg[2:0]count3b; reg[3:0]dis_dat;

20、//定义显示数据寄存器 reg[18:0]count; //定义计数寄存器 reg[23:0]hour; //定义现在时刻寄存器 reg clk_100hz; //50MHZ的时钟信号500000分频,得到100HZ的时钟信号 reg key_flag; //启动/暂停的切换标志 reg[1:0]key_inner; assign en=0; //(1)按键输入缓存,按键消抖设置 always@(posedge count[16])//在0.01s内,扫描2的2次方,可以检测到4次高电平 begin key_inner<=key; end always@(

21、posedge key_inner[0]) begin key_flag=~key_flag; end //(2)0.01秒信号产生部分,产生100HZ的时钟信号 always@(posedge clk) begin if(count==249999) begin clk_100hz<=~clk_100hz; count<=0; end else count<=count+1; end //(3)数码管动态扫描显示部分 always@(posedge count[15]) //时序逻辑,由于有6个数码管,则在一秒内扫描2的6次方

22、 begin count3b=count3b+1; case(count3b) 3'd5:dis_dat=hour[3:0]; 3'd4:dis_dat=hour[7:4]; 3'd3:dis_dat=hour[11:8]; 3'd2:dis_dat=hour[15:12]; 3'd1:dis_dat=hour[19:16]; 3'd0:dis_dat=hour[23:20]; default:dis_dat=4'bxxxx; endcase sel=count3b; end alw

23、ays@(dis_dat) begin case(dis_dat) 0 : seg = 8'b1100_0000;//显示“0” 1 : seg = 8'b1111_1001;//显示“1” 2 : seg = 8'b1010_0100;//显示“2” 3 : seg = 8'b1011_0000;//显示“3” 4 : seg = 8'b1001_1001;//显示“4” 5 : seg = 8'b1001_0010;//显示“5” 6 : seg

24、 = 8'b1000_0010;//显示“6” 7 : seg = 8'b1111_1000;//显示“7” 8 : seg = 8'b1000_0000;//显示“8” 9 : seg = 8'b1001_0000;//显示“9” default:seg = 8'bxxxxxxxx; endcase end //(4)计时处理部分 always@(posedge clk_100hz) //计时处理 begin if(~key_inner[1]&&key_fla

25、g==1) //判断是否复位键, begin hour=24'h0; end else if(!key_flag) begin hour[3:0]=hour[3:0]+1; if(hour[3:0]==4'ha) begin hour[3:0]=4'h0; hour[7:4]=hour[7:4]+1; if(hour[7:4]==4'ha) begin hour[7:4]=4'h0; hour[11:8]=hour[11:8]+1; if(hour[11:8]==4'

26、ha) begin hour[11:8]=4'h0; hour[15:12]=hour[15:12]+1; if(hour[15:12]==4'h6) begin hour[15:12]=4'h0; hour[19:16]=hour[19:16]+1; if(hour[19:16]==4'ha) begin hour[19:16]=4'h0; hour[23:20]=hour[23:20]+1; end if(hour[23:20]==4'h6) hour[23:20]=4'h0; end end end end end end endmodule 5

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服