基于FPGA的病房呼叫系统的设计.doc

上传人:爱问知识人 文档编号:5020519 上传时间:2020-01-29 格式:DOC 页数:32 大小:333.50KB
返回 下载 相关 举报
基于FPGA的病房呼叫系统的设计.doc_第1页
第1页 / 共32页
基于FPGA的病房呼叫系统的设计.doc_第2页
第2页 / 共32页
基于FPGA的病房呼叫系统的设计.doc_第3页
第3页 / 共32页
基于FPGA的病房呼叫系统的设计.doc_第4页
第4页 / 共32页
基于FPGA的病房呼叫系统的设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《基于FPGA的病房呼叫系统的设计.doc》由会员分享,可在线阅读,更多相关《基于FPGA的病房呼叫系统的设计.doc(32页珍藏版)》请在三一文库上搜索。

1、基于FPGA的病房呼叫系统的设计基于FPGA的病房呼叫系统的设计中文摘要: 病房呼叫系统,顾名思义,是病人在医生与护士不在的情况下病人找寻医生寻求帮助的系统。该病房呼叫系统是基于FPGA的,通过FPGA设计的不同设计方法的比对,最后采用的模块化设计,VHDL语言与原理图相结合的方法进行设计。充分利用了FPGA的可编程能力与VHDL语言的课移植性和原理图编辑的直观性等优点。来实现病房呼叫系统的功能实现。关键字:病房呼叫,系统,FPGA,模块,VHDL1 原理 假设有8个病房,即有八个信号输入,同时要有时间显示与声音提示。这在病房呼叫系统中是必不可少的。八个模拟病房呼叫输入端,假设一号优先级最高,

2、依次递减。当有一个信号输入时,其所对应的LED灯亮,并有提示音与时间和病房号显示,开始5秒伴随提示音,5秒后自动关闭提示音,在3分钟内如无应答,则在3分钟后发出警报,持续时间为5秒。当有多个信号同时输入时,病房呼叫系统选择优先级最高的进行显示时间,病房号与声音提示,其他的均只显示其对应的LED,并无时间显示。5秒声音提示以后3分钟内如无应答,再次发出警报。如在3分钟内有应答,则显示下一个病房的病房号与时间,同样当计时器的时间超过3分钟时报警,如在3分钟内有应答则显示下一个,以此类推。原理图:2 方案论证 我对这个设计开始和现在所用的设计不同的方案,但在顶层设计时发现并不好实现,中间的信号太多太

3、庞杂,连接起来比较复杂,但在后续编辑中没有预期的效果,在多次调试仿真中无法得到想要的结果,所以我选择了排除错误,首先从自身下手,对每个模块进行单独设计,利用VHDL语言的可移植性,应用原件例化语句将模块连接起来,通过例化后的电路图与原理图进行比较,看是否有连错等问题。3 模块的划分及各模块的功能实现3.1 模块的划分l 对病房呼叫的信号进行存储并处理信号,这就需要一个对信号进行存储的锁存器;l 对发出的信号进行优先选择,就需要一个数据选择器;l 对时间控制信号的优先选择,使数码管可以显示优先级最高的信号时间,又需要一个数据选择器;l 显示时间,并对其进行计时,需要一个计时器;l 用七段数码管显

4、示时间,需要一个可以驱动七段数码管的显示器;l 蜂鸣,就需要一个蜂鸣器;l 在设计变成的过程中,计时器与蜂鸣器的位宽不同,有需要一个转换连接的连接器。即分为锁存器、数据选择器、时间选择器、计时器、显示器、蜂鸣器与连接器几个模块组成。3.2 模块的功能实现:3.2.1 锁存器: 由于有8个病房,所以设计8个输入信号且高电平时为信号输入,另外考虑到时间模块显示的是当前等待时间,所以决定时间显示当前等待时间为最好,所以在所存模块,把复位加到锁存模块,高电平的时候表示复位不工作,低电平的时候表示复位。锁存器的一个输入信号与LED灯相连,使得有呼叫信号时,与病房相对应的灯亮。另外一个相同的输出信号连接数

5、据选择器对信号进行选择,还有一个相同输出信号控制计时模块中的SP信号。 程序: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SUOCUNQI IS PORT( REST:IN STD_LOGIC_VECTOR(7 DOWNTO 0); 输入信号 SIN:IN STD_LOGIC_VECTOR (7 DOWNTO 0); SOUT1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); SOUT2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); 三个相同的输出 SOUT3:OUT STD_LOGIC_VECTO

6、R(7 DOWNTO 0);END SUOCUNQI;ARCHITECTURE bhv OF SUOCUNQI IS SIGNAL SOUT:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(REST,SIN) BEGIN IF 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

7、)=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

8、(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 bhv;功能仿真:复位后的波形3.2.2 数据选择器由设计要求,数码管要显示优先级最高的病房的呼叫信号,所以我们须对病房呼叫信号进行选优,还考虑到对时间的优先级的问题,所以设计两个选择输出信号。程序功能部分按优先病房好顺序依次输出BCD码代表的1、2、3、4、5、6、7、8。程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_116

9、4.ALL;ENTITY HUANYOU ISPORT(SOUT:IN STD_LOGIC_VECTOR(7 DOWNTO 0); YOU1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); YOU2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END HUANYOU;ARCHITECTURE bhv OF HUANYOU IS SIGNAL YOU:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(SOUT,YOU)对病房号进行选择BEGIN IF SOUT(0)=1 THEN YOU=0001;ELSE IF S

10、OUT(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;ELSE IF SOUT(6)=1 THEN YOU=0111;ELSE IF SOUT(7)=1 THEN YOU=1000;ELSE YOU=0000;END IF ; END IF ; END IF ;END IF ; END IF ; END IF ; END IF ; END IF ;E

11、ND PROCESS;YOU1=YOU;YOU2=YOU;END ARCHITECTURE;功能仿真:通过选择,选出优先级最高的,这里为3号病房3.2.3 时间选择器:考虑到复位键一一对应的问题,我们的计时器又只用了一个,显示当前最优先病房的等待时间,所以时间选择器连在数据选择器的后面以及八个位宽的复位信号相连,然后通过数据选择器,使得输出地复位信号为当前最优先的病房所对应的复位信号。锁存器的一个输出信号也在这时进行优选,选出来的优先级最高的信号与计时器中的SP信号对应。程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HUANYOU2 IS

12、PORT(REST:IN STD_LOGIC_VECTOR(7 DOWNTO 0); YOU1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); SOUT3:IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; ZQ:OUT STD_LOGIC;对应计时器SP LJ:OUT STD_LOGIC);对应计时器的RESTEND HUANYOU2;ARCHITECTURE bhv OF HUANYOU2 IS BEGIN PROCESS(YOU1)BEGIN IF YOU1=0001 THEN LJ=REST(0);ELSE IF YOU1=0010 THEN LJ=R

13、EST(1);ELSE IF YOU1=0011 THEN LJ=REST(2);ELSE IF YOU1=0100 THEN LJ=REST(3);ELSE IF YOU1=0101 THEN LJ=REST(4);ELSE IF YOU1=0110 THEN LJ=REST(5);ELSE IF YOU1=0111 THEN LJ=REST(6);ELSE IF YOU1=1000 THEN LJ=REST(7);END IF; END IF; END IF;END IF; END IF; END IF; END IF; END IF;END PROCESS;PROCESS(SOUT3)B

14、EGINIF YOU1=0001 THEN ZQ=SOUT3(0);ELSE IF YOU1=0010 THEN ZQ=SOUT3(1);ELSE IF YOU1=0011 THEN ZQ=SOUT3(2);ELSE IF YOU1=0100 THEN ZQ=SOUT3(3);ELSE IF YOU1=0101 THEN ZQ=SOUT3(4);ELSE IF YOU1=0110 THEN ZQ=SOUT3(5);ELSE IF YOU1=0111 THEN ZQ=SOUT3(6);ELSE IF YOU1=1000 THEN ZQ=SOUT3(7);END IF; END IF; END I

15、F; END IF; END IF; END IF; END IF; END IF;END PROCESS;END ARCHITECTURE;功能仿真:3.2.4 计时器:由设计要求计时用四个数码管显示mm,ss,所以时间方面采用的是以秒进位,实验箱中频率为20MHz,所以选择了0:20000000即一秒的分频,另外由于有呼叫信号,SP=1,我们得立即即使,所以定义了每个1秒之内出现一个上升沿,当上升沿到来时时间加计1s,另外mmss之中前一个m代表的是分的十位,后一个代表的是分的个位,前一个s代表的是秒的十位,后一个s代表的是秒的个位。程序一和程序二的功能相同,程序一采用两个PROCESS语

16、句,程序一只用了一个PROCESS语句,但在顶层设计时程序一中的第二个PROCESS语句没有执行,所以在顶层设计中采用的是程序二。程序一:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TIME ISPORT(REST,SP,CLK:IN STD_LOGIC;SECOND1,SECOND2,MINITUE1,MINITUE2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END TIME;ARCHITECTURE TWO OF TIME ISSIGNAL TIME

17、CLK,MINI:STD_LOGIC;SIGNAL SEC1,SEC2:STD_LOGIC_VECTOR(3 DOWNTO 0 );SIGNAL MINI1,MINI2:STD_LOGIC_VECTOR(3 DOWNTO 0 ); BEGINMINITUE1(3 DOWNTO 0)=MINI1(3 DOWNTO 0);MINITUE2(3 DOWNTO 0)=MINI2(3 DOWNTO 0);SECOND1(3 DOWNTO 0 )=SEC1(3 DOWNTO 0);SECOND2(3 DOWNTO 0 )=SEC2(3 DOWNTO 0);PROCESS(CLK,SP)VARIABLE C

18、NT : integer range 0 to 20000000 ;BEGINIF CLKEVENT AND CLK =1 AND SP=1 THEN CNT := CNT +1;IF CNT 10000000 THEN TIMECLK=1;ELSE IF CNT 20000000 THEN TIMECLK=0;ELSE CNT :=0 ; TIMECLK=0;END IF; END IF; END IF;END PROCESS;PROCESS (TIMECLK,REST)BEGINIF REST=0 THENMINI2 =0000; MINI1=0000;SEC2=0000; SEC1 =0

19、000;ELSE IF TIMECLKEVENT AND TIMECLK =1 THENIF SEC11001 THEN SEC1=SEC1+1;ELSESEC1=0000;IF SEC20101 THEN SEC2=SEC2+1;ELSESEC2=0000;IF MINI11001 THEN MINI1=MINI1+1;ELSEMINI1=0000;IF MINI20101 THEN MINI2=MINI2+1;ELSEMINI2=0000;END IF ; END IF ; END IF ; END IF ;END IF ; END IF;TI=TIMECLK;END PROCESS ;E

20、ND TWO ;程序二:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TIME1 ISPORT(REST,SP,CLK:IN STD_LOGIC; TI: OUT STD_LOGIC; SECOND1,SECOND2,MINITUE1,MINITUE2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END TIME1;ARCHITECTURE TWO OF TIME1 ISSIGNAL TIMECLK:STD_LOGIC;SIGNAL CLK12:STD_LOG

21、IC_VECTOR(3 DOWNTO 0 );SIGNAL SEC1,SEC2:STD_LOGIC_VECTOR(3 DOWNTO 0 );SIGNAL MINI1,MINI2:STD_LOGIC_VECTOR(3 DOWNTO 0 ); BEGINMINITUE1(3 DOWNTO 0)=MINI1(3 DOWNTO 0);MINITUE2(3 DOWNTO 0)=MINI2(3 DOWNTO 0);SECOND1(3 DOWNTO 0 )=SEC1(3 DOWNTO 0);SECOND2(3 DOWNTO 0 )=SEC2(3 DOWNTO 0);PROCESS(CLK,SP)VARIAB

22、LE CNT : integer range 0 to 120 ;BEGINIF (CLKEVENT AND CLK =1) AND SP=1 THEN CNT := CNT +1;IF CNT 60 THEN TIMECLK=1;ELSE IF CNT 120 THEN TIMECLK=0;ELSE CNT :=0 ; TIMECLK=0;END IF;END IF;END IF;IF REST=0 THENMINI2 =0000; MINI1=0000;SEC2=0000; SEC1 =0000;ELSEIF TIMECLKEVENT AND TIMECLK =1 THENIF SEC11

23、001 THEN SEC1=SEC1+1;ELSESEC1=0000;IF SEC20101 THEN SEC2=SEC2+1;ELSESEC2=0000;IF MINI11001 THEN MINI1=MINI1+1;ELSEMINI1=0000;IF MINI20101 THEN MINI2=MINI2+1;ELSEMINI2=0000;END IF ;END IF ;END IF ;END IF ;END IF ;END IF;END PROCESS;END TWO ;功能仿真: 功能仿真中用的是4分频秒 十位秒 个位分 十位分 个位3.2.5 显示器:显示器所要显示的就是优先级最高的呼

24、叫病房的号码以及呼叫等待的时间mmss,所以在模块的设计当中,我们用六个数码管依次显示当前最优先呼叫病房号和分的十位,个位,再一个数码管显示一横杠,和秒计位区分开来,再依次是秒的十位,秒的个位。程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DISPLAY ISPORT(CLK:IN STD_LOGIC; SECOND1,SECOND2,MINITUE1,MINITUE2:IN STD_LOGIC_VECTOR(3 D

25、OWNTO 0) ; YOU:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DISP,LEDCS :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END DISPLAY;ARCHITECTURE ONE OF DISPLAY ISSIGNAL CLK_1K : STD_LOGIC ;SIGNAL DATA: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)VARIABLE CNT : INTEGER RANGE 0 TO 20000;1k的扫描信号BEGIN IF RISING_EDGE(CLK) THEN C

26、NT:=CNT+1;IF CNT 10000 THEN CLK_1K=1;ELSE IF CNT 20000 THEN CLK_1K=0;ELSE CNT:=0;CLK_1K=0;END IF; END IF; END IF;END PROCESS;PROCESS(CLK_1K)VARIABLE CNT2: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF CLK_1KEVENT AND CLK_1K =1 THEN CNT2 := CNT2 +1;IF CNT2 =0001 THEN LEDCS=00010000;片选信号DATA=MINITUE2;ELSE IF

27、CNT2 =0010 THEN LEDCS=00001000;DATA=MINITUE1;ELSE IF CNT2 =0011 THEN LEDCS=00000100;DATA=1010;ELSE IF CNT2 =0100 THEN LEDCS=00000010;DATA=SECOND2;ELSE IF CNT2 =0101 THEN LEDCS=00000001;DATA=SECOND1;ELSE IF CNT2 =0110 THEN LEDCS=00100000;DATADISPDISPDISPDISPDISPDISPDISPDISPDISPDISPDISPDISPDISPNULL;EN

28、D CASE;END PROCESS;END ONE;功能仿真: 扫描信号为4,时间输入为零,病房号为3病房号秒 个位秒 十位横杠分 个位分 十位3.2.6 连接器:由于各个模块成功之后进行顶层设计时,计时器与蜂鸣器的位宽不相等,故设计一个连接模块,使得两块模版能够顺利衔接起。连接模块的输出部分和时间模块的mmss各部分相互对应,模块输出部分位宽的1512位与计秒的个位的30位对应,位宽的118位与计秒的十位的30想对应,位宽的74位与计分的个位的30想对应,位宽的30位与计分的十位的30为相对应。程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTI

29、TY SOU ISPORT(SECOND1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); SECOND2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); MINITUE1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); MINITUE2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); JISHI : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END SOU;ARCHITECTURE ONE OF SOU ISBEGINJISHI(15 DOWNTO 12)=SECOND1;JIS

30、HI(11 DOWNTO 8)=SECOND2;JISHI(7 DOWNTO 4)=MINITUE1; JISHI(3 DOWNTO 0)=MINITUE2;END ARCHITECTURE ONE ;功能仿真:3.2.7 蜂鸣器:考虑到计时后发出5秒的提示声以及灯亮3分钟后进行报警,所以我设计的报警器模块和时间的连接模块是联系起来的,当输入为0001000000000000表示的是1秒,0010000000000000表示的是2秒,依次类推,当表示的时间是15秒时令蜂鸣器响,此时输出为低电平,表示的是蜂鸣器工作,当时间在6到3分钟之间的时候,编写程序另输出为高电平,此时蜂鸣器不工作。超过三分

31、钟时再另蜂鸣器工作5秒,进行报警工作。程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FENGMING ISPORT( BCD: IN STD_LOGIC_VECTOR(15 DOWNTO 0); MING: OUT STD_LOGIC);END FENGMING;ARCHITECTURE BHV OF FENGMING ISSIGNAL ING : STD_LOGIC;BEGIN PROCESS (BCD)BEGIN IF BCD=0000000000000000 THEN ING=1;ELSE IF BCD=00010000000000

32、00 THEN ING=0;ELSE IF BCD=0010000000000000 THEN ING=0;ELSE IF BCD=0011000000000000 THEN ING=0;ELSE IF BCD=0100000000000000 THEN ING=0;ELSE IF BCD=0101000000000000 THEN ING=0;ELSE ING=1; IF BCD=0000000000110000 THEN ING=0;ELSE IF BCD=0001000000110000 THEN ING=0;ELSE IF BCD=0010000000110000 THEN ING=0

33、;ELSE IF BCD=0011000000110000 THEN ING=0;ELSE IF BCD=0100000000110000 THEN ING=0;END IF ; END IF ; END IF ; END IF ;END IF ; END IF ; END IF ; END IF ;END IF ; END IF ; END IF ;MING SIN_ain ,SOUT1 = A , REST = RST_ain,SOUT3 = E , SOUT2 = SCOUT ); U2 : HUANYOU PORT MAP ( SOUT = A ,YOU1 = F ,YOU2 = G ); U3 : HUANYOU2 PORT MAP ( LJ = C ,ZQ = D ,REST = RST_ain,SOUT3 = E ,YOU1 = F ); U4 : TIME PORT MAP ( REST = C , SP = D , CLK = CLK_ain , SECOND1 = H ,SECOND2 = I , MINITUE1 = J , MINITUE2 = K ,SE1 = S1 ,SE2 = S2 , MI2 = M2 , MI1 = M1 , TI =L

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1