基于FPGA的等精度頻率計_第1頁
基于FPGA的等精度頻率計_第2頁
基于FPGA的等精度頻率計_第3頁
基于FPGA的等精度頻率計_第4頁
基于FPGA的等精度頻率計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、限制度)孽儻XIAMEN UNIVERSITY OF TECHNOLOGY光電與通信工程學院課程設(shè)計報告書課 設(shè)名稱:等精度頻率計年級專業(yè)及班級:姓名:學號:編輯版word一、課程設(shè)計目的1、進一步熟悉 Quartus II的軟件使用方法,熟悉 keil軟件使用;2、 熟悉單片機與可編程邏輯器件的開發(fā)流程及硬件測試方法;3、掌握等精度頻率計設(shè)計的基本原理。4、掌握獨立系統(tǒng)設(shè)計及調(diào)試方法,提高系統(tǒng)設(shè)計能力。實驗設(shè)備EDA最小系統(tǒng)板一塊(康芯)、PC機一臺、示波器一臺、信號發(fā)生器一臺、萬用表一個。二、設(shè)計任務利用單片機與FPGA 設(shè)計一款等精度頻率計,待測脈沖的檢測及計數(shù)部分由FPGA實現(xiàn),F(xiàn)PG

2、A的計數(shù)結(jié)果送由單片機進行計算,并將最終頻率結(jié)果顯示在數(shù)碼管上。要求該頻率計具有較高的測量精度,且在整個頻率區(qū)域能保持恒定的測試精度,具體指標如下:a)具有頻率測試功能:測頻范圍 100Hz5MHz。測頻精度:相對誤差恒為基準頻率的萬分之一。b)具有脈寬測試功能:測試范圍 10的仔,測試精度:0.1的。c)具有占空比測試功能:測試精度 1%99%。d)具有相位測試功能。(注:任務a 為基本要求,任務b、 c、 d 為提高要求)三、基本原理基于傳統(tǒng)測頻原理的頻率計的測量精度將隨被測信號頻率的下降而降低,實用中有較大的局限性,而等精度頻率計不但具有較高的測量精度,而且在整個頻率區(qū)域能保持恒定的測試

3、精度。3.1 等精度測頻原理等精度頻率計主控結(jié)構(gòu)如圖1 所示預置門控信號CL 選擇為 0.11s 之間(通過測試實驗得出結(jié)論:CL 在這范圍內(nèi)選擇時間寬度對測頻精度幾乎沒有影響)。 BZH 和 TF 分別是 2 個高速計數(shù)器,BZH對標準頻率信號(頻率為 Fs)進行計數(shù),設(shè)計數(shù)結(jié)果為 Ns;TF 對被測信號(頻率為Fx)進行計數(shù),計數(shù)結(jié)果為 Nx,則有MUX64-8 模塊并不是必須的,可根據(jù)實際設(shè)計進行取舍。分析測頻計測控時序,著重分析START的作用,完成等精度頻率計設(shè)計。3.2 FPGA 模塊FPGA 模塊所要完成的功能如圖1 所示,由于單片機的速度慢,不能直接測量高頻信號,所以使用高速F

4、PGA 為測頻核心。100MHZ 的標準頻率信號由FPGA 內(nèi)部的 PLL 倍頻實現(xiàn),待測信號TCLK 為方波,由信號發(fā)生器給出待測方波信號(注意:該方波信號帶有直流偏置,沒有負電壓,幅值3.3V) 。預制門控信號CL 由單片機發(fā)出,BRNA 和 ENA 分別是 BZH 與 TF 兩個計數(shù)編輯版 word器的計數(shù)允許信號端。FPGA將允許計數(shù)時間內(nèi)的 BZH、TF的運行結(jié)果送入單片機進行最后的計算。頂層文件如下:2以下是把20M 5倍頻的設(shè)置,利用FPGA內(nèi)部的PLL電路需要100M標準頻率信號,F(xiàn)PGA提供20M的頻率,所以需要建立PLL模塊, 使之五杯頻,得到所需的100M信號。功能仿真設(shè)

5、置:下圖是波形仿真的結(jié)果:編輯版word3.3單片機模塊43招Hr.G3 isEn 二Vdt14 :14.275 mJ5即KI£:MA>wwwnifMwmiwwiwMrmwm>mimwwps 63. 3 m L60.0 us £40. 3 us 320 0 m 400. 口 bz 48l 0 匚 5cpD. 0 nz64 0 o 730.。ns SOO Q az 3ED,0 口5 36。0 naIIiIIjITIZ單片機模塊完成對整個測頻系統(tǒng)的控制,包括對FPGA的控制以及數(shù)碼管的 顯示控制。測頻允許信號由單片機發(fā)出,并且單片機的P0 口負責循環(huán)讀取FPGA 發(fā)

6、送過來的測頻結(jié)果數(shù)據(jù)(BZH、TF兩個計數(shù)器的計數(shù)結(jié)果,每次傳送 8位數(shù) 據(jù)),P2負責發(fā)送控制信號,單片機可以通過結(jié)束信號了解測頻記數(shù)是否結(jié)束, 以確定何時開始讀取數(shù)據(jù)。附上康芯原理圖截圖:E:-四、實驗現(xiàn)象占空比D 0 0 O S Q五、心得體會這周課程設(shè)計的題目是等精度頻率計的設(shè)計,由于書本上有一段程序,所以一開始只是將書上的程序和顯示波形研究了一下。當?shù)秸n程設(shè)計的時候,將書上程序敲入并實現(xiàn)效果后有點茫然的感覺。于是,我又仔仔細細地分析了一遍設(shè)計 原理,從新改變了輸入的代碼,加上自己的思路,并能自己添加預置控制信息 CL模塊。原本我還想將測試頻率顯示在數(shù)碼管上,但是最終沒能實現(xiàn),這應該

7、是我的一個遺憾吧。設(shè)計中,我感受到了硬件描述語言的強大, 我可以幾乎不用 考慮硬件條件,將代碼導入就可實現(xiàn)功能。不要總想著去依靠書本上的原題或者 是他人,自己思考的做出來的,才算是自己真正收獲的。本次實驗最大的收獲莫 過于,獨立系統(tǒng)的去完成一項任務。在其中我查閱了大量的資料,尤其是數(shù)字電 路、quartersll軟件使用說明、EDA設(shè)計等方面的資料。通過本次學習使我對時序電路有了更深的理解, 具體體現(xiàn)在復位、計數(shù)、鎖存多環(huán)節(jié)的控制上。同時,在這次實驗中,我第一次聯(lián)合單片機和EDA 一起完成一個項目。EDA充分的發(fā)揮其高頻工作的特點,使得頻率測量的上限很高。單片機則在整個系統(tǒng)中充當控制及數(shù)據(jù)處理

8、的作用設(shè)計的優(yōu)點及缺點本頻率計最大優(yōu)點在于它的高精度。信號頻率的測量,不受閘門信號精度的影響。在被測信號送入計數(shù)器之前,先通過D 觸發(fā)器,使閘門信號和被測信號同步,有效地避免了±1誤差。不僅如此,本頻率計對100HZ 至 5MHZ 的全域相對誤差均小于百萬之一。當然,本頻率計也存在缺點。在頻率計的設(shè)計中,乘法器為32位,除法器采用 64位,資源占用率太大。單片機處理32位數(shù)據(jù)的方式有待改進,要是它變得更優(yōu)化六、 系統(tǒng)設(shè)計步驟及程序,結(jié)果FPGA:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.A

9、LL;ENTITY EQUALFRECOUNT ISPORT(BCLK,TCLK:IN STD_LOGIC;DATA_OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);EN:IN STD_LOGIC;ADDRESS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);END EQUALFRECOUNT;ARCHITECTURE ARCH OF EQUALFRECOUNT ISSIGNAL EN2,WIDE_TEST:STD_LOGIC;SIGNAL WIDE_COUNT,B_COUNT,T_COUNT:STD_LOGIC_VECTOR(31DOWNTO 0)

10、;SIGNAL SAVE_WIDE,SAVE_B,SAVE_T:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINPROCESS(EN,TCLK)BEGINIF RISING_EDGE(TCLK) THENEN2<=EN;ELSE NULL;END IF;END PROCESS;PROCESS(EN2,TCLK,BCLK)BEGINIF EN2='1' THENIF RISING_EDGE(TCLK) THENIF T_COUNT=X"FFFF_FFFF" THENT_COUNT<=(OTHERS=>'1'

11、;);ELSE T_COUNT<=T_COUNT+1;SAVE_T<=T_COUNT+1;-SAVE T_COUNTEND IF;ELSE NULL;END IF;IF FALLING_EDGE(TCLK) THENIF WIDE_TEST='0' THENWIDE_COUNT<=B_COUNT;WIDE_TEST<='1'ELSE SAVE_WIDE<=WIDE_COUNT;-SAVE WIDE_COUNT END IF;END IF;IF RISING_EDGE(BCLK) THENIF B_COUNT=X"FFFF_

12、FFFF" THENB_COUNT<=(OTHERS=>'1');ELSE B_COUNT<=B_COUNT+1;SAVE_B<=B_COUNT+1;-SAVE B_COUNT IN SAVE_BEND IF;ELSE NULL;END IF;ELSE-WHEN ENA=0,WE OUTPUT THE DATA AND RESET THE COUNTER.WIDE_COUNT<=(OTHERS=>'0');B_COUNT<=(OTHERS=>'0');T_COUNT<=(OTHERS

13、=>'0');WIDE_TEST<='0'END IF;END PROCESS;PROCESS(ADDRESS,EN2,SAVE_T,SAVE_B,SAVE_WIDE,BCLK)BEGINIF RISING_EDGE(BCLK) THENIF EN2='0' THEN-USE SOME CONSTANTS TO TESTCASE ADDRESS ISWHEN X"0"=>DATA_OUT<=SAVE_T(7 DOWNTO 0);WHEN X"1"=>DATA_OUT<=S

14、AVE_T(15 DOWNTO 8);WHEN X"2"=>DATA_OUT<=SAVE_T(23 DOWNTO 16);WHEN X"3"=>DATA_OUT<=SAVE_T(31 DOWNTO 24);WHEN X"4"=>DATA_OUT<=SAVE_B(7 DOWNTO 0);WHEN X"5"=>DATA_OUT<=SAVE_B(15 DOWNTO 8);WHEN X"6"=>DATA_OUT<=SAVE_B(23 DOWNT

15、O 16);WHEN X"7"=>DATA_OUT<=SAVE_B(31 DOWNTO 24);WHEN X"8"=>DATA_OUT<=SAVE_WIDE(7 DOWNTO 0);WHEN X"9"=>DATA_OUT<=SAVE_WIDE(15 DOWNTO 8);WHEN X"A"=>DATA_OUT<=SAVE_WIDE(23 DOWNTO 16);WHEN X"B"=>DATA_OUT<=SAVE_WIDE(31 DOWNTO

16、 24); WHEN OTHERS=>NULL;END CASE;ELSE NULL;END IF;ELSE NULL;END IF;END PROCESS;END ARCH;單片機:/* *.c 文件,文件名:EqualFre_main.c* 各模塊的流程控制*/#include "EqualFre_main.h"int main(void)communicationInit_Ex();while(1)mode = getMode_Ex();/ 確定選擇的模式askForData_Ex();/ 請求數(shù)據(jù)if(HOLD_DATA_MODE != mode)/ 表示沒有

17、固定數(shù)據(jù)時,則載入數(shù)據(jù)loadData();disData();/ 數(shù)據(jù)顯示/ 數(shù)據(jù)載入static void loadData()fre = getFre_Ex();wide = getWide_Ex();duty = getDuty_Ex();/*數(shù)據(jù)顯示中:wData(uchar) 傳入的參數(shù)意義0 - 9 數(shù)字 0-910 - 19 跟了點號的0-920 暗選*/ static void disDelay() / 顯示延時uchar data x,y;for(x=250;x>0;x-) for(y=50;y>0;y-);/ 數(shù)據(jù)顯示-總控disFre(); disDelay

18、(); break;disWide(); disDelay();break;disDuty(); disDelay(); break;static void disData() switch(mode) case SHOW_FRE_MODE: case SHOW_WIDE_MODE: case SHOW_DUTY_MODE: default:break;/*static void disFre() uchar data i;for(i=0;i<8;i+) wData_Ex(1);static void disWide() uchar data i; for(i=0;i<8;i+)w

19、Data_Ex(2);static void disDuty() uchar data i; for(i=0;i<8;i+)wData_Ex(3);*/數(shù)據(jù)顯示-顯示頻率,單位 Hz或MHz (雙模式)static void disFre()uchar data dataTemp8,i;10倍ulong data freTemp = fre;/ 為了顯示1 位小數(shù),這里已經(jīng)將頻率擴大uchar data flag = 0;/ 消零標志位if(1000000 <= freTemp)/ 當頻率值大于1M 時,使用兆顯示模式freTemp /= 100000;/0.00MHzfor(i=

20、2;i<8;i+) 數(shù)據(jù)從低位到高位裝入數(shù)據(jù)暫存器dataTemp,這里保留 2位,用于顯示nH(即MHz)dataTempi = (uchar)(freTemp%10);freTemp /= 10;dataTemp4 += 10;/ 取 2 位小數(shù),這里是加入小數(shù)點dataTemp1 = 21;/ndataTemp0 = 22;/Helsefor(i=1;i<8;i+)dataTempi = (uchar)(freTemp%10);freTemp /= 10;dataTemp2 += 10;dataTemp0 = 22;/Hfor(i=0;i<8;i+)/ 數(shù)據(jù)從高位到低位

21、顯示,并進行高位消零操作if(0 != dataTemp7-i)flag = 1;if(0=dataTemp7-i)&&(0=flag)dataTemp7-i = 20;wData_Ex(dataTemp7-i); / 顯示數(shù)據(jù)/數(shù)據(jù)顯示-顯示脈寬,單位us,意味著最大只能測1MHz的頻率static void disWide()uchar data dataTemp8,i;ulong data wideTemp = wide;uchar data flag = 0;for(i=0;i<8;i+)dataTempi = (uchar)(wideTemp%10);wideT

22、emp /= 10;for(i=0;i<8;i+)/ 數(shù)據(jù)從高位到低位顯示,并進行高位消零操作if(0 != dataTemp7-i)flag = 1;dataTemp1|=10;if(0=dataTemp7-i)&&(0=flag)dataTemp7-i = 20;wData_Ex(dataTemp7-i);/ 數(shù)據(jù)顯示-顯示占空比static void disDuty()uchar data dataTemp4,i;uint data dutyTemp = duty;for(i=0;i<4;i+)dataTempi = (uchar)(dutyTemp%10);

23、dutyTemp /= 10;dataTemp2 += 10;wData_Ex(20);/ 補 4 個暗選wData_Ex(20);wData_Ex(20);wData_Ex(20);for(i=0;i<4;i+)wData_Ex(dataTemp3-i);/*.h 文件,文件名:EqulaFre_SGMDisplay.h*SGM 顯示模塊,用于顯示由主程序傳過來的數(shù)據(jù)* 硬件資源:164 時鐘端-P3.1164 數(shù)據(jù)端-P3.0*/#ifndef _EQUALFRE_SGMDISPLAY_H_H_#define _EQUALFRE_SGMDISPLAY_H_H_#include<

24、reg52.h>#include<intrins.h>#define uchar unsigned charsbit sgm_clk=P3A1;164 時鐘端sbit sgm_data=P3A0;/164 數(shù)據(jù)端static uchar code num = / 從低位到高位,高電平有效0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,/數(shù)字 0-90xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7,/ 帶點號的 0-9 0x00,0x2a,0x6e暗選,n,h;/ 接口函數(shù)vo

25、id wData_Ex(uchar );/ 在數(shù)碼管上顯示數(shù)據(jù)#endif/*.c 文件,文件名:EqualFre_SGMDisplay.c*/#include "EqualFre_SGMDisplay.h"/ 接口函數(shù)void wData_Ex(uchar index)uchar data i,byte;byte = numindex;for(i=0;i<8;i+)sgm_clk = 0;sgm_data = (bit)(byte>>i)&0x01);_nop_();sgm_clk = 1;_nop_();/*.c 文件,文件名:EqualFre

26、_modeFromKey.c*/#include "EqualFre_modeFromKey.h" /* 內(nèi)部函數(shù)*/ 按鍵檢測延時static void keyDelay()uchar data x,y;for(x=100;x>0;x-);for(y=200;y>0;y-) ;/ 按鍵掃描/ 選擇模式/ 測頻率/ 下一次測的是脈寬/ 測脈寬/ 下一次測的是占空比/ 測占空比/ 下一次測的是頻率static void keyScan()if(0 = Key_Mode) keyDelay();if(1 = Key_Mode) return ; switch(mod

27、e)case SHOW_FRE_MODE:mode = SHOW_WIDE_MODE; break;case SHOW_WIDE_MODE:mode = SHOW_DUTY_MODE; break;case SHOW_DUTY_MODE:mode = SHOW_FRE_MODE; break;default:mode = SHOW_FRE_MODE; break;while(0 = Key_Mode) ;keyDelay(); if(0 = Key_Hold_Data)keyDelay();if(1 = Key_Hold_Data) return ;mode = HOLD_DATA_MODE;

28、/ 按下 Key_Hold_Data ,即為 Pi1時,數(shù)據(jù)保持不變while(0 = Key_Hold_Data);keyDelay();/* 接口函數(shù)*uchar getMode_Ex(void)/ 返回 mode確定選擇的模式keyScan();return mode; /* .h 文件,文件名:equalFre.h* 模式控制模塊,通過鍵盤來控制模式的選擇,并將所選模式傳遞給函數(shù)* 所使用的硬件資源:頻率顯示、脈寬顯示、占空比顯示的切換建-P1.0測試值保持鍵-Pi1 */#ifndef _EQUALFRE_MODEFROMKEY_H_H_#define _EQUALFRE_MODEF

29、ROMKEY_H_H #include<reg52.h> #define SHOW_FRE_MODE 0#define SHOW_WIDE_MODE 1 #define SHOW_DUTY_MODE 2 #define HOLD_DATA_MODE 3/ 實現(xiàn)頻率顯示,脈寬顯示,占空比顯示的轉(zhuǎn)化#define uchar unsigned char sbit Key_Mode = P1A0;sbit Key_Hold_Data = P1A1;/ 將測得的數(shù)值定住static uchar data mode;/ 內(nèi)部函數(shù)/ 按鍵檢測延時/ 按鍵掃描/ 在數(shù)碼管上顯示數(shù)據(jù)static

30、void keyDelay();static void keyScan();/ 接口函數(shù)uchar getMode_Ex(void);#endif /*.h 文件,文件名:EqulaFre_communication.h* 通信模塊,用于和FPGA 通信,獲取頻率、脈寬、占空比的原始數(shù)據(jù)。編輯版 word* 并將處理好數(shù)據(jù)傳給主程序* 所使用的硬件資源:地址線0-P2.0地址線1-P2.1地址線2-P2.2地址線3-P2.3測頻標志位-P2.4數(shù)據(jù)線 P0定時器 T0* /#ifndef _EQUALFRE_COMMUNICATION_H_H_#define _EQUALFRE_COMMUNI

31、CATION_H_H#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define ulong unsigned long#define uint unsigned int#define MY_TH0 0x5d/ 對于 20Mhz 晶振來說,25ms#define MY_TL0 0x3d# define FREE_TIME 80/ 空閑時間,即讓FPGA 測頻率的時間,# define DATA_IN P0# define BASE_FRE 100000000 /FPGA 的基準頻率sbit

32、address。= P2A0;sbit addressl = P2A1;sbit address2 = P2A2;sbit address3 = P2A3;sbit TEST_EN = P2A4;/ 當它為 1 表示測頻結(jié)束static ulong data fre,wide;static uint data duty;/ 內(nèi)部函數(shù)static ulong getSourceData(uchar ); / 從 FPGA 中獲得基準信號,被測信號的數(shù)據(jù)/ 接口函數(shù)50ms*FREE_TIME被測信號的數(shù)據(jù)void communicationInit_Ex(void);void askForDat

33、a_Ex(void);ulong getFre_Ex(void);ulong getWide_Ex(void);uint getDuty_Ex(void);/ 請求數(shù)據(jù)/ 計算頻率值/ 計算脈寬值/ 計算占空比#endif/*.c 文件,文件名:EqualFre_communication.c*/#include "EqualFre_communication.h"/ 從 FPGA 那里獲得頻率、脈寬、占空比的原始值static ulong getSourceData(uchar sourceKind)uchar data byte0,byte1,byte2,byte3;u

34、long data temp = 0;byte0 = byte1 = byte2 = byte3 = 0;switch(sourceKind)case 1:/被測信號T 值address3 = 0; address2 = 0; address1 = 0; address0 = 0; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte0 = DATA_IN;address3 = 0; address2 = 0; address1 = 0; address0 = 1; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間by

35、te1 = DATA_IN;address3 = 0; address2 = 0; address1 = 1; address0 = 0; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte2 = DATA_IN;address3 = 0; address2 = 0; address1 = 1; address0 = 1; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte3 = DATA_IN;break;case 2:/基準信號B 值address3 = 0; address2 = 1; address1

36、= 0; address0 = 0; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte0 = DATA_IN;address3 = 0; address2 = 1; address1 = 0; address0 = 1; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte1 = DATA_IN;address3 = 0; address2 = 1; address1 = 1; address0 = 0; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte2 = DAT

37、A_IN;address3 = 0; address2 = 1; address1 = 1; address0 = 1; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte3 = DATA_IN;break;case 3:/脈寬 W 值address3 = 1; address2 = 0; address1 = 0; address0 = 0;_nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte0 = DATA_IN;address3 = 1; address2 = 0; address1 = 0; address0 = 1; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte1 = DATA_IN;address3 = 1; address2 = 0; address1 = 1; address0 = 0; _nop_();_nop_();_nop_();_nop_();/FPGA 反應時間byte2 = DATA_IN;address3 = 1; address2 = 0; address1 = 1; address0 = 1; _nop

溫馨提示

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

評論

0/150

提交評論