EDA课程设计——病房呼叫系统

合集下载

病房呼叫系统课程设计实验报告

病房呼叫系统课程设计实验报告

安徽科技大学数字电子技术课程设计题目: 病房呼叫系统**: **专业: 电子科学与技术班级: 112学号: **********指导教师:2013年06月15日安徽科技大学理学院病房呼叫系统一课程设计题目与实习目的课程设计题目:病房呼叫系统实习目的:1.掌握数字电路课程所学的理论知识以及数字电子技术在生活中的应用。

2.熟悉几种常用集成数字芯片的功能和应用,并掌握其工作原理,进一步学会使用其进行电路设计。

3.进一步深化对电子技术的了解,强化实际动手操作能力以及发现问题解决问题的方法。

4.培养认真严谨的工作作风和实事求是的工作态度。

5.数电课程实验是大学中为我们提供的一次动手实践的机会,增强实际动手操作与研发的能力。

二任务和要求要求:1.用1~5个开关模拟5个病房的呼叫输入信号,5号优先级最高;1~5优先级依次升高;2.用一个数码管显示呼叫信号的号码;没信号呼叫时显示0;又多个信号呼叫时,显示优先级最高的呼叫号(其它呼叫号用指示灯显示);3.凡有呼叫发出5秒的呼叫声;4.对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理(附加)。

三总体方案的选择病房呼叫系统整体思路为:●LED指示灯显示病房模块●数码管优先显示重病房模块●蜂鸣器报警5秒模块首先由病人按下呼叫器开关,即逻辑数据开关,(1)进入第一模块,通过LED指示灯显示病人呼叫的病房,(2)进入第二模块,传输到一个编码器进行编码,我这里选用的是74LS148,8线—3线优先编码器,其低电平为有效输入;然后再进行译码输出,我选用的是74LS48,为共阴极7段译码/驱动器,74LS148输出为反码输出,遂在74LS48前加上反向器进行输入;再用共阴极七段数码管进行输出。

(3)进入第三模块,通过一个与非门对信号进行处理,连接周期T为10秒,占空比为50%的方波发生器与信号一同通过与门,控制输出信号可以持续5秒,使蜂鸣器呼叫5秒。

流程图如下:与非门蜂鸣器与门四单元电路的设计1.设计所使用的元件及工具:(1)L ED指示灯模块LED显示灯----------------------------------------- 5个;保护电阻R=500Ω------------------------------------5个;(2)数码管显示模块编码器74LS148D-------------------------------------1个;反相器74LS04D--------------------------------------3个;译码器74LS48D--------------------------------------1个;(3)蜂鸣器呼叫模块与非门74LS30D -------------------------------------1个;方波发生器 ---------------------------------------1个;与门7408D -----------------------------------------1个;蜂鸣器 --------------------------------------------1个;另外:逻辑双掷开关5个;电源VCC、接地GND、导线若干。

EDA病床呼叫系统课程设计

EDA病床呼叫系统课程设计

EDA病床呼叫系统课程设计一、课程目标知识目标:1. 学生能够理解EDA病床呼叫系统的基本原理和功能;2. 学生能够掌握EDA病床呼叫系统中使用的传感器、微控制器和通信模块的基本工作原理;3. 学生能够了解医院病床呼叫系统的应用场景及其在现代医疗领域的重要性。

技能目标:1. 学生能够运用所学知识,设计简单的EDA病床呼叫系统电路图;2. 学生能够通过编程实现对病床呼叫系统的基本控制功能;3. 学生能够运用团队协作和沟通技巧,完成EDA病床呼叫系统的设计与展示。

情感态度价值观目标:1. 培养学生对电子技术应用于医疗领域的兴趣,增强社会责任感;2. 培养学生严谨的科学态度和良好的工程意识,提高创新精神和实践能力;3. 培养学生团队协作精神,学会尊重他人意见,提高沟通表达能力。

课程性质:本课程为电子技术与医疗领域相结合的实践性课程,旨在提高学生的电子技术应用能力和实际问题解决能力。

学生特点:学生具备一定的电子技术基础知识,具有较强的动手能力和探索精神,对新技术和新应用有较高的兴趣。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,鼓励学生动手实践,培养创新意识和团队协作能力。

通过本课程的学习,使学生能够达到上述课程目标,并为后续相关课程打下坚实基础。

二、教学内容1. 理论知识:- 电子技术基础知识回顾:传感器、微控制器原理、通信模块;- EDA病床呼叫系统的基本原理、系统架构及其功能;- 医院病床呼叫系统的应用场景及在现代医疗领域的价值。

2. 实践操作:- 设计简单的EDA病床呼叫系统电路图,包括传感器、微控制器和通信模块的连接;- 编程实现对病床呼叫系统的基本控制功能,如呼叫、解除呼叫等;- 组装和调试病床呼叫系统,确保系统正常运行。

3. 教学大纲:- 第一周:电子技术基础知识回顾,介绍EDA病床呼叫系统的基本原理和功能;- 第二周:学习医院病床呼叫系统的应用场景,设计系统电路图;- 第三周:编程实现病床呼叫系统的基本控制功能;- 第四周:组装、调试病床呼叫系统,并进行展示。

病房呼叫系统

病房呼叫系统

燕山大学EDA课程设计报告书题目:病房呼叫系统姓名:班级:学号:成绩:一、设计题目及要求题目:病房呼叫系统要求:1.用1~5个开关模拟5个病房的呼叫输入信号,1号优先级最高;1~5优先级依次降低;2.用一个数码管显示呼叫信号的号码;没信号呼叫时显示0;又多个信号呼叫时,显示优先级最高的呼叫号(其它呼叫号用指示灯显示);3.凡有呼叫发出5秒的呼叫声;4.对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理二、设计过程及内容(包括○1总体设计的文字描述,即由哪几个部分构成的,各个部分的功能及如何实现方法;○2主要模块比较详尽的文字描述,并配以必要的图片加以说明,但图片数量无需太多)1.设计概括:将设计分为三个模块信号存储模块(storage),显示模块(show)和蜂鸣时间控制模块(speaker)。

信号存储模块通过D触发器对信号进行存储,用复位信号对信号进行复位。

显示模块通过74148优先译码器对信号进行优先译码,使优先级高的译码输出,在BCD七段显示数码管中显示。

时间控制模块通过用计数器对蜂鸣器的响铃时间进行控制(5秒)。

2.模块分析:(1)信号存储模块用五个D触发器实现对输入信号的存储,patient1-patient5表示一号病房至五号病房的呼叫信号。

nurse1-nurse5为清零信号,用于对呼叫信号进行复位。

开关及复位信号都采用低电平有效。

当patient有低电平输入时,经过一个非门,变为高电平,上升沿动作,使D触发器工作。

因为D接高电平,所以Q输出高电平。

只要未复位,Q一直输出为高电平,使信号得以存储于num1-num5输出端,进入show模块。

nurse复位,使D触发器清零,则不再显示呼叫信号。

同时,patient1—patient5通过与非门连接构成了speaker模块的信号输入,只要任意病房呼叫(低电平信号输入),signal就输出高电平,信号进入speaker模块。

病房呼叫系统eda课程设计

病房呼叫系统eda课程设计

病房呼叫系统eda课程设计一、课程目标知识目标:1. 让学生了解病房呼叫系统的基本构成、功能及其在医疗领域的应用。

2. 使学生掌握EDA(电子设计自动化)的基本原理,并将其应用于病房呼叫系统的设计中。

3. 帮助学生理解病房呼叫系统中涉及的电子元件、电路原理及编程方法。

技能目标:1. 培养学生运用EDA工具进行病房呼叫系统电路设计的能力。

2. 提高学生动手实践能力,能独立完成病房呼叫系统的组装、调试与优化。

3. 培养学生团队协作能力,能在项目中进行有效沟通与分工。

情感态度价值观目标:1. 培养学生对电子工程领域的兴趣,激发其创新意识和探索精神。

2. 培养学生关注社会热点问题,认识到科技在医疗领域的重要作用。

3. 培养学生具备良好的职业道德,关注患者需求,提高服务质量。

课程性质:本课程为实践性强的电子设计课程,结合了电子技术、计算机技术和医疗领域知识。

学生特点:学生具备一定的电子基础知识,具有较强的动手能力和求知欲。

教学要求:注重理论与实践相结合,充分调动学生的主观能动性,培养学生的创新能力和团队协作精神。

通过课程学习,使学生能够将所学知识应用于实际项目中,为医疗领域的发展做出贡献。

二、教学内容1. 病房呼叫系统概述:介绍病房呼叫系统的基本功能、发展历程及其在医疗领域的应用。

教材章节:第一章第一节2. EDA技术简介:讲解EDA技术的概念、发展及其在电子设计中的应用。

教材章节:第二章第一节3. 病房呼叫系统电路设计:分析病房呼叫系统电路原理,介绍常用电子元件及其功能。

教材章节:第三章第一节、第二节4. EDA工具的使用:学习并掌握EDA工具(如Multisim、Protel等)的基本操作和电路设计方法。

教材章节:第四章5. 病房呼叫系统编程:介绍病房呼叫系统中的编程方法,包括单片机编程、嵌入式系统编程等。

教材章节:第五章6. 病房呼叫系统组装与调试:讲解病房呼叫系统的组装方法、调试技巧及故障排除。

教材章节:第六章7. 病房呼叫系统优化与改进:分析现有病房呼叫系统的不足,探讨优化与改进方案。

病房呼叫系统课程设计实验报告

病房呼叫系统课程设计实验报告

科技大学数字电子技术课程设计题目: 病房呼叫系统姓名: 汤智专业: 电子科学与技术班级: 112学号: 1886110220指导教师:2013年06月15日科技大学理学院病房呼叫系统一课程设计题目与实习目的课程设计题目:病房呼叫系统实习目的:1.掌握数字电路课程所学的理论知识以及数字电子技术在生活中的应用。

2.熟悉几种常用集成数字芯片的功能和应用,并掌握其工作原理,进一步学会使用其进行电路设计。

3.进一步深化对电子技术的了解,强化实际动手操作能力以及发现问题解决问题的方法。

4.培养认真严谨的工作作风和实事求是的工作态度。

5.数电课程实验是大学中为我们提供的一次动手实践的机会,增强实际动手操作与研发的能力。

二任务和要求要求:1.用1~5个开关模拟5个病房的呼叫输入信号,5号优先级最高;1~5优先级依次升高;2.用一个数码管显示呼叫信号的;没信号呼叫时显示0;又多个信号呼叫时,显示优先级最高的呼叫号(其它呼叫号用指示灯显示);3.凡有呼叫发出5秒的呼叫声;4.对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理(附加)。

三总体方案的选择病房呼叫系统整体思路为:●LED指示灯显示病房模块●数码管优先显示重病房模块●蜂鸣器报警5秒模块首先由病人按下呼叫器开关,即逻辑数据开关,(1)进入第一模块,通过LED指示灯显示病人呼叫的病房,(2)进入第二模块,传输到一个编码器进行编码,我这里选用的是74LS148,8线—3线优先编码器,其低电平为有效输入;然后再进行译码输出,我选用的是74LS48,为共阴极7段译码/驱动器,74LS148输出为反码输出,遂在74LS48前加上反向器进行输入;再用共阴极七段数码管进行输出。

(3)进入第三模块,通过一个与非门对信号进行处理,连接周期T为10秒,占空比为50%的方波发生器与信号一同通过与门,控制输出信号可以持续5秒,使蜂鸣器呼叫5秒。

流程图如下:与非门蜂鸣器与门四单元电路的设计1.设计所使用的元件及工具:(1)L ED指示灯模块LED显示灯----------------------------------------- 5个;保护电阻R=500Ω------------------------------------5个;(2)数码管显示模块编码器74LS148D-------------------------------------1个;反相器74LS04D--------------------------------------3个;译码器74LS48D--------------------------------------1个;(3)蜂鸣器呼叫模块与非门74LS30D -------------------------------------1个;方波发生器 ---------------------------------------1个;与门7408D -----------------------------------------1个;蜂鸣器 --------------------------------------------1个;另外:逻辑双掷开关5个;电源VCC、接地GND、导线若干。

数电课程设计——病房呼叫系统

数电课程设计——病房呼叫系统

数电课程设计——病房呼叫系统一、课程设计目的:通过本设计课程的学习,让学生深刻理解数字电路的设计和应用,提高学生的电路设计能力,并能够运用所学知识完成一个完整的电路设计和实践应用。

二、课程设计内容:1.设计目标本设计课程旨在设计一个病房呼叫系统,该系统可以根据对应的呼叫按钮,向医护人员的接收设备发送呼叫信息,以便医护人员及时处理相关事项,保障病人的生命安全和健康。

2.设计要求本课程设计要求学生掌握数字电路的基本原理和设计方法,能够运用寄存器、计数器、门电路等数字电路芯片实现病房呼叫系统的设计。

3.电路功能和结构设计病房呼叫系统主要由呼叫按钮、控制器、显示器、接收器四个部分组成。

a、呼叫按钮:将病人的呼叫信息发送给控制器,可以设置多个呼叫按钮。

b、控制器:接收呼叫按钮的信号并将相应的信号发送给对应的接收器,同时将呼叫信息进行存储和显示。

c、显示器:将呼叫信息显示在屏幕上,提醒医护人员及时处理。

d、接收器:接收控制器发送的信号,发出声音或振动提醒医护人员。

4.电路实现电路实现的关键是对病房呼叫系统的设计进行详细规划。

a、呼叫按钮部分:根据病房的实际情况,需要设置多个呼叫按钮,每个呼叫按钮都需要连接到控制器上。

呼叫按钮可以选择常开或常闭两种形式,常开按钮需要通过电路控制而常闭按钮则直接连接。

b、控制器部分:控制器是整个系统的核心部分,需要安装多个触发器,以接收不同按钮的信号,并将信号进行存储、比较和转换,最终实现呼叫信息的显示和发送。

c、显示器部分:显示器可以采用一块数码管,将呼叫信息的编号进行展示,提醒医护人员及时处理。

d、接收器部分:接收器部分可以选择蜂鸣器、灯光或振动器等形式,将呼叫信息传达给医护人员。

5.相关细节设计为了使整个系统稳定可靠,需要对相关的细节进行设计:a、电源:最好采用稳压电源,以保证电路工作的稳定性。

b、防雷保护:在系统设计中需要注意对各个部位进行综合防雷保护,以保障电路安全和可靠。

EDA课程设计--病房呼叫系统的设计

EDA课程设计--病房呼叫系统的设计

病房呼叫系统的设计1 设计要求1.用5个开关模拟5个病房的呼叫输入信号,1号优先级最高;1到5优先级依次降低;2.用一个数码管显示呼叫信号的号码;没信号呼叫时显示0;又多个信号呼叫时,显示优先级最高的呼叫号(其它呼叫号用指示灯显示);3.凡有呼叫发出5秒的呼叫声;4加)。

2用33.1健低电1所示。

表1 74148输入输出真值表3.2 模五计数器以及灯闪烁五秒的模拟模五计数器电路图如图2所示。

图2 模五计数器电路图如图先将74193接成模五计数器,当有病房呼叫时CLR为0,计数器计数,当没有病房呼叫时计数器清零,通过调节clock输入脉冲的频率来实现闪烁五秒的控制。

3.33.443显示为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所示。

优先级高的呼叫时,在还没处理低的优先级时,有高优先级呼叫,数码显示会变成高优先级病房号的显示。

设计总结本设计是为在病人紧急需要时能很快进行救治的呼叫系统,增强医护人员更好的监护病人。

此[2] 汪国强.SOPC技术与应用.机械工业出版社,2006[3] 范忠.实用数字电子技术.电子工业出版社,1998[4] 刘延飞.数字电子技术实验与仿真.西北工业大学出版社,2010[5] 侯建军,郭勇.SOPC技术基础教程.清华大学出版社,2008附录设计程序1:非门library ieee;use ieee.std_logic_1164.all; entity as_not isport(a:in std_logic;f:out std_logic);end as_not;architecture behave of as_not isbegin2:2entitybeginend behave;3:2输入与门library ieee;use ieee.std_logic_1164.all; entity as_and2 isport(a:in std_logic;b:in std_logic;f:out std_logic);end as_and2;architecture behave of as_and2 is beginf<=a AND b;end behave;4beginif(e1='1') thenQ<="111";GS<='1';E0<='1';Q<="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')thenE0<='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';end rtl;5:7447port(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",end a1;6:DQ: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;end rtl;。

电路与电子技术课程设计病房呼叫系统设计

电路与电子技术课程设计病房呼叫系统设计

电路与电子技术课程设计病房呼叫系统设计在现代医疗体系中,病房呼叫系统扮演着至关重要的角色。

它不仅能够提高医疗服务效率,还能确保患者安全,使医护人员能够及时响应患者的需求。

在电路与电子技术课程设计中,病房呼叫系统是一个实践性强、应用广泛的项目。

本文将以“电路与电子技术课程设计病房呼叫系统设计”为主题,深入探讨病房呼叫系统的设计与实现。

一、病房呼叫系统的基本原理1. 试题:什么是病房呼叫系统?答案:病房呼叫系统是一种通信设备,用于患者与医护人员之间的通信。

患者可以通过按下呼叫按钮或使用语音通话等方式,向医护人员发出呼叫信号,医护人员接收到信号后,可以及时响应并提供必要的医疗服务。

2. 试题:病房呼叫系统的主要组成部分有哪些?答案:病房呼叫系统的主要组成部分包括呼叫按钮、信号处理器、显示器、语音通话设备等。

呼叫按钮是患者发出呼叫信号的装置,信号处理器负责处理患者的呼叫信号,显示器用于显示患者的呼叫信息,语音通话设备则用于实现患者与医护人员之间的语音通话。

二、病房呼叫系统的设计与实现1. 试题:如何设计病房呼叫系统?答案:设计病房呼叫系统需要考虑以下方面:-系统功能的确定:明确病房呼叫系统需要实现的功能,如呼叫按钮的信号处理、显示器的信息显示、语音通话的实现等。

-系统架构的设计:确定病房呼叫系统的整体架构,包括硬件和软件的设计。

硬件设计涉及到电路的搭建和组件的选择,软件设计涉及到程序的开发和调试。

2. 试题:在病房呼叫系统的设计与实现中,需要注意哪些关键技术?答案:在病房呼叫系统的设计与实现中,需要注意以下关键技术:-电路设计:设计合适的电路,确保系统能够稳定工作。

-编程与调试:编写程序并进行调试,确保系统能够按照预期运行。

-系统的可靠性和稳定性:考虑系统的可靠性和稳定性,确保系统能够长时间稳定运行。

三、病房呼叫系统的应用与评估1. 试题:病房呼叫系统在哪些场景下尤为重要?答案:病房呼叫系统在以下场景下尤为重要:-紧急情况:患者遇到紧急情况时,可以通过病房呼叫系统及时向医护人员发出求助信号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录一、课程设计思路 (1)1、设计题目 (1)2、设计要求 (1)3、设计想法 (1)二、课程设计过程 (2)1、模块分配 (2)2、模块具体设计 (2)三、课程设计综合介绍 (4)1、整体原理图 (4)2、引脚配置 (5)3、整体设计实现 (5)参考文献 (6)附件(病房呼叫系统整体程序) (7)一)、设计题目:病房呼叫系统二)、设计要求:1、用8个开关模拟8个病房的呼叫输入信号,1号优先级最高;1~8优先级依次降低;2、用一个数码管显示呼叫信号的号码;没信号时显示0;有多个信号呼叫时,显示优先级最高的呼叫号(其他呼叫用指示灯显示);用四个数码管显示呼叫等待时间(mm ss)。

3、凡有呼叫发出5秒的提示声;呼叫3分钟未处理输出报警信号。

发挥部分:对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理。

三)、设计想法:1、整体设计思路:根据设计要求,我们将设计分为几个模块来设计,分别为:锁存模块、选优模块(对病房选优)、选优模块2(对复位选优)、计时模块、显示模块、蜂鸣模块。

2、整体设计流程:(1)、锁存器:对病房呼叫的信号进行存储并处理信号,需要用一个对所有的呼叫信号进行存储的锁存器。

(2)、数据选择器(选优):对发出呼叫的病房进行优先选择,选择优先级最高的一个病房号,病房号从1到8优先级一次降低。

(3)、数据选择器2(选优2):对时间控制信号进优先选择,这样就是的数码管显示器显示的时间为当前优先级最高的病房所呼叫的时间。

(4)、计时器:病房呼叫系统中要求凡有呼叫发出,呼叫3分种未处理输出报警信号,即要求一个模块对呼叫时间计时,因此我们设计一个分秒计时器,对呼叫时间计时。

实验箱中时钟频率为20MHZ,故计时部分需加入分频,我们使之为1s。

(5)、显示器:用一个数码管显示呼叫信号的号码,用四个数码管显示呼叫等待时间(mm ss),设计一七段数码显示器,数码片选为低电平有效,扫描信号定为1KHZ。

一)、模块分配:锁存模块:选优模块、对复位选优模块:计时模块:显示模块:连接模块、蜂鸣器模块二)、模块具体设计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分钟后进行报警,所以我设计的报警器模块和时间的链接模块是联系起来的,当输入为0000 0001 0000 0000表示的是1秒,0000 0010 0000 0000表示的是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个复位信号,我们主要考虑到一个实际问题,每一个复位键对应了当时优先级最高的一个病房的灯控和时间控制,当护士去处理优先级最高病房的呼叫信号时,按下复位键,发出一个确知信号:有护士已经去处理这件事情了。

而一个复位键相较之的缺点是,当有多个呼叫信号时,按下复位键所有的信号均清零了。

参考文献1)FPGA实验指导书(5万门).doc2)EDA技术与VHDL 清华大学出版社黄继业3)4)(VHDL_与数字电路设计5)硬件语言描述与数字逻辑电路设计侯伯亨、顾新编著)附件:病房呼叫系统整体程序一、锁存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SUOCUNQI ISPORT(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_VECTOR(7 DOWNTO 0)); END SUOCUNQI;ARCHITECTURE bhv OF SUOCUNQI ISSIGNAL SOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(REST,SIN)BEGINIF REST(0)='1' AND SIN(0)='0' THEN SOUT(0)<='1';ELSE SOUT(0)<='0';END IF;IF REST(1)='1' AND SIN(1)='0' THEN SOUT(1)<='1';ELSE SOUT(1)<='0';END IF;IF REST(2)='1' AND SIN(2)='0' THEN SOUT(2)<='1';ELSE SOUT(2)<='0';END IF;IF REST(3)='1' AND SIN(3)='0' THEN SOUT(3)<='1';ELSE SOUT(3)<='0';END IF;IF REST(4)='1' AND SIN(4)='0' THEN SOUT(4)<='1';ELSE SOUT(4)<='0';END IF;IF REST(5)='1' AND SIN(5)='0' THEN SOUT(5)<='1';ELSE SOUT(5)<='0';END IF;IF REST(6)='1' AND SIN(6)='0' THEN SOUT(6)<='1';ELSE SOUT(6)<='0';END IF;IF REST(7)='1' AND SIN(7)='0' THEN SOUT(7)<='1';ELSE SOUT(7)<='0';END IF;END PROCESS;SOUT1<=SOUT;SOUT2<=SOUT;SOUT3<=SOUT;END ARCHITECTURE bhv;二、选优模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XUANYOU 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 XUANYOU;ARCHITECTURE bhv OF XUANYOU ISSIGNAL YOU:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(SOUT,YOU)BEGINIF SOUT(0)='1' THEN YOU<="0001";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";ELSE IF SOUT(6)='1' THEN YOU<="0111";ELSE IF SOUT(7)='1' THEN YOU<="1000";ELSE YOU1<="0000";END IF;END IF;END IF;END IF;END IF;END IF;END IF;END IF;END PROCESS;YOU1<=YOU;YOU2<=YOU;END ARCHITECTURE bhv;三、计时选优模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XUANYOU2 ISPORT(REST:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SOUT3:IN STD_LOGIC_VECTOR(7 DOWNTO 0);YOU1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ZQ:OUT STD_LOGIC;LJ:OUT STD_LOGIC);END XUANYOU2;ARCHITECTURE bhv OF XUANYOU2 ISBEGINPROCESS(YOU1)BEGINIF YOU1="0001" THEN LJ<=REST(0);ELSE IF YOU1="0010" THEN LJ<=REST(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)BEGINIF 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 IF;END IF;END IF;END IF;END IF;END IF;END PROCESS;END ARCHITECTURE bhv;四、时间模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALLENTITY TIME ISPORT(REST,SP,CLK :IN STD_LOGIC;SECOND1,SECOND2,MINITUE1,MINITUE2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END TIME;ARCHITECTURE ONE OF TIME ISSIGNAL TIMECLK,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)PROCESS(CLK,SP)V ARIABLE CNT:INTEGER RANGE 0 TO 20000000;--分频1SBEGINIF CLK'EVENT AND CLK='1'AND SP='1' THEN CNT:=CNT+1;IF CNT<10000000 THEN TIMECLK<='1';ELSIF CNT<20000000 THEN TIMECLK<='0';ELSE CNT:=0;TIMECLK<='0';END IF;END IF;END PROCESS;--------------PROCESS(TIMECLK,REST) --计时部分程序BEGINIF(REST='0') THENMINI2 <="0000"; MINI1 <="0000"; SEC2<="0000"; SEC1<="0000"; ELSIF (TIMECLK'EVENT AND TIMECLK='1')THEN --检验时钟上升沿IF SEC1<"1001"THEN SEC1<=SEC1+1;ELSESEC1<="0000";IF SEC2<"0101"THEN SEC2<=SEC2+1;ELSESEC2<="0000";IF MINI1<"1001"THEN MINI1<=MINI1+1;ELSEMINI1<="0000";IF MINI2<"0101"THEN MINI2<=MINI2+1;ELSEMINI2<="0000";END IF;END IF;END IF;END IF;END IF;END PROCESS;END ONE;五、连接模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SQU 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 SQU;ARCHITECTURE ONE OF SQU ISBEGINJISHI(15 DOWNTO 12)<=SECOND1;JISHI(11 DOWNTO 8)<=SECOND2;JISHI(7 DOWNTO 4)<=MINITUE1;JISHI(3 DOWNTO 0)<=MINITUE2;END ARCHITECTURE ONE;六、蜂鸣模块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;BEGINPROCESS(BCD)BEGINIF BCD="0000000000000000" THEN ING<='1';ELSE IF BCD="0001000000000000" 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';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<=ING;END PROCESS;END ARCHITECTURE bhv;七、显示模块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 DOWNTO 0);YOU:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--显示病房DISP:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--显示代码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);BEGINCLK_1KHZ:PROCESS(CLK)--产生1k的扫描信号V ARIABLE CNT:INTEGER RANGE 0 TO 20000;BEGINIF RISING_EDGE(CLK)THEN CNT:=CNT+1;IF CNT<10000THEN CLK_1K<='1';ELSIF CNT<20000THEN CLK_1K<='0';ELSE CNT:=0;CLK_1K<='0';END IF;END IF;END PROCESS;PROCESS (CLK_1K) --显示V ARIABLE CNT2:STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE CNT3:INTEGER RANGE 0 TO 2;V ARIABLE CNT:INTEGER RANGE 0 TO 2500000;BEGINIF CLK_1K'EVENT AND CLK_1K='1'THEN CNT2:=CNT2+1;IF CNT2="0001"THENLEDCS<="00010000";DATA<=MINITUE2;ELSIF CNT2="0010" THENLEDCS<="00001000";DATA<=MINITUE1;ELSIF CNT2="0011" THENLEDCS<="00000100";DATA<="1010";ELSIF CNT2="0100" THENLEDCS<="00000010";DATA<=SECOND2;ELSIF CNT2="0101" THENLEDCS<="00000001";DATA<=SECOND1;ELSIF CNT2="0110" THENLEDCS<="00100000";DATA<=YOU;CNT2:="0000";END IF;END IF;END PROCESS;PROCESS(DATA)BEGINCASE DATA ISWHEN "0000"=>DISP<="11000000";--0WHEN "0001"=>DISP<="11111001";--1WHEN "0010"=>DISP<="10100100";--2WHEN "0011"=>DISP<="10110000";--3WHEN "0100"=>DISP<="10011001";--4WHEN "0101"=>DISP<="10010010";--5WHEN "0110"=>DISP<="10000010";--6WHEN "0111"=>DISP<="11111000";--7WHEN "1000"=> DISP <="10000000";--8WHEN "1001"=> DISP <="10010000";--9WHEN "1010"=> DISP <="10111111";--间隔横杠WHEN "1011"=> DISP <="10111111";--间隔横杠WHEN "1100"=> DISP <="11111111";--超出范围就不显示停住,直到正确为止WHEN OTHERS=>NULL; ---千万注意!!!!!!不能为11111111,否则出错,会有空显示产生END CASE;END PROCESS;END ONE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY XITONG ISPORT ( SIN_AIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0);RST_AIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK_AIN:IN STD_LOGIC;MING_OUT: OUT STD_LOGIC;SCOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);LEDCS_OUT: STD_LOGIC_VECTOR(7 DOWNTO 0);DISP_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);END XITONG;ARCHITECTURE F1 OF XITONGCOMPONENT SUOCUNQIPORT(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_VECTOR(7 DOWNTO 0));END COMPONENT;COMPONENT XUANYOUPORT(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 COMPONENT;COMPONENT XUANYOU2PORT(REST:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SOUT3:IN STD_LOGIC_VECTOR(7 DOWNTO 0);YOU1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ZQ:OUT STD_LOGIC;LJ:OUT STD_LOGIC);END COMPONENT;COMPONENT TIMEPORT(REST,SP,CLK :IN STD_LOGIC;SECOND1,SECOND2,MINITUE1,MINITUE2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT SOUPORT(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 COMPONENT;COMPONENT FENGMINGPORT( BCD:IN STD_LOGIC_VECTOR(15 DOWNTO 0);MING:OUT STD_LOGIC);END COMPONENT;COMPONENT FENGMINGPORT(CLK:IN STD_LOGIC;SECOND1,SECOND2,MINITUE1,MINITUE2:IN STD_LOGIC_VECTOR(3 DOWNTO 0); YOU:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--显示病房DISP:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--显示代码LEDCS:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管片选);END COMPONENT;SIGNAL A: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL B: STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL C: STD_LOGICSIGNAL D: STD_LOGICSIGNAL E: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL F: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL G:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL H:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL I:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL J: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL K:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1:SUOCUNQI PORT MAP(SIN=>SIN_AIN,OUT1=>A,REST=>RST_AIN,SOUT3=>E,SOUT2=>SCOUT);U2: XUANYOU PORT MAP ( SOUT=>A,YOU1=>F,YOU2=>G);U3: XUANYOU2 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);U5:SOU PORT MAP ( JISHI=>B,SECOND1=>H,SECOND2=>I,MINITUE1=>J,MINITUE2=>K);U6: FENGMING PORT MAP(BCD=>B,MING=>,MING_OUT);U7:DISPLAY PORT MAP (DISP=>DISP_OUT,LEDCS=>LEDCS_OUT,YOU=>G,CLK=>CLK_AIN,SECOND1=>H,SECOND2=>I,MINITUE1=>J,MINITUE2=>K);END ARCHITECTURE F1;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TIME ISPORT(REST,SP,CLK :IN STD_LOGIC;TI:OUT STD_LOGIC;SECOND1,SECOND2,MINITUE1,MINITUE2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END TIME;ARCHITECTURE ONE OF TIME ISSIGNAL TIMECLK:STD_LOGIC;SIGNAL CLK12:STD_LOGIC_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)V ARIABLE CNT:INTEGER RANGE 0 TO 120; --分频1SBEGINIF (CLK'EVENT AND CLK='1') AND SP='1' THEN CNT:=CNT+1;IF CNT<60 THEN TIMECLK<='1';ELSIF CNT<120 THEN TIMECLK<='0';ELSE CNT:=0;TIMECLK<='0';END IF;END IF;IF(REST='0') THENMINI2 <="0000"; MINI1 <="0000"; SEC2<="0000"; SEC1<="0000";ELSEIF (TIMECLK'EVENT AND TIMECLK='1') THEN --检验时钟上升沿IF SEC1<"1001"THEN SEC1<=SEC1+1;ELSESEC1<="0000";IF SEC2<"0101"THEN SEC2<=SEC2+1;ELSESEC2<="0000";IF MINI1<"1001"THEN MINI1<=MINI1+1; ELSEMINI1<="0000";IF MINI2<"0101"THEN MINI2<=MINI2+1; ELSEMINI2<="0000";END IF;END IF;END IF;END IF;END IF;END IF;END PROCESS;END ONE;。

相关文档
最新文档