

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于FPGA的單片機接口擴展設計</p><p><b> 摘 要</b></p><p> 當今電子產品逐漸趨于智能化、人性化,電子產品的發(fā)展已經離不開單片機。隨著人們消費要求的提高,對電子產品的功能要求越來越高,電子產品的升級換代逐漸受到主控芯片資源匱乏的約束,而更換高級的CPU又會帶來產品版本的不兼容和成本大幅上升的風險,而且會造成設
2、計難度加大,設計周期變長。隨著可編程邏輯器件及EDA技術的發(fā)展,可編程邏輯器件的價格越來越低,在系統(tǒng)設計中經常會用到FPGA擴展單片機的相關資源,來實現低成本、高性能的產品設計。</p><p> 單片機具有性價比高、功能靈活、易于人機對話、強大的數據處理能力等特點;而FPGA則具有高度、高可靠性以及開發(fā)便捷、規(guī)范等特點,根據兩者的特點,設計一種基于C8051F340單片機與Actel FPGA的總線接口邏輯電
3、路,實現單片機與可編程邏輯器件數據與控制信息的可靠通信,運用此接口通過Verilog HDL編程可為單片機擴展通用I/O和一些帶有硬件協議的特殊接口,例如I2C接口、SPI接口、PCI接口和通用串口等。</p><p> 關 鍵 詞:單片機,FPGA,接口擴展,總線接口,Verilog HDL</p><p><b> 目 錄</b></p>&l
4、t;p><b> 前 言1</b></p><p><b> 第1章 緒論2</b></p><p> §1.1 設計思想概述2</p><p> §1.2 Actel ProASIC3系列FPGA概述2</p><p> §1.3 C80
5、51F340單片機概述3</p><p> 第2章 單片機與FPGA接口的設計5</p><p> §2.1 接口方式選擇5</p><p> §2.2 總線的復用性選擇5</p><p> §2.3 總線復用方式的配置8</p><p> §2.3.1 總線
6、接口配置8</p><p> §2.3.2 總線的端口配置8</p><p> §2.4 總線復用方式的時序邏輯8</p><p> 第3章 FPGA的擴展實例12</p><p> §3.1 I2C總線在FPGA上的模擬實現12</p><p> §3.1.
7、1 I2C概述12</p><p> §3.1.2 I2C接口設計13</p><p> §3.2 SPI總線在FPGA上的模擬實現17</p><p> §3.2.1 SPI總線接口協議17</p><p> §3.2.2 SPI總線接口設計18</p><p&g
8、t; 第四章 電路設計及分析20</p><p> §4.1 電源模塊設計20</p><p> §4.2接口電路設計22</p><p> §4.3電路輻射干擾測試分析23</p><p><b> 結 論25</b></p><p><
9、b> 參考文獻26</b></p><p><b> 致 謝27</b></p><p><b> 附 錄28</b></p><p><b> 前 言</b></p><p> 微控制器是現代電子產品中不可缺少的一個部分,各大半導體廠商在不
10、斷推出復雜的高級CPU的同時,也同時推出了一些的超小封裝的微控制芯片,這種超小封裝的控制器適用于特定的某一方面,與通用的CPU相比具有體積小、功耗低、成本低等優(yōu)點,在便攜式電子產品中有著廣泛的應用。但是這種超小封裝的微控制芯片的I/O數量十分有限,接口單一,限制了控制器的掛接設備的數量和種類。隨著電子產品逐漸趨于集成化、智能化、便攜化,人機交互、通信互聯、多設備管理等任務大大了加重了對電子產品的“心臟”——微控制器的運作負擔,尤其是對主
11、控芯片的I/O數量和一些特殊接口的需求,使得一些低端控制器能勝任的工作不得不交由價格昂貴的高級控制芯片來完成,以獲得更多的I/O和特殊接口,然而這無疑加大了產品的成本,削弱了產品的市場競爭力。</p><p> 隨著電子技術的發(fā)展,可編程邏輯器件的集成度越來越高,而成本卻越來越低,現在已有半導體廠商推出了價格十分低廉的FPGA芯片,為上述問題的解決提供了另一種思路:用FPGA為那些I/O數量不足或是缺少某些特殊
12、接口的微控制器擴展接口和I/O而不必采用價格更貴的高端控制器芯片。而且為了適應電子產品不斷智能化的要求,系統(tǒng)運行的任務越來越多,某些復雜的算法亦可交由FPGA來完成,為產品的更新換代節(jié)省成本,而且由于FPGA是硬線邏輯,比軟件模擬接口具有實時性好、處理速度快等優(yōu)點,能減輕主控芯片的運行負擔,增加系統(tǒng)的管理能力,使系統(tǒng)更加穩(wěn)定、高效!</p><p><b> 第1章 緒論</b></
13、p><p> §1.1 設計思想概述</p><p> FPGA作為一種新型的可編程邏輯器件,可以取代現有的全部微機接口芯片,實現微機系統(tǒng)中的存儲器、地址譯碼等多種功能,具有更高的密度、更快的工作速度和更大的編程靈活性,被廣泛的應用于各種電子類產品中。在功能上,單片機具有性價比高、功能靈活、易于人機對話、強大的數據處理能力等特點;而FPGA具有高速、高可靠性以及開發(fā)便捷、規(guī)范等優(yōu)
14、點,因此兩類器件相組合的電路結構將在許多高性能儀器儀表和電子產品中被廣泛應用。基于這種需求,本文設計了C8051F340單片機與FPGA的總線接口邏輯電路,實現了單片機與FPGA數據與控制信息的可靠通信,是FPGA與單片機優(yōu)勢互補,組成靈活的、軟硬都可現場編程的控制系統(tǒng)。</p><p> §1.2 Actel ProASIC3系列FPGA概述</p><p> Actel
15、公司是單芯片FPGA解決方案的領導性廠商,早期以反熔絲FPGA為主,致力于航天航空以及軍事領域,造就了其在可靠性、安全性等領域上獨領風騷的輝煌。</p><p> Actel Flash 架構的 FPGA 無需配置芯片,其開關結構采用130nm的Flash工藝,具有掉電非易失特點,一旦完成編程后,配置數據就會成為 FPGA 結構的固有部分,在系統(tǒng)上電時無需從外部載入配置數據。Actel特有的帶模擬功能FPGA
16、 --Fusion,在ProASIC3的基礎上增加了ADC、Flash Memory、模擬IO、RTC等部件,使單個芯片的集成度更高,不僅大大降低了PCB板的面積,降低成本,更是提高了安全性和可靠性,并實現了單芯片的解決方案。</p><p> Actel Flash 架構的FPGA具有類似于 ASIC 的功率特性,無需上電啟動功耗和配置功耗,其無論是靜態(tài)功耗和動態(tài)功耗都比基于SRAM的FPGA低很多,特別適
17、用于電池供電產品和其它對功耗敏感的應用,而功耗是基于 SRAM FPGA 器件所面對的難題。另外Fusion可實現自睡眠模式,通過內部的LDO和RTC可實現睡眠和喚醒模式;IGLOO系列特別為手持設備設計,最低靜態(tài)功耗可達5μW,其獨特的Flash*Freeze模式無需關斷電源、外部時鐘即可進入低功耗模式,并能保存RAM的內容數據。</p><p> Actel Flash 架構的FPGA具有上電即可運行 (L
18、APU) 特性,上電時間非常短,一般只需要幾十微秒,無需特別的上電時序要求,這種上電即行特性可以為外部器件提供時鐘、復位信號等,取代復位芯片、時鐘調整電路、數據地址譯碼電路等,簡化整個系統(tǒng)的設計同時提高了安全性,因此Actel FPGA可以用于對上電時間有苛刻要求的場合。</p><p> Actel Flash 架構的FPGA具有兩種加密功能,FlashLock和AES,這種特性只有在非易失性的 Flash架
19、構的FPGA才能實現,FlashLock和AES都具有128位的密鑰,FlashLock用于保護器件非授權的訪問,例如:編程、擦除、校驗等;AES是國際上標準的加密算法,取代先前的56位DES加密算法,可以對用戶的編程文件進行加密,經過加密的編程文件可以進行任何途徑傳輸,為遠程升級提供了保障。</p><p> Actel Flash 架構的FPGA對固件錯誤有很好的免疫作用,所謂固件錯誤是指當大氣中產生的高能
20、中子轟擊到 FPGA的配置單元或者布線結構的時候,使得晶體管狀態(tài)發(fā)生了改變,導致系統(tǒng)的一次徹底的實效,這種錯誤將會一直存在并被檢查修正為止,固件錯誤問題在基于SRAM的FPGA中普遍存在,并且是不可能避免,而基于Flash 架構的FPGA對大氣中的高能中子有很好的免疫作用。</p><p> §1.3 C8051F340單片機概述</p><p> C8051F340/1/
21、2/3/4/5/6/7 器件是完全集成的混合信號片上系統(tǒng)型 MCU。下面列出了一些主要特性: </p><p> 高速、流水線結構的 8051 兼容的微控制器內核(可達 48MIPS) </p><p> 全速、非侵入式的在系統(tǒng)調試接口(片內) </p><p> 通用串行總線(USB)功能控制器,有 8 個靈活的端點管道,集成收發(fā)器和 1K FIFO RAM
22、 </p><p><b> 電源穩(wěn)壓器 </b></p><p> 真正 10 位 200 ksps 的單端/差分 ADC,帶模擬多路器 </p><p> 精確校準的 12MHz 內部振蕩器和 4 倍時鐘乘法器 </p><p> 多達 64KB 的片內 FLASH 存儲器 </p><p
23、> 硬件實現的SMBus/ I 2 C、增強型UART(最多兩個)和增強型SPI串行接口 </p><p> 具有 5 個捕捉/比較模塊和看門狗定時器功能的可編程計數器/定時器陣列(PCA) </p><p> 片內上電復位、VDD 監(jiān)視器和時鐘丟失檢測器 </p><p> 多達 40 個端口 I/O(容許 5V 輸入) </p>&l
24、t;p> 具有片內上電復位、VDD 監(jiān)視器、電壓調整器、看門狗定時器和時鐘振蕩器的C8051F340/1/2/3/4/5/6/7 器件是真正能獨立工作的片上系統(tǒng)。FLASH 存儲器還具有在系統(tǒng)重新編程能力,可用于非易失性數據存儲,并允許現場更新 8051 固件。用戶軟件對所有外設具有完全的控制,可以關斷任何一個或所有外設以節(jié)省功耗。 </p><p> 片內 Silicon Labs 二線(C2)開發(fā)
25、接口允許使用安裝在最終應用系統(tǒng)上的產品 MCU 進行非侵入式(不占用片內資源)、全速、在系統(tǒng)調試。調試邏輯支持觀察和修改存儲器和寄存器,支持斷點、單步、運行和停機命令。在使用 C2 進行調試時,所有的模擬和數字外設都可全功能運行。兩個 C2 接口引腳可以與用戶功能共享,使在系統(tǒng)調試功能不占用封裝引腳。 </p><p> 每種器件都可在工業(yè)溫度范圍(-45℃到+85℃)內用 2.7V-5.25V 的電壓工作。
26、電源電壓大于 3.6V 時,必須使用內部穩(wěn)壓器。對于 USB 通信,電源電壓最小值為 3.0V。端口 I/O 和/RST引腳都容許 5V 的輸入信號電壓。C8051F340/1/2/3/4/5/6/7 采用 48 腳 TQFP 封裝或 32 腳 LQFP封裝。</p><p> C8051F340單片機的系統(tǒng)原理框圖如圖1-1所示。</p><p> 第2章 單片機與FPGA接口的設計
27、</p><p> §2.1 接口方式選擇</p><p> 單片機與FPGA的接口方式一般有兩種:</p><p><b> 獨立方式</b></p><p><b> 總線方式</b></p><p> 獨立方式即單片機與FPGA地位平等,不存在主、從
28、機之分,采用通用的通信接口(例如串口)與FPGA進行數據傳輸和通信,此種方法占用I/O數目非常少,但是通信雙方需要制定詳細可靠的數據傳輸和通信協議,時序復雜且不易抽象,而且由于是串口傳輸,數據速率低,尤其當FPGA掛接的外設較多時這種通信方式的缺點尤為突出。</p><p> 單片機與FPGA以總線方式通信,即將FPGA掛接在單片機外部擴展總線上,FPGA占用單片機的外部RAM的地址空間,屬于單片機的從設備。以
29、這種方式通信有許多其他方式不具備的優(yōu)點:</p><p> C8051F系列單片機具有很強的外部總線擴展能力,利用片外三總線結構很容易實現單片機與FPGA的總線接口,對于單片機來說其內部的EMIF接口屬于純硬件時序,且并行傳輸,速度快,通信可靠。</p><p> 對與FPGA來說其內部是硬線邏輯電路,非常方便與高速時序電路接口,在FPGA中通過邏輯切換,單片機易于與SRAM或ROM接
30、口。</p><p> 單片機有直接訪問外部總線的指令MOVX,,采用EMIF 通信接口編程十分高效、簡潔,速度要比前一種方式快得多。</p><p> 綜合上述特點,單片機與FPGA的接口初步選定為總線方式。</p><p> §2.2 總線的復用性選擇</p><p> C8051F系列單片機的外部總線有兩種配置方式:&
31、lt;/p><p> 數據總線和地址總線復用的方式</p><p><b> 非復用方式</b></p><p> 在復用方式,單片機的數據總線和地址總線的低 8 位共享相同的端口引腳:AD[7:0]。在該方式下,要用一個外部鎖存器(74HC373 或相同功能的邏輯門)保持 外部總線地址的低 8 位。外部鎖存器由 ALE(地址鎖存使能)信號控
32、制,ALE 信號由外部存儲器接口邏輯驅動。圖2-1 給出了復用方式配置的一個例子。</p><p> 圖2-1 單片機外部總線復用方式配置示例</p><p><b> 字體格式請核對</b></p><p> 在復用方式,可以根據 ALE 信號的狀態(tài)將外部 MOVX 操作分成兩個階段。在第一個階段,ALE 為高電平,地址總線的低 8 位
33、出現在 AD[7:0]。在該階段,地址鎖存器的‘Q’輸出與‘D’輸入的狀態(tài)相同。ALE 由高變低時標志第二階段開始,地址鎖存器的輸出保持不變,即與鎖存器的輸入無關。在第二階段稍后,當/RD 或/WR 有效時,數據總線控制 AD[7:0]端口的狀態(tài)。</p><p> 在非復用方式,數據總線和地址總線是分開的。圖 2-2 給出了非復用方式配置的一個例子。</p><p> 圖2-2 單片
34、機外部總線非復用方式配置示例</p><p> 下面這段話到底是復用還是非復用?</p><p> 本設計中C8051F340單片機為48腳封裝,總共有4個8位端口,非復用外部總線要占用3個端口,再加上4根控制總線,I/O消耗的數目過多。在非復用方式下只需占用單片機2個8位端口和4根控制線即可實現總線連接,另外FPGA內部可以實現總線復用方式下的地址鎖存器的邏輯功能,單片機就可以在不需
35、要外加鎖存器的情況下與FPGA采用總線復用的接口通信,單片機僅通過二十根I/O線在FPGA與單片機之間進行通信和控制信息交換,這樣可以節(jié)省單片機和FPGA芯片的I/O線。</p><p> 綜上所述,C8051f340單片機與FPGA接口采用數據總線和地址總線復用的方式,且不需外部鎖存器,示意原理如圖2-3所示</p><p> 圖2-3 單片機和FPGA總線接口方式原理框圖</
36、p><p> §2.3 總線復用方式的配置</p><p> §2.3.1 總線接口配置</p><p> 配置外部存儲器接口的過程包括下面 5 個步驟:</p><p> 1. 配置相應端口引腳的輸出方式為推挽或漏極開路(最常用的是推挽方式),并在交叉開關中跳過這些引腳。</p><p>
37、2. 配置對應 EMIF 引腳的端口鎖存器為休眠態(tài)(通常將它們設置為邏輯‘1’)。</p><p> 3. 選擇復用方式。</p><p> 4. 選擇存儲器模式(只用片內存儲器、不帶塊選擇的分片方式、帶塊選擇的分片方式或只用片外存儲器)。</p><p> 5. 設置與片外存儲器或外設接口的時序</p><p> §2.3
38、.2 總線的端口配置</p><p> 當采用復用方式時,外部總線接口位于端口 4、3和 1(訪問片外存儲器時)。使用 EMIF 時,應用 P1SKIP寄存器將交叉開關配置為跳過控制線 P1.7(/WR)、P1.6(/RD)和 P1.3(ALE)。</p><p> 外部存儲器接口只在執(zhí)行片外 MOVX 指令期間使用相關的端口引腳。一旦 MOVX 指令執(zhí)行完畢,端口鎖存器或交叉開關重新
39、恢復對端口引腳的控制。端口鎖存器應被明確地配置為使外部存儲器接口引腳處于休眠狀態(tài)(不使用時),通常將它們設置為邏輯‘1’。</p><p> 在執(zhí)行 MOVX 指令期間,外部存儲器接口將禁止所有作為輸入的那些引腳的驅動器(例如,讀操作期間的 Data[7:0])。端口引腳的輸出方式(無論引腳被配置為漏極開路或是推挽方式)不受外部存儲器接口操作的影響,始終受 PnMDOUT 寄存器的控制。在大多數情況下,所有 E
40、MIF 引腳的輸出方式都應被配置為推挽方式。</p><p> §2.4 總線復用方式的時序邏輯</p><p> 采用總線方式的數據傳輸和通信接口重要的是要詳細了解C8051F340單片機的總線讀寫時序,根據時序圖來設計邏輯結構,其通信的時序必須遵循單片機內固定的總線方式讀、寫時序。FPGA的邏輯設計也相對比較復雜,在程序設計上必須與接口的單片機程序相結合,嚴格安排單片機能
41、訪問的I/O空間。在復用方式下,C8051F340單片機的讀寫時序如圖2-4和圖2-5所示。</p><p> 圖2-4 復用方式16位MOVX時序</p><p> 圖2-5 帶塊選擇的復用8位MOVX時序</p><p> 在總線應用時,單片機的P4口是作為地址/數據總線分時復用的,因此應在總線接口模塊中設計一個三態(tài)緩沖器,實現P4口的三態(tài)接口;又因為單片
42、機在訪問外部空間時,它的地址為16位,因此借助地址鎖存使能信號ALE在FPGA中實現高8位與低8位地址的編碼,組合成16位地址,然后再根據單片機的讀寫信號,實現對FPGA的讀寫操作。</p><p> 通過對單片機總線讀、寫時序的分析,設計了圖2-6所示的接口電路。在FPGA中,設計了兩個模塊:一個是總線接口模塊,負責單片機與FPGA的總線接口邏輯;另一個是寄存器單元及外部接口模塊,運用總線接口模塊來操作此模塊
43、。</p><p> 圖2-6 單片機與FPGA總線接口邏輯圖</p><p> 第3章 FPGA的擴展實例</p><p> §3.1 I2C總線在FPGA上的模擬實現</p><p> §3.1.1 I2C概述</p><p> I2C總線是Philips推出的芯片間串行傳輸總線,因為
44、其具有連線少(僅需一條串行時鐘線和一條串行數據線),允許多主機控制,具有裁決和同步功能,可隨添加或摘除總線上的子器件等諸多優(yōu)點,所以已被廣泛應用。另外由于Philips和其他廠商提供了種類眾多的I2C兼容芯片,促使其成為世界性的工業(yè)標準。</p><p> I2C總線最主要的優(yōu)點是其簡單性和有效性。由于接口直接在組件之上,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數量,降低了互聯成本??偩€的
45、長度可高達25英尺,并且能夠以10Kbps的最大傳輸速率支持40個組件。I2C總線的另一個優(yōu)點是,它支持多主控(multimastering), 其中任何能夠進行發(fā)送和接收的設備都可以成為主總線。一個主控能夠控制信號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。</p><p> I2C總線是由數據線SDA和時鐘SCL構成的串行總線,可發(fā)送和接收數據。在CPU與被控IC之間、IC與IC之間進行雙向傳送,
46、最高傳送速率100kbps。各種被控制電路均并聯在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模塊都有唯一的地址,在信息的傳輸過程中,I2C總線上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。CPU發(fā)出的控制信號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調整的類別(如對比度、亮度等)及需要調整的量。這樣,各控制電路雖
47、然掛在同一條總線上,卻彼此獨立,互不相關。 </p><p> I2C總線在傳送數據過程中共有三種類型信號, 它們分別是:開始信號、結束信號和應答信號。CPU向受控單元發(fā)出一個信號后,等待受控單元發(fā)出一個應答信號,CPU接到應答信號后,根據實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應答信號,由判斷為受控單元出現故障。</p><p><b> I2C規(guī)則:</b>
48、;</p><p> 空閑時SCL和SDA必須保證為高電平,以等待起始位的發(fā)生。</p><p> 啟動和停止條件。在SCL穩(wěn)定為高電平期間,SDA產生一個由高電平到低電平的跳變,此時即可啟動總線;結束條件與此相反,在SCL穩(wěn)定為高電平期間,SDA產生一個由低電平到高電平的跳變。</p><p> 位傳送。位傳送發(fā)生在SCL穩(wěn)定在高電平期間,此時不允許SDA線
49、上發(fā)生數據跳變,否則會導致總線失控。每個時鐘脈沖傳送一個數據位。</p><p> 應答位。在啟動條件和停止條件之間傳送器給接收器的數據個數沒有限制,每個8位字節(jié)后加一個應答位。主傳送器產生高電平的應答位,由接收器將該位拉低,稱為應答信號(ACK);主器件為接收器時,在接收了最后一個字節(jié)后不發(fā)應答信號,稱為非應答信號(NO ACK)。從器件必須在接收到每個字節(jié)后產生一個應答位,主器件也必須在接收從傳送器傳送的每
50、個字節(jié)后產生一個應答位。</p><p> 寫模式。主傳送器首先向數據線發(fā)送從接受器地址,地直末尾一位為0,表示要進行寫操作,得到應答后便向從接收器發(fā)送數據,每發(fā)送一個字節(jié),讀取一次應答位,為ACK則接著發(fā)送,位NO ACK則發(fā)送停止位。數據傳送完后同樣發(fā)送停止位。</p><p> 讀模式。同樣由主傳送器發(fā)送從接收器地址,地址末尾一位為1,表示要進行讀操作。讀完一個字節(jié)后發(fā)送應答位,
51、如果想繼續(xù)操作,發(fā)送ACK,如果想結束讀操作,發(fā)送NO ACK。</p><p> §3.1.2 I2C接口設計</p><p> 要使接口模塊正常工作,CPU必須首先要通知模塊執(zhí)行什么操作,而后再把需要的數據依次送入模塊中,考慮到I2C總線的速率可以在0-3.4Mbit/s之間,為了適應不同外設的需要,模塊還應在CPU的控制下自由調整數據傳送速率。因此,CPU應能夠向模塊發(fā)
52、送數據速率控制數據、I2C總線工作模式控制數據、信息交換數據,同時還能從模塊中讀取工作狀態(tài)數據、模塊接收數據。據此設計出基于FPGA的I2C總線接口模塊如圖3-1所示。</p><p> 圖3-1 I2C總線接口模塊</p><p> 該設計由7個單元組成,它們分別是:用于調整I2C總線數據傳輸速率的Clock單元;用于實現同CPU并行接口的PcPort單元;用于產生I2C總線工作時序
53、的I2CStep單元;用于產生數據傳輸時序的BitTiming單元;用于產生I2C總線使能信號的EnI2C單元;用于產生I2C總線接口模塊工作狀態(tài)指示的Status單元;用于產生I2C總線接口時鐘信號SDL和數據串行輸入輸出信號SDA的I2CPORT單元。</p><p><b> Clock單元</b></p><p> 整個接口模塊以CPU的系統(tǒng)時鐘作為主時鐘
54、信號,模塊傳輸數據的速率受該時鐘頻率的控制,時鐘頻率高則模塊傳數據的速率也高,反之亦然??紤]到各種具有I2C總線接口的芯片的工作速率差別較大(從幾十Kbits/s到幾Mbits/s),該接口模塊的工作速率必須能夠靈活調整,以適應不同外設芯片的接口需要。Clock單元實際上就是一個分頻器,它在輸出頻率控制碼CKSEL[7..0]的控制下產生對PCCLK分頻后合適的時鐘信號供I2C接口使用。</p><p><
55、b> I2CStep單元</b></p><p> 通過對I2C總線各種工作模式的分析,可知不同的工作模式都是按特定的工作流程串行輸入、輸出數據的,例如字節(jié)寫模塊的工作流程為:發(fā)送開始信號、串行輸出被叫芯片的片選地址、發(fā)送寫信號、等待被叫芯片響應、串行輸出被叫芯片存儲單元的地址、等待被叫芯片響應、串行輸出寫入的數據、等待被叫芯片響應、發(fā)送結束信號結束本次操作。</p><
56、p> 為了使接口模塊正確工作,模塊在接收到來自MCU的工作模式控制信號I2CMD[2..0]后,根據工作模式的不同產生接口模塊工作流程。當前流程結束后有Status單元產生IncStep信號,控制工作流程指向下一階段。該模塊的功能類似一個計數器,它在I2CMD[2..0]和I2CMD[2..0]Step的共同作用下,產生長度不等的工作流程信號Step[6..0]。</p><p> BitTiming單
57、元</p><p> 在I2C總線工作流程的不同階段,I2C接口模塊需要按一定的時序完成不同的工作,通過對總線數據傳輸模塊的分析可知,在一個數據傳輸模式的所有工作流程中,輸入、輸出8位數據的工作流程用時最長,需要25個工作時序周期,為了滿足所有工作流程的需要,工作時序BitTiming單元被設計成最長可產生31個時鐘周期的工作時序。</p><p> 該單元在IncStep=‘1’時復
58、位工作時序;在EnTiming信號有效后的每個SysCLK的上升沿使工作時序信號EnTiming加1,用于控制I2CPORT單元按給定的時序串行輸入、輸出數據信息。</p><p><b> Status單元</b></p><p> 在I2C總線工作過程中,MCU需要隨時了解I2C接口模塊的發(fā)送數據寄存器是否為空、接收寄存器是否準備數據好、從機響應信號是否正確、
59、當前工作流程是否完成等工作狀態(tài),只有在發(fā)送數據為空時,MCU才可以向接口模塊寫入待傳送數據;只有在接受數據寄存器準備好后,MCU才可以從接口模塊讀入正確的接收數據;從機響應信號不正確時,MCU應立即發(fā)出結束信號結束本次操作;當前工作流程未完成前不能進行下一流程。這些狀態(tài)信號全部由Status單元產生。</p><p> 在該單元中,共有4種輸出信號,它們分別是:用于指示發(fā)送數據寄存器是否為空的TxSTS狀態(tài),該
60、狀態(tài)在MCU寫入數據后置‘1’,數據被發(fā)送后清‘0’;用于指示接收數據準備好狀態(tài)的RxSTS信號,該信號在模塊接收到完整的數據后置‘1’,數據被MCU讀后清‘0’;用于指示模塊工作狀態(tài)的ACKSTS信號,該信號在模塊工作正常(接收到從機響應信號)時自動置‘1’,工作不正常時自動清‘0’;用于使工作流程指向下一階段的IncStep信號,該信號在當前工作流程完成后由模塊自動產生,用于使模塊的工作流程指向下一階段。</p>&l
61、t;p><b> EnI2C單元</b></p><p> 在I2C總線接口模塊中,BitTiming單元何時開始產生工作時序,需要時序信號控制,I2CPORT單元何時向I2C總線輸出信息、何時從I2C總線上讀入信息也需要時序信號控制。這些控制時序的產生由EnI2C單元完成。</p><p> EnI2C單元在I2CMD[2..0]、Step[6..0]、
62、TxSTS、RxSTS等信號的控制下,從預先存儲于單元內部的一組I2C工作時序信息中讀出當前時序信息輸出,控制BitTiming和I2CPORT單元完成。</p><p><b> I2CPORT單元</b></p><p> 本單元是整個設計的核心,用于完成數據的I2C總線輸出及I2C總線輸入數據的讀入。同時產生接口模塊的各種工作狀態(tài)。</p>&
63、lt;p> 該單元的工作過程為:在SysCLK的下降沿分別讀入工作使能信號和工作時序信號,如果此時EnIdle=‘1’,則強制I2C總線進入空閑模式;如果EnStart=‘1’,則使I2C總線輸出開始新號;如果EnWire=‘1’,則使I2C總線輸出8位數據信號;如果EnRead=‘1’,則從I2C總線讀入8位數據;如果EnOutACK=‘1’,則使I2C總線輸出主機響應信號;如EnStop=‘1’,則使I2C總線輸出結束信號;
64、在整個工作過程中,模塊會自動根據工作情況,設置各種狀態(tài)控制信號。</p><p> PcPort單元的是實現</p><p> 該單元是模塊CPU的接口,CPU通過該單元向接口模塊寫入工作模式控制信息、需要發(fā)送的數據以及I2C工作速度控制信息;同時通過該單元讀入從機響應信息、從機輸出數據、發(fā)送接收寄存器狀態(tài)等信息。</p><p> 圖3-2 I2C模塊應用示
65、意圖</p><p> §3.2 SPI總線在FPGA上的模擬實現</p><p> §3.2.1 SPI總線接口協議</p><p> SPI(Serion Perpheral Interface)總線接口是一個全雙工,同步串行數據接口。許多微處理器、微控制器和外部設備具有這個接口。它能夠實現在微控制器之間或微控制器與外部設備之間通信。S
66、PI是一個環(huán)形總線結構,通常有4條線組成,即:串行時鐘線(SCK)、主機輸出從機輸入線(MOSI)、主機輸入從機輸出線(MISO)和從機選擇線 SS_N。SCK靠主機和數據流來驅動。MOSI數據線從主機輸出數據作為從機的輸入數據。MISO數據線傳送從機輸出的數據作為主機的輸入數據。在大多數情況下,使用一個SPI作為主機,它控制數據向1個或幾個從機傳送。主機驅動數據從它的SCK和MOSI端到各從機的SCK和MOSI端,被選擇的從機驅動數據
67、從它的MISO端到主機的MOSI端。SS_N控制線用于從機選擇控制。</p><p> SCK的相位和極性能改變SPI的數據格式,時鐘極性CPOL=‘0’,串行數據的移位操作由時鐘正脈沖觸發(fā),時鐘極性CPOL=‘1’,串行數據的移位操作由負脈沖 觸發(fā),時鐘相位CPHA=‘0’,串行數據的移位操作由時鐘脈沖前沿觸發(fā),時鐘相位 CPHA=‘1’,串行數據的移位操作由時鐘脈沖后沿觸發(fā),時鐘相位CPHA=‘0’時SPI
68、的數據轉換時序圖如圖3-3所示。</p><p> 圖3-3 CPHA=‘0’時SPI的數據轉換時序圖</p><p> 在圖3-3中SCK信號在第一個SCK周期中的前半周期無效,在這種模式中,SS的下降沿示意數據傳送的開始,因此,SS在連續(xù)串行字節(jié)之間必須被取反和重新申明。時鐘相位CPHA=‘1’時SPI的數據轉換時序圖如圖3-4所示。</p><p> 圖
69、3-4 CPHA=‘1’時SPI的數據轉換時序圖</p><p> 在圖3-4中SCK信號從無效電平到有效電平的第一邊沿意味著在這種模式下數據傳送的開始,SS信號能保持有效的低電平在連續(xù)串行字節(jié)之間,這種模式用于只有一個主機和一個從機的系統(tǒng)中。</p><p> 在SPI傳送數據時,8位數據從一個SPI接口移出時,另一個SPI接口也開始移出8位數據,這樣主機的8位移位寄存器和從機的8位
70、移位寄存器可以被看作是16位移位寄存器,16位移位寄存器移動8個位置就實現了在主機和從機之間交換數據。基于FPGA的SPI 接口設計中,從SPI總線上接收的數據被保存在一個接收寄存器中,發(fā)送的數據被寫到一個發(fā)送寄存器中。</p><p> §3.2.2 SPI總線接口設計</p><p> 為了滿足擴展微控制器的SPI接口功能,基 于FPGA的SPI接口必須具有以下功能:1)
71、與微控制器的接口功能;2)8位外部從機選擇功能;3)時鐘極性和相位選擇的不同,有四種數據傳輸模式;4)SPI數據傳送完成標志。SPI接口接口的結構框圖如圖3-5所示。</p><p> 圖3-5 SPI接口的結構框圖</p><p> 從圖3-5中可以看出基于FPGA的SPI設計主要由兩大部分組成,即與微控制器接口的控制部分和SPI接口控制部分。與微控制器接口的控制部分通過三總線方式
72、使FPGA與微控制器相連接,實現微控制器的SPI接口功能擴展。SPI接口控制部分主要實現SPI接口與其他SPI接口的通信。其系統(tǒng)的軟件設計主要包括兩部分,第一部分是C8051F單片機與SPI接口之間通信的軟件設計,在這一部分中,主要是對SPI接口中數據傳送完成位的檢測和對FPGA中各寄存器的讀寫操作。第二部分是SPI接口功能的Verilog語言軟件設計,在這一部分中采用層次化設計的方法。頂層中包括兩大模塊,即微控制器接口模塊和SPI接口
73、模塊,在微控制器接口模塊中建立了接口中各寄存器的地址和構造了各寄存器,在SPI接口控制模塊中又包括SPI控制模塊、SPI邏輯模塊、SPI移位接收模塊和SPI移位發(fā)送模塊等。</p><p> 圖3-6 SPI接口模塊應用示意圖</p><p> 第四章 電路設計及分析</p><p> §4.1 電源模塊設計</p><p>
74、 在本設計中,C8051F單片機采用3.3V供電。Actel FPGA內核采用1.5V供電,I/O端口采用3.3V供電。LED的邏輯電壓為5V,驅動電壓-24V。設計采用三片LM317線性穩(wěn)壓芯片分別產生1.5V、3.3V和5V供電系統(tǒng),采用1653負壓芯片為LED提供驅動負壓(前面說是正電壓)。考慮到317穩(wěn)壓芯片的功耗和輸入輸出壓差的要求,決定使用12V外部直流輸入作為整個系統(tǒng)的供電電源。</p><p>
75、 LM317系列線性穩(wěn)壓芯片是高精度三端可調正電壓輸出集成穩(wěn)壓器輸出電壓可在1.2V~37V的范圍內調節(jié)。</p><p> 圖4-1 5V供電系統(tǒng)</p><p> 317系列穩(wěn)壓器ADJ端和VOUT端之間是1.25V的基準電壓,在圖4-1中穩(wěn)壓器輸出U=1.25*(R9/R8+1),通過設置R9和R8的電阻值即可實現輸出電壓的調節(jié),需要注意的是LM317有最低負載電流要求,一般要
76、求Iout>2.5~5mA,即要求Vout/(R8+R9)>2.5~5mA。</p><p> 圖4-2 3.3V供電系統(tǒng)</p><p> 圖4-3 LED負壓驅動</p><p> §4.2接口電路設計</p><p> 單片機與FPGA以總線方式通信,即將FPGA掛接在單片機外部擴展總線上,FPGA占用單片
77、機的外部RAM的地址空間,屬于單片機的從設備。單片機僅通過二十根I/O線在FPGA與單片機之間進行通信和控制信息交換。單片機端總線I/O分配如圖4-4所示。</p><p> 圖4-4 單片機端總線I/O分配</p><p> FPGA內部是硬件邏輯,總線分配I/O很隨意,考慮到FPGA的某些功能固定管腳分配和PCB布線時難易程度,FPGA的I/O分配如圖4-5所示。</p>
78、;<p> 圖4-5 單片機與FPGA接口電路</p><p> 其它電路設計請參見附錄-電路原理圖 </p><p> §4.3電路輻射干擾測試分析</p><p> 在高速數字電路中,電磁干擾是一個不容忽視的問題。輻射干擾一般是通過電磁感應的形式在空間進行傳播的,圖4-6 是測試電子設備產生輻射干擾的基本方法,或表示電子設備產生的
79、干擾信號通過電磁感應向空中輻射的原理。圖4-6 中,電子設備表示干擾信號源,V1 表示測量儀表,C1 表示電子設備對大地的電容,C2 表示電子設備與天線偶合的電容,即:電子設備通過電場對天線產生感應,這里的天線也可以看成是被干擾的設備。圖11 的測試方法就是測試電子設備周圍規(guī)定距離某處的電磁場強度,由于干擾信號一般都是一個頻率成份非常豐富的非正弦波,因此,無法對它進行直接測量,只能對它其中某一個頻率信號單獨進行測量。</p>
80、<p> 圖4-6 輻射干擾模型</p><p> 電子設備與天線感應產生的電流是位移電流,一般頻率很高的位移電流在電路中每處的電流方向以及電流大小和電壓幅度都是不一樣的,我們無法對它直接進行測量,因此,在進行信號測量的時候一般都使用諧振天線,使天線諧振回路對某個頻率的干擾交流信號產生諧振,然后再檢測諧振信號的電壓幅度。在測試過程中,天線需要經常進行調諧,調諧就是調節(jié)天線振子的長度,或磁感應天線
81、諧振回路中的電容,更多的是調諧選頻放大器輸入回路中的諧振電路參數。 </p><p> 在本設計中,為了防止電磁干擾,對PCB布線的線寬和線距都采取了經驗保守值,最小線距10mil,并在PCB板的雙面大面積鋪地網絡,以降低信號間的串擾。</p><p><b> 結 論</b></p><p> 在本次設計中,參考分析了許多數字電路知識
82、和電路板設計的經驗技巧,通過對單片機和FPGA經典電路的分析應用,設計了A3P125 FPGA擴展C8051F單片機資源的開發(fā)實驗電路板。在本次設計中關鍵在于單片機與FPGA的接口設計,為了方便編程和后續(xù)開發(fā),本設計中采用的并口是最好的選擇。采用總線接口方便單片機和FPGA的嚴密結合以構成一個可擴展的整體系統(tǒng)。</p><p> 本開發(fā)實驗板可用于單片機編程開發(fā)和FPGA的Verilog語言編程,A3P125
83、FPGA共有71個用戶IO,通過Verilog HDL編程可實現單片機的各種接口的擴展,并可以將FPGA看做掛在總線上的外設,依靠中斷實現數據傳輸和通信,不占用單片機過多資源,使系統(tǒng)在增加外設的情況下而不增加系統(tǒng)負擔,更加方便于系統(tǒng)級的軟件編程。</p><p><b> 排版</b></p><p><b> 參考文獻</b></p&
84、gt;<p> [1] 江思敏,姚鵬翼.PADS電路原理圖和PCB設計[M].北京:機械工業(yè)出版社,2007.9.</p><p> [2] 周樹新,何勇.視頻精講:PADS2007原理圖與布板設計典型實例[M].北京:電子工業(yè)出版社,2009.11.</p><p> [3] 劉韜,樓興華.FPGA數字系統(tǒng)設計與開發(fā)實例導航[M].北京:人民郵電出版社,2005.6.
85、</p><p> [4] 夏宇聞.Verilog數字系統(tǒng)設計教程[M].第二版.北京:航空航天大學出版社,2008.</p><p> [5] Stephen Brown & Zvonko Vranesic.數字邏輯基礎與Verilog設計[M].夏宇聞.北京:機械工業(yè)出版社,2007.</p><p> [6] Steve Kilts.高級FPGA
86、設計:結構、設計與優(yōu)化[M].孟憲元.北京:機械工業(yè)出版社,2009.</p><p> [7] Howard Johnson,Martin Graham.高速數字設計[M].沈立,朱來文,陳宏偉.電子工業(yè)出版社.2005.</p><p> [8] 周志堅.同步電路設計技術及規(guī)則[D].深圳,華為技術有限公司,2007:1~27.</p><p> [8]
87、劉法治.常用電子元件器件及典型芯片應用技術[M].北京:機械工業(yè)出版社,2006.12.</p><p> [9] 那文鵬,王昊.通用集成電路的選擇與使用[M].北京:人民郵電出版社,2004.5.</p><p> [10] 李朝青.單片機&DSP外圍數字IC技術手冊[M].北京:北京航空航天大學出版社,2003.1.</p><p> [11] 張
88、海風.HyperLynx仿真與PCB設計[M].北京:機械工業(yè)出版社,2005.9</p><p> [12] 李景華,杜玉遠.可編程邏輯器件及EDA技術[M].沈陽:東北大學出版社,2000.</p><p> [13] 徐志軍,徐光輝.CPLD/FPGA的開發(fā)與應用[M].北京:電子工業(yè)出版社,2002.</p><p> [14] 游志宇,張洪,董秀成.
89、MCS-51與FPGA_CPLD總線接口邏輯設計[J].單片機與嵌入式系統(tǒng)應用,2008:29-32.</p><p> [15] 李華.MCS-51系列單片機接口技術[M].北京:北京航空航天大學出版社.1993.</p><p><b> 致 謝</b></p><p> 大學四年已接近尾聲,在大學四年里我學到了堅實的知識基礎,交到了
90、許多朋友,也學到了許多做人的道理,感謝河南科技大學給了我這次成長的機會。</p><p> 在畢業(yè)設計過程中,xx老師作為本次設計的首席指導教師,對作者在設計中遇到的困難給予了悉心的指導,感謝xx老師崇高的師德和對育人事業(yè)的不辭勞苦,同時也向在畢業(yè)設計中辛勤工作的各位老師表示由衷的感謝。</p><p> 在本次設計過程中作者也得到了許多同學誠摯的幫助和關懷,在此不再一一列舉,作者對所
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于gsm無線通信單片機接口設計【畢業(yè)設計】
- 8051單片機的fpga實現畢業(yè)設計
- 單片機擴展串行通信畢業(yè)設計論文
- 基于單片機的畢業(yè)設計
- 單片機畢業(yè)設計--基于單片機的電子時鐘
- 畢業(yè)設計--基于單片機的rs-232c串行通信接口設計
- 單片機畢業(yè)設計
- 單片機畢業(yè)設計
- 畢業(yè)設計-單片機
- 單片機畢業(yè)設計---基于單片機控制的模擬電梯顯示
- 單片機畢業(yè)設計--基于單片機的恒壓供水系統(tǒng)設計
- 單片機畢業(yè)設計---基于單片機簡易計算機
- 基于單片機和fpga的任意頻率發(fā)生器設計【畢業(yè)設計】
- 畢業(yè)設計---基于單片機數字時鐘設計
- 基于單片機的電子羅盤設計【畢業(yè)設計】
- 畢業(yè)設計---基于單片機數字秒表的設計
- 畢業(yè)設計--基于單片機的門禁系統(tǒng)設計
- 基于單片機的門禁系統(tǒng)設計畢業(yè)設計
- 基于單片機的熱能表設計畢業(yè)設計
- 基于單片機的數控電源設計畢業(yè)設計
評論
0/150
提交評論