畢業(yè)設(shè)計(jì)(論文)基于VHDL的電子密碼鎖的設(shè)計(jì)_第1頁
畢業(yè)設(shè)計(jì)(論文)基于VHDL的電子密碼鎖的設(shè)計(jì)_第2頁
畢業(yè)設(shè)計(jì)(論文)基于VHDL的電子密碼鎖的設(shè)計(jì)_第3頁
畢業(yè)設(shè)計(jì)(論文)基于VHDL的電子密碼鎖的設(shè)計(jì)_第4頁
畢業(yè)設(shè)計(jì)(論文)基于VHDL的電子密碼鎖的設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘要fpga/vhdl是近幾年集成電路中發(fā)展最快的產(chǎn)品。由于fpga性能的高速發(fā)展以及設(shè)計(jì)人員自身能力的提高,可編程邏輯器件供應(yīng)商將進(jìn)一步擴(kuò)大可編程芯片的領(lǐng)地,將復(fù)雜的專用芯片擠向高端和超復(fù)雜應(yīng)用。據(jù)ic insights的數(shù)據(jù)顯示,fpga市場(chǎng)從1999年的29億美元增長(zhǎng)到去年的56億美元,幾乎翻了一番。matas預(yù)計(jì)這種高速增長(zhǎng)局面以后很難出現(xiàn),但可編程邏輯器件依然是集成電路中最具活力和前途的產(chǎn)業(yè)。本文介紹的vhdl密碼鎖應(yīng)具有如下功能:密碼預(yù)先存入寄存器中,開鎖時(shí),輸入密碼存入另一寄存器中,當(dāng)按下“確定”鍵時(shí),啟動(dòng)比較器,比較兩個(gè)寄存器中的內(nèi)容,當(dāng)結(jié)果相同時(shí)開鎖;當(dāng)結(jié)果不同時(shí)不開鎖。用戶

2、需要修改密碼時(shí),先開鎖,再按“設(shè)定密碼”,清除預(yù)先存入的密碼,通過鍵盤輸入新的2位十進(jìn)制碼,按“確定”完成。關(guān)鍵詞:vhdl,密碼鎖,矩陣目錄摘要1目錄2一、 設(shè)計(jì)要求3二 電路組成3三 功能電路的設(shè)計(jì)41、總體設(shè)計(jì)框圖42、鍵盤接口電路43時(shí)序產(chǎn)生電路64鍵盤掃描電路75鍵盤消抖電路86鍵盤譯碼電路107按鍵存儲(chǔ)電路13(1)siso串行輸入/串行輸出14(2)sipo-串行輸入/并行輸出15(3)piso-并行輸入/串行輸出16(4)pipo-并行輸入/并行輸出178密碼設(shè)置和比較模塊189電鎖控制電路設(shè)計(jì)19(1)數(shù)字按鍵輸入部分19(2)功能鍵輸入部分19(3)三種工作模式19附件1:

3、程序清單20一、 設(shè)計(jì)要求設(shè)計(jì)一個(gè)簡(jiǎn)單的數(shù)字電子密碼鎖,密碼為6位。功能1、 密碼輸入:每按下一個(gè)鍵,要求在數(shù)碼管上顯示,并依次左移;2、密碼清除:清除密碼輸入,并將輸入置為”000000”;3、密碼修改:將當(dāng)前輸入設(shè)為新的密碼;4、上鎖和開鎖。二 電路組成為達(dá)到以上功能,可將電子密碼鎖分為以下幾個(gè)模塊:1、鍵盤接口電路鍵盤矩陣、鍵盤掃描、鍵盤消抖、鍵盤譯碼及按鍵存儲(chǔ)。2、電鎖控制電路:數(shù)字按鍵輸入、存儲(chǔ)及清除。功能按鍵的設(shè)計(jì)。密碼清除、修改與存儲(chǔ)。電鎖的激活與解除。3、輸出顯示電路bcd 譯碼、動(dòng)態(tài)掃描電路。三 功能電路的設(shè)計(jì)1、總體設(shè)計(jì)框圖2、鍵盤接口電路矩陣式鍵盤工作原理:矩陣式鍵盤是一

4、種常見的輸入裝置,在計(jì)算機(jī)、電話、手機(jī)、微波爐等各工電子產(chǎn)品中被廣泛應(yīng)用。如圖所示為一34 矩陣式鍵盤。矩陣式鍵盤以行、列形式排列,圖中為4 行3 列,鍵盤上的每一個(gè)按鍵盤其實(shí)是一個(gè)開關(guān)電路,當(dāng)某鍵被按下時(shí),該按鍵所對(duì)應(yīng)的位置就呈現(xiàn)邏輯0 的狀態(tài),鍵盤的掃描可以以行掃或列掃方式進(jìn)行,圖中為行掃方式,keyr3keyr0 為掃描信號(hào),其中的某一位為0 即掃描其中的一行,具體見表1-1.鍵盤掃描信號(hào)keyr3 與第一行相連,keyr2 與第二行相連,依此類推。很顯然,掃描信號(hào)的變化順序?yàn)椋?111、1011、1101、1110,周而復(fù)始。在掃描的過程中,當(dāng)有鍵按下時(shí),對(duì)應(yīng)的鍵位就為邏輯0狀態(tài),從而

5、從keyc2.0 讀出的鍵值相應(yīng)列為0.具體情況如表1-2 所示:若從keyc2.0 讀出的值全為1 時(shí),表示沒有鍵被按下,則不進(jìn)行按鍵的處理。如果的鍵被按下,則將keyc2.0 讀出的送至鍵盤譯碼電路進(jìn)行譯碼。表1-2 鍵盤掃描與其對(duì)應(yīng)的鍵值的關(guān)系時(shí)序產(chǎn)生電路:時(shí)序電路的產(chǎn)生:在一個(gè)系統(tǒng)的設(shè)計(jì)中,往往需要多種時(shí)鐘信號(hào),最為方便的方法是利用一個(gè)自由計(jì)數(shù)器來產(chǎn)生各種需要的頻率。本電路需要:系統(tǒng)主時(shí)鐘、消抖取樣時(shí)鐘和動(dòng)態(tài)掃描時(shí)鐘。3時(shí)序產(chǎn)生電路有如下vhdl 程序,請(qǐng)分析其輸出結(jié)果:library ieee;use ieee.std_logic_1164.all;use ieee.std_logi

6、c_arith.all ;use ieee.std_logic_unsigned.all ;entity free_counter isport (clk : in std_logic ;clk_a : out std_logic ;clk_b : out std_logic_vector(1 downto 0) ;end free_counter ;architecture a of free_counter issignal q : std_logic_vector(6 downto 0);beginprocess (clk)beginif clkevent and clk = 1 the

7、nq = q + 1;end if;end process;clk_a = q(1) ;clk_b = q(4 downto 3) ;end a ;分析:首選信號(hào)q 建立一個(gè)9 位自由計(jì)數(shù)器,對(duì)輸入主時(shí)鐘進(jìn)行降頻處理;使用clk_a=q(1)語句,取得一個(gè)脈沖波形,對(duì)主時(shí)鐘進(jìn)行2 分頻,其值為0、1、0、1;使用clk_b=q(4 downto 3)語句,取得一脈沖序列,依次為00、01、10、11、00.;4鍵盤掃描電路目標(biāo):提供鍵盤掃描信號(hào),即表1-1 中的keyr3.0,變化順序依次為0111、1011、1101、1110.。依次重復(fù)出現(xiàn)。程序清單:library ieee;use ie

8、ee.std_logic_1164.all;use ieee.std_logic_arith.all ;use ieee.std_logic_unsigned.all ;entity scan isport (clk : in std_logic ;clk_scan : out std_logic_vector (3 downto 0);end scan ;architecture a of scan issignal s : std_logic_vector(1 downto 0);signal q: std_logic_vectoe(3 downto 0);beginprocess (cl

9、k)beginif clkevent and clk=1 thenq = q+1;s :=q(3 downto 2);end if;end process;-排錯(cuò)!scan_out= 1110 when s=0 else1101 when s=1 else1011 when s=2 else0111 when s=3 else1111;end a ;說明:程序中,s 信號(hào)是用來產(chǎn)生掃描信號(hào)的四個(gè)狀態(tài),q 是為了對(duì)輸入主時(shí)鐘進(jìn)行降頻處理。5鍵盤消抖電路因?yàn)榘存I大多是機(jī)械式開關(guān),在開關(guān)切換的瞬間會(huì)在接解點(diǎn)出現(xiàn)來回彈跳的現(xiàn)象,其現(xiàn)象可用圖1-2表示:由圖可見,雖然只是按了一次鍵,實(shí)際產(chǎn)生的按鍵信號(hào)卻

10、不只跳動(dòng)一次,經(jīng)過取樣信號(hào)的檢查后,將會(huì)造成誤碼判,認(rèn)為是按了兩次鍵。如果調(diào)整取樣頻率,可以發(fā)現(xiàn)抖現(xiàn)象得到了改善。按鍵信號(hào):取樣信號(hào):取樣結(jié)果:調(diào)整取樣頻率后的情況如下:程序清單:library ieee;use ieee.std_logic_1164.all;library altera;use altera.maxplus2.all;entity debouncing isport(d_in, clk : in std_logic;dd1, dd0, qq1, qq0 : out std_logic ;d_out,d_out1 : out std_logic);end debouncing

11、 ;architecture a of debouncing issignal vcc, inv_d : std_logic ;signal q0, q1 : std_logic ;signal d1, d0 : std_logic ;beginvcc = 1 ;inv_d vcc , q = q0 , clk = clk, clrn = inv_d , prn = vcc);dff2 : dff port map (d =vcc , q = q1, clk = clk, clrn = q0 , prn = vcc);process (clk)beginif clkevent and clk=

12、1 thend0 = not q1;d1 = d0;end if ;end process ;dd0 = d0; dd1 = d1; qq1 = q1; qq0 = q0;d_out = not (d1 and not d0);d_out1 = not q1 ;end a;6鍵盤譯碼電路從前面所述的鍵盤掃描電路的輸出可以看出,掃描得到的信號(hào)規(guī)律性不強(qiáng),例如數(shù)字鍵主要用來輸入數(shù)字,但鍵盤掃描輸出無法拿來直接使用,必須對(duì)其進(jìn)行譯碼才能使用。如表所示,只要使用casewhen 或when else 語句,便可完成設(shè)計(jì)。鍵盤譯碼程序清單:library ieee;use ieee.std_logic_

13、1164.all;use ieee.std_logic_arith.all ;use ieee.std_logic_unsigned.all ;-*entity keyboard_dec1 isport (clk : in std_logic ;clk_keyboard : in std_logic_vector (1 downto 0);c: in std_logic_vector (2 downto 0); -key code after debounceout_numb : out std_logic_vector(3 downto 0); - for numb. keyout_func

14、 : out std_logic_vector(3 downto 0); - for func. keyflag_numb : out std_logic ; -flag for numb. keyflag_func : out std_logic -flag for func. keykeyr3.0 keyc2.0 對(duì)應(yīng)的按鍵 譯碼輸出 功能011 1 0001 數(shù)碼輸入0111 101 2 0010 數(shù)碼輸入110 3 0011 數(shù)碼輸入011 4 0100 數(shù)碼輸入1011 101 5 0101 數(shù)碼輸入110 6 0110 數(shù)碼輸入011 7 0111 數(shù)碼輸入1101 101 8 1

15、000 數(shù)碼輸入110 9 1001 數(shù)碼輸入011 0 0100 激活電鎖1110 101 0000 數(shù)碼輸入110 00017);end keyboard_dec1 ;-*architecture a of keyboard_dec1 issignal ff : std_logic ; -flag of func.signal fn : std_logic ; -flag of numb.signal z : std_logic_vector(4 downto 0) ; -scan codesignal f : std_logic_vector(3 downto 0) ; -for fun

16、c. codesignal n : std_logic_vector(3 downto 0) ; -for numb. codebeginprocess(clk)beginz n n n n n n n n n n n f f f = 1000 ;end case ;end if ;end process ;fn = not ( n(3) and n(2) and n(1) and n(0) ) ;ff = ( not f(3) and f(2) and not f(1) and not f(0) or (not f(3) and not f(2) andnot f(1) and f(0) )

17、 ;-connectionflag_numb = fn ;8flag_func = ff ;out_numb = n ;out_func = f ;end a;說明:1、鍵盤譯碼電路除了負(fù)責(zé)將鍵盤送出的數(shù)據(jù)進(jìn)行譯碼外,另外就是在譯碼的同時(shí),必須判別所按下的是數(shù)字鍵還是功能鍵。2、若為數(shù)字鍵,則 flag_numb=1,且out_num 輸出bcd 碼,并送往顯示電路。3、若為功能鍵,則 flag_func=1,且out_func 輸出4 位碼,并送往電鎖控制電路。7按鍵存儲(chǔ)電路因?yàn)槊看伟存I都會(huì)產(chǎn)生新的數(shù)據(jù),可能會(huì)覆蓋前面的數(shù)據(jù),所以需要一個(gè)按鍵存儲(chǔ)電路,將鍵盤掃描譯碼后的結(jié)果記錄下來。這一功能

18、可以用移位寄存器來實(shí)現(xiàn)。常見的移位寄存器的下列四種:a.串行輸入/串行輸出(siso)b.串行輸入/并行輸出(sipo)c.并行輸入/串行輸出(piso)d.并行輸入/并行輸出(pipo)(1)siso串行輸入/串行輸出library ieee;use ieee.std_logic_1164.all;entity siso isport(data_in :in std_logic;clk :in std_logic;data_out :out std_logic);end siso ;architecture a of siso issignal q: std_logic_vector(3 d

19、ownto 0);beginprocess(clk)beginif clkevent and clk = 1 thenq(0) = data_in;for i in 1 to 3 loopq(i) = q(i-1);end loop;end if;end process;data_out = q(3);end a;(2)sipo-串行輸入/并行輸出library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all ;use ieee.std_logic_unsigned.all ;entity sipo isport(d_

20、in :in std_logic;clk :in std_logic;d_out :out std_logic_vector(3 downto 0);end sipo;architecture a of sipo issignal q: std_logic_vector(3 downto 0);beginprocess(clk)beginif clkevent and clk = 1 thenq(0) = d_in;for i in 1 to 3 loopq(i) = q(i-1);end loop;end if;end process;d_out = q;end a;(3)piso-并行輸入

21、/串行輸出library ieee;use ieee.std_logic_1164.all;entity piso isport(data_in :in std_logic_vector(3 downto 0);clk :in std_logic;nload :in std_logic;data_out :out std_logic);end piso;architecture a of piso issignal q: std_logic_vector(3 downto 0);beginprocess(nload,clk)beginif nload = 0 thenq = data_in;e

22、lsif clkevent and clk = 1 thenq(1) = q(0) ;for i in 1 to 3 loopq(i) = q(i-1);end loop;end if;end process;process(nload,clk)beginif nload = 0 thendata_out = 0;elsif clkevent and clk = 1 thendata_out = q(3);end if;end process;end a;(4)pipo-并行輸入/并行輸出library ieee;use ieee.std_logic_1164.all;use ieee.std

23、_logic_arith.all ;use ieee.std_logic_unsigned.all ;entity piso isport(data_in :in std_logic_vector(3 downto 0);clk :in std_logic;data_out :out std_logic_vector(3 downto 0);end piso;architecture a of piso issignal q: std_logic_vector(3 downto 0);beginprocess(nload,clk)beginif clkevent and clk = 1 the

24、nq=data_in;data_out=q;end if;end process;end a;8密碼設(shè)置和比較模塊該模塊代碼如下:process (a,reset,q,enter,set,clk)beginif clk=1 and clkevent thenif reset=1 then ab=0;elsif enter=1 thenif set=1 thennum=q;dv=a;elsif dv=a and q=num then ab=1;elsif qr3 then qr=qr+1;else alarm=1;end if;end if;if ab=1 and lockopen=1 then

25、 opn=1;elsif reset=1 then opn=0;else opn=0;end if;end if;end procee;該模塊由一個(gè)進(jìn)程描述。設(shè)計(jì)思想是當(dāng)按下#鍵后,如果緊接著按下*鍵,則系統(tǒng)記錄在此之前所輸入的數(shù)字作為設(shè)定的密碼,這一功能是一方面用dv=a 來實(shí)現(xiàn)十位十進(jìn)制數(shù)的鎖存,另一方面用num=q 語句來記錄實(shí)際輸入的要設(shè)定的密碼位數(shù),我認(rèn)為這是一種用簡(jiǎn)單代碼實(shí)現(xiàn)密碼位數(shù)可隨意更改的功能的較好的方法;當(dāng)按下#鍵后,如果緊接著沒有按下*鍵,則系統(tǒng)就將剛才輸入的數(shù)字與原來設(shè)定的密碼進(jìn)行比較,如果正確則會(huì)在緊接著按下lockopen鍵后控制opn引腳輸出高點(diǎn)平驅(qū)動(dòng)開鎖電磁鐵開

26、鎖;如果輸入密碼錯(cuò)誤,則在按下lockopen鍵后不進(jìn)行開鎖操作并使錯(cuò)誤密碼輸入次數(shù)計(jì)數(shù)器qr 加一,并通過qr 不等于零驅(qū)動(dòng)時(shí)間記錄模塊記錄下錯(cuò)誤密碼輸入的次數(shù)和時(shí)間,同時(shí)等待下一次密碼輸入,如果qr=3 即累記記錄下錯(cuò)誤密碼輸入次數(shù)達(dá)到三次,則系統(tǒng)通過信號(hào)alarm 驅(qū)動(dòng)報(bào)警模塊發(fā)出警報(bào)。9電鎖控制電路設(shè)計(jì)電鎖控制電路是整個(gè)電路的控制中心,主要完成如下功能:(1)數(shù)字按鍵輸入部分 如果輸入數(shù)字鍵,第一個(gè)數(shù)字會(huì)從顯示器的最右端開始顯示,此后每新按一個(gè)數(shù)字時(shí),顯示器上的數(shù)字必須往左移動(dòng)一位。 若想要更改輸入的數(shù)字,可按退格鍵來清除前一個(gè)輸入的數(shù)字,或按清除鍵清除輸入的所有數(shù)字,再重新輸入4 位

27、數(shù)字。 既然設(shè)計(jì)的是四位電子密碼鎖,當(dāng)輸入的數(shù)字鍵超過 4 位時(shí),電路不應(yīng)理會(huì)。(2)功能鍵輸入部分 退格鍵:只清除前一個(gè)輸入的數(shù)字。 清除鍵:清除所有輸入。 密碼核對(duì):在密碼更改,開鎖之前必須先核對(duì)密碼。 密碼變更:按下此鍵將目前輸入的數(shù)字設(shè)定為新的密碼。 激活電鎖:上鎖,上鎖之前必須先設(shè)定密碼才能上鎖。 解除電鎖:檢查輸入的密碼是否正確,正確才開鎖。 萬用密碼:電鎖維護(hù)者使用。(3)三種工作模式附件1:程序清單-*-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all ;use ieee.std_logi

28、c_unsigned.all ;library altera;use altera.maxplus2.all;-*entity elec_lock isport (clk_4m : in std_logic ; -system original clock 4m輸入文字模式輸入 4 位數(shù)字退格及清除上鎖工作模式:(輸入密碼)、密碼核對(duì)、變更密碼、存儲(chǔ)密碼及激活上鎖。開鎖工作模式:(輸入密碼)、密碼核對(duì)、開鎖。clk_scan : out std_logic_vector (3 downto 0) ; -scan sequencekey_in : in std_logic_vector (2 d

29、ownto 0) ; -key in button codeflag_numb : out std_logic ;flag_func : out std_logic ;led_com : out std_logic ; - for lp-2900 onlyclear : out std_logic ; -*enlock : out std_logic ; -1:lock, 0:unlocknumb_cnt : out std_logic_vector (2 downto 0) ;bcd_code : out std_logic_vector (15 downto 0) ;selout : ou

30、t std_logic_vector (1 downto 0) ; -fit to lp-2900segout : out std_logic_vector(6 downto 0) - seg7 display);end elec_lock ;-*architecture a of elec_lock iscomponent debouncingport( d_in : in std_logic ;clk : in std_logic ;d_out : out std_logic ) ;end component ;signal clk : std_logic ;signal clk_keyb

31、oard : std_logic_vector(1 downto 0) ;signal clk_debounce : std_logic ;signal clk_display : std_logic_vector(1 downto 0) ;signal c : std_logic_vector(2 downto 0) ;signal n : std_logic_vector(3 downto 0) ;signal f : std_logic_vector(3 downto 0) ;signal fn : std_logic ;signal ff : std_logic ;signal sel

32、 : std_logic_vector (3 downto 0) ;signal out_numb : std_logic_vector(3 downto 0) ;signal out_func : std_logic_vector(3 downto 0) ;signal acc : std_logic_vector (15 downto 0) ;signal reg : std_logic_vector (15 downto 0) ;signal rr2 : std_logic ; - * rr2 = clearsignal qa, qb, bb : std_logic ;signal nc

33、 : std_logic_vector (2 downto 0) ;signal db : std_logic_vector( 3 downto 0);- number to displaysignal seg : std_logic_vector( 6 downto 0);- seg7 display signalbegin-*- connectionout_numb = n ;out_func = f ;flag_numb = fn ;flag_func = ff ;clk_debounce = clk ;numb_cnt= nc ;segout(6 downto 0) = seg; -

34、seven segment displayselout = clk_display ;led_com = 1 ; -for lp-2900 only-*- scan signal generatorcounter : blocksignal q : std_logic_vector(22 downto 0);signal s : std_logic_vector(1 downto 0) ; -keyboard scan about 15hz *signal sel : std_logic_vector (3 downto 0);beginprocess (clk_4m)beginif clk_

35、4mevent and clk_4m = 1 thenq = q+1;end if;end process;clk = q(0) ; -clk = clk_debounceclk_keyboard = q(5 downto 4) ; - *00-01-10-11clk_display 1101-1011-0111sel = 1110 when clk_keyboard=0 else1101 when clk_keyboard=1 else1011 when clk_keyboard=2 else0111 ;clk_scan key_in(0) ,d_out = c(0) ,clk = clk)

36、;u2: debouncing port map (d_in = key_in(1) ,d_out = c(1) ,clk = clk);u3: debouncing port map (d_in = key_in(2) ,d_out = c(2) ,clk = clk);end block debounuing ;-*-key_decoderkey_decoder : blocksignal z : std_logic_vector(4 downto 0) ; -key positionsignal r1, r0 : std_logic ;beginprocess(clk)beginz n n n n n n n n n n n f f f = 1000 ;end case ;end if ;end process ;fn = not ( n(3) and n(2) and n(1) and n(0) ) ;ff = ( not f(3) and f(2) and not f(1) and not f(0) or (not f(3) and not f(2)and not f(1) and f(0) ) ;-to generate clear signal for accprocess (c

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論