EDA课程设计_病房呼叫系统的设计说明.docx
.病房呼叫系统的设计1 设计要求1用 5 个开关模拟 5 个病房的呼叫输入信号,1 号优先级最高; 1 到 5 优先级依次降低;2用一个数码管显示呼叫信号的号码;没信号呼叫时显示0;又多个信号呼叫时,显示优先级最高的呼叫号(其它呼叫号用指示灯显示);3凡有呼叫发出 5 秒的呼叫声;4对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理(附加)。2 设计思路及方案用 74148 优先编码器来实现病房呼叫的优先显示,用 7447 七段字形译码器接半导体数码管来用数字显示最高优先级的病房号,用计数器 74193 来实现模五的计数器,调节 clock 输入脉冲的频率来实现五秒的控制来实现闪烁五秒。再用 D 触发器来实现锁存和复位清零功能。3 设计过程3.1优先编码和数据清零模块优先编码和数据清零模块的电路图如图1 所示。. 下载可编辑 .图 1 优先编码和数据清零模块该病房呼叫系统一共有6 个输入,分别是15 号病房的呼叫开关num1num5和 1 个复位清零健 action (初始工作时至“ 1”),这六个开关配合D触发器来实现清零复位。由于74148 低电平有效,所以输入74148 前先用非门取反,此电路用到的74148 管脚输入对应输出真值表如表1 所示。表 1 74148 输入输出真值表输入输出XXXX0001XXX01010XX011011X0111100011111013.2模五计数器以及灯闪烁五秒的模拟. 下载可编辑 .模五计数器电路图如图2 所示。图 2 模五计数器电路图如图先将 74193 接成模五计数器,当有病房呼叫时 CLR为 0,计数器计数,当没有病房呼叫时计数器清零,通过调节 clock 输入脉冲的频率来实现闪烁五秒的控制。3.3显示病房号功能显示病房号功能的电路图如图3 所示。图 3 显示病房号的电路图说明:该模块的输入为74148 的输入,通过 7447 七段字形译码器进译码,将结果输出到半导体数码管进行显示。. 下载可编辑 .3.4设计总图设计总图如图 4 所示。图 4 设计总图说明:护士将 action 调节为 1,表示工作。当有病人呼叫时,数码管显示优先级高的病房号,所有的指示灯均亮。 74193 和脉冲输入 clock 来控制灯闪烁 5 秒。该设计基本上实现了病房呼叫系统的基本要求。4 仿真结果. 下载可编辑 .图 5 3 号床位呼叫仿真图3 号床位呼叫仿真图如图5 所示。开始时, 7447 输出编码为 0000001,相应的半导体数码管显示为0. 当 3 号病房呼叫,闪烁灯开始闪烁5 秒, out3 指示灯亮, 7447 输出编码为: 0000110,对应的显示数字符号为3. 护士按下 action使其为 0,实现复位。. 下载可编辑 .图 6 2 、 3、 4 号床位同时呼叫仿真图2,3,4 病房同时呼叫的仿真图如图6 所示。 2、 3、 4 同时呼叫时闪烁灯开始闪烁 5 秒, out2,out3,out4指示灯亮, 7447 输出编码为: 0010010,对应的数码显示为 2.图 7 复位后新一轮的呼叫仿真图复位后新一轮的呼叫仿真图如图7 所示。护士复位后,开始新一轮的病房呼叫。. 下载可编辑 .图 8 优先级高的呼叫仿真图优先级高的呼叫仿真图如图8 所示。优先级高的呼叫时,在还没处理低的优先级时,有高优先级呼叫,数码显示会变成高优先级病房号的显示。设计总结. 下载可编辑 .本设计是为在病人紧急需要时能很快进行救治的呼叫系统, 增强医护人员更好的监护病人。此系统的优点特色在于可以设立呼叫优先等级而不是单纯的病人呼叫,这样避免在有多个病人同时呼叫时,医护人员不知道应该先救治哪个。在设计初期我不知道当有多个病人同时发出信号呼叫时,优先信号被优先编码器编码后,再经过译码显示后,医护人员处理完高级别信号,按下清零键;怎么样认其他病人的信号按照优先级别先后显示?当多信号同时呼叫时,对较低等级的呼叫信号不知道怎么处理,才能保证当高级别的信号被清零后,低级别的信号能及时的由系统自动呼出,而不再需要人为的控制输出的问题始终没有能找到合适有效的方法。还有就是如何实现在医护人员已处理完毕当前呼叫的病人后,系统对当前呼叫信号的清零以保证其他呼叫信号能够及时的呼出以便医护人员能及时的对其他病人进行救治,从而避免因系统对病人呼叫信号的延迟导致病人不能及时接受护理而产生的严重后果。特别是控制清零这个问题苦恼了我很长的时间,后来才在我翻阅相关书籍和浏览相关网站时找到了解决问题的办法,才知道这些问题可以通过对锁存器的合理使用来一一解决。这也使我对学习的认识有了更深入的了解,对理论联系实际有了更加深刻的体会。. 下载可编辑 .参考文献1 Mark Zwolinski.Digital System Design with VHDL.电子工业出版社,20022 汪国强 .SOPC技术与应用 . 机械工业出版社, 20063 范忠 . 实用数字电子技术 . 电子工业出版社, 19984 刘延飞 . 数字电子技术实验与仿真 . 西北工业大学出版社, 20105 侯建军,郭勇 .SOPC技术基础教程 . 清华大学出版社, 2008. 下载可编辑 .附录 设计程序1:非门library ieee;entityas_not isport(a:in std_logic;f:out std_logic);end as_not;architecture behave of as_not isbeginf<=not a;end behave;2:2 输入与非门library ieee;entityas_nand2 isport(a:in std_logic;b:in std_logic;f:out std_logic);end as_nand2;architecture behave of as_nand2 is. 下载可编辑 .beginf<=a nand b;end behave;3:2 输入与门library ieee;entityas_and2 isport(a:in std_logic;b:in std_logic;f:out std_logic);end as_and2;architecture behave of as_and2 isbeginf<=a AND b;end behave;4:优先编码器 74148library ieee;entity as_74148 isport(D:in std_logic_vector(7 downto 0);E1:in std_logic;. 下载可编辑 .Q:out std_logic_vector(2 downto 0);GS:out std_logic;E0:out std_logic);end as_74148;architecture rtl of as_74148 isbeginprocess(E1,D)beginif(e1='1') thenQ<="111"GS<='1'E0<='1'elsif(D="11111111" and E1='0') thenQ<="111"GS<='1'E0<='0'elsif(D(7)='0' and E1='0')thenQ<="000"GS<='0'E0<='1'elsif(D(6)='0' and E1='0')then. 下载可编辑 .Q<="001"GS<='0'E0<='1'elsif(D(5)='0' and E1='0')thenQ<="010"GS<='0'E0<='1'elsif(D(4)='0' and E1='0')thenQ<="011"GS<='0'E0<='1'elsif(D(3)='0' and E1='0')thenQ<="100"GS<='0'E0<='1'elsif(D(2)='0' and E1='0')thenQ<="101"GS<='0'E0<='1'elsif(D(1)='0' and E1='0')thenQ<="110". 下载可编辑 .GS<='0'E0<='1'elsif(D(0)='0' and E1='0')thenQ<="111"GS<='0'E0<='1'elseQ<="111"GS<='1'E0<='0'end if;end process;end rtl;5:7447 数码显示:library ieee;entity as_7447 isport(. 下载可编辑 .num:in std_logic_vector(3 downto 0);dout:out std_logic_vector(6 downto 0);end as_7447;architecture a1 of as_7447 isbeginwith num selectdout<="1111110" when "0000","0110000" when "0001","1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","0000000" when others;end a1;6:D 触发器library ieee;. 下载可编辑 .entity as_d isport(D:in std_logic;CP:in std_logic;R:in std_logic;Q:out std_logic;QB:out std_logic);end as_d;architecture rtl of as_d isbeginprocess(CP,R)beginif(CP' event and cp='1')thenif(R='0')thenQ<='0'QB<='1'ELSEQ<=D;QB<=not D;end if;end if;. 下载可编辑 .end process;end rtl;. 下载可编辑 .