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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数码管扫描显示 数电实验综述.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数码管扫描显示 数电实验综述.docx

1、数码管扫描显示 数电实验综述实验报告 2016 年 1 月 5 日 成绩: 姓名陈孟春、程平安学号14051112、14051115班级14052311专业计算机科学与技术课程名称数字电路课程设计任课老师冯建文指导老师冯建文机位号实验序号18实验名称数码管扫描显示实验时间2016.1.5实验地点1教233实验设备号一、实验程序源代码(含实验程序源代码及模块设计说明、注释等)/*1.实验分工 本实验的代码主要由陈孟春同学完成,程平安同学做了后期的测试工作。2.程序介绍本程序分为4个模块,分别为主模块(shiyan18)、显示模块(Display)、分频模块(Timer)、十进制计数器模块(Dec

2、Adder)。主模块(shiyan18)主要负责连接其他模块以及连接各个管脚。显示模块(Display)的功能是把4位8421码转换为数码管所需的位选信号和段选信号。分频模块(Timer)的功能是把100M的时钟转换成其他频率的时钟。比如显示模块每位数字的刷新时间大约为2.6ms,那就用了分频模块输出的第19、18位作为位选的时钟。数码管的计数需要较慢的速度,所以选择了第24位作为它的时钟,如果需要更快的增加速度,也可以选择23或者22位。十进制计数器模块(DecAdder)的功能是对时钟的脉冲个数进行计数,当来了一个时钟上升沿时就可以加一。由于本实验的数码管是4位的,所以在主模块中创建了4个

3、十进制计数器模块的实例,通过级联来实现4位的十进制计数器。*/timescale 1ns / 1psmodule shiyan18( input StartStop, input clk, input _clr, output 3:0 AN, output 7:0 seg ); wire 24:0 delay; wire c0,c1,c2,c3; wire 15:0 data; Timer timer(clk,delay); Display display(data,delay19:18,AN,seg); DecAdder da0(_clr,StartStop,delay24,data3:0,

4、c0), da1(_clr,StartStop,c0,data7:4,c1), da2(_clr,StartStop,c1,data11:8,c2), da3(_clr,StartStop,c2,data15:12,c3);endmodulemodule Timer( input CP, output reg 24:0 delay = 241b0 ); always (posedge CP) begin delay = delay + 1b1; endendmodulemodule Display( input 15:0 Data, input 1:0 Bit_Sel, output reg

5、3:0 AN, output reg 7:0 Seg ); reg 7:0 memory0:15=8b00000011, 8b10011111, 8b00100101, 8b00001101, 8b10011001, 8b01001001, 8b01000001, 8b00011111, 8b00000001, 8b00001001, 8b00010001, 8b11000001, 8b01100011, 8b10000101, 8b01100001, 8b01110001 ; always (Bit_Sel) begin case(Bit_Sel) 0: begin AN = 4b0111;

6、 Seg = memoryData15:12; end 1: begin AN = 4b1011; Seg = memoryData11:8; end 2: begin AN = 4b1101; Seg = memoryData7:4; end 3: begin AN = 4b1110; Seg = memoryData3:0; end default: begin AN = 4b1111; Seg = 81b1; end endcase end endmodulemodule DecAdder( input _MR, input EN, input CLK, output reg 3:0 Q

7、, output reg C1 ); always (negedge _MR or posedge CLK) begin if(_MR = 0) C1,Q = 5b00000; else if(EN) begin if(Q = 4b1001) begin Q = 4b0000; C1 = 1b1; end else begin Q = Q + 1b1; C1 = 1b0; end end endendmodule二、仿真波形三、电路图四、引脚配置(约束文件)NET AN0 LOC = N16;NET AN1 LOC = N15;NET AN2 LOC = P18;NET AN3 LOC = P

8、17;NET seg7 LOC = T17;NET seg6 LOC = T18;NET seg5 LOC = U17;NET seg4 LOC = U18;NET seg3 LOC = M14;NET seg2 LOC = N14;NET seg1 LOC = L14;NET seg0 LOC = M13;NET clk LOC = V10;NET StartStop LOC = T10;NET _clr LOC = T9;五、思考与探索(1) 在实验中,你碰到了哪些问题,又是如何解决的?如果感觉数字闪烁,分析是什么原因?如何解决?答:写完程序后,第一次上板子测试的时候除了有个数字显示错了,

9、其他基本没有问题。但在后来仿真的时候,代码报错,似乎是不能直接给寄存器数组初始化,于是改了一下原来的代码,最后显示出了仿真波形。如果数字闪烁可能是刷屏的频率不够高,可以把分频模块的输出时钟频率调的高一点。(2) 板级实验时,当你置开关Start/Stop=0时,观察数码管显示状态:停止计数了吗?数码管是某个点亮还是4个均点亮?当你Start/Stop=1时,计数从0000开始,还是从刚才停止的数据开始?假如要求停止计数时,数码管稳定显示停止时的4位计数值,再次启动计数时,又从刚才中断的计数值继续开始计数,请你修改你的程序,达到上述效果。答:停止计数了。4个均点亮。从刚才的数据开始。我的程序已经

10、实现了上述效果。(3) 考虑设计一个通用的4位数码管显示模块,输入端口为16位的数据Data15:0,每4位用一个数码管显示,输入端口即为数码管位选AN3:0和段选Seg7:0。答:代码如下:module Display( input 15:0 Data, input 1:0 Bit_Sel, output reg 3:0 AN, output reg 7:0 Seg ); reg 7:0 memory0:15=8b00000011, 8b10011111, 8b00100101, 8b00001101, 8b10011001, 8b01001001, 8b01000001, 8b000111

11、11, 8b00000001, 8b00001001, 8b00010001, 8b11000001, 8b01100011, 8b10000101, 8b01100001, 8b01110001 ; always (Bit_Sel) begin case(Bit_Sel) 0: begin AN = 4b0111; Seg = memoryData15:12; end 1: begin AN = 4b1011; Seg = memoryData11:8; end 2: begin AN = 4b1101; Seg = memoryData7:4; end 3: begin AN = 4b1110; Seg = memoryData3:0; end default: begin AN = 4b1111; Seg = 81b1; end endcase end endmodule

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1