病房呼叫系統(tǒng)(程序分析齊全)_第1頁
病房呼叫系統(tǒng)(程序分析齊全)_第2頁
病房呼叫系統(tǒng)(程序分析齊全)_第3頁
病房呼叫系統(tǒng)(程序分析齊全)_第4頁
病房呼叫系統(tǒng)(程序分析齊全)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 課程設(shè)計說明書課程:EDA技術(shù)基礎(chǔ)組號:B8組題目:病房呼叫系統(tǒng)組員:專業(yè):電子信息科學(xué)與技術(shù)指導(dǎo)教師:2010年1月8日B8組整體設(shè)計報告目錄一、課程設(shè)計思路 (11、設(shè)計題目 (12、設(shè)計要求 (13、設(shè)計想法 (1二、課程設(shè)計過程 (21、模塊分配 (22、模塊具體設(shè)計 (2三、課程設(shè)計綜合介紹 (41、整體原理圖 (42、引腳配置 (53、整體設(shè)計實現(xiàn) (5參考文獻 (6附件(病房呼叫系統(tǒng)整體程序 (7一、設(shè)計題目:病房呼叫系統(tǒng)二、設(shè)計要求:1、用8個開關(guān)模擬8個病房的呼叫輸入信號,1號優(yōu)先級最高;18優(yōu)先級依次降低;2、用一個數(shù)碼管顯示呼叫信號的號碼;沒信號時顯示0;有多個信號呼叫

2、時,顯示優(yōu)先級最高的呼叫號(其他呼叫用指示燈顯示;用四個數(shù)碼管顯示呼叫等待時間(mm ss。3、凡有呼叫發(fā)出5秒的提示聲;呼叫3分鐘未處理輸出報警信號。發(fā)揮部分:對低優(yōu)先級的呼叫進行存儲,處理完高優(yōu)先級的呼叫,再進行低優(yōu)先級呼叫的處理。三、設(shè)計想法:1、整體設(shè)計思路:根據(jù)設(shè)計要求,我們將設(shè)計分為幾個模塊來設(shè)計,分別為:鎖存模塊、選優(yōu)模塊(對病房選優(yōu)、選優(yōu)模塊2(對復(fù)位選優(yōu)、計時模塊、顯示模塊、蜂鳴模塊。2、整體設(shè)計流程:(1、鎖存器:對病房呼叫的信號進行存儲并處理信號,需要用一個對所有的呼叫信號進行存儲的鎖存器。(2、數(shù)據(jù)選擇器(選優(yōu):對發(fā)出呼叫的病房進行優(yōu)先選擇,選擇優(yōu)先級最高的一個病房號,

3、病房號從1到8優(yōu)先級一次降低。(3、數(shù)據(jù)選擇器2(選優(yōu)2:對時間控制信號進優(yōu)先選擇,這樣就是的數(shù)碼管顯示器顯示的時間為當(dāng)前優(yōu)先級最高的病房所呼叫的時間。(4、計時器:病房呼叫系統(tǒng)中要求凡有呼叫發(fā)出,呼叫3分種未處理輸出報警信號,即要求一個模塊對呼叫時間計時,因此我們設(shè)計一個分秒計時器,對呼叫時間計時。實驗箱中時鐘頻率為20MHZ,故計時部分需加入分頻,我們使之為1s。(5、顯示器:用一個數(shù)碼管顯示呼叫信號的號碼,用四個數(shù)碼管顯示呼叫等待時間(mm ss,設(shè)計一七段數(shù)碼顯示器,數(shù)碼片選為低電平有效,掃描信號定為1KHZ。一、模塊分配鎖存模塊選優(yōu)模塊、對復(fù)位選優(yōu)模塊計時模塊顯示模塊連接模塊、蜂鳴器

4、模塊二、模塊具體設(shè)計1.鎖存模塊:由于有8個病房所以設(shè)計了8個輸入信號且高電平時為信號輸入,另外考慮到時間模塊顯示的是當(dāng)前等待時間,所以小組討論后決定時間顯示當(dāng)前等待時間為最好,所以在鎖存模塊,把復(fù)位加到鎖存模塊,高電平的時候表示復(fù)位不工作,低電平的時候表示復(fù)位。鎖存器的一個輸入信號與LED燈相連,使得有呼叫信號時,與病房相對應(yīng)的燈亮。另外一個相同的輸出信號連接選優(yōu)器,對信號進行選優(yōu),還有一個相同輸出信號控制計時模塊中的SP信號。2.選優(yōu)模塊:由設(shè)計要求,數(shù)碼管要顯示優(yōu)先級最高的病房的呼叫信號,所以我們須得對病房呼叫信號進行選優(yōu),還考慮到對時間的優(yōu)先級的問題,所以設(shè)計了兩個優(yōu)先輸出信號。程序功

5、能部分按優(yōu)先病房號順序依次輸出BCD碼代表的1、2、3、4、5、6、7、8.3.選優(yōu)2:考慮到復(fù)位鍵一一對應(yīng)的問題,我們的時間模塊又只用了一個,顯示當(dāng)前最優(yōu)先病房的等待時間,所以選優(yōu)2模塊連在選優(yōu)模塊的后面以及和8個位寬的復(fù)位信號相連,然后通過選優(yōu)模塊,使得輸出地復(fù)位信號為當(dāng)前最優(yōu)先的病房所對應(yīng)的復(fù)位信號。鎖存器模塊的一個輸出信號也在這時進行選優(yōu),選出來的優(yōu)先級最高的信號與時間模塊中的SP信號對應(yīng)。4.計時模塊:由設(shè)計要求計時用四個數(shù)碼管顯示mmss, 所以時間方面采用的是以秒進位,實驗箱中的時間頻率為20MHZ,所以選擇了0:20000000即一秒的分頻,另外由于有呼叫信號時,SP=1,我們

6、得立即計時,所以定義了每個1秒之內(nèi)出現(xiàn)一個上升沿,當(dāng)上升沿到來時時間加計1s,另外mmss之中前一個m代表的是分的十位,后一個m代表的是分的個位,前一個s代表的是秒的十位,后一個s代表的是秒的個位。5.顯示模塊:顯示模塊所要顯示的就是優(yōu)先級最高的呼叫病房的號碼以及呼叫等待的時間mmss,所以在模塊的設(shè)計當(dāng)中,我們用中間的六個數(shù)碼管依次顯示當(dāng)前最優(yōu)先呼叫病房號,分的十位,分的個位,再一個數(shù)碼管顯示一橫杠,和秒計位區(qū)分開來。在依次是秒的十位,秒的個位。6.連接模塊:由于各個模塊成功之后進行頂層設(shè)計時,時間模塊和蜂鳴器模塊的位寬不相等,故我設(shè)計了一個連接模塊,使得兩模塊能夠順利銜接起來。連接模塊的輸

7、出部分和時間模塊的mmss各部分相互對應(yīng),模塊輸出部分位寬的15-12位與記秒的個位的3-0位對應(yīng),位寬的11-8位與記秒的十位的3-0相對應(yīng),位寬的7-4位與記分的個位的3-0相對應(yīng),位寬的3-0位與記分的十位的3-0位相對應(yīng)。7.蜂鳴器模塊:考慮到計時后發(fā)出5秒的提示聲以及燈亮3分鐘后進行報警,所以我設(shè)計的報警器模塊和時間的鏈接模塊是聯(lián)系起來的,當(dāng)輸入為0000000100000000表示的是1秒,0000001000000000表示的是2秒,以此類推,當(dāng)表示的時間是1-5秒時令蜂鳴器響,此時輸出為低電平,表是的是蜂鳴器工作。當(dāng)時間在6秒到3分鐘之間的時候,編寫程序另輸出為高電平,此時蜂鳴

8、器不工作。超過三分鐘時再令蜂鳴器工作5秒,進行報警工作,此時已經(jīng)達到設(shè)計要求。三、課程設(shè)計綜合介紹我們對這個模塊剛開始設(shè)計了和現(xiàn)在不同的方案,然后頂層設(shè)計時發(fā)現(xiàn)并不好實現(xiàn),而且連接之后模塊也比較復(fù)雜,所以我們重新思考之后就有了現(xiàn)在模塊的初稿,但是在頂層設(shè)定好之后,跑實驗箱是顯示的結(jié)果并不如預(yù)期的,多次調(diào)試沒出結(jié)果之后,我選擇了排除錯誤,首先從自身下手,我把頂層的連接改成了用系統(tǒng)框圖表示,選它的優(yōu)點是比較直觀,設(shè)想正確的話基本上不會出現(xiàn)什么錯誤,所以,當(dāng)問題再次出現(xiàn)時我考慮到了每個模塊的邏輯問題,經(jīng)過一個一個找出現(xiàn)的問題,從時間模塊的SP的高低電平的修改,在到蜂鳴器和時間表示對應(yīng)的修改,在到對選

9、優(yōu)模塊最后執(zhí)行語句YOU歸零的修改,解決了計時器一直計時、蜂鳴器不工作、病房顯示號不歸零等問題,終于圓滿的完成了實驗的要求。一、病房呼叫系統(tǒng)框圖如下:引腳配置如圖:二、綜合引腳配置如下: 三、整體設(shè)計實現(xiàn)描述:實驗箱上有8個7段數(shù)碼管、16個用戶LED燈(8個大LED燈,8個小LED燈、16個開關(guān)量輸入端口、8個撥碼開關(guān)、蜂鳴器等。工程引腳鎖定下載完后,將其下載進FPGA中,進行硬件測試。具體實現(xiàn)如下:實驗箱中有8個7段數(shù)碼管,我們只用到了其中的6個,除前兩個外從左到右分別顯示:病房號碼、minitue2、minitue1、(橫杠、second2、second1。對應(yīng)病房號指示燈我們用8個小L

10、ED。接通電源,計時程序已下載進實驗箱,蜂鳴器開始時不響,6個數(shù)碼管顯示000-00,撥碼開關(guān)從SW1-SW7依次表示的是病房號1-7,當(dāng)按下?lián)艽a開關(guān)SW1時表示2號病房開始計時,蜂鳴器接著響5秒鐘然后不響,到時間記為三分鐘時又開始報警。當(dāng)同時按開關(guān)SW2與SW3時,病房號顯示的還是2,因為病房2的優(yōu)先級比病房三的要高,另外病房相應(yīng)的撥碼開關(guān)打開后,相應(yīng)的指示燈也開始亮,小燈從左到右依次顯示優(yōu)先級從低到高的8個病房的呼叫情況。我們的實驗的一個特色是設(shè)置了8個復(fù)位信號,我們主要考慮到一個實際問題,每一個復(fù)位鍵對應(yīng)了當(dāng)時優(yōu)先級最高的一個病房的燈控和時間控制,當(dāng)護士去處理優(yōu)先級最高病房的呼叫信號時,

11、按下復(fù)位鍵,發(fā)出一個確知信號:有護士已經(jīng)去處理這件事情了。而一個復(fù)位鍵相較之的缺點是,當(dāng)有多個呼叫信號時,按下復(fù)位鍵所有的信號均清零了。參考文獻1FPGA實驗指導(dǎo)書(5萬門.doc2EDA技術(shù)與VHDL 清華大學(xué)出版社黃繼業(yè)4(VHDL_與數(shù)字電路設(shè)計5硬件語言描述與數(shù)字邏輯電路設(shè)計侯伯亨、顧新編著附件:病房呼叫系統(tǒng)整體程序一、鎖存器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

12、 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,SINBEGINIF REST(0='1' AND SIN(0='0' THEN SOUT(0<='1'E

13、LSE 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&l

14、t;='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'

15、; 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;二、選優(yōu)模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY

16、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,YOUBEGINIF SOUT(0='1' THEN YOU<="0001"ELSE IF SOUT(1=

17、'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

18、<="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;三、計時選優(yōu)模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XUANYOU2 ISPORT(REST:I

19、N 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(YOU1BEGINIF YOU1="0001" THEN LJ<=REST(0;ELSE IF YOU1="0010" THEN LJ<=REST(1;ELSE

20、 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

21、 IF;END IF;END IF;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(SOUT3BEGINIF 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"

22、 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_11

23、64.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 DOW

24、NTO 0;BEGINMINITUE1(3 DOWNTO 0<=MINI1(3 DOWNTO 0;MINITUE2(3 DOWNTO 0<=MINI2(3 DOWNTO 0;SECOND1(3 DOWNTO 0PROCESS(CLK,SPV 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

25、 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

26、 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

27、 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 S

28、TD_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

29、 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(BCDBEGINIF BCD="0000000000000000" THEN ING<='1'ELSE IF BCD="0001000000000000" THEN ING<='0'ELSE IF BCD="

30、;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&quo

31、t; 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

32、;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

33、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-數(shù)碼管片選;END DISPLAY;ARCHITECTURE ONE OF DISPLAY ISSIGNAL CLK_1K:STD_LOGIC;SIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0;BEGINCLK_1KHZ:PROCESS(CLK-產(chǎn)生1k的掃描信號V ARIABLE CNT:INTEGER RA

34、NGE 0 TO 20000;BEGINIF RISING_EDGE(CLKTHEN 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 -顯示 VARIABLE CNT2:STD_LOGIC_VECTOR(3 DOWNTO 0; VARIABLE CNT3:INTEGER RANGE 0 TO 2;

35、 VARIABLE CNT:INTEGER RANGE 0 TO 2500000; BEGIN IF CLK_1K'EVENT AND CLK_1K='1'THEN CNT2:=CNT2+1; IF CNT2="0001"THEN LEDCS<="00010000" DATA<=MINITUE2; ELSIF CNT2="0010" THEN LEDCS<="00001000" DATA<=MINITUE1; ELSIF CNT2="0011" THEN LEDCS<="00000100" DATA<="1010" ELSIF CNT2="0100" THEN LEDCS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論