欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数字电路课程设计基于1602液晶屏的数字万年历Verilog版.docx

    • 资源ID:3542542       资源大小:1.05MB        全文页数:86页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字电路课程设计基于1602液晶屏的数字万年历Verilog版.docx

    1、数字电路课程设计基于1602液晶屏的数字万年历Verilog版大连理工大学大连理工大学本科实验报告题目:基于1602液晶屏的数字万年历(Verilog版)课程名称: 数字电路课程设计 学院(系): 电子科学与技术学院 专 业: 集成电路设计与集成系统班 级: 电集1001 学生姓名: 陈朝吉 学 号: 201081086 完成日期: 2012年12月22日 成 绩: 题目:基于1602液晶屏的数字万年历(Verilog版)一设计要求1基本功能 设计一个数字钟,能够显示当前时间,分别用6个数码管显示小时、分钟、秒钟的时间,秒针的计数频率为1Hz,可由系统脉冲分频得到。 在整点进行提示,可通过LE

    2、D闪烁实现,闪烁频率及花型可自己设计。 能够调整小时和分钟的时间,调整的形式为通过按键进行累加。 具有闹钟功能,闹钟时间可以任意设定(设定的形式同样为通过按键累加),并且在设定的时间能够进行提示,提示同样可以由LED闪烁实现。2扩展功能 设计模式选择计数器,通过计数器来控制各个功能之间转换。 调整当前时间以及闹钟时间,在按键累加的功能不变的基础上,增加一个功能,即当按住累加键超过3秒,时间能够以4Hz的频率累加。 用LCD液晶屏来显示当前时间及功能模式。二设计分析及系统方案设计1要求分析: 基于FPGA实际并发处理的特点,对于实现数字万历年系统,相比于任何嵌入式处理器而言,其特点和优势将得以更

    3、加全面体现。 数字万年历中所有模块都将基于基准时钟源进行处理,结合FPGA本身的特点,在时钟源下可进行精确计数,可轻易而产生十分精确的万年历时间。 基础部分:万年历可包括以下时间处理模块:基于秒时钟计数器进行判断处理。秒,分,时。星期,上/下午。日,月,年。闹钟 功能部分:时间设定:使用四个按键进行控制,分别是:设置复位按键,设置移位键,功能“加”键,功能“减”键。整点报时部分:使用7个绿色LED作为提示灯。闹钟提示部分:使用16个红色LED作为闹钟报时提示。 显示部分:使用LCD1602液晶显示屏作为万年历的主显示屏,闹钟显示部分使用6个7段数码管。2方案设计基于FPGA的特点以及本万年历系

    4、统自身功能特点的实现方式。系统采用模块化方案进行设计。各个模块及其相关实现功能描述,同时具体的代码中模块设计将以此基础进行代码的编写,详细代码设计将在后面给出。 时钟发生模块:基于系统外部输入基准时钟源进行秒计数,产生秒时钟,在此基础上可进行相关判断已经在计数处理产生其他需要的时间信号。 时钟处理模块:在时钟发生模块基础上,利用FPGA多模块并发处理特点,产生分钟,小时等基础信号,在此基础上再进行计数以及一些判断处理可容易产生星期,上/下午,日,月,年等信号。但需要注意的是以上所有万年历时钟信号的每位数(十进制)在底层均为4位二进制数表示,且由于FPGA中乘除法运算不可综合,在处理平闰年判断时

    5、,采用拼接语句,然后内嵌多个CASE语句进行处理实现该功能。以上所有万年历信号在其他模块处理时仍然需要进行相关转换或者译码。 功能设定模块:这里主要是针对功能按键和一些状态开关。功能按键部分主要包括上述分析中的四个,即设置复位,设置移位,功能“加”,功能“减”。在代码编写时需要进行按键的消抖处理,同时,由于闹钟设定和时间设定时均用到,故需要进行设置复用,这里采用的方法是,以复位键为区分,长摁下后可进行万年历的时间设定,长摁下后在短按一下返回正常状态,而闹钟设定需要在闹钟开关有效状态下,上述的功能键方有效。功能开关主要控制整个系统的复位,闹钟开关,液晶显示屏的读写开关,背光,读写等,这里全部采用

    6、二状态的拨码开关实现。 显示模块:采用液晶屏1602作为数字万年历的主显示屏,由于屏幕显示字符数量有限,再考虑本课程设计的综合全面性,这里闹钟显示部分采用6位数码管作为显示。本模块主要功能是实现1602的驱动显示程序,数码管的译码驱动程序。 闹钟模块:对闹钟寄存器的值与万年历实现时钟的值进行判断处理,并驱动红色LED灯闪烁实现闹钟的报时提示。红色LED的效果设定为整体闪烁。 整点报时模块:对万年历实时时钟的分钟和秒钟进行判断处理,实现在每个小时的整点报时功能,报时10秒钟,即从59分50秒开始进行报时。以绿色LED灯作为提示,实现效果是流水闪动。三系统以及模块硬件电路设计1系统总体结构框图基于

    7、上述方案分析,以FPGA芯片Cyclone II EP2C35F672C6为核心构建的数字万年历系统的硬件总体结构框图如下:FPGA最小系统Cyclone II EP2C35F672C6万年历显示屏模块LCD1602液晶显示屏整点报时模块绿色LED闪烁灯闹钟提示模块红色LED闪烁灯闹钟显示模块7段数码管万年历设置模块功能按键系统设置模块功能拨码开关2各个硬件模块接口电路图以上各个模块实际硬件接口电路如下:FPGA最小系统电源及控制电路I/O接口BANK1和BANK2I/O接口BANK3和BANK4I/O接口BANK5和BANK6I/O接口BANK7和BANK8万年历显示屏模块(LCD1602液

    8、晶显示屏)闹钟显示模块(7端数码管)注:本系统只用了开发板上的6位数码管作为闹钟显示,即数码管73整点报时模块(绿色LED闪烁灯)闹钟提示模块(红色LED闪烁灯)万年历设置模块(功能按键)系统设置模块(功能拨码开关)注:本系统只用到了开发板上的以上几个拨码开关作为系统控制3系统芯片管脚配置情况数字万年历系统I/O配置表:接口名称类型(输入/输出)结构图上的信号名引脚号说明时钟输入clkD13系统输出时钟源系统复位输入rst_nP25系统复位开关时间设定输入key_rG26设定复位按键设定移位输入key_yiN23设定移位按键设定/加输入key_jiaP23功能“加”按键设定/减输入key_ji

    9、anW26功能“减”按键闹钟设定输入alr_clk_setN26闹钟设定开关闹钟开关输入alr_clk_swN25闹钟开关控制开关1602开关输入sw3AF14液晶屏显示开关控制开关1602背光输入sw2AE14液晶屏背光开关控制开关1602读写控制输入sw1AD13液晶显示屏读写控制开关1602开关输出lcd_onL4液晶屏开关控制输出1602背光输出lcd_blonK2液晶屏背光控制输出1602读写控制输出rwK4液晶显示屏读写控制输出1602使能端输出enK3液晶显示屏使能输出1602数据/命令输出rsK1液晶显示屏命令/数据选择输出1602数据(8位)输出data70液晶屏并行数据输出

    10、数码管7(7位)输出seg760数码管7并行数据输出数码管6(7位)输出seg660数码管6并行数据输出数码管5(7位)输出seg560数码管5并行数据输出数码管4(7位)输出seg460数码管4并行数据输出绿色LED灯输出led_g70整点报时绿色LED灯输出红色LED灯输出alr_led_g150闹钟报时红色LED灯输出四系统的Verilog设计1根据上述分析设计,系统的代码编写可分为如下三个模块文件实现:key_scan模块文件模块功能及其实现算法描述: 功能:四个设置按键的消抖及其处理,产生在长按下复位键下的有效状态送万年历时间设定,以及在闹钟有效状态下的按键输出。 算法描述:每个消抖

    11、处理才用延迟打两拍的处理方法实现消抖20毫秒,其中对于设定复位按键设定长按下达3S为有效输出,短按一下置无效,在设置复位有效状态下其他三个按键对于万年历时钟部分方有效。在闹钟设置开关有效状态下,其他三个按键对于闹钟设定有效。clock模块文件模块功能及其实现算法描述: 功能:万年历时间产生模块,包括时间中的秒,分,时,星期,上/下日,月,年的产生和处理,闹钟寄存器的设置,整点报时的处理及输出显示,闹钟报时的处理及显示。 算法描述:对于秒,分,时,中的每一位十进制数,代码中定义一个4位二进制数来表示(如秒时间定义2个4位二进制数表示秒的十位和个位),采用逐级计数的方法产生相应的时间信号,在设置按

    12、键有效或者前一级时间信号产生进位时,当前时间相应加1或者减一,以此类推产生更高级的时间信号(如分对于秒来说有高级信号,秒满60对分信号为进一信号),在日,月模块的判断处理才有内嵌多个case语句的方法实现,而平润年的判断则采用对年份的十位和个位拼接利用case语句判断在非整百年下是否为闰年,而对于整百年情况下再拼接年的百位和千位,再内嵌一个case语句用同样的方法进行判断是否为闰年。display模块文件 功能:液晶显示屏的驱动,万年历时间译码成1602的ASCII码字符,闹钟寄存器的译码及6个7段数码管的驱动。 算法描述:根据液晶显示屏1602的驱动时序图(如下图,由于本系统只用到了1602

    13、的写时序,故读时序不给出),可编写1602的状态机驱动,有时序图可知,初始化是,RS=0,EN=0状态下,下一个状态送出命令数据,再下一个状态将EN=1,即产生高脉冲信号,完成一次命令的初始化,相应显示输出一个字符驱动方法也也一直,只需将上述的RS=1即可,驱动状态机如下图。相应的ASCII码译码详见源代码。对于闹钟的译码也详见源代码。数码管的驱动直接才有并行数据输出即可。Lcd1602液晶显示屏写时序图状态1状态2状态3RS=0Data=命令字EN=0EN=1写一次命令字状态n状态n+1状态n+2RS=1Data=数据EN=0EN=1写一次数据状态n+完成初始化完成1602写整屏LCD160

    14、2驱动状态机顶层模块为:clk_16022系统Verilog代码软件分析综合结果 系统Verilog模块综合的RTL视图如下: 系统综合报告如下:3系统代码的重要变量及模块名称由于系统代码量较大,其中涉及的寄存器变量较多,always块语句较多,在源代码的各个文件模块里面均有详细的注释说明,这里不一一列举,详见源代码。五结论以及结果说明1系统开发环境: PC机一台:Windos XP 综合开发软件:QuartusII9.1 仿真软件:modelsim6.52系统运行环境: Altera DE2-115 FPGA开发实验板3系统调试仿真结果对数字万年历本身的特点,波形仿真无法进行,同时限于实验学

    15、时以及自身水平的限制,对于Testbench编写能力不足,已经缺乏对仿真软件modelsim6.5的应用,故本系统没有进行相关仿真,而是着重进行了调试,调试方法采用基于开发板的实验现象,采用单模块调试,多模块组合调试等多种方法相结合的调试方法进行,确保了每个小模块功能的正常及整个系统的稳定运行。4系统运行结果系统实现功能和结果如下: 系统正常运行时,按万年历实时时钟的功能正常运行,其中,液晶显示屏1602越每600毫秒更新一次。 若系统复位开关复位,系统所有数据复位,按下载时的初始化时间重新运行,即实现可手动复位。 在每个59分50秒开始,整点报时绿色LED以流水效果进行闪烁,闪烁时间10秒,

    16、即整点时停止。 在闹钟开关开情况下,数码管显示当前闹钟时间,并且到时钟走到相应闹钟设定时间时,红色LED以闪动效果进行闹钟报时提示,持续一分钟后停止。在闹钟开关关闭状态下,数码管灭,相应闹铃功能关闭。 在闹钟设置开关有效状态下,按下功能“加”键,闹钟的分钟的个位加1,按下功能“减”则该位减1,若按下设置移位键后,再按功能“加”或“减”,则分钟的十位加1或者减1。由此循环,实现任意修改闹钟。 只有在长按下设置复位键达3秒时,液晶显示屏上秒的个位有光标闪烁,表示可修改该位,功能“加”和“减”键可实现加1或减1。若此时按下设置移位键,则光标移到秒的十位闪烁。如此循环,实现可任意修改液晶显示屏万年历上

    17、的任一时间量。其中上/下午为系统自动判断,无须修改。若想退出修改状态,此时,短按一下设置复位键即可退出,系统正常状态下,短按设置复位键无效。 系统还设置了液晶显示屏的背光开关,显示开关控制开关,可实现液晶显示屏的显示与否,以及背光的有无。5系统设计指标情况分析本系统基本实现课程设计的基本功能和扩展功能要求,但本次课程设计过程中仍存在以下一个Bug和一个需要完善的功能点。限于学时有限,始终未能找到错误源头。 Bug:数字万年历系统中月份的十位在未能正常进位走时。其他位数在平润年情况下均正常。 需要完善的功能点:闹钟系统中未设定是否重响,闹铃后认为可关闭功能。 Bug分析:基于设计系统中采用的平润

    18、年的处理方法顺利实现了万年历中日的走时,由此可证明同样的算法也可处理月份,使之正常走时。但经过多次的检查代码及其调试未能找出错误源头,现分析可能的错误如下:由于在一个always语句模块里面内嵌过多的case语句以及判断语句,致使综合成实际电路后,本模块电路起始到最终有效信号延迟时间过长,导致在一个clk周期内(本系统晶振位27MHZ,一个clk为36ns)无法正常实现本always语句功能。这从芯片内部门电路单元或寄存器延迟角度讲也是有可能的本人自身代码编写风格特点不好,导致代码编写中出现难以察觉的错误,与传统编程语言不同,硬件描述语言不是主打简洁,而是追求一个良好的代码风格,良好的代码风格

    19、对于系统稳定运行有不可忽视的作用。还有可能是代码中各个寄存器变量的复合判断使得代码编写过程中出现了不易察觉的错误。6课程设计收获及体会本次课程设计,在自身现有的FPGA的知识基础上,帮助我很好的加强了FPGA的训练和实践。其次一点非常重要的是更加熟悉了FPGA的开发流程和相关过程中的重要环节。再者是学习了例外一种硬件描述语言VHDL,虽然本系统是采用自身比较擅长的Verilog语言进行代码的编写,但从某种程度上来说,通过两种语言之间的对比和联系的学习方法,收获很大的一点就是理解了FPGA内部门电路系统搭建运行与语言代码编写的联系和工作原理,相比之下,FPGA的多并发处理系统对比较其他所有包括嵌

    20、入式等微处理器设计开发系统有其非常鲜明的特点,以往一些如嵌入式微处理器处理过程都是顺序执行代码内容,而FPGA真正实现了并发多线程的处理,相比之下,对于以往传统未处理器相对复杂的问题对于用FPGA处理可能将会大大简化,如本数字万年历系统就是很明显的一个例子,但对于某些比较简单的单线处理问题对于FPGA来说在代码编写就显得比较麻烦,例如本系统中的液晶显示屏驱动程序的编写,FPGA对时序的要求较传统处理器更加严格,但实现速度更快,这些是本次课程设计过程中体验比较深刻的一点。第二点收获是VHDL和Verilog语言之间的比较和联系学习,更加深了对硬件描述语言特点的理解,对于在代码编写过程中的个人代码

    21、风格有了很好的提高,对于今后开发FPGA打下必要的基础。再者,本次课程设计很大程度下加强了前段时间自学的Verilog语言与编写应用,理解了硬件描述在FPGA内部的分析综合情况。最后,本次课程设计非常大的收获就是,本次设计中出现的找不到错误源头的Bug深深提醒了我今后养成一个良好的风格和习惯,一个良好的编写代码风格,对于系统的正确和稳定实现意义重大,一个良好的仿真习惯,对于错误的查找和算法的深入分析具有指导意义,能帮助我很快很好的找到那些难以察觉的错误,或是算法漏洞。附录:数字万年历Verilog源代码顶层文件:clk_1602.vmodule clk_1602( clk, rst_n, ke

    22、y_r, key_yi, key_jia, key_jian, alr_clk_set, alr_clk_sw, sw1,sw2,sw3, rs, rw, en, lcd_on, lcd_blon, data, seg7,seg6,seg5,seg4, alr_led_r, led_g);input clk;input rst_n;input key_r;input key_yi;input key_jia;input key_jian;input alr_clk_set;input alr_clk_sw;input sw1;input sw2;input sw3;output 7:0 dat

    23、a;output rs;output en;output rw;output lcd_on;output lcd_blon;output 6:0 seg7;output 6:0 seg6;output 6:0 seg5;output 6:0 seg4;output 15:0 alr_led_r;output 7:0 led_g;wire r_en;wire yi_en;wire jia_en;wire jian_en;wire alr_yi;wire alr_jia;wire alr_jian;wire 3:0 clk_nian_qian;wire 3:0 clk_nian_bai;wire

    24、3:0 clk_nian_shi;wire 3:0 clk_nian_ge;wire 3:0 clk_yue_shi;wire 3:0 clk_yue_ge;wire 3:0 clk_ri_shi;wire 3:0 clk_ri_ge;wire 2:0 clk_xing;wire 3:0 clk_shi_shi;wire 3:0 clk_shi_ge;wire 3:0 clk_fen_shi;wire 3:0 clk_fen_ge;wire 3:0 clk_miao_shi;wire 3:0 clk_miao_ge;wire 3:0 alr_clk_shi_shi;wire 3:0 alr_c

    25、lk_shi_ge;wire 3:0 alr_clk_fen_shi;wire 3:0 alr_clk_fen_ge; key_scan i1( /按键处理模块 .clk(clk), .rst_n(rst_n), .key_r(key_r), .key_yi(key_yi), .key_jia(key_jia), .key_jian(key_jian), .r_en(r_en), .yi_en(yi_en), .jia_en(jia_en), .jian_en(jian_en), .alr_yi(alr_yi), .alr_jia(alr_jia), .alr_jian(alr_jian);

    26、clock i2( /万年历时间处理模块 .clk(clk), .rst_n(rst_n), .r_en(r_en), .yi_en(yi_en), .jia_en(jia_en), .jian_en(jian_en), .alr_yi(alr_yi), .alr_jia(alr_jia), .alr_jian(alr_jian), .alr_clk_set(alr_clk_set), .alr_clk_sw(alr_clk_sw), .clk_nian_qian(clk_nian_qian), .clk_nian_bai(clk_nian_bai), .clk_nian_shi(clk_ni

    27、an_shi), .clk_nian_ge(clk_nian_ge), .clk_yue_shi(clk_yue_shi), .clk_yue_ge(clk_yue_ge), .clk_ri_shi(clk_ri_shi), .clk_ri_ge(clk_ri_ge), .clk_xing(clk_xing), .clk_shi_shi(clk_shi_shi), .clk_shi_ge(clk_shi_ge), .clk_fen_shi(clk_fen_shi), .clk_fen_ge(clk_fen_ge), .clk_miao_shi(clk_miao_shi), .clk_miao_

    28、ge(clk_miao_ge), .alr_clk_shi_shi(alr_clk_shi_shi), .alr_clk_shi_ge(alr_clk_shi_ge), .alr_clk_fen_shi(alr_clk_fen_shi), .alr_clk_fen_ge(alr_clk_fen_ge), .alr_led_r(alr_led_r), .led_g(led_g);display i3( /显示模块 1602 .clk(clk), .rst_n(rst_n), .r_en(r_en), .yi_en(yi_en), .alr_clk_sw(alr_clk_sw), .sw1(sw1

    29、), .sw2(sw2), .sw3(sw3), .alr_clk_shi_shi(alr_clk_shi_shi), .alr_clk_shi_ge(alr_clk_shi_ge), .alr_clk_fen_shi(alr_clk_fen_shi), .alr_clk_fen_ge(alr_clk_fen_ge), .clk_nian_qian(clk_nian_qian), .clk_nian_bai(clk_nian_bai), .clk_nian_shi(clk_nian_shi), .clk_nian_ge(clk_nian_ge), .clk_yue_shi(clk_yue_shi), .clk_yue_ge(clk_yue_ge),


    注意事项

    本文(数字电路课程设计基于1602液晶屏的数字万年历Verilog版.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开