病房呼叫系统设计与仿真Word下载.docx
- 文档编号:20391045
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:20
- 大小:516.32KB
病房呼叫系统设计与仿真Word下载.docx
《病房呼叫系统设计与仿真Word下载.docx》由会员分享,可在线阅读,更多相关《病房呼叫系统设计与仿真Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
选优模块、对复位选优模块
计时模块
显示模块
连接模块、蜂鸣器模块
二)、模块具体设计
1.锁存模块:
由于有8个病房所以设计了8个输入信号且高电平时为信号输入,另外考虑到时间模块显示的是当前等待时间,所以时间显示当前等待时间为最好,所以在锁存模块,把复位加到锁存模块,高电平的时候表示复位不工作,低电平的时候表示复位。
锁存器的一个输入信号与LED灯相连,使得有呼叫信号时,与病房相对应的灯亮。
另外一个相同的输出信号连接选优器,对信号进行选优,还有一个相同输出信号控制计时模块中的SP信号。
2.选优模块:
由设计要求,数码管要显示优先级最高的病房的呼叫信号,所以须得对病房呼叫信号进行选优,还考虑到对时间的优先级的问题,所以设计了两个优先输出信号。
程序功能部分按优先病房号顺序依次输出BCD码代表的1、2、3、4、5、6、7、8.
3.选优2:
考虑到复位键一一对应的问题,我们的时间模块又只用了一个,显示当前最优先病房的等待时间,所以选优2模块连在选优模块的后面以及和8个位宽的复位信号相连,然后通过选优模块,使得输出地复位信号为当前最优先的病房所对应的复位信号。
锁存器模块的一个输出信号也在这时进行选优,选出来的优先级最高的信号与时间模块中的SP信号对应。
4.计时模块:
由设计要求计时用四个数码管显示mmss,所以时间方面采用的是以秒进位,实验箱中的时间频率为20MHZ,所以选择了0:
20000000即一秒的分频,另外由于有呼叫信号时,SP=1,我们得立即计时,所以定义了每个1秒之内出现一个上升沿,当上升沿到来时时间加计1s,另外mmss之中前一个m代表的是分的十位,后一个m代表的是分的个位,前一个s代表的是秒的十位,后一个s代表的是秒的个位。
5.显示模块:
显示模块所要显示的就是优先级最高的呼叫病房的号码以及呼叫等待的时间mmss,所以在模块的设计当中,我们用中间的六个数码管依次显示当前最优先呼叫病房号,分的十位,分的个位,再一个数码管显示一横杠,和秒计位区分开来。
在依次是秒的十位,秒的个位。
6.连接模块:
由于各个模块成功之后进行顶层设计时,时间模块和蜂鸣器模块的位宽不相等,故需要一个连接模块,使得两模块能够顺利衔接起来。
连接模块的输出部分和时间模块的mmss各部分相互对应,模块输出部分位宽的15-12位与记秒的个位的3-0位对应,位宽的11-8位与记秒的十位的3-0相对应,位宽的7-4位与记分的个位的3-0相对应,位宽的3-0位与记分的十位的3-0位相对应。
7.蜂鸣器模块:
考虑到计时后发出5秒的提示声以及灯亮3分钟后进行报警,所以报警器模块和时间的链接模块是联系起来的,当输入为0000000100000000表示的是1秒,0000001000000000表示的是2秒,以此类推,当表示的时间是1-5秒时令蜂鸣器响,此时输出为低电平,表是的是蜂鸣器工作。
当时间在6秒到3分钟之间的时候,编写程序另输出为高电平,此时蜂鸣器不工作。
超过三分钟时再令蜂鸣器工作5秒,进行报警工作,此时已经达到设计要求。
三、课程设计综合介绍
我们对这个模块刚开始设计了和现在不同的方案,然后顶层设计时发现并不好实现,而且连接之后模块也比较复杂,所以我们重新思考之后就有了现在模块的初稿,但是在顶层设定好之后,跑实验箱是显示的结果并不如预期的,多次调试没出结果之后,我选择了排除错误,首先从自身下手,我把顶层的连接改成了用系统框图表示,选它的优点是比较直观,设想正确的话基本上不会出现什么错误,所以,当问题再次出现时我考虑到了每个模块的逻辑问题,经过一个一个找出现的问题,从时间模块的SP的高低电平的修改,再到蜂鸣器和时间表示对应的修改,再到对选优模块最后执行语句YOU归零的修改,解决了计时器一直计时、蜂鸣器不工作、病房显示号不归零等问题,终于圆满的完成了实验的要求。
一)、病房呼叫系统框图如下:
二)、综合引脚配置如下:
三)总体功能仿真
三)、整体设计实现描述:
实验箱上有8个7段数码管、16个用户LED灯(8个大LED灯,8个小LED灯)、16个开关量输入端口、8个拨码开关、蜂鸣器等。
工程引脚锁定下载完后,将其下载进FPGA中,进行硬件测试。
具体实现如下:
实验箱中有8个7段数码管,我们只用到了其中的6个,除前两个外从左到右分别显示:
病房号码、minitue2、minitue1、——(横杠)、second2、second1。
对应病房号指示灯我们用8个小LED。
接通电源,计时程序已下载进实验箱,蜂鸣器开始时不响,6个数码管显示000--00,拨码开关从SW1-SW7依次表示的是病房号1-7,当按下拨码开关SW1时表示2号病房开始计时,蜂鸣器接着响5秒钟然后不响,到时间记为三分钟时又开始报警。
当同时按开关SW2与SW3时,病房号显示的还是2,因为病房2的优先级比病房三的要高,另外病房相应的拨码开关打开后,相应的指示灯也开始亮,小灯从左到右依次显示优先级从低到高的8个病房的呼叫情况。
实验的一个特色是设置了8个复位信号,我们主要考虑到一个实际问题,每一个复位键对应了当时优先级最高的一个病房的灯控和时间控制,当护士去处理优先级最高病房的呼叫信号时,按下复位键,发出一个确知信号:
有护士已经去处理这件事情了。
而一个复位键相较之的缺点是,当有多个呼叫信号时,按下复位键所有的信号均清零了。
病房呼叫系统整体程序
一、锁存器
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYSUOCUNQIIS
PORT(REST:
INSTD_LOGIC_VECTOR(7DOWNTO0);
SIN:
SOUT1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
SOUT2:
SOUT3:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDSUOCUNQI;
ARCHITECTUREbhvOFSUOCUNQIIS
SIGNALSOUT:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(REST,SIN)
BEGIN
IFREST(0)='
1'
ANDSIN(0)='
0'
THENSOUT(0)<
='
;
ELSESOUT(0)<
ENDIF;
IFREST
(1)='
ANDSIN
(1)='
THENSOUT
(1)<
ELSESOUT
(1)<
IFREST
(2)='
ANDSIN
(2)='
THENSOUT
(2)<
ELSESOUT
(2)<
IFREST(3)='
ANDSIN(3)='
THENSOUT(3)<
ELSESOUT(3)<
IFREST(4)='
ANDSIN(4)='
THENSOUT(4)<
ELSESOUT(4)<
IFREST(5)='
ANDSIN(5)='
THENSOUT(5)<
ELSESOUT(5)<
IFREST(6)='
ANDSIN(6)='
THENSOUT(6)<
ELSESOUT(6)<
IFREST(7)='
ANDSIN(7)='
THENSOUT(7)<
ELSESOUT(7)<
ENDPROCESS;
SOUT1<
=SOUT;
SOUT2<
SOUT3<
ENDARCHITECTUREbhv;
二、选优模块
ENTITYXUANYOUIS
PORT(SOUT:
YOU1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
YOU2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDXUANYOU;
ARCHITECTUREbhvOFXUANYOUIS
SIGNALYOU:
STD_LOGIC_VECTOR(3DOWNTO0);
PROCESS(SOUT,YOU)
IFSOUT(0)='
THENYOU<
="
0001"
ELSEIFSOUT
(1)='
0010"
ELSEIFSOUT
(2)='
0011"
ELSEIFSOUT(3)='
0100"
ELSEIFSOUT(4)='
0101"
ELSEIFSOUT(5)='
0110"
ELSEIFSOUT(6)='
0111"
ELSEIFSOUT(7)='
1000"
ELSEYOU<
0000"
ENDIF;
YOU1<
=YOU;
YOU2<
仿真分析
根据SOUT的不同的值给YOU赋值,并将最终结果赋给YOU1和YOU2
三、计时选优模块
ENTITYXUANYOU2IS
SOUT3:
INSTD_LOGIC_VECTOR(3DOWNTO0);
ZQ:
OUTSTD_LOGIC;
LJ:
OUTSTD_LOGIC);
ENDXUANYOU2;
ARCHITECTUREbhvOFXUANYOU2IS
PROCESS(YOU1)
BEGIN
IFYOU1="
THENLJ<
=REST(0);
ELSEIFYOU1="
=REST
(1);
=REST
(2);
=REST(3);
=REST(4);
=REST(5);
=REST(6);
=REST(7);
ENDPROCESS;
PROCESS(SOUT3)
IFYOU1="
THENZQ<
=SOUT3(0);
=SOUT3
(1);
ELSEIFYOU1="
=SOUT3
(2);
=SOUT3(3);
=SOUT3(4);
=SOUT3(5);
=SOUT3(6);
=SOUT3(7);
仿真分析:
第一个仿真图中,分别选通sout[0],sout[1],sout[4],sout[7],在选同的过程中,分别设置0,1电平,与其余电平不相同,所以可以看出选通的情况。
第二个仿真图中,分别选通sout[0],sout[1],sout[4],sout[6],sout[7],在选同的过程中,分别设置0,1电平,与其余电平不相同,所以可以看出选通的情况。
四、时间模块
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTIMEIS
PORT(REST,SP,CLK:
INSTD_LOGIC;
SECOND1,SECOND2,MINITUE1,MINITUE2:
ENDENTITYTIME;
ARCHITECTUREARTOFTIMEIS
SIGNALMINI:
STD_LOGIC;
--SIGNALTIMECLK:
SIGNALSEC1,SEC2:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALMINI1,MINI2:
MINITUE1(3DOWNTO0)<
=MINI1(3DOWNTO0);
MINITUE2(3DOWNTO0)<
=MINI2(3DOWNTO0);
SECOND1(3DOWNTO0)<
=SEC1(3DOWNTO0);
SECOND2(3DOWNTO0)<
=SEC2(3DOWNTO0);
--PROCESS(CLK,SP)
--VARIABLECNT:
INTEGERRANGE0TO100;
--分频1S
--BEGIN
--IFCLK'
EVENTANDCLK='
ANDSP='
THENCNT:
=CNT+1;
--IFCNT<
50THENTIMECLK<
--ELSIFCNT<
100THENTIMECLK<
--ELSECNT:
=0;
TIMECLK<
--ENDIF;
--ENDPROCESS;
--------------
PROCESS(CLK,REST,SP)--计时部分程序
BEGIN
IF(REST='
)THEN
MINI2<
MINI1<
SEC2<
SEC1<
ELSIF(CLK'
ANDSP='
)THEN--检验时钟上升沿
IFSEC1<
"
1001"
THENSEC1<
=SEC1+1;
ELSE
IFSEC2<
THENSEC2<
=SEC2+'
IFMINI1<
THENMINI1<
=MINI1+1;
ELSE
MINI1<
IFMINI2<
THENMINI2<
=MINI2+1;
MINI2<
ENDIF;
ENDART;
由上图可以看出,在始终的作用下,每隔一个始终脉冲,second1进一位,second1每进10位,second2进一位,second2每进6位,minitue1进一位,minitue1每进10位,minitue2进一位。
在此实验中,由于版面关系,所以没能捕捉到minitue2进位的情况。
五、连接模块
ENTITYSQUIS
PORT(SECOND1:
SECOND2:
MINITUE1:
MINITUE2:
JISHI:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
ENDSQU;
ARCHITECTUREONEOFSQUIS
JISHI(15DOWNTO12)<
=SECOND1;
JISHI(11DOWNTO8)<
=SECOND2;
JISHI(7DOWNTO4)<
=MINITUE1;
JISHI(3DOWNTO0)<
=MINITUE2;
ENDARCHITECTUREONE;
进行计时,将时钟的分的十位和个位分别赋给JISHI前4位和5~8位,将时钟的秒的十位和个位分别赋给JISHI9~12位和后13~16位,
六、蜂鸣模块
ENTITYFENGMINGIS
PORT(
BCD:
INSTD_LOGIC_VECTOR(15DOWNTO0);
MING:
ENDFENGMING;
ARCHITECTUREbhvOFFENGMINGIS
SIGNALING:
STD_LOGIC;
PROCESS(BCD)
IFBCD="
0000000000000000"
THENING<
ELSEIFBCD="
0001000000000000"
0010000000000000"
0011000000000000"
0100000000000000"
0101000000000000"
ELSEING<
0000000000110000"
0001000000110000"
0010000000110000"
0011000000110000"
0100000000110000"
MING<
=ING;
七、显示模块
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYDISPLAYIS
PORT(
CLK:
YOU:
--显示病房
DISP:
--显示代码
LEDCS:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)--数码管片选
);
ENDDISPLAY;
ARCHITECTUREONEOFDISPLAYIS
SIGNALCLK_1K:
SIGNALDATA:
CLK_1KHZ:
PROCESS(CLK)--产生1k的扫描信号
VARIABLECNT:
INTEGERRANGE0TO20
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 病房 呼叫 系统 设计 仿真