EDA课程设计报告(8位显示管动态扫描显示学号).doc

上传人:仙*** 文档编号:32540343 上传时间:2021-10-15 格式:DOC 页数:19 大小:2.17MB
收藏 版权申诉 举报 下载
EDA课程设计报告(8位显示管动态扫描显示学号).doc_第1页
第1页 / 共19页
EDA课程设计报告(8位显示管动态扫描显示学号).doc_第2页
第2页 / 共19页
EDA课程设计报告(8位显示管动态扫描显示学号).doc_第3页
第3页 / 共19页
资源描述:

《EDA课程设计报告(8位显示管动态扫描显示学号).doc》由会员分享,可在线阅读,更多相关《EDA课程设计报告(8位显示管动态扫描显示学号).doc(19页珍藏版)》请在装配图网上搜索。

1、华中科技大学武昌分校 电气自动化技术1001程设计报告目录1. 课程设计题目及要求1页1.1 题目1页1.2 要求1页2. 硬件资源及相关原理2页2.1 相关设备2页2.2 LED工作原理2页2.3 LED动态扫描显示原理2页2.4 74LS138译码表2页2.5 LED接线图3页2.6 EP3C10T144CN芯片引脚对照表3页3. 系统总体方案设计4页3.1 系统总体框架4页3.2 硬件电路设计5页3.3 VHDL代码设计5页4. 调试运行10页4.1 接线10页4.2 时序仿真(包括仿真图)10页4.3 硬件逻辑验证(包括管脚锁定文件)11页4.4 下载运行及调试结果分析11页4.5 调

2、试中出现的问题及解决方法12页5. 总结12页6. 参考文献13页7. 附录14页附录一14页附录二15页1. 课程设计题目及要求1.1 题目 八位数码管扫描显示电路的设计1.2 要求 本课题要求掌握使用Quartus II设计数字系统的设计思路和设计方法。学习VHDL基本逻辑电路的综合设计应用。掌握VHDL语言的语法规范,掌握时序电路描述方法。掌握多个数码管动态扫描显示的原理及设计方法。设计一个八位数码管共阴极动态扫描显示控制电路,要求显示学生自己的学号。利用实验室设备完成系统设计并进行运行调试。1.2.1.具体设计内容如下:静止显示学号;1.2.2.提供设计报告,报告要求包括以下内容:设计

3、思路、设计输入文件、设计与调试过程、模拟仿真结果和设计结论。2.硬件资源及相关原理2.1 相关设备EDA及SOPC综合实验平台;导线若干;PC机;Quartus II开发工具软件。2.2 LED工作原理 LED数码管根据LED的接法不同分为共阴和共阳两类,图2.2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将b和c段接上正电源,其它端接地或悬空,

4、那么b和c段发光,此时,数码管显示将显示数字“1”。而将a、b、d、e和g段都接上正电源,其它引脚悬空,此时数码管将显示“2”。 图2.22.3 LED动态扫描显示原理LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。

5、多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。2.4 74LS138译码表74ls138引脚输入与输出关系如图2.4,8个引出脚Y0Y7通过反相器与8个LED的阳极相连,用“1”表示高电平“0”表示低电平,给A2A0输入的电平可用一个三位2进制数表示,0到7对应8个LED管,通过控制输入三位2进制数便可达到“扫描”的作用。 图2.42.5 LED接线图 如图2.5图2.52.6 EP3C10T144CN芯片引脚对照表硬件资源元件引脚EP3C引脚序号电路

6、使用说明LED数码显示A133该部分电路为固定电路。使用LED数码显示时请按照器件引脚分配表进行引脚分配后再下载到芯片中。B135C136D137E138F141G142Dp12874LS138S1125S2126S3127表2.63.系统总体方案设计3.1 系统总体框架本次实验的实验箱中数码管为8位共阴极数码管,每一位的共阴极7 段数码管由7 个发光LED 组成,呈“ ”字状,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA相应引脚。74ls138的8个引出脚通过反相器分别与8个7段数码管的位选择端。当其值为“0”时,相应的7 段数码管被选通,其对应的数码管被点亮,因此通过控制选通

7、信号就可以控制数码管循环依次点亮。一个数码管稳定显示要求的切换频率要大于50Hz,那么8 个数码管则需要508400Hz 以上的切换频率才能看到不闪烁并且持续稳定显示的字符,可通过实验箱上ckl3的频率输出选择尽量大的频率。LED管的输入输出关系如下表3.1表3.1考虑到我的学号“20102822025”为11位,而LED管只有8位,为了使学号完整的显示出来需要两屏显示,通过1Hz的脉冲触发让两屏数字以秒为单位循环轮替显示。如图3.1.1和图3.1.2图3.1.1图3.1.23.2 硬件电路设计 如下图3.2图3.23.3 VHDL代码设计3.3.1.设计思路由于学号是11位,8个LED管只能

8、输出8位,于是要把11位的学号分成两段,先显示前八位,再显示后三位,可以定义八个变量,两屏数字可以通过if语句和一个时钟脉冲clk5分别赋值给八个变量X17,这样就可以完成完整的11位学号的储存。给定的74LS138的三个输入引脚正好组成一组三位二进制数,因为实验箱的LED管是共阴极的,74LS138的输出引脚直接与LED管相连,使“000”、“001”、“010”、“011”、“100”、“101”、“110”、“111”与第一个到第八个管相对应,使用另一个时钟脉冲clk3让输入信号从0自增到7不断循环便可达到动态扫描LED显示数组的目的。并且通过一个case选择语句将扫描信号的一个周期里的

9、8个时刻与8个八个变量X17 里的值对应赋给最后显示译码输入的变量。最后就是显示译码过程,可以使用CASE选择语句实现,给LED管的a、b、c、d、e、f、g、h加合适的电平用一组8位2进制数实现,从高的到底分别对应h、g、f、e、d、c、b、a。程序流程图如下: 将学号数值赋值给变量 产生扫描信号 扫描信号选择输出变量 74LS138 驱动 LED管图3.33.3.2.设计代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use

10、ieee.std_logic_signed.all;entity xhxs is port(clk3,clk5:in std_logic; rst: in std_logic; seg_da:out std_logic_vector(7 downto 0); seg_sel:out std_logic_vector(2 downto 0) ); end xhxs;architecture ado of xhxs is signal seg_buf1,seg_buf2,seg_buf3,seg_buf4,seg_buf0:std_logic_vector(3 downto 0); signal

11、seg_buf5,seg_buf6,seg_buf7,seg_buf8:std_logic_vector(3 downto 0); signal seg_cnt:std_logic_vector(2 downto 0); signal seg_temp:std_logic_vector(3 downto 0); signal clk:std_logic; begin process(clk5) begin if clk5event and clk5=1 then -clk5上升沿有效 clk=not clk; end if; end process; process(clk5,rst) beg

12、in if clk5 event and clk5=1 then -clk5上升沿有效 if clk=1 then seg_buf1=0010; -学号的第一屏最后一位“2” seg_buf2=0010;-学号“2” seg_buf3=1000;-学号“8” seg_buf4=0010;-学号“2” seg_buf5=0000;-学号“0” seg_buf6=0001;-学号“1” seg_buf7=0000;-学号“0” seg_buf8=0010;-学号的第一屏第一位“2” else seg_buf1=1111;-送到译码熄灭显示器 seg_buf2=1111; seg_buf3=1111

13、; seg_buf4=1111; seg_buf5=1111; seg_buf6=0101;-学号的第二屏最后一位“5” seg_buf7=0010;-学号“2” seg_buf8=0000;-学号的第二屏第一位“0” end if; end if; end process; process (clk3,rst) begin if clk3 event and clk3=1 then-clk3上升沿有效 if rst=1 then seg_cnt=000;-rst为高电平时seg_cnt复位清零 else seg_cnt=seg_cnt+1;-seg_cnt自增 end if; end if;

14、 end process; seg_sel seg_temp seg_temp seg_temp seg_temp seg_temp seg_temp seg_temp seg_temp seg_temp seg_da seg_da seg_da seg_da seg_da seg_da seg_da seg_da seg_da seg_da seg_da null; end case; end process;-该进程完成显示驱动end ado; 4. 调试运行4.1 接线将EP3C10适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG口连接起来,万用下载去右下角的电源开

15、关拨到SOPC下载的一边。实验板右下方频率源CLK3接到任意频率作为扫描频率,CLK5接到1HZ做翻屏触发。将实验板左端的JP103全部都用短路帽接上(共8个)。4.2 时序仿真(包括仿真图)在Quartus II中选择“Edit”菜中的“end time.”设置end time为1s。给clk3和clk5都设置时钟脉冲,周期分别为10ms和150ms。仿真后的图形如下图4.2。图4.2 通过图4.2可以看出,在clk5为低电平时,seg_sel每个周期对应seg_da的值为“5BH、5BH、7FH、5BH、3FH、06H、3FH、5BH”,即“01011011、01011011、011111

16、111、01011011、00111111、00000110、01011011”“1”为高电平,“0”为低电平依次与共阴极LED管h、g、f、e、d、c、b、a引脚连接可得到显示“228200102”即实验箱上显示“20102822”。当clk5变成高电平时,seg_sel每个周期对应seg_da的值为“0H、0H、0H、0H、0H、6DH、5BH、3FH”即“00000000、00000000、00000000、00000000、00000000、01101101、01011011、001111111”,实验箱上显示“025”。仿真结果与预想中一致,说明程序没有错误,可进行下载运行。4.3

17、硬件逻辑验证(包括管脚锁定文件)引脚锁定如图4.3图4.34.4 下载运行及调试结果分析1.选择“tools”菜单中的“programmer”,在弹出对话框中选择编程模式和变成目标文件,并选择“JTAG”编程模式和选中Program/Configure。2.将下载线连至AS模式端口并加电。3.单击“start”按钮,当“Progress”显示为100%时,编程成功,FPGA开始工作,LED显示管显示“20102822”,片刻翻屏成“025”,接着再翻屏成“20102822”如此循环,达到预期效果。4.5 调试中出现的问题及解决方法1. 不翻屏及翻屏频率错乱最开始程序下载完成后,LED管可以显示

18、第一屏的数字却不翻第二屏。仔细检查VHDL程序代码没有问题后,尝试改变实验箱上的频率源,发现在插拔短路帽时LED显示器翻到第二组数字,而且在改变CLK4的时候翻屏的频率会出现混乱,而在改变CLK5时没有反应,据此判断芯片的CLK5引脚锁定的出错了,对照指导书附录的“系统结构图信号与芯片引脚对照表”果真CLK5的引脚锁定错误,更正后翻屏正常。2.解决第二屏数字位数少于显示器位数问题最开始第二屏的三位数在LED管上显示为“02500000”,指导老师看后,提醒可以把后面没有数字的LED管灭掉显得更加美观。于是将VHDL代码里的第二组数字改成“025FFFFF”,并将“F”显示译码输出全部改为低电平

19、“00000000”,即收到F数值时显示器将不亮。保存后重新编译,下载运行,得到最终结果。 7. 总结大学里的第二个课程设计,对比上学期除了浓厚的新鲜感并没有太多的不同,非常有挑战性的DIY,是学校里难得趣事之一。VHDL语言这门语言学的实际上学的不咋的,期末考试才刚及格,给我一个程序大段大段的代码看不懂。本次的课程设计老师们不知道是不是因为是夏天气温高似乎更加珍惜自己的口说,除了寥寥几页任务书没有任何相关的提示。苦苦在互联网上连续寻觅若干小时后恍然觉悟老师给我们的题目是个奇葩,就在即将放弃的时候同学的提醒让我回归到课本,抱着试一试的心态来到实验室,拿着实验指导书从记忆里早已模糊得快成一张白纸

20、用Quartus II新建工程、编译、仿真开始。经过几个人一下午的努力,将实验指导书中的“8位数码管扫描显示”的实验成功完成,接下来的工作就是修改代码,把原来实验LED管“1、2、3、4、5、6、7、8”8位数并左移一位的显示变成我们的11位学号。修改代码的前提是看懂原代码,实体、进程、信号、if语句、case选择语句这些似曾相识的东西开始在脑子里无休止的打转,然后渐渐平静。就如翻过一座山,看到的不是幽静怡人的山谷而是一座更高的山,而你更有想登上去的冲动。白天苦思冥想的太多,晚上打完游戏躺在床上脑子里不自禁涌现的全是白天看的代码,灵感的火花也在这时突然迸发,一夜期待,第二天迫不及待的去实验室实

21、施修改方案。结果方案很成功,也基本上达到最后的效果,经过细节完善最终效果很好。本次的课程设计使我“温故而知新”在VHDL语言获得大量收获时,最重要的是给了我自信,更加相信坚持在取得成功中的强大力量。同时感谢那些与我一起奋斗的同学们,那么可爱、各有专长。8.参考文献1 郑燕,赫建国. 基于VHDL与Quartus II软件的可编程逻辑器件应用于开发.北京:国防工业出版社,2011.2 Altera. Pin Information for the Cyclone III EP3C10 Device. San Jos:Altera Corp,2008.3 潘松,黄继业.EDA技术实用教程VHDL版.北京:科学出版社,2010.9.附录附录一实物图附录二硬件图- 18 -

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!