EDA课程设计病房呼叫系统的设计文档格式.docx
《EDA课程设计病房呼叫系统的设计文档格式.docx》由会员分享,可在线阅读,更多相关《EDA课程设计病房呼叫系统的设计文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
输入
输出
X
1
3.2模五计数器以及灯闪烁五秒的模拟
模五计数器电路图如图2所示。
图2模五计数器电路图
如图先将74193接成模五计数器,当有病房呼叫时CLR为0,计数器计数,当没有病房呼叫时计数器清零,通过调节clock输入脉冲的频率来实现闪烁五秒的控制。
3.3显示病房号功能
显示病房号功能的电路图如图3所示。
图3显示病房号的电路图
说明:
该模块的输入为74148的输入,通过7447七段字形译码器进译码,将结果输出到半导体数码管进行显示。
3.4设计总图
设计总图如图4所示。
图4设计总图
护士将action调节为1,表示工作。
当有病人呼叫时,数码管显示优先级高的病房号,所有的指示灯均亮。
74193和脉冲输入clock来控制灯闪烁5秒。
该设计基本上实现了病房呼叫系统的基本要求。
4仿真结果
图53号床位呼叫仿真图
3号床位呼叫仿真图如图5所示。
开始时,7447输出编码为0000001,相应的半导体数码管显示为0.当3号病房呼叫,闪烁灯开始闪烁5秒,out3指示灯亮,7447输出编码为:
0000110,对应的显示数字符号为3.护士按下action使其为0,实现复位。
图62、3、4号床位同时呼叫仿真图
2,3,4病房同时呼叫的仿真图如图6所示。
2、3、4同时呼叫时闪烁灯开始闪烁5秒,out2,out3,out4指示灯亮,7447输出编码为:
0010010,对应的数码显示为2.
图7复位后新一轮的呼叫仿真图
复位后新一轮的呼叫仿真图如图7所示。
护士复位后,开始新一轮的病房呼叫。
图8优先级高的呼叫仿真图
优先级高的呼叫仿真图如图8所示。
优先级高的呼叫时,在还没处理低的优先级时,有高优先级呼叫,数码显示会变成高优先级病房号的显示。
设计总结
本设计是为在病人紧急需要时能很快进行救治的呼叫系统,增强医护人员更好的监护病人。
此系统的优点特色在于可以设立呼叫优先等级而不是单纯的病人呼叫,这样避免在有多个病人同时呼叫时,医护人员不知道应该先救治哪个。
在设计初期我不知道当有多个病人同时发出信号呼叫时,优先信号被优先编码器编码后,再经过译码显示后,医护人员处理完高级别信号,按下清零键;
怎么样认其他病人的信号按照优先级别先后显示?
当多信号同时呼叫时,对较低等级的呼叫信号不知道怎么处理,才能保证当高级别的信号被清零后,低级别的信号能及时的由系统自动呼出,而不再需要人为的控制输出的问题始终没有能找到合适有效的方法。
还有就是如何实现在医护人员已处理完毕当前呼叫的病人后,系统对当前呼叫信号的清零以保证其他呼叫信号能够及时的呼出以便医护人员能及时的对其他病人进行救治,从而避免因系统对病人呼叫信号的延迟导致病人不能及时接受护理而产生的严重后果。
特别是控制清零这个问题苦恼了我很长的时间,后来才在我翻阅相关书籍和浏览相关网站时找到了解决问题的办法,才知道这些问题可以通过对锁存器的合理使用来一一解决。
这也使我对学习的认识有了更深入的了解,对理论联系实际有了更加深刻的体会。
参考文献
[1]MarkZwolinski.DigitalSystemDesignwithVHDL.电子工业出版社,2002
[2]汪国强.SOPC技术与应用.机械工业出版社,2006
[3]范忠.实用数字电子技术.电子工业出版社,1998
[4]刘延飞.数字电子技术实验与仿真.西北工业大学出版社,2010
[5]侯建军,郭勇.SOPC技术基础教程.清华大学出版社,2008
附录设计程序
1:
非门
libraryieee;
useieee.std_logic_1164.all;
entityas_notis
port(a:
instd_logic;
f:
outstd_logic);
endas_not;
architecturebehaveofas_notis
begin
f<
=nota;
endbehave;
2:
2输入与非门
entityas_nand2is
b:
endas_nand2;
architecturebehaveofas_nand2is
=anandb;
3:
2输入与门
entityas_and2is
endas_and2;
architecturebehaveofas_and2is
=aANDb;
4:
优先编码器74148
entityas_74148is
port(D:
instd_logic_vector(7downto0);
E1:
Q:
outstd_logic_vector(2downto0);
GS:
outstd_logic;
E0:
endas_74148;
architecturertlofas_74148is
process(E1,D)
begin
if(e1='
1'
)then
Q<
="
111"
;
GS<
='
E0<
elsif(D="
11111111"
andE1='
0'
elsif(D(7)='
)then
000"
elsif(D(6)='
001"
elsif(D(5)='
010"
elsif(D(4)='
011"
elsif(D(3)='
100"
elsif(D
(2)='
101"
elsif(D
(1)='
110"
elsif(D(0)='
else
endif;
endprocess;
endrtl;
5:
7447数码显示:
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityas_7447is
port
(
num:
instd_logic_vector(3downto0);
dout:
outstd_logic_vector(6downto0)
);
endas_7447;
architecturea1ofas_7447is
withnumselect
dout<
1111110"
when"
0000"
"
0110000"
0001"
1101101"
0010"
1111001"
0011"
0110011"
0100"
1011011"
0101"
1011111"
0110"
1110000"
0111"
1111111"
1000"
1111011"
1001"
0000000"
whenothers;
enda1;
6:
D触发器
entityas_dis
CP:
R:
QB:
endas_d;
architecturertlofas_dis
process(CP,R)
if(CP'
eventandcp='
if(R='
QB<
ELSE
=D;
=notD;
endif;
endprocess;