【正文】
ITUE2(3 DOWNTO 0)=MINI2(3 DOWNTO 0)。139。039。 SEC2=0000。 ELSE SEC2=0000。 END IF 。 SECOND2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 JISHI(3 DOWNTO 0)=MINITUE2。 BEGIN PROCESS (BCD) BEGIN IF BCD=0000000000000000 THEN ING=39。 ELSE IF BCD=0100000000000000 THEN ING=39。 ELSE IF BCD=0001000000110000 THEN ING=39。 END IF 。 END IF 。 USE 。 SIGNAL DATA: STD_LOGIC_VECTOR(3 DOWNTO 0)。CLK_1K=39。 VARIABLE CNT: INTEGER RANGE 0 TO 2500000 。 DATA=MINITUE2。 PROCESS(CLK_1K) VARIABLE CNT2: STD_LOGIC_VECTOR(3 DOWNTO 0)。039。 END DISPLAY。 XIAN SHI MO KUAI LIBRARY IEEE。 END IF 。 ELSE IF BCD=0100000000110000 THEN ING=39。 IF BCD=0000000000110000 THEN ING=39。 ELSE IF BCD=0011000000000000 THEN ING=39。 END FENGMING。 JISHI(11 DOWNTO 8)=SECOND2。 USE 。 END IF 。 ELSE SEC1=0000。 THEN MINI2 =0000。 ELSE CNT :=0 。139。 SIGNAL MINI1,MINI2:STD_LOGIC_VECTOR(3 DOWNTO 0 )。 USE 。 END IF。 ELSE IF YOU1=0101 THEN ZQ=SOUT3(4)。 END IF。 ELSE IF YOU1=0110 THEN LJ=REST(5)。 ZQ:OUT STD_LOGIC。 YOU1=YOU。 END IF 。 ELSE IF SOUT(6)=39。139。 THEN YOU=0001。 USE 。039。 END IF。 IF REST(6)=39。139。 AND SIN(4)=39。139。 THEN SOUT(2)=39。139。 ELSE SOUT(0)=39。 END SUOCUNQI。 END ARCHITECTURE F1。 SIGNAL K : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) 。 SIGNAL C : STD_LOGIC。 END COMPONENT 。 COMPONENT SOU PORT (SECOND1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 SOUT3:IN STD_LOGIC_VECTOR(7 DOWNTO 0) 。 SOUT3:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) )。 SCOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。通過這次的課程設計,使我對 FPGA 的設計有了更加直觀的認識,雖然這次的設計不是很完美,但在以后的學習中我會去完善它的。 U6 : FENGMING PORT MAP ( BCD = B , MING = MING_out )。 SIGNAL I : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) 。 SIGNAL A : STD_LOGIC_VECTOR ( 7 DOWNTO 0 ) 。 COMPONENT FENGMING PORT (BCD: IN STD_LOGIC_VECTOR(15 DOWNTO 0)。 SECOND1,SECOND2,MINITUE1,MINITUE2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。 COMPONENT HUANYOU2 PORT (REST:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 SOUT1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 CLK_ain : IN STD_LOGIC。 MING=ING。 END IF 。039。039。039。 USE 。 ARCHITECTURE ONE OF SOU IS BEGIN JISHI(15 DOWNTO 12)=SECOND1。 程序: LIBRARY IEEE。—— 橫杠 WHEN 1011=DISP=10111111 ?!?2 WHEN 0011=DISP=10110000 。 END IF。 ELSE IF CNT2 =0101 THEN LEDCS=00000001。 IF CNT2 =0001 THEN LEDCS=00010000。 END IF。 IF CNT 10000 THEN CLK_1K=39。 SECOND1,SECOND2,MINITUE1,MINITUE2:IN STD_LOGIC_VECTOR(3 DOWNTO 0) 。 END PROCESS。 IF MINI20101 THEN MINI2=MINI2+1。EVENT AND TIMECLK =39。 END IF。139。 PROCESS(CLK,SP) VARIABLE CNT : integer range 0 to 120 。 ARCHITECTURE TWO OF TIME1 IS SIGNAL TIMECLK:STD_LOGIC。 END TWO 。 基于 FPGA 的病房呼叫系統(tǒng)的設計 9 END IF 。 THEN IF SEC11001 THEN SEC1=SEC1+1。039。 ELSE CNT :=0 。139。 SIGNAL MINI1,MINI2:STD_LOGIC_VECTOR(3 DOWNTO 0 )。 程序一: LIBRARY IEEE。 END IF。 ELSE IF YOU1=0101 THEN ZQ=SOUT3(4)。 END IF。 ELSE IF YOU1=0110 THEN LJ=REST(5)。 ZQ:OUT STD_LOGIC。 END ARCHITECTURE。 END IF 。 THEN YOU=0111。 ELSE IF SOUT(4)=39。139。 YOU1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 SOUT2=SOUT。139。 THEN SOUT(6)=39。139。 ELSE SOUT(4)=39。039。 END IF。 IF REST(2)=39。139。 AND SIN(0)=39。 —— 輸入信號 SIN:IN STD_LOGIC_VECTOR (7 DOWNTO 0)。 基于 FPGA 的病房呼叫系統(tǒng)的設計 2 3 模塊的劃分及各模塊的功能實現(xiàn) 模塊的劃分 ? 對病房呼叫的信號 進行存儲并處理信號,這就需要一個對信號進行存儲的鎖存器; ? 對發(fā)出的信號進行優(yōu)先選擇,就需要一個數(shù)據(jù)選擇器; ? 對時間控制信號的優(yōu)先選擇,使數(shù)碼管可以顯示優(yōu)先級最高的信號時間,又需要一個數(shù)據(jù)選擇器; ? 顯示時間,并對其進行計時,需要一個計時器; ? 用七段數(shù)碼管 顯示時間 ,需要一個可以驅動七段數(shù)碼管的顯示器 ; ? 蜂鳴,就需要一個蜂鳴器; ? 在設計變成的過程中, 計時器與蜂鳴器的位寬不同,有需要一個轉換連接的連接器。 關鍵字: 病房呼叫,系統(tǒng), FPGA,模塊, VHDL 1 原理 假設有 8 個病房,即有八個信號輸入 ,同時要有時間顯示與聲音提示。 來實現(xiàn)病房呼叫系統(tǒng)的功能實現(xiàn)。 原理圖: 2 方案論證 我對這個設計開始 和現(xiàn)在所用的設計不同的方案,但在頂層設計時發(fā)現(xiàn)并不好實現(xiàn),中間的信號太多太龐雜,連接起來比較復雜,但在后續(xù)編輯中沒有預期的效果,在多次調試仿真中無法得到想要的結果,所以我選擇了排除錯誤,首先從自身下手 ,對每個模塊進行單獨設計,利用 VHDL 語言的可移植性,應用原件例化語句將模塊連接起來,通過例化后的電路圖與原理圖進行比較,看是否有連錯等問題。 ENTITY SUOCUNQI IS PORT( REST:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。139。 IF REST(1)=39。 END IF。039。 ELSE SOUT(3)=39。139。 THEN SOUT(5)=39。139。 AND SIN(7)=39。 SOUT1=SOUT。 ENTITY HUANYOU IS PORT(SOUT:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 復位后的波形 基于 FPGA 的病房呼叫系統(tǒng)的設計 5 ELSE IF SOUT(1)=39。 THEN YOU=0100。139。 END IF 。 YOU2=YOU。 SOUT3:IN STD_LOGIC_VECTOR(7 DOWNTO 0) 。 ELSE IF YOU1=0101 THEN LJ=REST(4)。 END IF。 ELSE IF YOU1=0100 THEN ZQ=SOUT3(3)。 END IF。 程序一和程序二的功能相同,程序一采用兩個 PROCESS 語句,程序一只用了一個 PROCESS語句,但在頂層設計時程序 一中的第二個 PROCESS 語句沒有執(zhí)行,所以在頂層設計中采用的是程序二。 SIGNAL SEC1,SEC2:STD_LOGIC_VECTOR(3 DOWNTO 0 )。EVENT AND CLK =39。039。 PROCESS (TIMECLK,REST) BEGIN IF REST=39。139。 ELSE MINI2=0000。 END PROCESS 。 END TIME1。 SECOND2(3 DOWNTO 0 )=SEC2(3 DOWNTO 0)。 IF CNT 60 THEN TIMECLK=39。 END IF。 ELSE IF TIMECLK39。 ELSE MINI1=0000。 END IF。 ENTITY DISPLAY IS PORT(CLK:IN STD_LOGIC?!?1k 的掃描信號 BEGIN IF RISING_EDGE(CLK) THEN CNT:=CNT+1。 分 個位 分 十位 秒 個位 秒 十位 基于 FPGA 的病房呼叫系統(tǒng)的設計 12 END IF。 THEN CNT2 := CNT2 +1。 DATA=SECOND2。 END IF?!?1 WHEN 0010=DISP=10100100 ?!?9 WHEN 1010=DISP=10111111 。連接模塊的輸出部分和時間模塊的 mmss 各部分相互對應,模塊輸出部分位寬的15— 12 位與計秒的個位的 3— 0 位對應,位寬的 11— 8 位與計秒的十位的 3— 0 想對應,位寬的 7— 4 位與計分的個位的 3— 0 想對應,位寬的 3分 十位 分 個位 橫杠 秒 十位 秒 個位 病房號 基于 FPGA 的病房呼叫系統(tǒng)的設計 14 — 0 位與計分的十位的 3— 0 為相對應。 END SOU。 程序: LIBRARY IEEE。 ELSE IF BCD=0001000000000000 THEN ING=39。 ELSE IF BCD=0101000000000000 THEN ING=39。 ELSE IF BCD=0010000000110000 THEN ING=39。 END IF 。 END IF 。 RST_ain : IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 )。 1— 5 秒時間內蜂鳴器工作 5 秒以后蜂鳴器不工作 基于 FPGA 的病房呼叫系統(tǒng)的設計 17 SIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 END COMPONENT 。 TI: OUT STD_LOGIC。 END COMPONENT 。 END COMPONENT 。 SIGNAL H : STD_LOGIC_VECTOR (