【正文】
。 ARCHITECTURE TWO OF TIME IS SIGNAL TIMECLK,MINI:STD_LOGIC。 SECOND1,SECOND2,MINITUE1,MINITUE2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。 USE 。 程序一: LIBRARY IEEE。 基于 FPGA 的病房呼叫系統(tǒng)的設(shè)計 7 功能仿真: 計時器: 由設(shè)計要求計時用四個數(shù)碼管顯示 mm, ss,所以時間方面采用的是以秒進(jìn)位,實驗箱中頻率為 20MHz,所以選擇了 0: 20200000 即一秒的分頻,另外由于有呼叫信號, SP=1,我們得立即即使,所以定義了每個 1 秒之內(nèi)出現(xiàn)一個上升沿,當(dāng)上升沿到來時時間加計 1s,另外 mmss之中前一個 m 代表的是分的十位,后一個代表的是分的個位,前一個 s代表的是秒的十位,后一個 s 代表的是秒的個位。 END PROCESS。 END IF。 END IF。 END IF。 END IF。 ELSE IF YOU1=0111 THEN ZQ=SOUT3(6)。 ELSE IF YOU1=0101 THEN ZQ=SOUT3(4)。 ELSE IF YOU1=0011 THEN ZQ=SOUT3(2)。 PROCESS(SOUT3) BEGIN IF YOU1=0001 THEN ZQ=SOUT3(0)。 END IF。 END IF。 END IF。 END IF。 ELSE IF YOU1=1000 THEN LJ=REST(7)。 ELSE IF YOU1=0110 THEN LJ=REST(5)。 ELSE IF YOU1=0100 THEN LJ=REST(3)。 ELSE IF YOU1=0010 THEN LJ=REST(1)?!?對應(yīng)計時器的 REST END HUANYOU2。 ZQ:OUT STD_LOGIC。 YOU1:IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 通過選擇,選出優(yōu)先級最高的,這里為 3 號病房 基于 FPGA 的病房呼叫系統(tǒng)的設(shè)計 6 USE 。鎖存器的一個輸出信號也在這時進(jìn)行優(yōu)選,選出來的優(yōu)先級最高的信號與計時器中的 SP 信號對應(yīng)。 END ARCHITECTURE。 YOU1=YOU。 END IF 。 END IF 。 END IF 。 END IF 。 ELSE YOU=0000。139。 THEN YOU=0111。 ELSE IF SOUT(6)=39。139。 THEN YOU=0101。 ELSE IF SOUT(4)=39。139。 THEN YOU=0011。 ELSE IF SOUT(2)=39。139。 THEN YOU=0001。 BEGIN PROCESS(SOUT,YOU)—— 對病房號進(jìn)行選擇 BEGIN IF SOUT(0)=39。 END HUANYOU。 YOU1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 USE 。程序功能部分按優(yōu)先病房好順序依次輸出 BCD碼代表的 8。 END ARCHITECTURE bhv。 SOUT2=SOUT。 END PROCESS。039。139。139。139。 END IF。 ELSE SOUT(6)=39。 THEN SOUT(6)=39。 AND SIN(6)=39。 IF REST(6)=39。039。139。139。139。 END IF。 ELSE SOUT(4)=39。 THEN SOUT(4)=39。 AND SIN(4)=39。 IF REST(4)=39。039。139。139。139。 END IF。 ELSE SOUT(2)=39。 THEN SOUT(2)=39。 AND SIN(2)=39。 IF REST(2)=39。039。139。139。139。 END IF。 ELSE SOUT(0)=39。 THEN SOUT(0)=39。 AND SIN(0)=39。 BEGIN PROCESS(REST,SIN) BEGIN 基于 FPGA 的病房呼叫系統(tǒng)的設(shè)計 3 IF REST(0)=39。 END SUOCUNQI。 SOUT2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 —— 輸入信號 SIN:IN STD_LOGIC_VECTOR (7 DOWNTO 0)。 USE 。另外一個相同的輸出信號連接數(shù)據(jù)選擇器 對信號進(jìn)行選擇,還有一個相同輸出信號控制計時模塊中的 SP 信號。 模塊的功能 實現(xiàn) : 鎖存器: 由于有 8 個病房,所以設(shè)計 8 個輸入信號且高電平時為信號輸入,另外考慮到時間模塊顯示的是當(dāng)前等待時間,所以決定時間顯示當(dāng)前等待時間為最好, 所以在所存模塊,把復(fù)位加到鎖存模塊,高電平的時候表示復(fù)位不工作,低電平的時候表示復(fù)位。 基于 FPGA 的病房呼叫系統(tǒng)的設(shè)計 2 3 模塊的劃分及各模塊的功能實現(xiàn) 模塊的劃分 ? 對病房呼叫的信號 進(jìn)行存儲并處理信號,這就需要一個對信號進(jìn)行存儲的鎖存器; ? 對發(fā)出的信號進(jìn)行優(yōu)先選擇,就需要一個數(shù)據(jù)選擇器; ? 對時間控制信號的優(yōu)先選擇,使數(shù)碼管可以顯示優(yōu)先級最高的信號時間,又需要一個數(shù)據(jù)選擇器; ? 顯示時間,并對其進(jìn)行計時,需要一個計時器; ? 用七段數(shù)碼管 顯示時間 ,需要一個可以驅(qū)動七段數(shù)碼管的顯示器 ; ? 蜂鳴,就需要一個蜂鳴器; ? 在設(shè)計變成的過程中, 計時器與蜂鳴器的位寬不同,有需要一個轉(zhuǎn)換連接的連接器。如在 3 分鐘內(nèi)有應(yīng)答,則顯示下一個病房的病房號與時間,同樣當(dāng)計時器的時間超過 3 分鐘時報警,如在 3 分鐘內(nèi)有應(yīng)答則顯示下一個,以此類推。當(dāng)有多個信號同時輸入時,病房呼叫系統(tǒng)選擇優(yōu)先級最高的進(jìn)行顯示時間,病房號與聲音提示,其他的均只顯示其對應(yīng)的 LED,并無時間顯示。 八個模擬病房呼叫輸入端,假設(shè)一號優(yōu)先級最高,依次遞減。 關(guān)鍵字: 病房呼叫,系統(tǒng), FPGA,模塊, VHDL 1 原理 假設(shè)有 8 個病房,即有八個信號輸入 ,同時要有時間顯示與聲音提示。充分利用了 FPGA 的可編程能力與 VHDL 語言 的課移植性和原理圖編輯 的直觀性等 優(yōu)點?;?FPGA 的病房呼叫系統(tǒng)的設(shè)計 1 基于 FPGA 的病房呼叫系統(tǒng)的設(shè)計 中文摘要: 病房呼叫系統(tǒng),顧名思義,是病人在醫(yī)生與護(hù)士不在的情況下病人找尋醫(yī)生尋求幫助的系統(tǒng)。該病房呼叫系統(tǒng)是基于 FPGA 的,通過 FPGA 設(shè)計的不同設(shè)計方法的比對,最后 采用的模塊化設(shè)計, VHDL 語言與原理圖相結(jié)合的方法 進(jìn)行設(shè)計 。 來實現(xiàn)病房呼叫系統(tǒng)的功能實現(xiàn)。這在病房呼叫系統(tǒng)中是必不可少的。當(dāng)有一個信號輸入時,其所對應(yīng)的 LED 燈亮,并有提示音與時間 和病房號 顯示, 開始5 秒伴隨提示音, 5 秒后自動關(guān)閉提示音,在 3 分鐘內(nèi)如無應(yīng)答,則在 3分鐘后發(fā)出警報,持續(xù)時間為 5 秒。 5 秒聲音提示以后 3 分鐘內(nèi)如無應(yīng)答,再次發(fā)出警報。 原理圖: 2 方案論證 我對這個設(shè)計開始 和現(xiàn)在所用的設(shè)計不同的方案,但在頂層設(shè)計時發(fā)現(xiàn)并不好實現(xiàn),中間的信號太多太龐雜,連接起來比較復(fù)雜,但在后續(xù)編輯中沒有預(yù)期的效果,在多次調(diào)試仿真中無法得到想要的結(jié)果,所以我選擇了排除錯誤,首先從自身下手 ,對每個模塊進(jìn)行單獨設(shè)計,利用 VHDL 語言的可移植性,應(yīng)用原件例化語句將模塊連接起來,通過例化后的電路圖與原理圖進(jìn)行比較,看是否有連錯等問題。 即分為鎖存器、數(shù)據(jù)選擇器、時間選擇器、計時器、顯示器、蜂鳴器與連接器幾個模塊組成。鎖存器的一個輸入信號與 LED 燈相連,使得有呼叫信號時,與病房相對應(yīng)的燈亮。 程序: LIBRARY IEEE。 ENTITY SUOCUNQI IS PORT( REST:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 SOUT1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 三個相同的輸出 SOUT3:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 ARCHITECTURE bhv OF SUOCUNQI IS SIGNAL SOUT:STD_LOGIC_VECTOR(7 DOWNTO 0)。139。139。139。039。 IF REST(1)=39。 AND SIN(1)=39。 THEN SOUT(1)=39。 ELSE SOUT(1)=39。 END IF。139。139。139。039。 IF REST(3)=39。 AND SIN(3)=39。 THEN SOUT(3)=39。 ELSE SOUT(3)=39。 END IF。139。139。139。039。 IF REST(5)=39。 AND SIN(5)=39。 THEN SOUT(5)=39。 ELSE SOUT(5)=39。 END IF。139。139。139。039。 IF REST(7)=39。 AND SIN(7)=39。 THEN SOUT(7)=39。 ELSE SOUT(7)=39。 END IF。 SOUT1=SOUT。 SOUT3=SOUT。 基于 FPGA 的病房呼叫系統(tǒng)的設(shè)計 4 功能仿真: 數(shù)據(jù)選擇器 由設(shè)計要求,數(shù)碼管要顯示優(yōu)先級最高的病房的呼叫信號,所以我們須對病房呼叫信號進(jìn)行選優(yōu),還考慮到對時間的優(yōu)先級的問題,所以設(shè)計兩個選擇輸出信號。 程序: LIBRARY IEEE。 ENTITY HUANYOU IS PORT(SOUT:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 YOU2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。 ARCHITECTURE bhv OF HUANYOU IS SIGNAL YOU:STD_LOGIC_VECTOR(3 DOWNTO 0)。139。 復(fù)位后的波形 基于 FPGA 的病房呼叫系統(tǒng)的設(shè)計 5 ELSE IF SOUT(1)=39。 THEN YOU=0010。139。 ELSE IF SOUT(3)=39。 THEN YOU=0100。139。 ELSE IF SOUT(5)=39。 THEN YOU=0110。139。 ELSE IF SOUT(7)=39。 THEN YOU=1000。 END IF 。 END IF 。 END IF 。 END IF 。 END PROCESS。 YOU2=YOU。 功能仿真: 時間選擇器: 考慮到復(fù)位鍵一一對應(yīng)的問題,我們的計時器又只用了一個,顯示當(dāng)前最優(yōu)先病房的等待時間,所以時間選擇器連在數(shù)據(jù)選擇器 的后面以及八個位寬的復(fù)位信號相連,然后通過數(shù)據(jù)選擇器,使得輸出地復(fù)位信號為當(dāng)前最優(yōu)先的病房所對應(yīng)的復(fù)位信號。 程序: LIBRARY IEEE。 ENTITY HUANYOU2 IS PORT(REST:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 SOUT3:IN STD_LOGIC_VECTOR(7 DOWNTO 0) 。—— 對應(yīng)計時器 SP LJ:OUT STD_LOGIC)。 ARCHITECTURE bhv OF HUANYOU2 IS BEGIN PROCESS(YOU1) BEGIN IF YOU1=0001 THEN LJ=REST(0)。 ELSE IF YOU1=0011 THEN LJ=REST(2)。 ELSE IF YOU1=0101 THEN LJ=REST(4)。 ELSE IF YOU1=0111 THEN LJ=REST(6)。 END IF。 END IF。 END IF。 END IF。 END PROCESS。 ELSE IF YOU1=0010 THEN ZQ=SOUT3(1)。 ELSE IF YOU1=0100 THEN ZQ=SOUT3(3)。 ELSE IF YOU1=0110 THEN ZQ=SOUT3(5)。 ELSE IF YOU1=1000 THEN ZQ=SOUT3(7)。 END IF。 END IF。 END IF。 END IF。 END ARCHITECTURE。 程序一和程序二的功能相同,程序一采