




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上本科畢業(yè)設計(論文)題目基于FPGA的I2C串行總線接口電路設計學生姓名: 史俊達 專 業(yè):集成電路設計及集成系統(tǒng)指導教師: 黃靜 完成日期: 2013/5/30 誠 信 承 諾 書本人承諾:所呈交的論文是本人在導師指導下進行的研究成果。除了文中特別加以標注和致謝的地方外,論文中不包含其他人已發(fā)表或撰寫過的研究成果。參與同一工作的其他同志對本研究所做的任何貢獻均已在論文中作了明確的說明并表示了謝意。 簽 名: 日 期: 本論文使用授權(quán)說明本人完全了解南通大學有關(guān)保留、使用學位論文的規(guī)定,即:學校有權(quán)保留論文及送交論文復印件,允許論文被查閱和借閱;學??梢怨颊撐牡娜?/p>
2、或部分內(nèi)容。(保密的論文在解密后應遵守此規(guī)定)學生簽名: 指導教師簽名: 日期: 專心-專注-專業(yè)摘 要I2C(Inter Integrated Circuits)總線是Philips公司開發(fā)的用于芯片之間連接的串行總線?,F(xiàn)場可編程門陣列(FPGA)設計靈活、速度快,在數(shù)字專用集成電路的設計中得到了廣泛的應用。I2C串行總線接口電路設計的主要任務是根據(jù)I2C時序協(xié)議用Verilog HDL語言對I2C總線接口電路的描述,其目的是通過在FPGA上來實現(xiàn)I2C接口電路來領會復雜數(shù)字電路的設計思路和理念。在對I2C總線的研究現(xiàn)狀與發(fā)展進行了深入的調(diào)研的基礎上,論文著重闡述了在FPGA上實現(xiàn)隨機讀/寫
3、的I2C接口電路的設計方案。首先,論文簡單介紹了硬件描述語言(Verilog HDL)與現(xiàn)場可編程門陣列(FPGA)。其次,論文詳細說明了I2C串行總線內(nèi)部結(jié)構(gòu)和數(shù)據(jù)傳輸格式及其時序協(xié)議。基于此,論文重點闡述了接口電路的設計方案以及在FPGA開發(fā)板上與外圍I2C接口器件E2PROM實現(xiàn)數(shù)據(jù)傳輸?shù)姆抡媾c測試。經(jīng)過多次實驗驗證,I2C總線接口電路已通過行為級仿真和綜合及布局布線后門級時序仿真,滿足系統(tǒng)要求。最后,論文對所得的研究成果進行了總結(jié)。關(guān)鍵詞: Verilog_HDL;FPGA;I2C串行總線;隨機讀/寫;E2PROMABSTRACTI2C (Inter Integrated Circui
4、ts) Bus is developed by Philips for the connection between the chip serial bus. In the digital ASIC design, Field-programmable gate array (FPGA) design has been widely used because of its flexibility and high speed. The main task of I2C serial bus interface circuit design is based on the I2C timing
5、agreement with Verilog HDL language description of the I2C bus interface circuit, which aims to achieve I2C interface circuit up to comprehend complex digital circuit design ideas and concepts through the FPGA.Based on the in-depth research of the I2C bus status and development, the design scheme of
6、 the random read/write I2C interface circuit on FPGA was underlined in the paper. First,hardware description language (Verilog HDL) and field-programmable gate array (FPGA) were introduced slightly in the paper. Second, the internal structure and data transmission format of I2C serial bus and its ti
7、ming protocol were illustrated in the paper in detail. Based on this, the interface circuit design in FPGA development board was emphasized in the paper.As well as, the simulation and test of data transmission with peripheral devices E2PROM with I2C interface were stressed. After several experiments
8、, I2C bus interface circuit has passed the behavioral level simulation and synthesis and layout-level timing simulation backdoor to meet system requirements. Finally, the research results were summarized.Keywords: Verilog_HDL; FPGA; I2Cserial bus ; Random read /write; E2PROM目 錄第一章 緒 論1.1本課題研究的意義隨著電子
9、科技的迅速發(fā)展,需要相互通信及與外界通信的IC電路變得越來越復雜。為了簡化電路設計,Philips公司開發(fā)了一種雙向二線的串行I2C總線(Intel Integrated Circuit Bus)。該總線具有通訊效率高、傳輸線少等特點。因為其簡單的接口、控制簡便,使用I2C總線的電子電路設計工程師日益增多。I2C總線只提供兩根線進行通信,所有具有I2C接口的器件都可以掛在這兩根線上直接通信。目前,IC制造商提供的I2C總線應用芯片的功能越來越強大。I2C總線由主器件控制,增加額外的I2C控制器需要額外的印制板面積,增加了成本。因此,在一些特殊應用條件下,使用一種利用應用廣泛的現(xiàn)場可編程門陣列(
10、FPGA)實現(xiàn)與I2C總線器件無縫連接的方法,將是更為經(jīng)濟的解決方案。根據(jù)I2C總線的通訊協(xié)議,在Altera 公司的EP2C35F672C6型號的FPGA上實現(xiàn)與具有I2C接口的外圍芯片進行通信,具有易調(diào)試、靈活配置、高速傳輸?shù)葍?yōu)點,這樣大大地縮減了電路系統(tǒng)的開發(fā)時間。1.2研究領域現(xiàn)狀單片機應用系統(tǒng)正向小型化、高可靠性、低功耗等方向發(fā)展。在一些功能較多的電路系統(tǒng)中,經(jīng)常需擴展多個外圍接口器件。如果采用傳統(tǒng)的并行傳輸方式,傳輸時間是縮短了,但也增加了系統(tǒng)資源的消耗和系統(tǒng)的復雜度,關(guān)鍵是功耗的增大和成本的增加?,F(xiàn)在,許多公司采用了Philips公司開發(fā)的I2C總線,使單片機系統(tǒng)電路結(jié)構(gòu)的復雜度
11、大大減小,并且增加了硬件的靈活性,縮短了產(chǎn)品開發(fā)周期,降低了成本。自從I2C總線成為國際通用的總線標準后,I2C總線因為具有擴展方便、協(xié)議完善、支持芯片多和連線少等優(yōu)點,已經(jīng)被很多集成電路廠商集成到微控制器集成電路中。I2C總線的應用涉及通信、控制、家電、消費電子等眾多領域,在很多器件上都配備有I2C 總線接口,而且功能日益強大。1.3發(fā)展趨勢I2C總線以其結(jié)構(gòu)簡單、通信功能可制定、高抗干擾性、傳輸速度快等特點獲得了廣泛的應用。I2C總線控制器是MPU與I2C器件之間的橋梁,它負責接收處理器的數(shù)據(jù)、地址以及控制信號,而且反饋I2C器件的狀態(tài)和數(shù)據(jù)給處理器,實現(xiàn)處理器與I2C器件之間的通信。Ph
12、ilips公司除了生產(chǎn)具有I2C總線接口的單片機外,還推出了許多具備I2C總線的外部接口芯片,如AT24CXX系列的EEPROM、128字節(jié)的SRAM芯片PCF8571、日歷時鐘芯片PCF8563、4位LED驅(qū)動芯片SAA1064、160段LCD驅(qū)動芯片PCF8576等多種類多系列接口芯片。隨著可編程器件的飛速發(fā)展,用FPGA器件實現(xiàn)I2C總線控制器接口的設計可以帶來很多方面的便利。1.4 所做的主要工作由于現(xiàn)場可編程邏輯門陣列(FPGA)作為專用集成電路()領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有門電路數(shù)有限的缺點,深受硬件電路設計人員的喜愛,大大縮減了電路開發(fā)時
13、間5。本論文要求在FPGA上實現(xiàn)I2C串行總線接口電路,要求實現(xiàn)基本的隨機讀寫功能和顯示、編寫電路測試模塊。全文共分為五章,各章節(jié)的主要內(nèi)容安排如下:第一章為緒論,簡要介紹了I2C串行總線接口電路的研究背景、意義和目前國內(nèi)外研究現(xiàn)狀。第二章對硬件描述語言Verilog HDL和現(xiàn)場可編程邏輯門陣列FPGA的綜述,其中包括硬件描述語言Verilog HDL及FPGA的起源、發(fā)展、應用等;Verilog HDL語言與FPGA的開發(fā)板的結(jié)合在現(xiàn)在的半定制電路中應用很廣泛,這樣可以省去不少開發(fā)全定制的時間和成本等。第三章對I2C串行總線接口電路進行了介紹,了解I2C串行總線的概念和其工作時序協(xié)議,其中
14、包括I2C串行總線接口的內(nèi)部結(jié)構(gòu)。第四章闡述了I2C隨機讀/寫串行接口電路設計,首先說明了I2C隨機讀/寫串行接口電路的設計框圖,同時對這個電路進行分模塊設計。遵循自頂向下(Top_Down)設計理念,將復雜的時序電路分解成幾個簡單的小模塊,使設計流程清晰化,這樣也便于測試。第五章為I2C隨機讀/寫串行接口電路的仿真和測試,分別用軟件對電路進行功能、時序仿真和在FPGA開發(fā)板上測試。最后,把測試結(jié)果與實際值進行比較,進一步地確認電路的正確性。第二章 Verilog HDL和FPGA的綜述2.1 硬件描述語-Verilog HDL2.1.1 Verilog HDL簡介Verilog HDL是一種
15、描述硬件的語言,可以用文本編程的形式來描述硬件的內(nèi)部結(jié)構(gòu)和行為。它可以表示邏輯電路圖、,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。Verilog HDL由Gateway Design Automation公司開發(fā)的?,F(xiàn)在,Verilog HDL和VHDL一樣也是世界上最流行的兩種硬件描述語言之一,已經(jīng)成為為IEEE標準。2.1.2 Verilog HDL的發(fā)展Verilog HDL語言原來是由Gateway Design Automation公司于1983年為其模擬器產(chǎn)品開發(fā)的硬件建模語言,它還只是一種專用語言2。隨著他們的模擬、仿真器產(chǎn)品被電子業(yè)界廣泛使用,Verilog HDL作為一種便于使
16、用而且實用的語言開始被越來越多的電路設計者所接受2。Verilog HDL語言在一次增加語言普及性的活動中被推向公眾領域。1992年,Open Verilog International決定推廣Verilog OVI標準成為IEEE標準,這一推廣最終獲得了成功。于1995年,Verilog 語言成為IEEE標準,稱為IEEE Std 136419952。2.1.3 Verilog HDL用途Verilog HDL是目前應用最為廣泛的硬件描述語言,用于從算法級、門級到開關(guān)級的多種抽象設計層次的數(shù)字系統(tǒng)建模14。被建模的數(shù)字系統(tǒng)對象的復雜性可以介于簡單的門和完整的電子數(shù)字系統(tǒng)之間14。數(shù)字系統(tǒng)能夠
17、按層次描述,并可在相同描述中顯式地進行時序建模14。Verilog HDL可以用來進行各種層次的邏輯設計,也可以進行數(shù)字系統(tǒng)的邏輯綜合,仿真驗證和時序分析等14。2.2 現(xiàn)場可編程門陣列-FPGA現(xiàn)場可編程門陣列(Field Programmable Gate Array:FPGA),它是在PAL、GAL、等的基礎上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路()領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有門電路數(shù)有限的缺點5。2.2.1 FPGA的概要目前以硬件描述語言(Verilog或VHDL)描述的邏輯電路,可以利用邏輯綜合和布線工具軟件,快速地燒錄至FPGA上進行測試
18、,這一過程是現(xiàn)代 集成電路設計驗證的技術(shù)主流5。這些可編程邏輯元件可以被用來實現(xiàn)一些基本的邏輯門數(shù)字電路(比如與門、或門、異或門、非門)或者更復雜一些的組合邏輯功能,比如譯碼器等19。大多數(shù)的FPGA里面包含記憶元件,例如觸發(fā)器(Flipflop)或者其他更加完整的記憶塊,從而構(gòu)成時序邏輯電路19。電路系統(tǒng)設計人員可以根據(jù)需要,通過編程下載的方式,把FPGA內(nèi)部的邏輯塊連接起來,這樣就完成了在FPGA芯片里構(gòu)建你所要的電路。FPGA內(nèi)部的邏輯塊和連接可以隨著設計者的需要而改變,所以FPGA能夠成為數(shù)字電路設計人員在半定制電路中的第一選擇。一般來說,F(xiàn)PGA比專用集成電路(ASIC)的速度要慢一
19、點,無法完成更復雜的設計,并且能耗也大。但是,F(xiàn)PGA具有可以快速成品,而且其內(nèi)部邏輯可以被設計者反復修改的優(yōu)點。此外,用FPGA調(diào)試的成本較低。2.2.2 FPGA的基本組成l 靜態(tài)隨機存取存儲器(SRAM):基于靜態(tài)內(nèi)存Static memory技術(shù),系統(tǒng)內(nèi)可編程化和再程序化(Re-programmable),須要外部啟動元件(External boot devices)CMOS。l Antifuse:可燒錄一次。通常為CMOS。l PROM(一次性可編程EPROM):可編程化只讀存儲器技術(shù),可燒錄一次。使用塑料封裝,無窗,不能清除內(nèi)容。l EPROM:可清除可編程化只讀存儲器技術(shù),有窗,
20、經(jīng)紫外線照射可清除內(nèi)容。l EEPROM:可電氣清除可編程化只讀存儲器技術(shù),可用電氣信號清除內(nèi)容。l 閃存:一種特殊的EEPROM。l 熔絲:可燒錄一次。通常為雙極性的。2.2.3 FPGA的基本特點· 采用FPGA設計ASIC電路,用戶無需投片生產(chǎn),就能得到組合的芯片。· 做半定制電路的樣品。· 內(nèi)部有大量的觸發(fā)器和I/O引腳。· 電路設計周期短、開發(fā)成本低、風險小。· 采用高速、功耗低的CHMOS工藝,兼容CMOS、TTL電平。· 能提高系統(tǒng)集成度和可靠性。FPGA內(nèi)部RAM中的程序控制其工作過程。工作時,只需對片內(nèi)的RAM進行編
21、程,就可以實現(xiàn)不同的功能。加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,完成配置后,F(xiàn)PGA進入工作狀態(tài)3。掉電后,F(xiàn)PGA恢復成空白片,內(nèi)部邏輯關(guān)系消失3。因此,F(xiàn)PGA能夠反復使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可3。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能3。因此,F(xiàn)PGA的使用非常靈活。第三章 I2C串行總線簡介3.1 I2C串行總線的概述I2C(Inter Integrated Circuit)總線是由公司開發(fā)的兩線式串行總線,用于連接及其外圍設備,
22、是具備多主機系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線8。I2C總線也是微電子通信控制領域廣泛采用的一種總線標準。它不同于普通的同步通信,具有輸出線少,容易控制,傳輸速率快,抗干擾強等優(yōu)點。I2C總線定義了兩根線:串行數(shù)據(jù)線SDA和串行時鐘線SCL。如圖3.1是I2C總線系統(tǒng)的示意圖。圖中的單片機、SRAM或E2PROM、A/D或D/A轉(zhuǎn)換器以及其他I2C外圍設備都有它們各自的地址。在數(shù)據(jù)傳輸過程中,通信雙方分別稱為I2C主控(I2C_Master)和I2C從設(I2C_Slave),都可以作數(shù)據(jù)發(fā)送端和接收端。圖3.1 帶有微控制器的I2C總線配置迄今為止,飛利浦已開發(fā)出15
23、0余種,包括CMOS和雙極型I2C總線兼容IC,所有符合標準的I2C總線接口的設備,通過簡單的雙向兩線總線,以實現(xiàn)有效的控制和IC之間的通信。3.2 I2C總線特征I2C總線是通過雙向串行時鐘線SCL和雙向串行數(shù)據(jù)線SDA在器件之間傳遞信息的。SDA、SCL的輸出級必須是開漏或者開集電極輸出,并在兩根線上分別通過上拉電阻接到正電源,以實現(xiàn)“線與”功能。如圖3.2.當總線處于空閑狀態(tài),SDA、SCL均保持為高電平。掛在總線上每個器件都有自己對應的唯一地址,用來發(fā)送數(shù)據(jù)或接收數(shù)據(jù)。當主器件掌控總線時,為實現(xiàn)數(shù)據(jù)的傳輸,主器件需要產(chǎn)生傳輸所需的時鐘;被尋址的器件只能作為從器件。在標準模式下,I2C總
24、線上數(shù)據(jù)的傳輸速率可達100kbit/s,在快速模式下可達400kbit/s,在高速模式下可達3.4Mbit/s7??偩€電容(400pF)及地址的尋址范圍決定連接到總線的器件數(shù)量。 圖3.2 I2C標準模式器件和快速模式器件連接到I2C總線在復雜的系統(tǒng)中,可能有多臺主機同時啟動總線,進行傳輸數(shù)據(jù)。通過總線仲裁,就可以很好地控制哪一臺主機來控制總線。3.3 I2C總線的數(shù)據(jù)位傳輸3.3.1 有效數(shù)據(jù)位的規(guī)定I2C總線進行數(shù)據(jù)傳輸時,串行時鐘為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在串行時鐘為低電平期間,才允許數(shù)據(jù)線上的數(shù)據(jù)進行變化(即:高電平變低電平狀態(tài)或者低電平變高電平狀態(tài)),如圖3.3
25、。圖3.3 I2C總線的數(shù)據(jù)位傳輸3.3.2 起始和終止信號串行時鐘SCL為高電平期間,串行數(shù)據(jù)SDA出現(xiàn)下降沿,則表示本次傳輸?shù)钠鹗夹盘?;SCL線為高電平期間,SDA線出現(xiàn)上升沿,則表示本次傳輸?shù)慕K止信號,如圖3.4。 主機負責向從設發(fā)送啟動和停止信號,產(chǎn)生啟動信號后,SDA總線被占用;產(chǎn)生停止信號后,總線就釋放總線。(即:處于空閑狀態(tài))。圖3.4 啟動和停止信號3.4 I2C總線上的數(shù)據(jù)傳輸3.4.1 數(shù)據(jù)字節(jié)格式發(fā)送至SDA線上的每個字節(jié)必須為8位,每次傳輸?shù)淖止?jié)數(shù)不受限制,每個字節(jié)后必須跟一位響應。被發(fā)送的數(shù)據(jù)第一位就是最高有效的數(shù)據(jù)位(MSB)。如圖3.5。如果接收器在傳輸途中去做其
26、他事(比如:做一些中斷程序),接收器將把SCL拉低,直到處理好它的事情后才釋放SCL,繼續(xù)接收數(shù)據(jù),在SCL被拉低的期間,主器件處于等待狀態(tài)。圖3.5 數(shù)據(jù)字節(jié)格式3.4.2 應答確認每次發(fā)送的8位數(shù)據(jù)必須跟一位應答,此應答對應的時鐘周期還是由主器件來產(chǎn)生。在這個時鐘周期里,主器件要釋放SDA,由從器件控制,主器件在這個期間需要檢測從器件有沒有發(fā)送應答信號。從器件必須在這個時鐘周期的低電平期間拉低SDA,這樣主器件才能在時鐘高電平期間檢測到應答信號。當然,SDA的建立時間和保持時間也要考慮在內(nèi)。產(chǎn)生起始位后,總線就處于忙碌狀態(tài),產(chǎn)生停止位后,總線就進入空閑狀態(tài)。在讀數(shù)據(jù)時,主機接收到最后一個字
27、節(jié)就不產(chǎn)生響應位(SDA=1),以此告知從設不要再發(fā)送數(shù)據(jù),等待結(jié)束信號。如果不是最后一個數(shù)據(jù)字節(jié),則主機發(fā)出的響應位為0(SDA=0)。當從設響應了主機,在傳輸了一段時間后不能接收更多的數(shù)據(jù)字節(jié),此時從機可以通過產(chǎn)生非響應來告知主機終止當前傳輸,于是主機產(chǎn)生一個停止信號終止本次傳輸,或者產(chǎn)生重復起始信號開始新的傳輸13。3.4.3 I2C總線的工作模式(1)主器件發(fā)送從器件接收(寫操作)主器件發(fā)送開始信號之后,緊接著發(fā)送的第一個字節(jié)是控制字節(jié)。高七位為從器件的地址片選信號。最低位為數(shù)據(jù)傳輸方向標示位 (1表示讀從器件,0代表寫從器件),如下圖3.6。應答后再發(fā)送從器件的片內(nèi)地址。應答后,接著
28、發(fā)送的是數(shù)據(jù)字節(jié),數(shù)據(jù)可以是單個字節(jié),也可以是多個字節(jié),取決于主器件。圖3.6 第一個字節(jié)格式從器件每收到一個字節(jié)之后,在第九個SCL周期要反饋一個應答信號(SDA=0)。在應答周期,主器件釋放SDA線,從器件把SDA拉成低電平,作為對主器件的應答。(2)從器件發(fā)送主器件接收(讀操作)發(fā)送開始信號之后,主器件發(fā)送寫控制字節(jié)給從器件。如果從器件檢測到這個控制字節(jié)中的從器件地址與自身地址相一致,并且方向位為1(R/W=1),則表示此次操作是讀操作,由從器件反饋主器件一個應答。然后,從器件把數(shù)據(jù)發(fā)送給主器件。若主器件在之前給從器件發(fā)過片內(nèi)地址,則從器件就從這個地址開始發(fā)送數(shù)據(jù);若從器件沒有收到片內(nèi)地
29、址,則從器件就從當前地址開始向主器件發(fā)送數(shù)據(jù)。從器件在發(fā)送一個字節(jié)數(shù)據(jù)后,若收到主器件的應答信號則繼續(xù)發(fā)送下一個字節(jié)數(shù)據(jù);若沒收到主器件的應答信號,從器件將停止發(fā)送數(shù)據(jù),等待主器件的停止信號。從器件的發(fā)送地址和字節(jié)數(shù)都由主器件決定。3.5 I2C總線的工作流程3.5.1 I2C總線的寫操作寫操作的步驟:1. 向從器件發(fā)啟動信號2. 向從器件發(fā)I2C器件特征碼、頁地址(3bit)和讀寫控制位(R/W=0)3. 從器件發(fā)應答信號(低)4. 向從器件發(fā)8位片內(nèi)地址5. 從器件發(fā)應答信號(低)6. 向從器件發(fā)8位數(shù)據(jù)7. 從器件發(fā)應答信號(低)8. 若主器件仍需發(fā)送數(shù)據(jù),就繼續(xù)發(fā),直到從器件沒有應答信
30、號(高)9. 向從器件發(fā)停止信號3.5.2 I2C總線的讀操作讀操作的步驟(讀隨機地址單元):1. 向從器件發(fā)啟動信號2. 向從器件發(fā)I2C器件特征碼、頁地址(3bit)和讀寫控制位(R/W=0)3. 從器件發(fā)應答信號(低)4. 向從器件發(fā)8位地址5. 從器件發(fā)應答信號(低)6. 向從器件發(fā)啟動信號7. 向從器件發(fā)I2C器件特征碼、頁地址(3bit)和讀寫控制位(R/W=1)8. 從器件發(fā)應答信號(低)9. 從器件發(fā)數(shù)據(jù)(8位)10. 若主器件讀單字節(jié)數(shù)據(jù),則不給從器件應答(SDA=1)。若主器件需讀多字節(jié)數(shù)據(jù),則給從器件發(fā)應答(SDA=0),直到讀最后一個字節(jié)數(shù)據(jù),才向從器件發(fā)應答(SDA=
31、1)。11. 向從器件發(fā)停止信號3.6 仲裁和時鐘同步3.6.1 時鐘同步在I2C總線上,所有的主器件產(chǎn)生他們自己的傳輸時鐘來傳輸數(shù)據(jù)。數(shù)據(jù)只在串行時鐘的高電平器件有效。要得到一個確定的串行時鐘就需要一位一位進行仲裁7。時鐘的同步就是利用I2C總線的線與功能。當有多個主機同時在SCL線上產(chǎn)生自己的時鐘信號時,這些時鐘信號通過線與的方式來同步。如圖3.7,主器件l產(chǎn)生的串行時鐘CLK1先變低,同步后的SCL線隨之被拉低,主器件2內(nèi)部的計數(shù)器被SCL的下降沿復位,同時輸出端導通,兩個主器件都對SCL的低電平開始計時。主器件1首先計數(shù)完成并關(guān)閉輸出端,而主器件2沒有完成計,輸出端仍是導通,此時SCL
32、仍為低電平,這時主器件1進入高電平等待狀態(tài),直到主器件2完成計數(shù)并釋放SCL線,SCL變?yōu)楦唠娖?。當SCL變高時,兩個主器件同時把計數(shù)器清0,然后開始對SCL線高電平計時,在圖3.7中,主器件l首先完成SCL線高電平計數(shù)并拉低SCL線,檢測到SCL線下降沿后,兩個主器件的計數(shù)器同時清0,準備開始低電平的計時13。綜上所述,同步后SCL線低電平時間取決于時鐘低電平時間最長的主機,高電平時間取決于時鐘高電平時間最短的主機7。圖3.7 時鐘同步圖3.6.2 數(shù)據(jù)仲裁主機只會在I2C總線空閑時產(chǎn)生起始位,但是在起始位的保持時間tHD:STA內(nèi)可能有多個主機產(chǎn)生起始位,最終,總線上的起始位由它們之間的
33、線與運算決定,仲裁只是對SDA線上傳輸?shù)臄?shù)據(jù)進行仲裁。SCL為高時,在SDA線上發(fā)送低電平的主器件將會贏得仲裁,發(fā)送高電平的主器件將會仲裁失敗,并對SDA置高阻。如圖3.8,兩個主器件產(chǎn)生起始位后就開始對傳輸?shù)臄?shù)據(jù)進行仲裁,第一個數(shù)據(jù)位,SCL為高時,兩個主器件都輸出高電平,繼續(xù)仲裁,第二個數(shù)據(jù)位,兩個主器件都輸出低電平,繼續(xù)仲裁,到第三個數(shù)據(jù)位時,主器件l的SDA輸出高電平,而主器件2的SDA線輸出低電平,于是,主器件2贏得仲裁,主器件l呈現(xiàn)高阻狀態(tài)7。仲裁可以持續(xù)幾個數(shù)據(jù)位,若兩個主器件傳輸?shù)臄?shù)據(jù)都是一樣的,那么仲裁也會持續(xù)到結(jié)束信號。在實際通信中,第一個進行仲裁往往是控制字字節(jié)部分(即:
34、器件地址和傳輸方向標示位),如果一個從器件被多個主器件尋找,那么比較數(shù)據(jù)位進行仲裁,直到傳輸結(jié)束。贏得總線仲裁的主器件決定I2C總線上的地址和數(shù)據(jù),因此傳輸?shù)臄?shù)據(jù)信息不會丟失7。圖3.8 數(shù)據(jù)仲裁圖第四章 I2C串行總線接口電路設計4.1 I2C串行總線接口電路的性能指標本文設計要求實現(xiàn)一個嚴格遵循I2C協(xié)議的接口電路,傳輸速率最高為1MHz,向下兼容低速的I2C接口的設備,輸入的數(shù)據(jù)是8位的,輸入地址是15位的(高7位是器件地址,低8位是器件內(nèi)地址),另外器件地址為7位,可以對128個有I2C接口的器件進行尋址,能與I2C接口的E2PROM進行數(shù)據(jù)傳輸,并支持對從設進行隨機讀、寫。4.2 I
35、2C串行總線接口電路的設計平臺Altera公司的Quartus 軟件是電路設計所用到的平臺。Altera公司的Quartus II集成PLD/FPGA開發(fā)軟件,支持原理圖,VHDL,Verilog HDL的AHDL(Altera Hardware Description Language)和其他設計輸入表單,以及嵌入式自身合成模擬器的硬件配置,可以完成從設計輸入完整的PLD設計過程。除了使用Tcl腳本完成設計流程外,Quartus II還提供了一個完善的圖形用戶界面設計,具有編譯速度快,界面功能多樣,容易上手等優(yōu)點。Altera的Quartus II支持的IP內(nèi)核,包括LPM/宏功能塊庫,使用
36、戶能夠充分利用成熟的模塊,簡化了設計的復雜性,加快了設計速度。第三方EDA工具的良好支持也使得用戶在設計過程中的各個階段可以使用熟悉的第三方EDA工具。其可編程邏輯設計環(huán)境,由于其強大的設計能力和直觀的界面,越來越多的數(shù)字系統(tǒng)設計人員的歡迎8。4.3 I2C串行總線接口電路的設計方案MPUI2C串行接口I2C設備1I2C設備2VCCVCC4.3.1 I2C串行總線接口電路的框圖設計RDRSTCLKDATA7:0ADDR14:0WRACKDATA7:0圖4.1 I2C接口電路的框圖設計在電路設計中,電路的整體外部框圖的設計對整個電路設計起到了決定性作用。擁有一個完整的、清晰的電路外廓對之后電路的
37、各個部分的設計就有了清晰的把握。本次I2C接口電路需要一邊要與MPU進行通信,另一邊要與帶有I2C接口的設備進行數(shù)據(jù)傳輸,這樣就構(gòu)成了一個簡單的電路系統(tǒng)。電路框圖設計如圖4.1。4.3.2 I2C串行總線接口電路的內(nèi)部模塊設計I2C串行接口電路的外部框圖只是給出一個電路系統(tǒng)的輪廓圖,接口電路的內(nèi)部結(jié)構(gòu)如何還要根據(jù)內(nèi)部框圖的設計。內(nèi)部框圖的設計將會決定接口電路的具體實現(xiàn)。I2C串行接口電路的程序設計是遵循了“自頂向下”的設計理念。利用層次化,結(jié)構(gòu)化的設計方法,使電路設計變得層次清晰,結(jié)構(gòu)簡單。這個電路設計被分為7個子模塊,分別是:I2C接口頂層模塊、輸入時鐘分頻模塊、串行時鐘產(chǎn)生模塊、輸入數(shù)據(jù)寄
38、存器模塊、地址寄存器模塊、控制寄存器模塊和時序主狀態(tài)控制模塊。其中時序主狀態(tài)控制模塊是接口電路中核心部分,它控制著電路有序的運作。每個模塊實現(xiàn)各自的功能,把每個模塊按照邏輯相連就組成了一個電路整體。I2C串行接口內(nèi)部模塊設計如圖4.2。I2C接口頂層模塊接口頂層模塊SCL產(chǎn)生模塊時序主狀態(tài)機控制輸入地址鎖存控制鎖存器輸入數(shù)據(jù)鎖存分頻器ACKDATAOUT7:0CLK_50RSTWRRDDATA7:0WR/RDADDR14:0ACKCLKSDACLK_50RSTCLK_2MSCLSCL_ENDATA7:0ADDR14:0DATA7:0ADDR14:0WR_FLAGRD_FLAGDATAOUT7:
39、0圖4.2 I2C接口電路的內(nèi)部模塊設計4.3.3 I2C串行總線接口電路各模塊的程序設計方法I2C串行接口電路的程序設計利用層次化,模塊化的設計方法,使電路設計變得層次清晰,結(jié)構(gòu)簡單。這個電路設計被分為7個子模塊,下面詳細說一下各模塊的設計方法。I2C接口頂層模塊主要是用來對下一層子模塊的實例調(diào)用,要求子模塊每個功能都能正確地實現(xiàn),并且子模塊之間的輸入/輸出也要滿足時序要求。它是整個設計流程中最高層次的一個模塊。輸入數(shù)據(jù)鎖存器、地址鎖存器、控制鎖存器模塊都屬于輸入鎖存模塊。它們的作用就是用來協(xié)調(diào)設備與CPU之間的通信。由于CPU工作速度快,數(shù)據(jù)信號、地址信號、控制信號只能保持一段時間有效。接
40、口電路的輸入鎖存器就能很好地解決這個問題,當控制信號出現(xiàn)時,其就把數(shù)據(jù)信號和地址信號鎖入相應的鎖存器。這塊程序是采用組合邏輯來編寫的。輸入時鐘分頻模塊用來協(xié)調(diào)接口輸入的時鐘與I2C總線傳輸時序之間的不匹配的,加個分頻就能很好地解決這個問題。輸入時鐘為50MHz,經(jīng)過分頻后輸出的時鐘頻率是2MHz。這塊程序是采用時序計數(shù)來分頻的。圖4.3 狀態(tài)轉(zhuǎn)移圖串行時鐘產(chǎn)生模塊就是使I2C總線的串行數(shù)據(jù)線SDA在串行時鐘線SCL的配合下把數(shù)據(jù)按照傳輸協(xié)議一位一位地傳出去7。這塊程序也是采用時序來分頻的,在CLK的下降沿SCL翻轉(zhuǎn),前提是要在SCL時鐘產(chǎn)生信號有效。時序主狀態(tài)控制模塊是時序電路,也是整個電路的
41、核心電路。它直接控制著并行數(shù)據(jù)的裝載、狀態(tài)位標志和時序發(fā)送/接收的控制。整個電路在它的控制下有條不紊地進行數(shù)據(jù)通信。這塊程序采用同步有限狀態(tài)機(FSM)的設計方法。程序?qū)嶋H上就是一個主控狀態(tài)機,在主狀態(tài)不同的狀態(tài)下都控制著不同的任務和控制信號,在不同的輸入信號與當前狀態(tài)的情況下構(gòu)成復雜的有限狀態(tài)機1。這個有限狀態(tài)機的驅(qū)動時鐘是頻率為2MHz的CLK。由于讀寫操作的狀態(tài)中有幾個狀態(tài)是一致的,用到了嵌套狀態(tài)機。狀態(tài)轉(zhuǎn)移如下圖4.3。為了避免代碼重復,程序由一個發(fā)送的大任務和接收的大任務組成,狀態(tài)編碼采用獨熱碼。4.4 I2C串行總線接口電路程序的綜合I2C串行總線接口電路程序的綜合是采用Quart
42、us自帶的綜合器進行綜合的。各個模塊的程序均已通過了綜合器的綜合,也給出了整個電路程序的綜合報告及綜合出來的原理圖。綜合報告如圖4.4。綜合生成的原理圖如圖4.5圖4.4 電路的綜合報告圖4.5 綜合生成的原理圖第五章 I2C串行接口電路仿真與FPGA開發(fā)板測試5.1 電路仿真測試平臺5.1.1電路仿真工具公司的ModelSim SE 10.1a是本次I2C串行接口電路的仿真軟件。ModelSim是業(yè)界最優(yōu)秀的HDL語言,它能提供友好的仿真環(huán)境,是業(yè)界唯一的支持VHDL和Verilog混合仿真的6。它采用直接優(yōu)化的、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯的代碼與軟件平臺沒有關(guān)系,編譯和仿真
43、速度快,便于保護IP核6。和個性化的圖形界面加快了用戶的調(diào)錯進程,ModelSim是FPGA/的首選6。主要特點:1. 本地編譯結(jié)構(gòu),RTL和門級優(yōu)化,編譯和仿真速度快,能夠跨版本甚至跨平臺仿真6;2. 單內(nèi)核支持Verilog和VHDL的混合仿真;3. 直接支持System C,可以任意混合HDL;4. 支持System Verilog的設計功能;5. 全面支持系統(tǒng)級描述語言:SystemVerilog、SystemC、PSL;6. 可以單獨或同時進行行為(Behavioral)、RTL級、和門級(Gate-level)的代碼6。5.1.2電路開發(fā)板測試儀器電路開發(fā)板測試的儀器是Altera
44、公司的DE2教學開發(fā)板。DE2開發(fā)板是以672 針引腳的包裝的Cyclone II EP2C35F672C6為核心。板上所有重要的部件都與板上的芯片相連,使用戶能夠控制板上各種的操作。DE2板包括了很多開關(guān)(兼有撥動開關(guān)和按鍵),發(fā)光二極管和七段數(shù)碼管3。在更多進一步的實驗中還用到了SRAM,SDRAM,F(xiàn)lash以及16×2的字符液晶。需要進行處理器和I/O接口試驗時,可以簡單的用Altera NiosII處理器和象RS-232和PS/2標準接口。進行涉及音頻和視頻的實驗時,也有標準MIC、line-in、line-out接口(24位音頻解編碼器),Video-in(TV Deco
45、der)和VGA(10-bit DAC),這些特點都能夠被用來制作CD質(zhì)量的音頻應用程序和專業(yè)的視頻圖象3。為了能夠設計更強大的項目,DE2 還提供了USB2.0 接口(包括主、從USB),10/100M自適應以太網(wǎng),紅外(IRDA)接口,以及SD卡接口3。最后,可以通過兩排擴展I/O口與其它用戶自定義的板子相連。如圖5.1.圖5.1 Altera DE2教學開發(fā)板5.1.3 外部測試芯片外部測試芯片使用的是Ateml公司的AT24C04芯片。AT24C04是Atmel公司生產(chǎn)的4Kbit(512Bytes)E2PROM芯片,該芯片采用I2C總線設計,主要性能指標為:l 容量為4Kbit(51
46、2Bytes),分為兩部分存儲空間,每部分256bytes。l 有2個器件地址選擇腳,最多能夠掛接4個AT24C04器件。l 32頁,每頁16字節(jié),每次可連續(xù)寫入16字節(jié)數(shù)據(jù)。l WP引腳為高電平時,AT24C04的0255地址空間的數(shù)據(jù)被寫保護。l 需要9位的地址進行數(shù)據(jù)尋址。l 最高支持1MBps,還向下兼容100KBps和400KBps兩種傳輸速率。l 器件地址高4位固定為“1010”,低3位為A2,A1,P0。A0為空引腳,A1,A2口為器件地址設定口,通過A1,A2口來設定AT24C04的器件地址WP口接低電平時,可以對整個AT24C04器件的512個字節(jié)進行讀寫操作。當WP口接高電
47、平后,器件前256個地址的數(shù)據(jù)被保護,只能讀,不可寫入,后256個字節(jié)數(shù)據(jù)可進行讀寫操作。AT24C04的數(shù)據(jù)空間由P0位決定,當P0為“0”時,將對AT24C04的0255空間的數(shù)據(jù)進行操作;當P0為“1”時,將對AT24C04的256511空間的數(shù)據(jù)進行操作。AT24C04的引腳定義,如圖5.2及表5.1。引腳定義引腳定義說明1. A0空引腳。2. A1,A2器件地址設定引腳。3. GND電源地。4. SDA數(shù)據(jù)口。5. SCL同步時鐘口。6. WP寫保護口。7. VCC電源。 表5.1 AT24C02引腳定義圖5.2 AT24C04的引腳圖 (1)寫操作:AT24C04的寫操作有字節(jié)寫和
48、頁寫兩種模式,可以一次寫入一個字節(jié)或是一頁(16個字節(jié))。兩種操作模式的時序如圖5.3、5.4所示。在字節(jié)寫中,Master向AT24C04寫數(shù)據(jù),AT24C04響應Master的尋址后,Master發(fā)送片內(nèi)字節(jié)地址,AT24C04響應后,Master發(fā)送數(shù)據(jù);若AT24C04接收數(shù)據(jù),則會反饋響應,Master檢測到后產(chǎn)生停止位,結(jié)束寫操作。此時,AT24C04開始擦寫內(nèi)部數(shù)據(jù),不再響應外部信號。在頁寫中,AT24C04可一次寫入16個字節(jié):頁寫也是先發(fā)送從器件地址,然后送片內(nèi)字節(jié)地址;發(fā)送了一字節(jié)數(shù)據(jù)后檢測到從器件的響應,主器件繼續(xù)發(fā)送15個字節(jié)數(shù)據(jù)。AT24C04每收到8位數(shù)據(jù)后給主器件
49、一位應答,片內(nèi)地址自動加一,不然主器件將會停止傳輸。如果主器件發(fā)了超過16個字節(jié)的數(shù)據(jù),地址計數(shù)器將會指向當前頁的開頭繼續(xù)加,覆蓋先前寫入的數(shù)據(jù)。發(fā)送完16字節(jié)數(shù)據(jù)后,主器件產(chǎn)生停止位,AT24C04接收到停止位后,不再響應外部信號,啟動內(nèi)部擦寫操作,如圖5.4所示。圖5.3 字節(jié)寫時序圖圖5.4 頁寫時序圖此時,主器件可以通過發(fā)送特定的AT24C04器件地址查詢AT24C04內(nèi)部擦寫是否結(jié)束,如果有應答,則說明AT24C04內(nèi)部擦寫已經(jīng)結(jié)束,主器件可以進行下一步操作,否則應繼續(xù)等待。(2)讀操作:AT24C04的讀模式分為CurrentAddress Read(當前地址讀)、RandomRe
50、ad(隨機讀)和Sequential Read(順序讀)三種,時序如圖5.5所示。讀操作的初始化方式和寫操作一樣,也是先發(fā)送Slave地址,不同之處在于R/W位等于l。在順序讀中,讀地址是上次的讀寫操作地址加1。AT24C04輸出一個字節(jié)的數(shù)據(jù)后,主器件不應答,AT24C04結(jié)束發(fā)送,主器件產(chǎn)生停止位。隨機讀操作是主器件可以隨意讀取AT24C04任意地址的內(nèi)容。主器件發(fā)送起始位后、繼續(xù)發(fā)從器件地址(R/W=0),AT24C04應答,再發(fā)從器件片內(nèi)地址,AT24C04應答后,主器件重新發(fā)送起始位和從器件地址(R/W=1),AT24C04應答,然后輸出一個字節(jié)數(shù)據(jù),主器件收到后不應答,產(chǎn)生停止信號
51、結(jié)束傳輸,如圖5.6所示。圖5.5 當前地址讀時序圖圖5.6 隨機讀時序圖順序讀可以由當前地址讀或隨機地址讀操作啟動,主器件收到一個字節(jié)后,要應答從器件,AT24C04收到響應后將繼續(xù)發(fā)送下一個地址的數(shù)據(jù),直到主器件不應答,并產(chǎn)生停止位結(jié)束傳輸。讀完最高地址的字節(jié)數(shù)據(jù)后,AT24C04內(nèi)部的地址計數(shù)器翻轉(zhuǎn),下一次讀本頁的開頭地址中的內(nèi)容,如圖5.7所示。圖5.7 順序讀時序圖5.2 外圍電路的構(gòu)建5.2.1 E2PROM電路構(gòu)建AT24C04型號E2PROM的SCL、SDA是漏極開路的,需要外接上拉電阻到VCC。本次需要用到兩片E2PROM,它們的器件地址不一樣。如圖5.8、5.9所示,E2P
52、ROM 1的A2,A1,A0均接地,WP接地,沒寫保護;E2PROM 2的A2接VCC,A1,A0均接地,WP接地,沒寫保護。圖中SCLK,SDA接到所設計的接口芯片的SCL和SDA輸出端。圖5.8 E2PROM 1外圍電路A2A1A0SCLKWPSDAVCCGNDVCC_5VVCC_5VSCLKSDAA2A1A0SCLKWPSDAVCCGNDVCC_5VVCC_5VSCLK SDA圖5.9 E2PROM 2外圍電路5.2.2 完整的測試電路經(jīng)過上面的外圍電路的搭建,這節(jié)可以完成整個測試電路的構(gòu)建。Altera公司的DE2作為I2C總線的主控器件,Atmel公司的AT24C04作為從器件,兩個
53、AT24C04 E2PROM相級聯(lián),雙方通過DE2的IO擴展口相連。如下圖5.10。圖5.10 完整的測試電路5.3 I2C串行接口電路仿真結(jié)果5.3.1 I2C串行接口電路寫數(shù)據(jù)的功能仿真在Quartus里直接調(diào)用Modelsim進行功能仿真,模擬實際I2C電路向E2PROM的00H、01H地址里寫入12H、34H數(shù)據(jù)。仿真圖如圖5.11:圖5.11(a) 寫數(shù)據(jù)的功能仿真圖圖5.11(b) 寫數(shù)據(jù)的功能仿真圖5.3.2 I2C串行接口電路讀數(shù)據(jù)功能仿真在Quartus里直接調(diào)用Modelsim進行功能仿真,模擬實際I2C電路向E2PROM的00H、01H地址里分別讀出寫入的數(shù)據(jù)。仿真圖如圖
54、5.12: 圖5.12(a) 讀數(shù)據(jù)功能仿真圖圖5.12(b) 讀數(shù)據(jù)功能仿真圖5.3.3 I2C串行接口電路寫數(shù)據(jù)時序仿真在Quartus里直接調(diào)用Modelsim進行時序仿真,模擬實際I2C電路向E2PROM的00H、01H地址里分別寫入12H、34H數(shù)據(jù)。仿真圖如圖5.13。圖5.13(a) 寫數(shù)據(jù)時序仿真波形圖圖5.13(b) 寫數(shù)據(jù)時序仿真波形圖5.3.4 I2C串行接口電路讀數(shù)據(jù)時序仿真在Quartus里直接調(diào)用Modelsim進行時序仿真,模擬實際I2C電路向E2PROM的00H、01H地址里讀出寫入的數(shù)據(jù),仿真圖如圖5.14。圖5.14(a) 讀數(shù)據(jù)時序仿真圖圖5.14(b)
55、讀數(shù)據(jù)時序仿真圖5.3.5 E2PROM行為模塊的反饋信息圖圖5.15 Modelsim 反饋信息圖圖5.15的反饋信息可以看出I2C串行接口電路已經(jīng)向E2PROM的00H地址寫入了數(shù)據(jù)12H,向01H地址寫入數(shù)據(jù)34H。這些反饋信息可以說明I2C串行接口電路已經(jīng)通過了功能時序仿真。理論上,這個電路已經(jīng)符合了本課題的設計要求,但是,還要在實物板上驗證才能最終確定電路正確。FPGA開發(fā)板的驗證將在下一節(jié)里提到。5.4 I2C串行接口電路FPGA測試結(jié)果DE2做為I2C主控器對器件地址為的E2PROM 1和地址為的E2PROM 2芯片進行隨機讀寫操作。向E2PROM寫入的數(shù)據(jù)是預先預存在ROM里的,數(shù)據(jù)類型是16進制的。地址是通過DE2上的撥碼開關(guān)輸入15位地址的。操作按鈕介紹:
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 不銹鋼欄桿安裝與社區(qū)安全防范系統(tǒng)合同
- 施工現(xiàn)場清理服務合同5篇
- 美術(shù)的英語課件
- 安全生產(chǎn)目標指什么
- 冬季安全心得體會300字
- 小學安全副校長述職報告
- 鋼鐵公司安全培訓心得體會
- 安全環(huán)保知識學習
- 四川省安全生產(chǎn)管理
- 醫(yī)院消防安全巡查記錄表范本
- 梅毒螺旋體試驗活動風險評價報告
- 精裝房驗房項目表格
- 《有效溝通》培訓課件
- 汽車租賃項目可行性報告
- 礦井災變時期通風理論與技術(shù)及案例分析
- (蘇教 譯林版)三年級英語上冊同步預習練習
- 2021年新《建設工程施工合同司法解釋(一)》逐條解讀4課件
- 綠城物業(yè)工程承接查驗工作手冊
- Q∕GDW 12185-2021 輸變電設備物聯(lián)網(wǎng)邊緣計算應用軟件接口技術(shù)規(guī)范
- 幼兒園一日活動流程保教細則
- 木托盤采購合同
評論
0/150
提交評論