随着生活水平的提高,医疗水平也不断的提高,患者需求的及时传达就显得尤为重要,因而病房呼叫系统是医院的必备设备之一,为方便患者和医护人员之间的及时联系、提高医疗服务质量都起着极其重要的作用。设计具有以下功能:模拟病房呼叫输入;显示优先级高的呼叫病房号,模拟呼叫声对优先级低的呼叫进行存储,处理完高优先级后处理再处理其他扩展功能可以自行针对开发板的功能模块具体设计合理的功能。t注意:在本文中,对设计的蜂鸣器呼叫时间进行了限制,考虑实际应用,这一限制不太合理,可以自行研究修改为持续呼叫。根据功能要求,设计为7个模块:锁存器模块、数据选择器模块、时间选择器模块、计时器模块、连接器模块、蜂鸣器模块、显示器模块。(每个模块的具体内容请移步上一篇文章《基于FPGA的病房呼叫系统》)。以及最后设计顶层封装,将各个模块连接。锁存器模块的VHDL语言设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SUOCUNQI ISPORT(REST:IN STD_LOGIC_VECTOR(7DOWNTO 0);//复位信号,高电平表示复位不工作,低电平表示复位SIN:IN STD_LOGIC_VECTOR(7DOWNTO 0);//8个输入信号SOUT1:OUT STD_LOGIC_VECTOR(7DOWNTO 0);//输出信号与LED灯相连,使得有呼叫信号时,与病房相对应的灯亮SOUT2:OUT STD_LOGIC_VECTOR(7DOWNTO 0);//输出信号连接数据选择器对信号进行选择SOUT3:OUT STD_LOGIC_VECTOR(7DOWNTO 0)//输出信号控制计时模块中的SP信号);END SUOCUNQI;ARCHITECTURE latchOF SUOCUNQI ISSIGNAL SOUT:STD_LOGIC_VECTOR(7DOWNTO 0);BEGINPROCESS(REST,SIN)//复位信号和输入信号为敏感信号BEGINIF REST(0)='1'AND SIN(0)='1'THEN SOUT(0)='1';//进程内为顺序语句ELSE SOUT(0)='0';END IF;IF REST(1)='1'AND SIN(1)='1'THEN SOUT(1)='1';ELSE SOUT(1)='0';END IF;IF REST(2)='1'AND SIN(2)='1'THEN SOUT(2)='1';ELSE SOUT(2)='0';END IF;IF REST(3)='1'AND SIN(3)='1'THEN SOUT(3)='1';ELSE SOUT(3)='0';END IF;IF REST(4)='1'AND SIN(4)='1'THEN SOUT(4)='1';ELSE SOUT(4)='0';END IF;IF REST(5)='1'AND SIN(5)='1'THEN SOUT(5)='1';ELSE SOUT(5)='0';END IF;IF REST(6)='1'AND SIN(6)='1'THEN SOUT(6)='1';ELSE SOUT(6)='0';END IF;IF REST(7)='1'AND SIN(7)='1'THEN SOUT(7)='1';ELSE SOUT(7)='0';END IF;END PROCESS;SOUT1=SOUT;SOUT2=SOUT;SOUT3=SOUT;END ARCHITECTURE latch;数据选择器模块的VHDL语言设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DATA_SELECTISPORT(SOUT:IN STD_LOGIC_VECTOR(7DOWNTO 0);YOU1:OUT STD_LOGIC_VECTOR(3DOWNTO 0);YOU2:OUT STD_LOGIC_VECTOR(3DOWNTO 0));END DATA_SELECT;ARCHITECTURE Data_selectorOF DATA_SELECTISSIGNAL YOU:STD_LOGIC_VECTOR(3DOWNTO 0);BEGINPROCESS(SOUT,YOU)//对病房号进行选择BEGIN//if多选择语句自顶向下的优先特性,先描述的优先级高,后描述的优先级低,1号优先级最高,8号优先级最低IF SOUT(0)='1' THEN YOU="0001";//SOUT(0)为高电平时,输出1号病房ELSE IF SOUT(1)='1' THEN YOU="0010";ELSE IF SOUT(2)='1' THEN YOU="0011";ELSE IF SOUT(3)='1' THEN YOU="0100";ELSE IF SOUT(4)='1' THEN YOU="0101";ELSE IF SOUT(5)='1' THEN YOU="0110";