【正文】
號(hào)的輸入是離散的,而且系統(tǒng)對(duì)請(qǐng)求的響應(yīng)也是離散的,因此請(qǐng)求信號(hào)的存儲(chǔ)要求新的請(qǐng)求信號(hào)不能覆蓋原來的請(qǐng)求信號(hào),只有響應(yīng)動(dòng)作完成后才能清除存儲(chǔ)器內(nèi)對(duì)應(yīng)的請(qǐng)求信號(hào)位。 第 12 頁 共 41 頁 圖 請(qǐng)求信號(hào)操作電路 基于 FPGA的控制器模塊 控制器模塊是系統(tǒng) 的核心,通過對(duì)存儲(chǔ)的數(shù)據(jù)(含請(qǐng)求、到達(dá)樓層等信號(hào))進(jìn)行比較、判斷以驅(qū)動(dòng)系統(tǒng)狀態(tài)的流轉(zhuǎn)。一般情況下,電梯工作起始點(diǎn)是第一層,起始狀態(tài)是等待狀態(tài),啟動(dòng)條件是收到上升請(qǐng)求。其使用的芯片是 Xilinx公司 Spartan II系列的 XC2S155CS144C芯片。 Spartan II 可編程們 Spartan II器件的工作電壓為 ,采用 m/ m CMOS工藝, 6層金屬連線制造。 電機(jī)的控制信號(hào)一般需要兩位,本系統(tǒng)中電機(jī)有 3種工作狀態(tài):正轉(zhuǎn)、反轉(zhuǎn)和停轉(zhuǎn)狀態(tài)。 系統(tǒng)的顯示輸出包括數(shù)碼管請(qǐng)求信號(hào)顯示、數(shù)碼管樓層顯示。 第 13 頁 共 41 頁 1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e vi s i o nS iz eBD a t e : 6 M a y 20 10 S h e e t of F il e : F :\ by\ M yD e s i g db D r a w n B y:R1R E S 2R2R E S 2R3R E S 2R4R E S 2R5R E S 2R6R E S 2R7R E S 2R8R E S 2R9R E S 2R 10R E S 2R 11R E S 2R 12R E S 2R 13R E S 2R 14R E S 2R 15R E S 2R 16R E S 2R 17R E S 2R 18R E S 2R 19R E S 2R 20R E S 2R 21R E S 2R 22R E S 2R 23R E S 2R 24R E S 2R 25R E S 2R 26R E S 2R 27R E S 2R 28R E S 2c _ u1L E Dc _ u2L E Dc _ u3L E Dc _ u4L E Dc _ u5L E Dc _ u6L E Dc _ u7L E Dc _ u8L E Dc _ u9L E Dc _ d2L E Dc _ d3L E Dc _ d4L E Dc _ d5L E Dc _ d6L E Dc _ d7L E Dc _ d8L E Dc _ d9L E Dc _ d1 0L E Dd1L E Dd2L E Dd3L E Dd4L E Dd5L E Dd6L E Dd7L E Dd8L E Dd9L E Dd1 0L E DG N D 圖 電梯內(nèi)、外請(qǐng)求信號(hào)顯示電路圖 圖 數(shù)碼管樓層顯示電路圖 本系統(tǒng)具有請(qǐng)求信號(hào)顯示功能,結(jié)合方向顯示,可以減少用戶對(duì)同一請(qǐng)求的輸入次數(shù),這樣就延長了電梯按鍵的使用壽命。同時(shí),電梯外部的人也可以根據(jù)請(qǐng)求信號(hào)顯示(上升請(qǐng)求、下降請(qǐng)求、無請(qǐng)求),就可以 避免沒必要的重復(fù)請(qǐng)求信號(hào)輸入。 圖 報(bào)警輸出電路圖 報(bào)警輸出電路圖主要由頻率放大器構(gòu)成。 第 15 頁 共 41 頁 第 5 章 電梯控制系統(tǒng)軟件設(shè)計(jì)及仿真 鍵盤輸入軟件設(shè)計(jì) 鍵盤掃描模塊 鍵盤掃描電路是用于產(chǎn)生 keydrv4 到 keydrv0 信號(hào),其變化的順序依次為 11110→11101→ 11011→ 10111→ 01111→??周而復(fù)始地掃描。而太長的停留時(shí)間則容易丟失某些較快的按鍵動(dòng)作。其中 clk_scan 是周期為 10ms 的掃描時(shí)鐘,keydrv 為輸出到鍵盤的掃描信號(hào),寬度為 5 位。 use 。 掃描時(shí)鐘,周期 10ms keydrv:out std_logic_vector(4downto 0))。 architecture behavior of keysan is constant s0:std_logic_vector(4 downto 0):=11110。 constant s2:std_logic_vector(4 downto 0):=11011。 constant s4:std_logic_vector(4 downto 0):=01111。 狀態(tài)機(jī) 現(xiàn)態(tài) 第 16 頁 共 41 頁 signal next_state:std_logic_vector(4 downto 0)。event and clk_scan=39。) then present_state=next_state。 end process。 when s1=next_state=s2。 when s3=next_state=s4。 when others=next_state=s0。 end process。 輸出譯碼 end behavior。該狀態(tài)機(jī)是一個(gè) onehot 狀態(tài)機(jī),并且輸出值就是狀態(tài)機(jī)的狀態(tài),沒有通過一個(gè)邏輯電路來做輸出譯碼。圖 為外部接口圖,圖 為波形仿真圖。按鍵標(biāo)志產(chǎn)生電路是產(chǎn)生按鍵標(biāo)志信號(hào) keypressed 的電路,其外部接口如圖 所示。 clk 在系統(tǒng)中的頻率是最高,其他時(shí)鐘都由它分頻產(chǎn)生。該信號(hào)用于與其他模塊一起,負(fù)責(zé)通知其他模塊鍵盤上有按鍵發(fā)生。 程序如下: library IEEE。 use 。 鍵盤輸入 keydrv:in std_logic_vector(4downto 0)。 全局時(shí)鐘 clk_scan: in std_logic。 輸出值 c_d2,c_d3,c_d4,c_d5,c_d6 ,c_d7, c_d8, c_d9, c_d10:out std_logic。 quick,clr:out std_logic。 有鍵被按下標(biāo)志 end keydecoder。 temp= keyinamp。 用于產(chǎn)生 keypressed signal q1,q2,q3,q4,q5,q6,q7,q8,q9,q10:std_logic。 同步化的 keypressed begin temp=keydrvamp。 process(temp) 譯碼進(jìn)程 begin case temp is when 11110111110=c_u1=39。 temp_pressed=39。 when 11110111101=c_u2=39。 temp_pressed=39。 when 11110111011=c_u3=39。 temp_pressed=39。 when 11110110111=c_u4=39。 第 19 頁 共 41 頁 temp_pressed=39。 when 11110101111=c_u5=39。 temp_pressed=39。 when 11110111111= c_u6=39。 temp_pressed=39。 when 11101111110= c_u7=39。 temp_pressed=39。 when 11101111101= c_u8=39。 temp_pressed=39。 when 11101111011= c_u9=39。 temp_pressed=39。 when 11101110111=c_d2=39。 temp_pressed=39。 when 11101101111= c_d3=39。 temp_pressed=39。 when 11101011111= c_d4=39。 temp_pressed=39。 when 11011111110= c_d5=39。 temp_pressed=39。 when 11011111101= c_d6=39。 temp_pressed=39。 when 11011111011= c_d7=39。 temp_pressed=39。 when 11011110111= c_d8=39。 temp_pressed=39。 when 11011101111= c_d9=39。 temp_pressed=39。 when 11011011111= c_d10=39。 temp_pressed=39。 when 10111111110=d1=39。 第 20 頁 共 41 頁 temp_pressed=39。 when 10111111101=d2=39。 temp_pressed=39。 when 10111111011=d3=39。 temp_pressed=39。 when 10111110111=d4=39。 temp_pressed=39。 when 10111101111=d5=39。 temp_pressed=39。 when 10111011111=d6=39。 temp_pressed=39。 when 01111111110=d7=39。 temp_pressed=39。 when 01111111101=d8=39。 temp_pressed=39。 when 01111111011=d9=39。 temp_pressed=39。 when 01111110111=d10=39。 temp_pressed=39。 when 01111101111=quick=39。 temp_pressed=39。 when 01111011111=clr=39。 temp_pressed=39。 when others= temp_pressed=39。 end case。 process(clk_scan) 按鍵標(biāo)志產(chǎn)生電路 begin if(clk_scan39。139。 q2=q1。 q4=q3。 q6=q5。 q8=q7。 keypressed_asy=q1 or q2 or q3 or q4 or q5 or q6 or q7 or q8。 process(clk) 同步化 keypressed_asy begin if(clk39。139。 q10=q9。 keypressed=q9 and not(q10)。 end rt1。按鍵信號(hào)temp_pressed 首先通過 clk_scan 信號(hào)的上升沿采樣。采樣后的信號(hào)被分別延遲 1到 8個(gè) clk_scan周期得到 8個(gè)信號(hào) q1,q2,q3和 q4 ,q5, q6, q7, q8,。原來程序中一個(gè)長時(shí)間的按鍵過程有可能會(huì)被認(rèn)為是多次按鍵,通過這種方法使得一個(gè)長時(shí)間的按鍵仍然被認(rèn)為是一次按鍵。它的輸入是全局時(shí)鐘,在這里假設(shè)全局時(shí)鐘頻率為32MHz。 第 23 頁 共 41 頁 程序如下: library IEEE。 use 。 全局時(shí)鐘 clk_scan:out std_logic)。 architecture rt1 of clk_gen is signal t:integer range 0 to 199。event and clk=39。) then if(t=t39。 else t=t+1。 end if。 process(t,clk) 譯碼輸出 begin if(clk39。139。high/2 then clk_scan=39。 else clk_scan=39。 en