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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

北邮数电实验报告4人表决器北邮电子数电综合实验报告文档格式.docx

1、 由结构框图可以分析得出,该系统的的主体是计数控制器。该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。 该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出。因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。并以此得出系统的逻辑框图如下: 图2逻辑框图 2.控制器部分的状态转移图 该控制器一共有三个基本状态:空驶状态、载客状态和等待状态。分别由v、和w来进行控制。 三、分块电路和总体电路设计 (一)总体电路设计 图3状态转移图 整体电路由数码

2、管译码电路、转换电路、点阵译码电路、技术控制电路、 分频电路五部分构成。 分频电路将开发板内部的50MHz时钟分为500hz(供给数码管和点阵)、 1Hz(控制器计时)、0.5Hz(行驶路程计费)、0.3Hz(等待时间计费)以及用于提高分频效率的其他若按频率。 计数控制电路由四部分构成,整体完成行驶距离的计数、等待时间的计 数以及费用的计数。输出为三组十位二进制数。 转换电路有转换数据类型和在数码管上分时显示两个功能。首先将输入 的十位二进制数转换为4位十进制数,并且利用除法和取余数的运算提取出个位、十位、百位、千位,并转换为四位二进制BCD码。其次利用0.5hz的时钟,将行驶里程、等待时间、

3、计费金额以2秒为周期依次out14,供给数码管以便分时显示。 数码管译码电路以500HZ实现动态扫描,并将转换电路输出的5组BCD 码依次译码,完成显示。 点阵译码器根据载客控制信号,分别显示“O”、“X”静态图案。 (二)分块电路设计1.分频器(以100分频为例) 1.1电路模块1.2关键代码 ENTITYdiv_100ISPORT( clk100:INSTD_LOGIC;-clear: clk1:OUTSTD_LOGIC);-ENDdiv_100; ARCHITECTUREa100OFdiv_100IS SIGNALtmp100:INTEGERRANGE0TO99;-BEGIN p1:PR

4、OCESS(clear,clk100)-p1BEGIN IFclear=“0”THENtmp100 ELSIFclk100”eventANDclk100=“1”THENIFtmp100=99THENtmp100 tmp100 ENDPROCESSp1; clk100:输入时钟 clear:复位端clk1:输出时钟输入时钟输出时钟计数信号进行100进制的计数 p2:PROCESS(clk100)-p2输出占空比为50%的新时钟BEGIN IFclk100”eventANDclk100=“1”THENIFtmp10049THENclk1 clk1 ENDPROCESSp2;ENDa100; 1.3

5、 仿真波形 图5200分频仿真波形 图65分频仿真波形 2.计数控制器 2.1电路模块 计数控制器由四部分组成,输入为三个不同频率的时钟、载客控制信号v和等待控制信号w。control1完成里程的计数cd和行驶费用cm1,control2完成等待时间ct的计数和等待开始计费(ct5s)信号outt,control3接收到outt后输出为等待时间的计费cm2,control4为总费用(cm1+cm2+燃油附加费 1 图7电路控制器 设计关键思想是将费用、行驶里程、等待时间三个计数过程分开处理,并且将行驶计费和等待计费也分开处理。通过载客信号v、等待信号w分别触发不用的进程完成计数。因为行驶过程中

6、每两秒1公里,每公里两元,等待过程中每三秒1元,因此分别用1hz、0.5hz、0.33hz的时钟完成计时、计费、记里程。 2.2模块control12.2.1电路模块 行驶里程计数cd和行驶计费cm1 2.2.2关键代码 ENTITYcontrol1ISPORT( clk2:-输入是0.5Hz的时钟v:-载客控制输入信号w:-等待信号 cm1:OUTSTD_LOGIC_VECTOR(9DOWNTO0);-里程计费cd:OUTSTD_LOGIC_VECTOR(9DOWNTO0);-行驶距离ENDcontrol1; ARCHITECTUREcOFcontrol1IS SIGNALtemp1:STD

7、_LOGIC_VECTOR(9DOWNTO0); SIGNALtemp_cm:STD_LOGIC;BEGINPROCESS(clk2,v,w)-p1里程计数BEGIN IF(clk2”eventandclk2=“1”)THEN IFv=“0”THEN-v=0时重新计数temp1 ELSIFw=“1”THEN-开始等待时里程保持不变temp1 ELSEtemp1PROCESS(clk2,temp1)BEGIN IFtemp1 ELSEcm1 cdENDc; 2.3模块control22.3.1电路模块 等待时间计数ct和等待开始计费信号outt(ct5s) 2.3.2关键代码 ENTITYcon

8、trol2ISPORT(-输入是1Hz的时钟v: outt:outSTD_LOGIC;-若大于5秒,输出1 ct:outSTD_LOGIC_VECTOR(9DOWNTO0);-等待时间输出ENDcontrol2; ARCHITECTUREcOFcontrol2ISSIGNALtempt:SIGNALtemp1:INTEGERRANGE0TO999; p3:PROCESS(clk1,v,w)-累加等待时间BEGIN IF(clk1”eventandclk1=“1”)THENIFv=“0”THEN tempt ELSIFw=“0”THEN-行驶时保持状态tempt temp1 ELSEtempt

9、IFtemp14THEN-大于5秒时outt=1outt ENDIF;ENDPROCESSp3; p4:PROCESS(clk1,tempt)-将信号赋给输出ctBEGIN ct ENDPROCESSp4; 2.4模块control32.4.1电路模块 当输入outt为1时,开始计数cm2为等待时间计费 2.4.2关键代码 ENTITYcontrol3ISPORT( clk3:-输入是0.3Hz的时钟-为1时,等待时间大于5sv: cm2:-等待计费ENDcontrol3; ARCHITECTUREcOFcontrol3IS SIGNALtempm: p5:PROCESS(clk3,outt,

10、v,w)BEGIN IFoutt=“1”THEN-大于5秒时开始计费IF(clk3”eventandclk3=“1”)THENIFv=“0”THEN tempm ELSEtempm ENDPROCESSp5; p6:PROCESS(clk3,tempm) BEGIN IFV=“0”THEN cm2 ENDPROCESSp6; 2.5control42.5.1电路模块 将等待计费cm2和行驶计费cm1相加,并加上 燃油费1元,得到总费用cm 2.5.2关键代码 ENTITYcontrol4ISPORT(-载客控制输入信号cm1:inSTD_LOGIC_VECTOR(9DOWNTO0);-行驶费用

11、cm2:-等待费用 cm:-总费用ENDcontrol4; ARCHITECTUREcOFcontrol4ISBEGINPROCESS(clk2,v)BEGIN IF(clk2”eventandclk2=“1”)THENIFv=“0”THENcm 2.6控制计数部分的总仿真波形 图8控制计数器仿真波形 3.转换器 3.1电路模块 由三个输入:行驶距离cd、等待时间ct、计费 金额cm 输出out1-5为四位二进制BCD码 实现功能:将十位二进制数按照位数转为为 BCD码 3.2关键代码 ENTITYtransformISPORT( clk:-0.5hz的时钟v:cd:-行驶距离ct:-等待时间

12、cm:-总费用out1:outstd_logic_vector(3downto0);-输出个位out2:-输出十位out3:-输出百位out4:-输出千位 out5:outstd_logic_vector(3downto0);-输出ABCENDtransform; ARCHITECTUREcOFtransformIS signalcc:integerrange0to1023; signalt:std_logic_vector(1downto0);signalq1,q2,q3:integerrange0to1000;PROCESS(clk,v)-p1进行3进制的计数BEGIN IF(clk”ev

13、entandclk=“1”)THENIFv=“0”THENt elsift=“00”thent elsift=“01”thent elsift=“10”thent elsetp2:process(clk,t)BEGIN if(clk”eventandclk=“1”)then CASEtis-实现分时显示 when”00”=cccccccc q1 q3 out1 endprocessp2; 4.数码管译码电路 4.1电路模块 4.2关键代码 ENTITYshumaguanISPORT(-500hz数码管扫描时钟out5,out4,out3,out2,out1:INSTD_LOGIC_VECTOR

14、(3DOWNTO0);g:OUTSTD_LOGIC_VECTOR(6DOWNTO0);cat:OUTSTD_LOGIC_VECTOR(5DOWNTO0);ENDshumaguan; ARCHITECTUREaOFshumaguanIS SIGNALtmpg:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALtmpn:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALtmpc:INTEGERRANGE0TO5;PROCESS(clk1)-六进制计数BEGIN if(clk1”eventandclk1=“1”)then iftmpc=5thentmpc tmpcPR

15、OCESS(clk1)-数码管选通轮流显示BEGIN if(clk1”eventandclk1=“1”)then-将个位、十位等赋给各个数码管casetmpcis WHEN0=tmpntmpntmpntmpn WHEN5=tmpntmpnPROCESS(tmpn)-译码电路BEGIN CASEtmpnIS WHEN”0000”=tmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpg 5.点阵译码电路 5.1电路模块 5.2关键代码ENTITYdzisPORT( clk500:v: row:OUTSTD_LOGIC_VECTOR(

16、7DOWNTO0);-行 col:OUTSTD_LOGIC_VECTOR(7DOWNTO0);-列ENDdz; ARCHITECTUREaOFdzIS SIGNALtmp_row:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALtmp_col:begin process(v,clk500)begin if(clk500”eventandclk500=“1”)thenifv=“0”thencasetmp_colis WHEN”11111110”=tmp_coltmp_coltmp_coltmp_coltmp_coltmp_coltmp_coltmp_coltmp_col cas

17、etmp_colis WHEN”11111110”=tmp_coltmp_coltmp_coltmp_coltmp_coltmp_col WHEN”11111011”=tmp_col WHEN”11111101”=tmp_coltmp_col 5.3仿真波形 图9空载时显示“” 图10载客时显示“X” 四、实现功能说明 1,实现功能 实现计时、计里程、计费功能 数码管可分时显示行驶距离、费用、等待时间点阵显示载客和空载状态2.器材的资源占用情况 图11编译报告 图12逻辑元件表 由图11可得:本电路一共用了576个逻辑元件,占总逻辑元件数的45%,总 管脚数37,占总管脚的32%。 由图12看

18、到,除了transform模块之外,各模块占用资源均不大。transform 模块因为用到了除法、取余数等运算。因此占用资源较多,应在后期进行优化,降低资源利用率。 3.仿真波形图(见电路分析部分)4.必要的测试方法 控制计数器整体仿真控制器与转换器整体仿真数码管赋值检查是否显示 故障时中间接输出,并且管脚设置为LED灯,看是否正常传输 五、故障与问题分析 1)计数显示不正确,有延迟解决办法:在控制计数器内部,将组合逻辑部分和计数部分分到不同的进程,避免在时序进程出现大量运算,造成延迟。 2)计数时采用十位二进制计数,无法逐位读取,赋给各个数码管 解决办法1:先将二进制转为十进制,再利用除法和

19、取余数运算得到各位数值(改动小,但运算量大,占用资源多) 2:计数时改为逐位计数,后一位满十后向前一位进1(改动大,但运算量减少) 3)仿真时计数器正常工作,但下载到板子时一直显示为0,无法确定是计数器的问题还是数码管的问题 解决办法:将计数器的一个输出作为LED的输入,发现LED不亮,说明控制器有问题。(后来经过检查发现是原理图连接有误) 六、总结和结论 这次数字电路综合实验是一次将理论、实验与现实应用结合在一起的实验。当第一次课拿到题目时,我感觉无从下手,几乎没有思路。但当三周后我基本完成了实验任务时,却又觉得整个电路结构无比清晰,甚至知道我的方案哪里做得好、哪里做得不好。在这三周的时间里

20、,我觉得我有如下的收获:1.基础知识与动手操作并重由于我觉得自己基础不好,又加上是上学期的内容,因此在拿到题目后我并没有立即动手做,而是完整地阅读了一编实验教材,并且认真做了笔记。在之后的设计中,无论是对于具体语句还是设计思想,都有了成竹在胸的感觉,甚至还可以帮助同学们解决一些小的知识点,做一些小的改进。但光看书也是不够的,在编程的过程中,一开始仍有一些生涩,随着时间的推移,我的进度也逐渐加快。因此,这说明,在做具体的项目时一定首先要打好基础,不能过于着急动手,当然也不能一味地抠细节,忽视实验的重要性。2.整体的设计比具体的实现更重要在老师的讲课过程中,不止一遍强调数字电路的模块的划分、上层的

21、设计要比具体的编程语句更重要。一开始我并没有意识到这一问题,在做逻辑框图时细节和准确性都不够。因为我习惯一边开始做,一边想下一步怎么做。但在老师检 查过程中我的框图被指出错误之后,我又重新做了逻辑框图。这一次,我感觉到在我认真思考后,我对整个电路的结构有了清晰地认识,特别是将电路划分为每一个细小的模块后,模块的具体实现就变得很简单,甚至很多都是现成的。这让我明白上层的设计、模块的划分才是最有创造性、最有技术含量的部分,我们作为设计师,应当将重点放在设计思想上,而不是具体的一个个语句。只有这样,我们的工作才是最具有价值的,而不是简单的模仿和重复。3.硬件编程语言与普通编程语言是有区别的硬件编程语

22、言侧重于10的逻辑实现,任何一段程序有一部分电路与之对应。在编程的过程中,要养成做硬件的思维习惯。比如这次,计数部分用了10位二进制来表示。但后来的数码管显示需要提取出各位的数值。不得已我用了除法和取余运算,造成的结果是用了大量的逻辑元件。但是我看到我的同学在计数时就将各位单独进行运算,比我节省了大量的元器件。这就是硬件语言的思维,在编程过程中应该尽量避免数据类型的转换、乘除法等,造成资源的浪费。4.测试是编程的重要环节 因为我们做比较大型的项目不多,而这次实验,因为用了大量的模块化设计,合理、准确的测试就很重要了。因为整体仿真的运算量太大,而且一旦出错很难发现什么地方出了问题,因此这就要求我们事先要对每一个模块都要进行仿真、测试。而且最好还要对相连的模块进行整体仿真,避免出现问题。而且在仿真、测试的过程中,选择合理的方法也很重要,设置适当的条件、选择合适的输入、输出等会让测试事半功倍。 总之,这次实验让我收获巨大。当我实现了生活中可能用到的一个功能时,不仅让我收获了成就感与信心,还让我对生活中各种数字电路的实现产生了浓厚的兴趣。看到生活中的电子产品时,有时候就会不自觉地思考这是怎么实现的?可能要分为哪些模块?这些模块有哪些功能,彼此又有什么联系?这让我对进一步了解数字电路的应用提供了强大的推动力。 七、完整源程序 电路原理图、源程序代码见电路分析部分

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

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