数电课程设计报告生理刺激反应时间测试仪Word文件下载.docx
《数电课程设计报告生理刺激反应时间测试仪Word文件下载.docx》由会员分享,可在线阅读,更多相关《数电课程设计报告生理刺激反应时间测试仪Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
1.1设计指标
(1)受试者可以按“刺激源选择”键选择刺激信号是光或声。
(2)当受试者按“测试开始”按键后,系统进入准备状态,“准备”灯亮,其他指示灯灭,显示器显示全零。
(3)测试仪在“准备”灯亮后的1~12s时间内随机发出光刺激信号(“测试”灯亮)或声刺激信号(蜂鸣器响),“准备”灯灭。
(4)当刺激信号发出后测试仪开始计时,直到受试者按下“反应”键停止计时时。
计时单位为0.1ms。
(5)以七段LED数码管显示时间测量值的高3位,最低位测量值进行四舍五入处理,显示值保持到新的测试开始。
(6)受试者的反应时间超过999.5ms,“溢出”灯亮指示,测试计数器立即停止计时,“测试”灯灭或蜂鸣器停,“溢出”灯持续发光直到下次测试开始。
(7)若受试者在刺激信号未发出前按“反应”键,“违例”指示灯亮,“准备”灯灭,并禁止刺激信号发出。
第二章系统概述
2.1设计思想
分析设计要求可知,生理刺激反应时间测试仪的基本功能是随机产生刺激信号、计时显示以及对受试者的操作进行逻辑判断。
生理刺激反应测试仪的主要控制信号为开始信号start、准备信号ready、随机信号random、测试信号test、反应信号response、测试计数器溢出信号overflow和违例信号weili。
若选择一般的点触键为“测试开始”键和下降沿有效的点触键为“反应”键,比如LP2900开发装置上的SW3,PS2键,则start,response为相应按键产生1,0或者下降沿脉冲。
test,response,overflow,weili设置为触发器产生的电平信号。
系统电路根据控制功能划分为刺激信号随机产生、测试计时、动态显示、逻辑控制、时基信号产生等5个模块。
其中随机信号采用D触发器延迟1S、模12的定时计数器及相应的控制逻辑产生,测试计数器采用可预置、有使能控制的4级8421BCD码十进制加计数器实现。
由于正常测试时间小于1s,所以时间计数值可以不经锁存直接显示。
时基电路是产生定时、延时、计时电路以及显示扫描电路的时钟脉冲,蜂鸣器的发声也需要音频脉冲控制。
各脉冲可以根据所用FPGA开发装置的基准时钟10MHz分频获得。
2.2可行性论证
首先可以将10MHZ的基准时钟通过计数器分成各个频率的时钟,延时1S的信号可以由D触发器组成,然后随机信号1~12秒可以通过构成12进制的计数器产生。
逻辑控制模块可以通过与门,非门等等以及触发器构成,测试计时模块可以通过多块计数器级联而成,动态显示模块可以通过编写AHDL文件,根据测试计时模块测得的数据显示数字,最后分配引脚。
2.3各功能的组成
2.3.1分频器
在数字电路中,m进制计数器的状态循环周期为m个计数时钟周期,可实现对计数脉冲频率的m分频。
n个m进制计数器可级连成
进制计数器,实现对计数脉冲的
倍分频。
脉冲信号选择可以采用数据选择器或三态门,脉冲信号分配可以采用数据分配器、二进制译码器或逻辑门。
在本题中用7490级连而成。
2.3.2随机信号
随机信号是指控制条件满足后脉冲出现时间无法确定的信号。
如果以一个任意出现的控制电平去选通一个周期性定时出现的脉冲信号,由于脉冲出现的时间与控制电平有效的时间没有任何关联,当控制信号有效后,在定时周期时间范围内会随机出现选通脉冲。
在数字电路中,计数器的溢出信号是循环定时产生的。
比如,计数器的模为M、计数脉冲频率为1s,则计数器的溢出信号周期为Ms,信号宽度一般为1s。
若用一个电平信号通过逻辑门选通该计数器的溢出脉冲,则当控制电平有效后,逻辑门的输出在0至Ms之间产生随机脉冲信号。
同样,若用电平信号控制一个模为N、初始值为0、计数脉冲频率为1s的计数器使能端,当使能电平有效后,计数器产生溢出信号的延时时间为N-1~至Ns。
2.3.3逻辑控制电路
逻辑控制电路的功能是根据按键信号控制延时、定时电路和测试计数器,判断受试者发出的反应信号response是否违例、测试计时是否溢出,并根据各信号控制相应的指示灯点亮。
在生理刺激反应测试仪中,部分控制信号是互相关联的,比如A信号使Q信号置位,B信号使Q信号复位。
这样的逻辑关系可以有很多方法实现,比如利用D触发器的同步触发功能和异步复位功能:
A脉冲的上升沿触发D触发器使其输出Q置位,B脉冲的有效电平使D触发器立即复位。
信号时序波形示例和参考电路原理如下图所示。
图2-1部分控制信号的时序关系及参考控制方法
2.3.4测试计时器
测试计时器要记录测试的时间,而且要十进制表示,所以可以采用多个10进制的计数器级连。
生理刺激反应测试仪的时间测量为四位十进制数,而显示值为三位十进制数,最低位测量值要求进行四舍五入处理。
即当最低位计数值小于5时,高3位测量值直接显示;
当最低位计数值大于4时,高3位测量值加1后显示。
数字电路中实现数值四舍五入的方法很多。
本设计可以利用计数器的预置数功能,在测量前将测试计数器的初始值预置为5。
这样,测试结束时的计数值是实际测量值加5。
当最低位测量值大于等于5时,必然产生向高位的进位,实现了测量值的四舍五入功能。
2.3.5动态显示模块
动态扫描显示控制的关键问题在于产生顺序脉冲分时选通各显示器的公共端,并同步输出其段控制信号。
在本实验数字电路中,采用计数器控制二进制译码器产生。
采用LP-2900开发装置,由于已在FPGA外部设置了3—8线译码器74138控制显示器的公阴端,因此只要采用计数器产生二进制计数信号控制译码器即能实现动态显示扫描。
在LP-2900上实现4位动态扫描显示控制电路,选择前四位。
采用四进制计数器的输出控制DE1、DE2,并使DE3始终为0(端口接GND),则74138输入码A以“000”、“001”、“010”、“011”循环变化,输出控制C1、C2、C3、C4轮流为低电平,C5、C6始终为高电平,后两位显示器灭显。
由于数据选择器的输出Ni必须在相应的Ci有效有效时同步输出,所以可采用控制产生Ci顺序脉冲的计数器同步控制数据选择器各位的显示码,经过显示译码输出七段控制信号Ni,同时选择该位的小数点控制信号控制显示器的dp端。
2.4总体工作过程
总体工作过程中,逻辑控制电路按控制要求产生各控制信号,根据系统工作原理,各信号时序关系如下:
(1)“测试开始”按键产生的start电平键按下后ready信号有效,控制test,weili,overflow无效,并预置测试计数器初值。
(2)ready信号控制延时计数器开始计数,延时时间1~2s。
当延时时间到,delay信号有效。
delay信号等待选通模M定时计数器的溢出信号产生随机脉冲random,等待时间为0~Ms。
这样,随机信号random比测试开始!
按键的作用时间滞后1~M+2s出现。
(3)当随机脉冲random出现后,触发test信号有效并控制ready,delay信号无效。
test信号点亮“测试”灯或控制蜂鸣器鸣响,并允许测试计数器开始计时。
(4)当“反应”键按下后,产生response负脉冲,使test信号无效,测试计数器停止计数。
(5)若反应时间超过999.5s,测试计数器产生的溢出脉冲触发overflow信号有效。
overflow信号控制测试计数器停止计数。
(6)若test信号无效时按下“反应”键,response脉冲触发weili信号有效,并控制ready信号无效。
weili信号禁止随机脉冲产生,test信号始终无效。
设计过程:
设计框图:
第3章单元电路设计与分析
3.1分频器
3.1.1分频器的电路
3.1.2分频器的电路的原理分析
在电路中,7490是通过计数脉冲CP控制五进制计数器的时钟CLKB,并以五进制计数器的最高位输出QD控制二进制计数器时钟CLKA,即构成5421BCD码十进制计数器,然后从QA引出去,就可以等到10分频的计数脉冲,占空比50%,然后让前一个7490的QA当做下一个7490的CP,这样经过8个7490计数器就可以得到8种频率不同的脉冲。
3.1.3分频器的元件符号
3.2随机信号模块
3.2.1随机信号产生电路
3.2.2随机信号原理分析
74161在一开始就计时了。
ready为低电平时,第2个D触发器清零,最右边的与门被D触发器关闭;
然后当ready为高电平时,两个D触发器先延时1S,之后D触发器输出一直为1,然后才让74161计数器的12S溢出通过与门输出,产生随机信号。
至于2个D触发器能延时1秒,这里解释一下。
在ready为低电平时,两个D触发器的Q都为0,,同时第二个D触发器的CP为1(高电平);
然后当ready为高电平时,第2个D触发器的开始CP为高电平,当1Hz的脉冲来一个上升沿时,第一个D触发器被触发,它的Q变成高电平,所以第2个D触发器的CP变为低电平,然后当1Hz脉冲从高电平变为低电平后,第一个D触发器被清零,所以第2个D触发器的CP又变成高电平,此时第二个D触发器被触发,它的Q变成1(高电平)。
第2个D触发器的CP从高电平到低电平,再从低电平到高电平,延时刚好1S。
3.2.3随机信号元件符号
3.3逻辑控制电路
3.3.1电路图
3.3.2控制电路原理分析
首先,电路中,start和ready其实是同一个按键(在总电路图中可以看出),电路中choose2为选择灯亮为刺激源(取名choose2是因为它的按键为SW2),choose8为选择蜂鸣器为刺激源(取名choose8是因为它的按键为SW8),random为随机信号输入点,response为反应键;
test-light2为测试灯,sound为蜂鸣器,ready-light8为准备灯,cont为测试计数器开始计时的信号,end为反应后测试计时器计时结束的信号,weili-light1为溢出灯。
将其中几部分拿出来进行分析:
违例灯模块:
仿真效果:
解释:
在红线之前:
start高电平开始后,response在random产生信号之前就响应了,所以weili-light1产生高电平(即违例灯亮了),start低电平结束,weili-light1清零。
在红线后:
在start高电平开始后,random产生信号后,response才反应,这是正常的情况,所以违例灯没亮。
测试灯模块:
在choose2高电平(即选择灯光为刺激源),在开start高电平始后,当random来信号时,test-light2产生高电平(即测试灯亮)。
其他模块可以参照电路图分析。
3.3.3控制模块原件符号
3.4测试计时器
3.4.1测试计数器电路图
3.4.2测试计数器原理分析
count为计数开始信号,end为计数结束信号,ready为准备信号(也是start信号);
输出信号overflow-light3为溢出信号(因为溢出灯为L3,所以取名为overflow-light3)。
然后还有输出计数结果的A0,B0,C0,D0:
表示百位(最高位),Aa1,Bb1,Cc1,Dd1:
表示十位,Aa2,Bb2,Cc2,Dd2:
表示个位。
最低位的四舍五入,是在最低为的74160计数器(即最左边的那个74160计数器)预置为五,在电路图中可以看出,
仿真结果1:
在ready为高电平时在count开始计数信号来一个上升沿后,计数器开始计数;
在图中,bai-wei是A0,B0,C0,D0的group组,表示计数结果的百位,shi-wei是Aa1,Bb1,Cc1,Dd1的group,表示计数结果的十位,ge-wei是Aa2,Bb2,Cc2,Dd2的group,表示计数结果的个位。
仿真结果2:
溢出灯模块:
在count产生上升沿后,计数器开始计时,在bai-wei,shi-wei,ge-wei都计数到9(即计数值为999)时,overflow-light3从低电平变到高电平,即溢出灯亮。
仿真结果3:
正常反应:
在count产生上升沿后,计数器开始计时,在end信号(即反应response信号)来之后,所有计数器都停下来了,从图中可以看出测试结果为700ms。
3.4.3计数器模块元件符号
3.5动态显示模块
3.5.1动态显示模块电路图
3.5.2动态显示模块原理分析
首先从测试计数器模块产生的计数结果通过A0,B0,C0,D0;
A1,B1,C1,D1;
A2,B2,C2,D2传入74153M选择器,然后通过选择传入7reg器件,进行控制数码管的a,b,c,d,e,f,g各个二极管,从而产生相应的数字或字母。
其中,7reg的AHDLFlie如下:
SUBDESIGN7seg
(
data_in[3..0]:
INPUT;
a,b,c,d,e,f,g:
OUTPUT;
)
BEGIN
TABLE
data_in[3..0]=>
a,b,c,d,e,f,g;
b"
0000"
=>
1,1,1,1,1,1,0;
---0
0001"
0,1,1,0,0,0,0;
---1
0010"
1,1,0,1,1,0,1;
---2
0011"
1,1,1,1,0,0,1;
---3
0100"
0,1,1,0,0,1,1;
---4
0101"
1,0,1,1,0,1,1;
---5
0110"
1,0,1,1,1,1,1;
---6
0111"
1,1,1,0,0,0,0;
---7
1000"
1,1,1,1,1,1,1;
---8
1001"
1,1,1,1,0,1,1;
---9
1010"
1,1,1,0,1,1,1;
---A
1011"
0,0,1,1,1,1,1;
---b
1100"
1,0,0,1,1,1,0;
---C
1101"
0,1,1,1,1,0,1;
---d
1110"
1,0,0,0,1,1,1;
---F
ENDTABLE;
END;
3.5.3动态显示模块元件符号
第四章电路的组构与调试
4.1遇到过的主要问题
1.测试计数器级连方式不正确,我将前一个计数器的RCO直接接入下一个计数器的CLK,导致计数不正确。
2.我的程序只能用一次,如果还要用得重新下载。
3.一开始数码管显示4位,而要求是3位。
4.2现象记录及原因分析
1.仿真后发现在前一个计数器还是9的时候,下一个计数器就是1了,导致计数结果不对;
后来发现因为74160计数器是上升沿有效触发,在前一个计数器为9进位时给一个上升沿,后一个就马上技术了,导致出错。
2.程序下载一下只能用一次,原因就是结束后所有触发器还有计数器都没有清零。
3.第4位一直为零,原因是控制第4位的数码管的4个选择器74153M的C3都放空了。
4.3解决措施及效果、
1.在各个计数器的RCO出来接一个非门,然后再接入下一个计数器的CLK时钟信号端。
仿真后技术正确。
2.统一用ready结束后清零。
效果就是,下载一下后可以用无线次。
3.在4个选择器74153M的C3都接了VCC高电平,效果就是第4个数码管不亮了。
第5章结束语
5.1总结设计的收获与体会
在本次设计中最大的收获就是认识了FPGA,知道如何用FPGA。
在设计中,从最开始的分频器,到动态显示,再到测试计数器模块,控制模块的设计,从这个过程中我知道了用FPGA设计电路的全过程,以及设计一个大项目把它分成多个模块进行设计,从而各个模块独立,可以分别仿真,从而知道设计的正确性,不用在总电路中苦苦寻找错误,只要最后把各个模块链接起来就行了,对后面修改也有帮助。
在这次课程设计后,我更加熟悉了FPGA,以后可以用它设计出自己的东西,在实验中,我成功的设计出了完全满足老师设计要求的电路,从一开始的到处出错:
数码管也不亮,计数乱七八糟,测试灯乱闪而且一直不停等等,到后来的完全符合设计要求,感觉很有成就感。
附图生理刺激反应时间测试总图
参考文献
[1]崔葛瑾.<
<
基于FPGA的数字电路系统设计>
>
西安电子科技大学出版社.2008
[2]杨颂华.<
数字电子技术基础>
:
西安电子科技大学出版社.2009
时光荏苒,感谢教给我人生道理的老师。
结语: