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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数字逻辑专题实验报告.docx

1、数字逻辑专题实验报告数字逻辑专题实验实验报告基于CPLDFPGA的出租车计费器的设计一. 实验题目设计一个基于CPLDFPGA的出租车计费器,并实现如下功能:1. A计数器对百米脉冲进行累加,并输出实际公里数的BCD码给译码动态扫描模块。每计满500送出一个脉冲给B计数器。同时可以设置起步公里数。2. B计数器实现步长可变(即单价可调)的累加计数,每500米计费一次。可以设置起步价格、每公里价格等。3. 译码动态扫描将路程与计费的数值译码后用动态扫描的方式驱动数码管显示。4. 数码管显示将公里数和计费金额分别用三位LED数码管显示(两位整数,1位小数)。二. 实验目的1. 学会综合运用组合逻辑

2、、时序逻辑设计数字系统电路的方法2. 学会使用EDA软件(MAX+PLUSII)设计调试电路的方法3. 掌握CPLD(复杂可编程逻辑器件)技术的层次化电路设计4. 掌握计数器、加法器、寄存器、锁存器及各种门的综合应用三. 系统设计方案1. 系统设计总体图图 1 系统设计总体图2. 系统整体输入输出定义1) 10hz_input_by_wheet系统从这里输入出租车前进时轮胎上传感器发出的信号,本系统中假设出租车每前进一米,该输入收到一个脉冲。2) 1khz系统从这里输入1kHz信号,作为数码管的扫描信号。3) resetreset信号输入为0时,表示出租车空驶;为1时表示出租车上有乘客。4)

3、a b c d e f g及led1-6系统结果输出端,分别连接实验装置中数码管的a b c d e f g输入及各数码管的控制输入。3. 系统各模块功能简介1) Output_per100_inputs基本计数模块。每输入100个脉冲时,输出一个脉冲,即每100米输出一个脉冲。2) Distance_counter_output出租车路程计算及输出模块。每100米输入一个脉冲之后,自动按BCD码输出计价器中十公里位、公里位、百米位需要显示的数字。3) After_2km_output_per500m控制计费器模块什么时候开始计费。当出租车上乘客后,计费器只输出初始价,当车行进到2公里(可设置

4、其他数值)时,计费器才开始按每公里的单价累加计费。此需要模块每100米输入一个脉冲,同时还要车行进到2公里时输入一个买脉冲。4) Price_counter_output出租车计费及输出模块。需要两公里之后每500米输入一个脉冲,自动按BCD码输出计价器中十元位、元位、角位需要显示的数字。5) Display_to_6led将路程及计费模块输出的数字显示到数码管中的模块,输入BCD码的各位,输出为数码管显示时需要的信号。4. 各模块功能图及输入输出分析图1) Output_per100_inputs模块功能图图 2 output_per100_inputs 模块功能图此模块使用74162作为主

5、要元件,经过实验,我发现将RCO接在高位计数器的ENT端后,虽然进位不会错,但是仍然为每输入99次输出一个脉冲,达不到实际要求。故此处从另外一个思路进行设计:当所有的数字都是0的时候, 输出一个脉冲。同时为了控制第一个脉冲的输出时间,避免在开始计数前所有输出位都是0的时候output_per100inputs输出脉冲,通过一个JKFF2控制。当输出行进10米时,JKFF2的Q输出才变为1,这时output_per100inputs才能输出脉冲,准确的控制了输出。输入输出分析图图 3 output_per100inputs 模块输入输出分析图1从图中可以看到,在reset为0及刚刚变为1时,ou

6、tput_per100inputs并没有输出脉冲,符合需要。图 4 output_per100inputs 模块输入输出分析图2从图中可以看到,在distance_10m,distance_1m输出都为9(即99米)时,output_per100inputs并没有进位,当再输入一个脉冲即到达100米后,output_per100inputs立刻输出一个脉冲,完成了在到达100米时输出一个脉冲的功能,准确无误。而此处如果为每99米输出一个脉冲的话,对后续里程及价格计算将会有很大影响。2) Distance_counter_output模块功能图图 5 Distance_counter_outpu

7、t 模块功能图将前一个模块每一百米输出一个脉冲的信号接在此模块的input_per100m输入端,输出即为可以直接用于显示输出的十进制BCD码十公里、公里、百米数字。此模块仍使用74160作为主要元件,并用和前一模块相同的连接方法。输入输出分析图 图 6 Distance_counter_output 模块输入输出分析图从两幅图中可以看到,在reset为0时,系统没有计算里程,达到要求。而且进位准确,9.9公里时并没有进位,当再前进100米时,变为10公里,准确无误,达到要求。3) After2km_output_per500m模块功能图图 7 after2km_output_per500m

8、模块功能图此模块使用JKFF2,使出租车行进到2公里时输出的信号能够保持,从而使74162的使能端从出租车行进到2公里时开始有效,即从两公里时开始每5次输入输出一次。经过实验将74162的A端接VCC后,可正确的实现每500米输出一个脉冲。这个模块在输入100米脉冲及2公里信号后,可以实现在出租车行进到2公里之后,每前进500米输出一个脉冲(从output_per500m),此脉冲用于后面的计费模块。模块输入输出分析图图 8 after2km_output_per500m 模块输入输出分析图由图中可以看出,在reset置1且input_2km输入一个信号(即出租车行进到2公里)之后,每5次输入

9、信号(每次代表100米),输出一个信号,达到预期目标。4) Price_counter_output模块功能图图 9 price_counter_output 模块功能图此模块为出租车计费模块。Adder为自制的加法器模块,将in_1_1-4和in_2_1-4输入的数值相加后,将结果以十进制BCD码输出,carry为进位。寄存器保存加法器输出的结果,然后再送入加法器,完成累加的功能。通过将adder:24的in_2_1-4输入端(输入信号为BCD码)与JKFF2:Q输出端相连,设定每500米的单价(单位:角),此次模拟设置每公里单价为6角;通过将adder:25的in_2_1-4输入端(输入信

10、号为BCD码)和VCC相连,设定出租车起步价格(单位:元),此次模拟设置起步价为6元。此模块完成reset为1时,输出起步价。在出租车行进两公里后,每500米输入一个脉冲,这时开始将价格累加,并输出。输出为十进制BCD码表示的计价器的十元位、元位、角位。模块输入输出分析图图 10 price_counter_output 模块输入输出分析图从图中可以看出,起步价设置为6元,每公里单价设置为6角之后,计价器完全实现正确计价,达到要求。5) Adder模块功能图图 11 adder模块功能图加法器模块。实现将in_1_1-4和in_2_1-4输入的数值相加,结果输出为BCD码,carry为进位。模

11、块输入输出分析图图 12 adder模块输入输出分析图74283:20|a b为加法器输入端,sum_4.1为加法器输出端,carry为进位,由图中可以看到,加法器功能准确无误。6) Display to 6led模块功能图图 13 display to 6led模块功能图此模块将输入的BCD码转化为直接连接在数码管的信号。Select_led不间断的循环从led1-6依次输出脉冲,与3个74244相连,实现6位led管扫描输出。模块输入输出分析图图 14 display to 6led模块输入输出分析图由图中可以看到,显示模块工作正常。select_led1-6输出扫描频率稳定,扫描顺序稳定

12、,正确无误。连接数码管的a b c d e f g输出能准确显示输入的内容。7) Select_led模块功能图图 15 select_led 模块功能图此模块为参考资料中的电路图。输入为1000hz脉冲信号,实现不间断的循环从led1-6依次输出脉冲。模块输入输出分析图图 16 select_led 模块输入输出分析图由图中可以看出,当输入1000Hz作为扫描频率后,输出稳定,正确的实现了扫描6个LED管的功能。四. 系统总体分析1. 系统总体功能图图 17 系统总体功能图2. 系统总体输入输出分析图 18 系统总体输入输出分析图110hz_input_by_wheet为每前进一米输入的一个

13、脉冲(模拟时周期为2us)。1khz为display_6led及select_led模块所需的1khz输入(模拟时周期为200ns)。由图可以看出,在reset为0时(即出租车空驶时),a b c d e f输出都是1,g输出是0,此时所有数码管输出0,显示正确。在reset变为1时(即出租车开始载客后,模拟中假定10us时开始载客),仅当选择电路扫描到1yuan对应的数码管时,a b为0,其余为1,输出为6元起步价(之前在price_counter_output模块中设置),其余数码管均为0(因为还不足100米,所以里程显示都是0),显示正确。图 19系统总体输入输出分析图2根据模拟时的假设

14、,每前进100米的距离,在模拟时时间间隔为200us。由图中可以看出,在210us之后时,已经输入100个脉冲,即出租车行进了100米,此时当扫描到100m对应的数码管(即select_led1_100m为1)时,b c为1,其余为0,显示输出1(即100米)显示正确。而之前扫描到100m对应的数码管时,该数码管显示仍为0,也正确。图 20系统总体输入输出分析图3由图中可以看出,在5.008ms时,距离显示为2.4公里,计价器角位为0,显示输出为6元;在5.01ms 时,距离显示为2.5公里,计价器角位输出从0变为3(e f为0,其余为1,之前在price_counter_output模块中将

15、每公里单价设为6角),显示输出6.3元,准确无误。此后系统按照预计情况正确运行,显示完全正确,完成了题目要求的任务。五. 实验总结与心得本次实验中,一开始选题时有一定思路,决定做这个题目。但是做到一定程度之后发现很多东西以前都没有学过,无法解决。于是便上网查阅大量的资料,了解器件的使用,不断添加需要的功能。同时,我又在实验中不断摸索,发现理论与实际的不同点,用实践结果作为依据修改各个模块。通过这次实验,我深刻的体会到了那句老话:“实践是检验真理的唯一标准”。最大的体会就是计数器的级联时,如果像常规的那样使用RCO连接下一级的CLK,就会出现许多错误,而连接下一级的ENT端虽然能够解决计数器内部

16、的进位问题,但是在output_per100inputs模块中,如果使用最高级的RCO作为输出就会出现错误。经过仔细思考,我换了一种思维方式,由于是同步计数器,当低位全部清零时,意味着高位此时应该收到进位,这时的进位应该是最准确的。通过这种想法,经过实践的模拟,我使用了新的方法,完美的达到了要求。另外在其他不熟悉的器件使用时,多询问老师,得到了老师的很大帮助。由于自己在电路设计方面没有经验,许多简单的问题不知道怎么处理,而这时老师的帮助就显得尤为必要。不仅帮助自己快速的解决了问题,还学到了一种新的方法,能为以后的学习实践提供思路。最终经过自己的不懈努力以及老师的帮助,顺利完美的完成了任务,在这个过程中的收获比想象的要大多。通过实验的训练,对思维能力有很大的培养,同时也培养了自己认真的性格,如何把复杂的线路理清楚,使人一目了然也是一件难事。在用maxplus2时,由于软件设计上的某些不便,使许多本应简单的操作变得繁琐。有的时候会失去耐性。但是面对复杂问题,必须要解决,努力静下心来,一点一点地修改电路图,解决那些问题。而当一个模块设计好并且准确无误的时候,那种成就感只有自己能够体会的到。这个实验的完成,离不开马老师、朱老师的帮助,在这里感谢老师对我的辛勤教导。六. 参考资料1. 数字逻辑实验指导书.pdf2. 数字逻辑 (第二版) 鲍家元 毛文林 高等教育出版社

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

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