病房呼叫系统控制器的FPGA实现.docx
- 文档编号:23933520
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:26
- 大小:708.58KB
病房呼叫系统控制器的FPGA实现.docx
《病房呼叫系统控制器的FPGA实现.docx》由会员分享,可在线阅读,更多相关《病房呼叫系统控制器的FPGA实现.docx(26页珍藏版)》请在冰豆网上搜索。
病房呼叫系统控制器的FPGA实现
病房呼叫系统控制器的FPGA实现
摘要
病房呼叫系统控制器,是为患者与医护人员构建的一座连接桥梁,是患者在医护人员远离病房时向医护人员发出求救信号的一种新型的仪器。
在比较了各种设计方法的基础上,最终采用模块化设计、VHDL语言与原理图相结合的方法来完成这次设计,从而实现病房呼叫系统控制器的功能。
本次设计通过运用硬件描述语言VHDL设计病房呼叫系统控制器,开始介绍了病房呼叫系统控制器的研究内容、创新点、设计原理、基本组成与功能的具体实现。
然后将病房呼叫系统控制器分成各个功能模块,通过编写各个模块代码程序并编译仿真验证其功能,并将达到设计要求的各个模块连接在一起,完成我们的顶层文件设计。
通过在试验箱上测试,发现完全符合我们的设计要求。
关键词:
病房呼叫;系统;现场可编程门阵列;模块;超高速集成电路硬件描述语言
ImplementationofWardCallingSystemControllerBasedonFPGA
Abstract
Wardcallingsystemcontroller,isforpatientsandmedicalstafftobuildabridgetoconnect,ispatientstomedicalstaffinmedicalstafffromthewardsentadistresssignalanewtypeofinstrument.Incomparisonofthevariousdesignmethods,onthebasisofusingmodulardesign,VHDLlanguageandthemethodofcombiningtheprinciplediagramtofinishthedesign,soastorealizethefunctionofwardcallingsystemcontroller.
ThedesignbyusingVHDLhardwaredescriptionlanguagedesignwardcallingsystemcontroller,begantointroducetheresearchcontentofthewardcallingsystemcontroller,innovative,designprinciple,basiccompositionandfunctionofthespecificimplementation.Thenwardcallingsystemcontrollerisdividedintovariousfunctionalmodules,eachmodulebywritingcodeandcompilethesimulationverifyitsfunction,andwillmeetthedesignrequirementsofvariousmodulestogether,dowedesignthetopofthefile.Throughthetestinthetestchamber,foundfullymeetourdesignrequirements.
Keywords:
Wardcalling,system,FPGA,Modules,VHDL
1引言
1.1设计背景
随着科学技术的发展人类社会迎来了信息时代的到来,信息时代依托电子工业、计算机技术的快速发展,电子工业的发展以EDA技术为核心[1]。
EDA技术经过20多年的发展,设计方法已经基本成形,能满足日常生活中的大部分设计要求,为人类生活创造便利[2]。
它集中了各大编程语言典型的优点,形成了其特有的由底层到顶层进行模块化设计的方法,为这次设计提供了技术上的支持。
1.2QUARTUSII与VHDL语言简介
QUARTUSII是Altera公司的综合性CPLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL等多种设计输入形式,可以通过加载第三方工具来完成设计,应用面较为广泛[3]。
因QUARTUSII自带的仿真功能,它可以提前进行系统设计,加载到试验箱上进行验证,逐步调试改进,使设计的系统满足日常生活需要,再投入生产,推广上市[4]。
而VHDL作为一门硬件描述语言,语言本身相对其它编程语言而言,相对简单一些,容易上手;它的库文件相当强大,并且调用时几乎不会消耗资源;它与数字电路联系比较密切,建立在数字电路的基础上,能轻松的完成各类复杂电路的设计。
2病房呼叫系统控制器的设计
2.1研究目的
随着经济的不断发展,人们越来越忙碌,对健康逐渐忽视,疾病也悄悄来临,病号也越来越多,传统的病房呼叫系统由于效率低,处理慢,许多病人也不能够得到及时、有效的治疗,使得病情越来越严重,医生处理起来容易错乱[5]。
对于医院也会有经济效益损失,并伴有一定安全隐患。
在FPGA的基础上,开发出病房呼叫系统控制器,能够有效提高患者就诊速率,让人们有病及时可医。
开发一款新型的病房呼叫系统就显得极为迫切!
2.2论文研究内容及创新点
本设计由锁存器、数据选择器、显示器等部分组成,考虑到系统的功能较复杂,所以采用分块设计的模式[6]。
先设计好底层各模块,再到顶层进行综合,然后在实验箱上进行病房呼叫系统控制器的模拟验证。
通过VHDL语言完成模块文件设计,然后将各模块整合起来实现系统功能[7]。
用VHDL语言设计创新点如下:
1.可以通过仿真来模拟现实仪器,不需要在设计时就开始做出成品实物;
2.语言运用灵活,可在各种进程间相互调用,设计思路清晰;
3.通过数字电路设计就可实现仪器功能,不同于传统的单片机设计;
4.支持多人的并行设计,适合团队合作,分工设计。
3病房呼叫系统控制器的实现
3.1设计原理
在优先级顺序为1-8的病房里分别设置一个呼叫医护人员的按钮,在试验箱上用8个拨位开关来模拟,拨位开关指示灯亮表示病房患者有求助信号,拨位开关指示灯灭表示病房患者无求助信号。
在医护人员的办公室里设置1-8个对患者产生应答的开关按钮,在试验箱上也用8个拨位开关来模拟,拨位开关指示灯亮表示医护人员无应答信号,拨位开关指示灯灭表示医护人员有应答信号。
病房和医护室里都有LED提示灯,有应答后,灯灭,提示患者有医护人员即将来病房,提示之后的医护人员,有医护人员已经去相应的病房,在试验箱上用8个连续的LED灯表示。
在显示时,要按照优先级1-8号病房的顺序进行显示,并且显示该病房患者自发出求助信号的等待时间。
在该时间为1-9秒时,喇叭发出持续9秒的提示声;等时间过完3分钟后,在3分1-9秒喇叭再次发出持续9秒的提示声,以达到提醒医护人员的作用,完成这次设计。
3.2病房呼叫系统控制器的原理图
图3-1病房呼叫系统原理图
病房呼叫系统控制器原理图如图3-1所示,通过各功能模块系统的组合形成整体结构原理,完成整个控制器的功能实现。
3.3模块的划分
1.锁存器模块,通过对病房患者的呼出信号与医护人员的应答信号作对比,得出无应答的病房状态并存储下来;
2.数据选择器模块,在无应答的病房状态中,按顺序1-8选出优先级更高的病房号;
3.时间选择器模块,根据无应答且优先级高的病房号来确定相对应的时间显示,并制造一个用来计时的控制端;
4.计时器模块,接收到计时的控制信号,开始计时;
5.显示器模块,用来控制数码管显示病房号和时间;
6.连接器模块,连接计时器和蜂鸣器,使喇叭能根据时间来发声;
7.蜂鸣器模块,模拟现实中的喇叭,以发出警告声。
3.4系统各功能模块的实现
3.4.1锁存器模块
图3-2锁存器模块
该模块要满足对8个病房呼出与应答信号的判定,设置8位的输入信号sin[7..0],当每一位上产生高电平时,由低位到高位分别代表1-8号病房患者发出了求助信号。
类似的设置了8位代表医护人员应答的信号rest[7..0],但是它每一位上的电平为低时,代表应答信息。
由这两路输入每一位相互判定,就可得到每个病房无应答的存储信息,并将其与LED灯相连,当无医护人员应答时,LED灯亮,应答后灭,完成锁存器的设计。
3.4.2数据选择器模块
图3-3数据选择器模块
当不同病房的患者都发出求助信号时,数据选择器接收由锁存器传输过来的存储值,即sout1[7..0],它哪一位为高,由低位到高位分别代表1-8号病房无医护人员应答。
再根据由低位到高位的顺序,设置优先级输出,从而可以判定当前需要显示的病房号(这里用到BCD码相关知识)[9]。
且使该模块产生两路输出,均为当前显示的病房号。
分别传输给时间选择器模块和显示模块,达到对时间选择和显示的目的[8]。
进而达到对病房号进行优先选择的功能,完成对数据选择器的设计。
3.4.3时间选择器模块
复位是用来模拟应答信号的,要使复位起作用,它需要和锁存器及时间选择器都相连,以达到在病房产生呼叫信号且无应答时,能够控制时间显示,在有应答时,停止计时。
时间选择器要能够控制时间显示的是病房患者等待救护的时间,因此将它加到计时模块的前面,以实现这一功能。
锁存器将其存储的无应答信号通过数据选择器,产生一个对当前显示的病房号的独立的复位信号,还产生了一个控制计时器对当前最高优先级且无应答的病房号进行计时的启动端,因此实现了时间选择的目的。
图3-4时间选择器模块
3.4.4计时器模块
图3-5计时器模块
设计要求计时用四个数码管显示当前最高优先级病房的等待时间,时间精确到秒,所以时间采用的是以秒进位。
由于有求助信号sp=1,也即计时的控制端。
当sp=1,计时器开始工作,实验箱中的时钟频率可设置为4Hz,所以每出现四个上升沿时,时间立刻加计1s。
左边的两个数码管分别代表分的十位和个位,右边两个数码管分别代表秒的十位和个位。
3.4.5显示器模块
图3-6显示器模块
该模块要显示最高优先级且无医护人员应答的病房号及该病房等待医护人员来临的时间。
为了实现这一功能,将试验箱上的第8个数码管用来显示病房号,第5、4和2、1个数码管用来分别显示时间的分和秒,第3个数码管显示一横杠,方便读出当前的等待时间[10]。
一共用到6个数码管,clk1接65536Hz,配合ledcs[2..0]实现位选,使6个数码管能够同时显示。
disp[6..0]为段选信号,使得数码管能以10进制数在数码管上显示。
3.4.6连接器模块
图3-7连接器模块
在由底层到顶层进行电路设计时,为了使蜂鸣器模块根据时间来发出警告声,加入了一个连接模块,喇叭通过该模块判定具体时间而发声。
连接模块接收到时间模块的时间信息后,将所有时间信息整合,作为输出加到蜂鸣器作为输入,从而控制喇叭发声。
其中,连接器输出端的高四位和次高四位分别代表秒的个位和十位,中四位和低四位分别代表分的个位和十位。
3.4.7蜂鸣器模块
图3-8蜂鸣器模块
因无应答,当前产生呼叫信号且最高优先级的病房在计时后开始发出9秒的提示声以及灯亮3分钟后进行持续9秒的警告声,蜂鸣器模块是根据时间来发出警告声的,所以它必须通过连接器才能根据时间来发出警告声。
当bcd[15..0]的高四位为0001相当于时间过去1秒,为0010相当于时间过去2秒,同理可得其它时间。
在时间为1—9秒时试验箱上的喇叭开始发出警告声,给喇叭两个不同的频率,声音强弱交替,来模拟急救声。
(clk2、clk3交替输出,持续9秒,若输出为低电平,无法达到警告的条件,声音太小)。
在时间为9秒到3分钟这个时间段时,喇叭休息。
在时间为3分零1-9秒时,喇叭发出持续9秒的报警声。
4病房呼叫系统控制器的仿真及分析
4.1锁存器
图4-1锁存器波形图
波形分析:
如图4-1所示,sin[7..0]代表相应病房的呼叫信号,高电平代表病房有呼叫信号,低电平代表没有呼叫信号;rest[7..0]代表呼叫信号对应的应答信号,低电平代表对应病房的呼叫信号有应答,高电平代表对应病房的呼叫信号没有应答;sout1[7..0]、sout2[7..0]每位上若存在高电平,对应的是该病房没有应答。
当2号和3号病房有呼叫时,由于有应答,所以sout1[1],sout2[2]在rest[1]、rest[2]复位后,会输出复位后的波形,也即图中复位后的波形。
而5号病房发出呼叫信号(即sin[4]=1),因为没有应答,所以sout1[4]在发出呼叫信号的那一刻,一直会是高电平。
4.2数据选择器
图4-2数据选择器波形图
波形分析:
如图4-2所示,sout[1]、sout[3]、sout[5]分别对应2、4、6号病房,数据选择器是对无应答的病房根据1至8的优先级进行选择的,you[1]、you[2]指的是无医护人员应答并且优先级最高的病房号,因此输出的结果为2,即2号病房。
4.3时间选择器
波形分析:
如图4-3所示,rest[7..0]代表呼叫信号对应的应答信号,you1代表当前无医护人员应答的最高优先级病房号,为了进行波形仿真,这里的输入端设置的和锁存器及数据选择器的输出端一致,you1当前值2,输出lj为下一个模块提供复位输入,输出zq为下一个模块提供计时控制端。
图4-3时间选择器波形图
4.4计时器
图4-4计时器波形图
波形分析:
如图4-4所示,仿真波形中用的是4分频,之所以用四分频,是为了在实验当中可以通过适当改变频率,以加快实验进度,方便采集实验数据。
该图中4个脉冲周期为1秒,每次采集到4个上升沿,时间秒的个位加1,每60秒分的个位加1,以此类推。
在正常试验中,clk取4Hz,模拟现实中的1秒。
此图是在计时器的启动输入端为高电平,且复位高电平(复位未工作)的情况下,也即无医护人员应答,计时器开始计时,直到病房有相应的应答,开始对下一个最高优先级的病房进行计时。
4.5显示器
图4-5显示器波形图
波形分析:
如图4-5所示,试验箱中所用的是共阴极七段数码管,观察图中ledcs[2..0]的变化,当ledcs[2..0]=111时(第8个数码管),数码管显示1011011,对应的就是2,即2号病房,与当前最高等待应答的病房号是一样的。
第六个和第七个数码管未显示,即这两个数码管灭,因此输出为0000000。
当前等待时间为0,没有作任何设置,因此第1、2、4、5个数码管显示的都是零。
第3个数码管显示的是1000000,即一横杠。
4.6连接器
波形分析:
如图4-6所示,当second1[3..0]、second2[3..0]、minitue1[3..0]、minitue2[3..0]分别为0010、0101、0000、0000时,jishi[15..0]输出00000;当second1[3..0]、second2[3..0]、minitue1[3..0]、minitue2[3..0]分别为0011、0001、0100、0000时,jishi[15..0]输出00000,以此类推,从而达到将时间模块与蜂鸣器模块连在一起的效果。
图4-6连接器波形图
4.7蜂鸣器
图4-7蜂鸣器波形图
波形分析:
如图4-7所示,在当前等待时间为1-9秒时,蜂鸣器工作;在当前等待时间为10秒到3分钟时,蜂鸣器不工作;在当前等待时间为3分钟零1秒到9秒时,蜂鸣器工作。
警告时间持续9秒,用强弱交替的声音来模拟救护车的急救信号,在实验验证时,警告声相当理想。
这里在仿真时,当前等待时间的第10秒至3分钟之间没有加入到输入端,这一段蜂鸣器没有工作,为了截图和波形分析方便,因此将这一段省略。
4.8整体仿真
图4-8整体仿真波形图
波形分析:
如图4-8所示,当sin[2]为高电平,sin[7..0]的其他位均为低电平且当前呼叫信号无医护人员应答时,第8个数码管对应的是1001111,因为数码管是共阴极的,所以结果为3,即当前等待应答的病房号为3号病房。
在等待时间为1-9秒时,蜂鸣器发出警告声;在医护人员应答后,病房号不再显示。
5锁定管脚及硬件实现
5.1锁定管脚图
在验证病房呼叫系统控制器的功能之前,需要清楚实验箱与各个信号之间的对应关系,参照资料得出本设计中各引脚的对应情况,如图5-1、5-2。
图5-1系统输入锁定管脚图
图5-2系统输出锁定管脚图
5.2硬件实现
如图5-3所示,当6号病房有呼叫信号时,6号病房对应的LED灯亮,因无应答信号,数码管开始计时,图中已经计时到1分47秒,数码管显示病房号为6。
如图5-4所示,当6号病房有呼叫信号时,6号病房对应的LED灯亮,此时3号病房也有呼叫信号,因3号病房优先级更高,所以数码管显示病房号是3。
因无应答信号,数码管开始计时,图中已经计时到26秒。
如图5-5所示,因3号病房有医护人员应答,3号病房对应的LED灯灭,开始显示下一个最高优先级的无应答的病房号,从而数码管显示的病房号是6,图中已经计时到27秒。
病房呼叫信号1-8病房应答信号1-8
图5-3实验箱现象
病房呼叫信号1-8病房应答信号1-8
图5-4实验箱现象
病房呼叫信号1-8病房应答信号1-8
图5-5实验箱现象
下载完成后,将第一全局时钟CLK1的跳线器接:
4Hz(作为秒脉冲信号),将第二全局时钟CLK2的跳线器接65536Hz(作为位选信号),将第三全局时钟CLK3的跳线器接1024Hz(用来驱动喇叭),用拨位开关模拟控制病房的呼叫、应答。
观察数码管上数据的变化看是否符合设计标准。
在试验箱上第1-2个数码管显示等待时间的秒位,第3个数码管显示一横杠,第4-5个数码管显示等待时间的分位,第6-7个数码管不显示,第8个数码管显示病房号。
6设计总结
一开始设计病房呼叫系统控制器并不知道从何入手,对VHDL这门语言也不是很了解,虽然之前有学过,但是时间过去较长,已经不是很会使用了。
于是我开始又重新学习这门语言,由于自己之前有些编程基础,学起来比较快。
再加上自己学过的一些数字电路的基础知识,开始设计思路就慢慢清晰了。
在15天高强度的工作后,设计基本完成。
通过对每一模块的仿真和下载,测试是否满足设计要求。
在病房呼叫系统控制器的7个模块中,重点在于锁存器模块(suocunqi),数据选择器模块(shuju),时间选择器模块(shijian),计时器模块(time)、显示器模块(display)、连接器模块(lianjie)、蜂鸣器模块(fengming)。
至此,病房呼叫系统控制器的设计已全部完成,能按预期的效果进行模拟病房的呼叫、应答、警告等功能,由数码管显示病房号、等待时间。
在等待时间里,等待医护人员应答,应答后,开始下一个最高优先级病房等待时间计时。
为了使警告声音达到最好的效果,经过多次频率调试,蜂鸣器的频率设置为1024Hz,并且接入强弱交替的频率,用来模拟医院的救护声。
但是该设计是有缺陷的,在多个病房患者发出呼叫信息时,且无应答的情况下,当最高优先级的病房有应答,再显示此时最高优先级的病房时,等待时间是从零开始计时的,并没有做更深层次的挖掘。
以目前所学的知识,要使设计更完美,预计所用时间至少是现在的2倍,时间不允许,没有继续深入。
也进行过深层次的设计,短期内无法完成,因而中断了后续的设计。
参考文献
[1]徐飞.EDA技术与实践[M].北京:
清华大学出版社,2011:
2-12.
[2]曹昕燕.EDA技术试验与课程设计[M].北京:
清华大学出版社,2004:
2-30.
[3]梁勇.EDA技术教程[M].北京:
人民邮电出版社,2010:
11-32.
[4]刘昌华.数字逻辑EDA设计与实践[M].北京:
国防工业出版社,2005:
8-13.
[5]孟庆海,张洲.VHDL基础及经典实例开发[M].西安:
西安交通大学出版社,2008:
1-15.
[6]王行,李衍.EDA技术入门与提高[M].西安:
西安电子科技大学出版社,2005:
1-32.
[7]王毓银.数字电路逻辑设计[M].北京:
高等教育出版社,2005:
2-11.
[8]阎石.数字电子技术基础(第五版)[M].北京:
高等教育出版社,2011:
192-193.
[9]康华光,华中科技大学电子技术课程组.电子技术基础(数字部分)[M].北京:
高等教育出版社,2006:
32-51.
[10]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计(修订版)[M].西安:
西安电子科技大学出版社,2005:
3-9.
致谢
在本次毕业设计过程中,要感谢洪老师在设计上给予我的帮助,提供给我的支持与建议,解决了我半个月来一直遇到的运行程序警告多的问题。
并且在设计快完成时,陈老师建议我加入了LED灯显示,并调试喇叭的声音,最终我在老师的帮助下,成功设计出完美的医院急救模拟声。
这是我能顺利完成这次设计的主要原因,让我能把设计做得更加完善。
在此期间,我不仅学到了许多新知识,而且也开阔了视野,提高了自己的设计能力与动手能力。
其次,我要感谢帮助过我的同学们,我们选择了相同的老师,一起做设计,一起监督与促进,他们也为我解决了不少难题。
这些东西是无法在平时上课的过程中学到的,实践出真知,只有在实验中我们才能更好的学到东西,不用纸上谈兵,做无用功。
附录
1锁存器模块的VHDL编程
2数据选择器模块的VHDL编程
3时间选择器模块的VHDL编程
4计时器模块的VHDL编程
5显示器模块的VHDL编程
6连接器模块的VHDL编程
7蜂鸣器器模块的VHDL编程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 病房 呼叫 系统 控制器 FPGA 实现