官术网_书友最值得收藏!

第2章 驅(qū)動設(shè)計的硬件基礎(chǔ)

本章導(dǎo)讀

2.3節(jié)分析了常見的外設(shè)接口與總線的工作方式,包括串口、I2C、USB、以太網(wǎng)接口、ISA、PCI和cPCI等。

本章講述一個底層驅(qū)動工程師必備的硬件基礎(chǔ),給出了嵌入式系統(tǒng)硬件原理及分析方法的一個完整而簡潔的全景視圖。

2.1節(jié)描述了微控制器、微處理器、數(shù)字信號處理器以及應(yīng)用于特定領(lǐng)域的處理器各自的特點,分析了處理器的體系架構(gòu)和指令集。

2.2節(jié)對嵌入式系統(tǒng)中所使用的各類存儲器與CPU的接口、應(yīng)用領(lǐng)域及特點進(jìn)行了歸納整理。

嵌入式系統(tǒng)硬件電路中經(jīng)常會使用CPLD和FPGA,作為驅(qū)動工程師,我們不需要掌握CPLD和FPGA的開發(fā)方法,但是需要知道它們在電路中能完成什么工作,2.4節(jié)講解了這項內(nèi)容。

2.5~2.7節(jié)給出了在實際項目開發(fā)過程中硬件分析的方法,包括如何進(jìn)行原理圖分析、時序分析及如何快速地從芯片手冊獲取有效信息。

2.8節(jié)講解了調(diào)試過程中常用儀器儀表的使用方法,涉及萬用表、示波器和邏輯分析儀。

2.1 處理器

2.1.1 通用處理器

通用處理器(GPP)并不針對特定的應(yīng)用領(lǐng)域進(jìn)行體系結(jié)構(gòu)和指令集的優(yōu)化,它們具有一般化的通用體系結(jié)構(gòu)和指令集,以求支持復(fù)雜的運算并易于添加新開發(fā)的功能。一般而言,在嵌入式微控制器(MCU)和微處理器(MPU)中會包含一個通用處理器核。

MPU通常代表一個CPU(中央處理器),而MCU則強(qiáng)調(diào)把中央處理器、存儲器和外圍電路集成在一個芯片中。早期,微控制器被稱為單片機(jī),指把計算機(jī)集成在一個芯片內(nèi)。嵌入式微控制器也常被稱作片上系統(tǒng)(SoC),含義是在一個芯片上設(shè)計了整個系統(tǒng)。芯片廠商在推出 MCU時,往往會有明確的市場定位,如定位于PDA、MP3、ADSL等。定位不同的產(chǎn)品可能包含共同的CPU核,但是集成的擴(kuò)展電路則不一樣。圖2.1所示給出了一個典型的集成了外圍電路的MCU的結(jié)構(gòu)。

圖2.1 典型的MCU內(nèi)部結(jié)構(gòu)

舉個例子,Intel的80386屬于微處理器,而內(nèi)部集成了80386處理器、片選單元、中斷控制、定時器、看門狗定時器、串行I/O、DMA和總線仲裁、DRAM控制器等的386EX則是80386微處理器的微控制器版本。但是,要說明的是,GPP、MCU和MPU等概念其實非常含糊,許多地方并不加以區(qū)分,而明確區(qū)分這些概念在技術(shù)上本身也沒有太大的意義。

嵌入式微控制器一般由一個CPU核和多個外圍電路集成,目前主流的嵌入式CPU核有如下幾種。

● Advanced RISC Machines公司的ARM。

ARM內(nèi)核的設(shè)計技術(shù)被授權(quán)給數(shù)百家半導(dǎo)體廠商,做成不同的SoC芯片。ARM的功耗很低,在當(dāng)今最活躍的無線局域網(wǎng)、3G、手機(jī)終端、手持設(shè)備、有線網(wǎng)絡(luò)通信設(shè)備等中應(yīng)用非常廣泛。本書所基于的LDD6410開發(fā)板上采用的就是S3C6410這個ARM SoC芯片。

● MIPS技術(shù)公司的MIPS。

兩個最重要的MIPS芯片廠商為PMC和IDT,PMC-Sierra公司的MIPS處理器被CISCO公司大量采用在高端路由器上。IDT公司在MIPS核上集成PCI接口,廣泛用于以太網(wǎng)交換,另外也嘗試增加了HDLC、Ethernet、串口、SDRAM控制器、片選、DMA控制器等外設(shè)接口,以用于低端通信產(chǎn)品。

● IBM和Motorola的PowerPC。

PowerPC處理器是通信和工控領(lǐng)域應(yīng)用最廣泛的處理器,國內(nèi)包括華為、中興在內(nèi)的通信公司都大量使用PowerPC,MPC860和MPC8260是其最經(jīng)典的兩款。

● Motorola公司獨有的內(nèi)核68K/COLDFIRE。

68K內(nèi)核是最早在嵌入式領(lǐng)域廣泛應(yīng)用的內(nèi)核,其最著名的代表芯片是68360。Coldfire則繼承了68K的特點并對其保持了兼容。Coldfire內(nèi)核被用于DSP模塊、CAN總線模塊以及一般嵌入式處理器所集成的外設(shè)模塊,在工業(yè)控制、機(jī)器人研究、家電控制等領(lǐng)域被廣泛采用。

Motorola的半導(dǎo)體部已經(jīng)獨立為飛思卡爾半導(dǎo)體公司(Freescale Semiconductor Inc.),因為歷史原因,上文仍然使用Motorola。

中央處理器的體系架構(gòu)可以分為兩類,一類為馮·諾伊曼結(jié)構(gòu),一類為哈佛結(jié)構(gòu)。

馮·諾伊曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu),是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲器結(jié)構(gòu)。程序指令存儲地址和數(shù)據(jù)存儲地址指向同一個存儲器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同。而哈佛結(jié)構(gòu)將程序指令和數(shù)據(jù)分開存儲,指令和數(shù)據(jù)可以有不同的數(shù)據(jù)寬度。此外,哈佛結(jié)構(gòu)還采用了獨立的程序總線和數(shù)據(jù)總線,分別作為CPU與每個存儲器之間的專用通信路徑,具有較高的執(zhí)行效率。圖2.2描述了馮·諾伊曼結(jié)構(gòu)和哈佛結(jié)構(gòu)的區(qū)別。

圖2.2 馮·諾伊曼結(jié)構(gòu)與哈佛結(jié)構(gòu)

從指令集的角度來講,中央處理器也可以分為兩類,即RISC(精簡指令集計算機(jī))和CISC (復(fù)雜指令集計算機(jī))。CSIC強(qiáng)調(diào)增強(qiáng)指令的能力、減少目標(biāo)代碼的數(shù)量,但是指令復(fù)雜,指令周期長;而RISC強(qiáng)調(diào)盡可能減少指令集、指令單周期執(zhí)行,但是目標(biāo)代碼會更大。ARM、MIPS、PowerPC等CPU內(nèi)核都采用了RISC指令集。目前,RISC和CSIC二者的融合非常明顯。

2.1.2 數(shù)字信號處理器

數(shù)字信號處理器(DSP)針對通信、圖像、語音和視頻處理等領(lǐng)域的算法而設(shè)計。它包含獨立的硬件乘法器。DSP 的乘法指令一般在單周期內(nèi)完成,且優(yōu)化了卷積、數(shù)字濾波、FFT(快速傅立葉變換)、相關(guān)、矩陣運算等算法中的大量重復(fù)乘法。

DSP一般采用如圖2.3所示的改進(jìn)的哈佛架構(gòu),它具有獨立的地址總線和數(shù)據(jù)總線,兩條總線由程序存儲器和數(shù)據(jù)存儲器分時共用。

圖2.3 改進(jìn)的哈佛結(jié)構(gòu)

DSP分為兩類,一類是定點DSP,一類是浮點DSP。浮點DSP的浮點運算用硬件來實現(xiàn),可以在單周期內(nèi)完成,因而其浮點運算處理速度高于定點 DSP。而定點 DSP 只能用定點運算模擬浮點運算。

德州儀器(TI)、美國模擬器件公司(ADI)是全球DSP的兩大主要廠商。

TI的TMS320?DSP平臺包含了功能不同的多個系列如2000系列、3000系列、4000系列、5000系列、6000系列,工程師也習(xí)慣稱其為2X、3X、4X、5X、6X。2010年5月,TI已經(jīng)宣布為其 C64x 系列數(shù)字信號處理器與多核片上系統(tǒng)提供 Linux 內(nèi)核支持,以充分滿足通信與關(guān)鍵任務(wù)基礎(chǔ)設(shè)施、醫(yī)療診斷以及高性能測量測試等應(yīng)用需求。TI 對 C64x Linux 內(nèi)核的產(chǎn)品支持TMS320C6474、TMS320C6455和TMS320C6457,將于2010年第3季度開始提供。

ADI主要有16位定點的21xx系列、32位浮點的SHARC系列、從SHARC系列發(fā)展而來的TigerSHARC系列及高性能16位DSP信號處理能力與通用微控制器方便性相結(jié)合的blackfin系列等。ADI的blackfin不含MMU,完整支持Linux,是MMU-less情況下Linux的典型案例,其官方網(wǎng)站為http://blackfin.uclinux.org/gf/,目前blackfin的Linux開發(fā)保持了Linux mainline的同步。

通用處理器和數(shù)字信號處理器也有相互融合以取長補(bǔ)短的趨勢,如數(shù)字信號控制器(DSC)即為MCU+DSP,ADI的blackfin系列就屬于DSC。目前,芯片廠商也推出了許多ARM+DSP的雙核以及多核的處理器,如TI公司的OMAP4平臺就包括4個主要處理引擎:ARM Cortex-A9 MPCore、PowerVR SGX 540 GPU(Graphic Processing Unit)、C64x DSP 和ISP(Image Signal Processor)。

除了上面講述的通用微控制器和數(shù)字信號處理器外,還有一些針對特定領(lǐng)域而設(shè)計的專用處理器(ASP),它們都是針對一些特定應(yīng)用而設(shè)計的,如用于HDTV、ADSL、Cable Modem等的專用處理器。

網(wǎng)絡(luò)處理器是一種可編程器件,它應(yīng)用于電信領(lǐng)域的各種任務(wù),如包處理、協(xié)議分析、路由查找、聲音/數(shù)據(jù)的匯聚、防火墻、QoS等。網(wǎng)絡(luò)處理器器件內(nèi)部通常由若干個微碼處理器和若干硬件協(xié)處理器組成,多個微碼處理器在網(wǎng)絡(luò)處理器內(nèi)部并行處理,通過預(yù)先編制的微碼來控制處理流程。而對于一些復(fù)雜的標(biāo)準(zhǔn)操作(如內(nèi)存操作、路由表查找算法、QoS的擁塞控制算法、流量調(diào)度算法等)則采用硬件協(xié)處理器來進(jìn)一步提高處理性能,從而實現(xiàn)了業(yè)務(wù)靈活性和高性能的有機(jī)結(jié)合。

對于某些應(yīng)用場合,使用ASIC(專用集成電路)往往是低成本且高性能的方案。ASIC專門針對特定應(yīng)用而設(shè)計,不具備也不需要靈活的編程能力。使用 ASIC 完成同樣的功能往往比直接使用CPU資源或CPLD(復(fù)雜可編程邏輯器件)/FPGA(現(xiàn)場可編程門陣列)來得更廉價且高效。

在實際項目的硬件方案中,往往會根據(jù)應(yīng)用的需求選擇通用處理器、數(shù)字信號處理器、特定領(lǐng)域處理器、CPLD/FPGA或ASIC之一的解決方案,在復(fù)雜的系統(tǒng)中,這些芯片可能會同時存在,協(xié)同合作,各自發(fā)揮自己的長處。如在一款智能手機(jī)中,可使用 MCU 處理圖形用戶界面和用戶的按鍵輸入并運行多任務(wù)操作系統(tǒng),使用DSP進(jìn)行音視頻編解碼,而在射頻方面則采用ASIC。

綜合2.1節(jié)的內(nèi)容,我們可得出如圖2.4所示的處理器分類。

圖2.4 處理器分類

2.2 存儲器

存儲器主要可分類為只讀儲存器(ROM)、閃存(Flash)、隨機(jī)存取存儲器(RAM)、光、磁介質(zhì)儲存器。

ROM還可再細(xì)分為不可編程ROM、可編程ROM(PROM)、可擦除可編程ROM(EPROM)和電可擦除可編程ROM(EEPROM),EEPROM完全可以用軟件來擦寫,已經(jīng)非常方便了。

目前ROM有被Flash替代的趨勢,NOR(或非)和NAND(與非)是市場上兩種主要的Flash閃存技術(shù)。Intel于1988年首先開發(fā)出NOR Flash技術(shù),徹底改變了原先由EPROM和EEPROM一統(tǒng)天下的局面。緊接著,1989年,東芝公司發(fā)表了NAND Flash結(jié)構(gòu),每比特的成本被大大降低。

NOR Flash和CPU的接口屬于典型的類SRAM接口(如圖2.5所示),不需要增加額外的控制電路。NOR Flash的特點是可芯片內(nèi)執(zhí)行(XIP,eXecute In Place),程序可以直接在NOR內(nèi)運行。而NAND Flash和CPU的接口必須由相應(yīng)的控制電路進(jìn)行轉(zhuǎn)換,當(dāng)然也可以通過地址線或GPIO產(chǎn)生NAND Flash接口的信號。NAND FLASH以塊方式進(jìn)行訪問,不支持芯片內(nèi)執(zhí)行。

圖2.5 典型的類SRAM接口

公共閃存接口(Common Flash Interface,簡稱CFI)是一個公開的、標(biāo)準(zhǔn)的從NOR Flash器件中讀取數(shù)據(jù)的接口。它可以使系統(tǒng)軟件查詢已安裝的Flash 器件的各種參數(shù),包括器件陣列結(jié)構(gòu)參數(shù)、電氣和時間參數(shù)以及器件支持的功能等。利用 CFI,在不修改系統(tǒng)軟件的情況下,就可以用新型的和改進(jìn)的產(chǎn)品代替舊版本的產(chǎn)品。

一個NAND Flash的接口主要包含如下信號。

● I/O總線:地址、指令和數(shù)據(jù)通過這組總線傳輸,一般為8位或16位。

● 芯片啟動(Chip Enable,CE#):如果沒有檢測到CE信號,那么,NAND器件就保持待機(jī)模式,不對任何控制信號做出響應(yīng)。

● 寫使能(Write Enable,WE#):WE#負(fù)責(zé)將數(shù)據(jù)、地址或指令寫入NAND之中。

● 讀使能(Read Enable,RE#):RE#允許數(shù)據(jù)輸出。

● 指令鎖存使能(Command Latch Enable,CLE):當(dāng)CLE為高時,在WE#信號的上升沿,指令將被鎖存到NAND指令寄存器中。

● 地址鎖存使能(Address Latch Enable,ALE):當(dāng)ALE為高時,在WE#信號的上升沿,地址將被鎖存到NAND地址寄存器中。

● 就緒/忙(Ready/Busy,R/B#):如果NAND器件忙,R/B#信號將變低。該信號是漏極開路,需要采用上拉電阻。

NAND Flash較NOR Flash容量大,價格低;NAND Flash中每個塊的最大擦寫次數(shù)是一百萬次,而NOR的擦寫次數(shù)是十萬次;NAND Flash的擦除、編程速度遠(yuǎn)超過NOR Flash。

由于Flash固有的電器特性,在讀寫數(shù)據(jù)過程中,偶然會產(chǎn)生1位或幾位數(shù)據(jù)錯誤,即位反轉(zhuǎn),NAND Flash發(fā)生位反轉(zhuǎn)的幾率要遠(yuǎn)大于NOR Flash。位反轉(zhuǎn)無法避免,因此,使用NAND Flash的同時,應(yīng)采用錯誤探測/錯誤更正(EDC/ECC)算法。

Flash的編程原理都是只能將1寫為0,而不能將0寫為1。所以在Flash編程之前,必須將對應(yīng)的塊擦除,而擦除的過程就是把所有位都寫為1的過程,塊內(nèi)的所有字節(jié)變?yōu)?xFF。

許多嵌入式系統(tǒng)都提供了IDE(Integrated Drive Electronics)接口,以供連接硬盤控制器或光驅(qū),IDE 接口的信號與 SRAM 類似。人們通常也把 IDE 接口稱為 ATA(Advanced Technology Attachment)接口,技術(shù)角度而言并不準(zhǔn)確。其實,ATA接口發(fā)展至今,已經(jīng)經(jīng)歷了ATA-1(IDE)、ATA-2(EIDE Enhanced IDE/Fast ATA)、ATA-3(FastATA-2)、Ultra ATA、Ultra ATA/33、Ultra ATA/66、Ultra ATA/100及Serial ATA的發(fā)展過程。

以上所述的各種ROM、Flash和磁介質(zhì)存儲器都屬于非易失性存儲器(NVM)的范疇,掉電信息不會丟失,而RAM則與此相反。

RAM也可再分為靜態(tài)RAM(SRAM)和動態(tài)RAM(DRAM)。DRAM以電荷形式進(jìn)行存儲,數(shù)據(jù)存儲在電容器中。由于電容器會由于漏電而導(dǎo)致電荷丟失,因而DRAM器件需要定期被刷新。SRAM是靜態(tài)的,只要供電它就會保持一個值,SRAM沒有刷新周期。每個SRAM存儲單元由6個晶體管組成,而DRAM存儲單元由1個晶體管和1個電容器組成。

通常所說的SDRAM、DDR SDRAM皆屬于DRAM的范疇,它們采用與CPU外存控制器同步的時鐘工作(注意不是與CPU的工作頻率一致)。與SDRAM相比,DDR SDRAM同時利用了時鐘脈沖的上升沿和下降沿傳輸數(shù)據(jù),因此在時鐘頻率不變的情況下,數(shù)據(jù)傳輸頻率被加倍。此外,還存在使用RSL(Rambus發(fā)信電平)技術(shù)的RDRAM(Rambus DRAM)和Direct RDRAM。

針對許多特定場合的應(yīng)用,嵌入式系統(tǒng)中往往還使用了一些特定類型的RAM。

1.NVRAM:非易失性RAM

既然是RAM,就是易失性的,為什么會有一類非易失性的RAM呢?

實際上,NVRAM借助帶有備用電源的SRAM或借助NVM(如EEPROM)存儲SRAM的信息并恢復(fù)來實現(xiàn)。NVRAM的特點是完全像 SRAM一樣讀寫,而且寫入的信息掉電不丟失,不需要 EEPROM和Flash 的特定擦除和編程操作。NVRAM 多用于存放系統(tǒng)中的參數(shù)信息。

2.DPRAM:雙端口RAM

DPRAM的特點是可以通過2個端口同時訪問,具有2套完全獨立的數(shù)據(jù)總線、地址總線線和讀寫控制線,通常用于2個處理器之間交互數(shù)據(jù),如圖2.6所示。當(dāng)一端被寫入數(shù)據(jù)后,另一端可以通過輪詢或中斷獲知,并讀取其寫入的數(shù)據(jù)。由于雙CPU同時訪問DPRAM時的仲裁邏輯電路集成在DPRAM內(nèi)部,因而硬件工程師設(shè)計電路的原理比較簡單。

圖2.6 雙端口RAM

DPRAM的優(yōu)點是通信速度快、實時性強(qiáng)、接口簡單,而且兩邊CPU都可主動進(jìn)行數(shù)據(jù)傳輸。除了雙端口RAM以外,目前IDT等芯片廠商還推出了多端口RAM,可以供3個以上的CPU互通數(shù)據(jù)。

3.CAM:內(nèi)容尋址RAM

CAM是以內(nèi)容進(jìn)行尋址的存儲器,是一種特殊的存儲陣列RAM,它的主要工作機(jī)制就是將一個輸入數(shù)據(jù)項與存儲在CAM中的所有數(shù)據(jù)項自動同時進(jìn)行比較,判別該輸入數(shù)據(jù)項與CAM中存儲的數(shù)據(jù)項是否相匹配,并輸出該數(shù)據(jù)項對應(yīng)的匹配信息。

如圖2.7所示,在 CAM 中,輸入的是所要查詢的數(shù)據(jù),輸出的是數(shù)據(jù)地址和匹配標(biāo)志。若匹配(即搜尋到數(shù)據(jù)),則輸出數(shù)據(jù)地址。CAM用于數(shù)據(jù)檢索的優(yōu)勢是軟件無法比擬的,可以極大地提高系統(tǒng)性能。

圖2.7 CAM的輸入與輸出

● FIFO:先進(jìn)先出隊列

FIFO存儲器的特點是先進(jìn)先出,進(jìn)出有序,F(xiàn)IFO多用于數(shù)據(jù)緩沖。FIFO和DPRAM類似,具有兩個訪問端口,但是 FIFO 兩邊的端口并不對等,某一時刻只能被設(shè)置為一邊作為輸入,一邊作為輸出。

如果FIFO的區(qū)域共為n個字節(jié),我們只能通過循環(huán)n次讀取同一個地址才能將該片區(qū)域讀出,不能指定偏移地址。對于有n個數(shù)據(jù)的FIFO,當(dāng)循環(huán)讀取m次,下一次讀會自動讀取到第m +1個數(shù)據(jù),這是由FIFO本身的特性決定的。

總結(jié)2.2節(jié)的內(nèi)容,我們可得出如圖2.8所示的存儲器分類。

圖2.8 存儲器分類

2.3 接口與總線

2.3.1 串口

RS-232、RS-422與 RS-485 都是串行數(shù)據(jù)接口標(biāo)準(zhǔn),最初都是由電子工業(yè)協(xié)會(EIA)制訂并發(fā)布的。

RS-232在1962年發(fā)布,命名為EIA-232-E。之后發(fā)布的RS-422定義了一種平衡通信接口,它是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡傳輸規(guī)范,被命名為TIA/EIA-422-A標(biāo)準(zhǔn)。RS-422改進(jìn)了RS-232通信距離短、速率低的缺點。為進(jìn)一步擴(kuò)展應(yīng)用范圍,EIA 又于1983 年在 RS-422的基礎(chǔ)上制定了RS-485標(biāo)準(zhǔn),增加了多點、雙向通信能力,即允許多個發(fā)送器連接到同一條總線上,同時增加了發(fā)送器的驅(qū)動能力和沖突保護(hù)特性,并擴(kuò)展了總線共模范圍,被命名為TIA/EIA-485-A標(biāo)準(zhǔn)。

1969年發(fā)布的RS-232修改版RS-232C是嵌入式系統(tǒng)應(yīng)用最廣泛的串行接口,它為連接DTE (數(shù)據(jù)終端設(shè)備)與DCE(數(shù)據(jù)通信設(shè)備)而制定。RS-232C規(guī)標(biāo)準(zhǔn)接口有25條線(4條數(shù)據(jù)線、11條控制線、3條定時線、7條備用和未定義線),常用的只有9根,它們是RTS/CTS(請求發(fā)送/清除發(fā)送流控制)、RxD/TxD(數(shù)據(jù)收發(fā))、DSR/DTR(數(shù)據(jù)終端就緒/數(shù)據(jù)設(shè)置就緒流控制)、DCD (數(shù)據(jù)載波檢測,也稱RLSD,即接收線信號檢出)、Ringing-RI(振鈴指示)、SG(信號地)信號。RTS/CTS、TxD/RxD、DRS/DTR等信號的定義如下。

● RTS:用來表示DTE請求DCE發(fā)送數(shù)據(jù),當(dāng)終端要發(fā)送數(shù)據(jù)時,使該信號有效。

● CTS:用來表示DCE準(zhǔn)備好接收DTE發(fā)來的數(shù)據(jù),是對RTS的響應(yīng)信號。

● TxD:DTE通過TxD將串行數(shù)據(jù)發(fā)送到DCE。

● RxD:DTE通過RxD接收從DCE發(fā)來的串行數(shù)據(jù)。

● DSR:有效(ON狀態(tài))表明DCE可以使用。

● DTR:有效(ON狀態(tài))表明DTE可以使用。

● DCD:當(dāng)本地DCE設(shè)備收到對方DCE設(shè)備送來的載波信號時,使DCD有效,通知DTE準(zhǔn)備接收,并且由DCE將接收到的載波信號解調(diào)為數(shù)字信號,經(jīng)RXD線送給DTE。

● Ringing-RI:當(dāng)MODEM收到交換臺送來的振鈴呼叫信號時,使該信號有效(ON狀態(tài)),通知終端,已被呼叫。

在嵌入式系統(tǒng)中,并不太注重DTE和DCE的概念,而RS-232C也很少用來連接modem,多使用RS-232C進(jìn)行對等通信,如Windows超級終端、Linux minicom用來連接電路板控制臺等。最簡單的RS-232C串口只需要連接RxD、TxD、SG這3個信號,使用XON/XOFF軟件流控。

組成一個RS-232C串口的硬件原理如圖2.9所示,從CPU到連接器依次為:CPU、UART(通用異步接收器發(fā)送器,作用是完成并/串轉(zhuǎn)換)、CMOS/TTL電平與RS-232C電平轉(zhuǎn)換、DB9/DB25或自定義連接器。

圖2.9 RS-232C串口電路原理

2.3.2 I2C

I2C(內(nèi)置集成電路)總線是由Philips公司開發(fā)的兩線式串行總線,產(chǎn)生于20世紀(jì)80年代,用于連接微控制器及其外圍設(shè)備。I2C總線簡單而有效,占用很少的PCB(印刷電路板)空間,芯片管腳數(shù)量少,設(shè)計成本低。I2C總線支持多主控(multi-mastering)模式,任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主設(shè)備。主控能夠控制數(shù)據(jù)的傳輸和時鐘頻率,在任意時刻只能有一個主控。

組成I2C總線的兩個信號為數(shù)據(jù)線SDA和時鐘SCL。為了避免總線信號的混亂,要求各設(shè)備連接到總線的輸出端必須是開漏輸出或集電極開路輸出的結(jié)構(gòu)。總線空閑時,上拉電阻使 SDA和SCL線都保持高電平。根據(jù)開漏輸出或集電極開路輸出信號的“線與”邏輯,I2C總線上任意器件輸出低電平都會使相應(yīng)總線上的信號線變低。

“線與”邏輯指的是兩個或兩個以上的輸出直接互連就可以實現(xiàn)“AND”的邏輯功能,只有輸出端是開漏(對于CMOS器件)輸出或集電極開路(對于TTL器件)輸出時才滿足此條件。工程師一般以“OC門”簡稱開漏或集電極開路。

I2C設(shè)備上的串行數(shù)據(jù)線SDA接口電路是雙向的,輸出電路用于向總線上發(fā)送數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。同樣地,串行時鐘線SCL也是雙向的,作為控制總線數(shù)據(jù)傳送的主機(jī)要通過SCL輸出電路發(fā)送時鐘信號,并檢測總線上SCL上的電平以決定什么時候發(fā)下一個時鐘脈沖電平;作為接收主機(jī)命令的從設(shè)備需按總線上SCL的信號發(fā)送或接收SDA上的信號,它也可以向SCL線發(fā)出低電平信號以延長總線時鐘信號周期。

當(dāng) SCL 穩(wěn)定在高電平時,SDA 由高到低的變化將產(chǎn)生一個開始位,而由低到高的變化則產(chǎn)生一個停止位,如圖2.10所示。

圖2.10 I2C總線開始位和停止位

開始位和停止位都由I2C主設(shè)備產(chǎn)生。在選擇從設(shè)備時,如果從設(shè)備采用7位地址,則主設(shè)備在發(fā)起傳輸過程前,需先發(fā)送1字節(jié)的地址信息,前7位為設(shè)備地址,最后1位為讀寫標(biāo)志。之后,每次傳輸?shù)臄?shù)據(jù)也是1個字節(jié),從MSB位開始傳輸。每個字節(jié)傳完后,在SCL的第9個上升沿到來之前,接收方應(yīng)該發(fā)出1個ACK位。SCL上的時鐘脈沖由I2C主控方發(fā)出,在第8個時鐘周期之后,主控方應(yīng)該釋放SDA,I2C總線的時序如圖2.11所示。

圖2.11 I2C總線時序

2.3.3 USB

USB(通用串行總線)是Intel、Microsoft等廠商為解決計算機(jī)外設(shè)種類的日益增加與有限的主板插槽和端口之間的矛盾而于1995年提出的,它具有數(shù)據(jù)傳輸率高、易擴(kuò)展、支持即插即用和熱插拔的優(yōu)點,目前已得到廣泛應(yīng)用?

USB1.1包含全速和低速兩種模式,低速方式的速率為1.5Mbit/s,支持一些不需要很大數(shù)據(jù)吞吐量和很高實時性的設(shè)備,如鼠標(biāo)等。全速模式為12Mbit/s,可以外接速率更高的外設(shè)?在USB2.0中,增加了一種高速方式,數(shù)據(jù)傳輸率達(dá)到480Mbit/s,可以滿足更高速外設(shè)的需要?

USB的物理拓?fù)浣Y(jié)構(gòu)如圖2.12所示,在USB2.0中,高速方式下Hub使全速和低速方式的信令環(huán)境獨立出來,圖2.13所示高速方式下Hub的作用?

圖2.12 USB的物理拓?fù)?/p>

圖2.13 USB 2.0連接高速、全/低速設(shè)備

在嵌入式系統(tǒng)中,電路板若需要掛接USB設(shè)備(device),則需提供USB主機(jī)(host)控制器和連接器;若電路板需要作為USB設(shè)備,則需提供USB設(shè)備適配器和連接器。有的MCU集成了USB主機(jī)控制器和設(shè)備適配器。

USB 總線的機(jī)械連接非常簡單,采用4 芯的屏蔽線,一對差分線(D+,D-)傳送信號,另一對(VBUS,電源地)傳送+5V的直流電。一個USB主控制器端口最多可連接127個器件,各器件之間的距離不超過5米?

USB提供了4種傳輸方式以適應(yīng)各種設(shè)備的需要,說明如下。

(1)控制(Control)傳輸方式。

控制傳輸是雙向傳輸,數(shù)據(jù)量通常較小,主要用來進(jìn)行查詢、配置和給USB設(shè)備發(fā)送通用的命令?

(2)同步(Synchronization)傳輸方式。

同步傳輸提供了確定的帶寬和間隔時間,它被用于時間嚴(yán)格并具有較強(qiáng)容錯性的流數(shù)據(jù)傳輸,或者用于要求恒定的數(shù)據(jù)傳送率的即時應(yīng)用。例如進(jìn)行語音業(yè)務(wù)傳輸時,使用同步傳輸方式是很好的選擇?

(3)中斷(Interrupt)傳輸方式。

中斷方式傳送是單向的,對于USB主機(jī)而言,只有輸入。中斷傳輸方式主要用于定時查詢設(shè)備是否有中斷數(shù)據(jù)要傳送,該傳輸方式應(yīng)用在少量的、分散的、不可預(yù)測的數(shù)據(jù)傳輸場合,鍵盤、游戲桿和鼠標(biāo)屬于這一類型?

(4)批量(Bulk)傳輸方式。

批量傳輸主要應(yīng)用在沒有帶寬和間隔時間要求的批量數(shù)據(jù)的傳送和接收,它要求保證傳輸?打印機(jī)和掃描儀屬于這種類型?

2.3.4 以太網(wǎng)接口

以太網(wǎng)接口由MAC(以太網(wǎng)媒體接入控制器)和PHY(物理接口收發(fā)器)組成。以太網(wǎng)MAC由IEEE-802.3以太網(wǎng)標(biāo)準(zhǔn)定義,實現(xiàn)了數(shù)據(jù)鏈路層。常用的MAC支持10Mbit/s或100Mbit/s兩種速率。PHY則實現(xiàn)物理層功能,IEEE-802.3標(biāo)準(zhǔn)定義了以太網(wǎng)PHY,它符合IEEE-802.3k中用于10BaseT(第14條)和100BaseTX(第24條和第25條)的規(guī)范。10BaseT和100BaseTX PHY兩種實現(xiàn)的幀格式是一樣的,但信令機(jī)制不同,而且10BaseT采用曼徹斯特編碼,100BaseTX采用4B/5B編碼。

MAC和PHY之間采用MII(媒體獨立接口)連接,它是IEEE-802.3定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn),包括1個數(shù)據(jù)接口和1個MAC和PHY之間的管理接口。數(shù)據(jù)接口包括分別用于發(fā)送和接收的兩條獨立信道,每條信道都有自己的數(shù)據(jù)、時鐘和控制信號,MII數(shù)據(jù)接口總共需要16個信號。MII管理接口包含兩個信號,一個是時鐘信號,另一個是數(shù)據(jù)信號。通過管理接口,上層能監(jiān)視和控制PHY。

組成一個以太網(wǎng)接口的硬件原理如圖2.14所示,從CPU到最終接口依次為:CPU、MAC、PHY、以太網(wǎng)隔離變壓器、RJ45插座。以太網(wǎng)隔離變壓器是以太網(wǎng)收發(fā)芯片與連接器之間的磁性組件,在其兩者之間起著信號傳輸、阻抗匹配、波形修復(fù)、信號雜波抑制和高電壓隔離作用。

圖2.14 以太網(wǎng)接口電路原理

許多處理器內(nèi)部集成了MAC或同時集成了MAC和PHY,另有許多以太網(wǎng)控制芯片也集成了MAC和PHY。

2.3.5 ISA

ISA(工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)總線)總線起源于1981年IBM生產(chǎn)的以Intel 8088為CPU的IBM-PC微計算機(jī),開始時總線寬度為8位。1984年推出的IBM-PC/AT系統(tǒng)將ISA總線擴(kuò)充為16位數(shù)據(jù)總線寬度,同時地址總線寬度也由20 位擴(kuò)充到了24位。其后推出的EISA(擴(kuò)展的ISA)采用32位地址線,數(shù)據(jù)總線也擴(kuò)展為32位,但仍保持了與ISA的兼容。

圖2.15所示為ISA總線的信號,這些信號可分為3組。

● 總線基本信號:ISA總線工作所需要的最基本信號,含復(fù)位、時鐘、電源、地等。

● 總線訪問信號:用于訪問ISA總線設(shè)備的地址線、數(shù)據(jù)線以及相應(yīng)的應(yīng)答信號。

● 總線控制信號:中斷和DMA請求。

圖2.15 ISA總線信號

圖2.15中各信號的詳細(xì)定義如下。

● RESET、BCLK:復(fù)位及總線基本時鐘,BLCK為8MHz。

● SA19~SA0:存儲器及I/O空間20位地址,帶鎖存。

● LA23~LA17:存儲器及I/O空間20位地址,不帶鎖存。

● BALE:總線地址鎖存,外部鎖存器的選通。

● AEN:地址允許,表明CPU讓出總線,DMA開始。

● SMEMR#、SMEMW#:8位ISA存儲器讀寫控制。

● MEMR#、MEMW#:16位ISA存儲器讀寫控制。

● SD15~SD0:數(shù)據(jù)總線,訪問8位ISA卡時高8位自動傳送到SD7~SD0。

● SBHE#:高字節(jié)允許,打開SD15~SD8數(shù)據(jù)通路。

● MEMCS16#、IOCS16#:ISA卡發(fā)出此信號確認(rèn)可以進(jìn)行16位傳送。

● I/OCHRDY:ISA卡準(zhǔn)備信號,可控制插入等待周期。

● NOWS#:有效則暗示不用插入等待周期。

● I/OCHCK#:ISA卡奇偶校驗錯。

● IRQ15、IRQ14、IRQ12~I(xiàn)RQ9、IRQ7~I(xiàn)RQ3:中斷請求。

● DRQ7~DRQ5、DRQ3~DRQ0:ISA卡DMA請求。

● DACK7#~DACK5#、DACK3#~DACK0#:DMA請求響應(yīng)。

● MASTER#:ISA主模塊確立信號,ISA發(fā)出此信號,與主機(jī)內(nèi)DMAC(DMA控制器)配合使ISA卡成為主模塊。

2.3.6 PCI和cPCI

PCI(外圍部件互連)是由Intel于1991年推出的一種局部總線,作為一種通用的總線接口標(biāo)準(zhǔn),它在目前的計算機(jī)系統(tǒng)中得到了非常廣泛的應(yīng)用。PCI 提供了一組完整的總線接口規(guī)范,其目的是描述如何將計算機(jī)系統(tǒng)中的外圍設(shè)備以一種結(jié)構(gòu)化和可控化的方式連接在一起,給出了外圍設(shè)備在連接時的電氣特性和行為規(guī)約,并且詳細(xì)定義了計算機(jī)系統(tǒng)中的各個不同部件之間應(yīng)該如何正確地進(jìn)行交互。PCI總線具有如下特點。

● 數(shù)據(jù)總線32位,可擴(kuò)充到64位。

● 可進(jìn)行突發(fā)(burst)模式傳輸。

突發(fā)方式傳輸是指取得總線控制權(quán)后連續(xù)進(jìn)行多個數(shù)據(jù)的傳輸。突發(fā)傳輸時,只需要給出目的地的首地址,訪問第1個數(shù)據(jù)后,第2~n個數(shù)據(jù)會在首地址基礎(chǔ)上按一定規(guī)則自動被尋址和傳輸。與突發(fā)方式對應(yīng)的是單周期方式,它在1個總線周期只傳送1個數(shù)據(jù)。

● 總線操作與處理器-存儲器子系統(tǒng)操作并行。

● 總線時鐘頻率為33MHz或66MHz,最高傳輸率可達(dá)528MB/s。

● 采用中央集中式總線仲裁。

● 支持全自動配置、資源分配,PCI 卡內(nèi)有設(shè)備信息寄存器組為系統(tǒng)提供卡的信息,可實現(xiàn)即插即用。

● PCI總線規(guī)范獨立于微處理器,通用性好。

● PCI設(shè)備可以完全作為主控設(shè)備控制總線。

圖2.16給出了一個典型的基于PCI總線的計算機(jī)系統(tǒng)邏輯示意圖,系統(tǒng)的各個部分通過PCI總線和PCI-PCI橋連接在一起。CPU和RAM通過PCI橋連接到PCI總線0(即主PCI總線),而具有PCI接口的顯卡則可以直接連接到主PCI總線上。PCI-PCI橋是一個特殊的PCI設(shè)備,它負(fù)責(zé)將PCI總線0和PCI總線1(即從PCI主線)連接在一起,通常PCI總線1稱為PCI-PCI橋的下游(downstream),而PCI總線0則稱為PCI-PCI橋的上游(upstream)。為了兼容舊的ISA總線標(biāo)準(zhǔn),PCI總線還可以通過PCI-ISA橋來連接ISA總線,從而支持以前的ISA設(shè)備。

圖2.16 基于PCI總線的計算機(jī)系統(tǒng)

當(dāng)PCI卡剛加電時,卡上只有配置空間是可被訪問的,因而PCI卡開始不能由驅(qū)動或用戶程序訪問,這與ISA卡有本質(zhì)的區(qū)別(CPU可直接讀取ISA卡在存儲空間或I/O空間映射的地址)。PCI 配置空間保存著該卡工作所需的所有信息,如廠家、卡功能、資源要求、處理能力、功能模塊數(shù)量、主控卡能力等。通過對這個空間信息的讀取與編程,可完成對 PCI 卡的配置。如圖2.17所示,PCI配置空間共為256字節(jié),主要包括如下信息。

● 制造商標(biāo)識(Vendor ID):由PCI組織分配給廠家。

● 設(shè)備標(biāo)識(Device ID):按產(chǎn)品分類給本卡的編號。

● 分類碼(Class Code):本卡功能的分類碼,如圖卡、顯示卡、解壓卡等。

● 申請存儲器空間:PCI 卡內(nèi)有存儲器或以存儲器編址的寄存器和 I/O 空間,為使驅(qū)動程序和應(yīng)用程序能訪問它們,需申請CPU的一段存儲區(qū)域以進(jìn)行定位。配置空間的基地址寄存器用于此目的。

● 申請I/O空間:配置空間的基地址寄存器也用來進(jìn)行系統(tǒng)I/O空間的申請。

● 中斷資源申請:配置空間中的中斷引腳和中斷線用來向系統(tǒng)申請中斷資源。中斷資源的申請通過中斷引腳(interrupt pin)和中斷線(interrupt line)來完成的。偏移3Dh處為中斷引腳寄存器,其值表明 PCI 設(shè)備使用了哪一個中斷引腳,對應(yīng)關(guān)系為:1-INTA#、2-INTB#、3-INTC#、4-INTD#。

PCI總線上的信號大體可分為如下幾組。

● 系統(tǒng)接口信號。

● 地址與數(shù)據(jù)接口信號。

● 接口控制信號。

● 仲裁信號。

● 錯誤報告信號。

● 中斷接口信號。

● 其他接口信號。

圖2.17 PCI配置空間

如圖2.18所示,這些信號的詳細(xì)定義如下。

● CLK:系統(tǒng)時鐘。

● AD31~AD0:地址和數(shù)據(jù)復(fù)用信號線信號。

● C/BE3~C/BE:總線命令和地址使能信號。

● PAR:奇偶校驗信號。

● FRAM E#:幀周期信號,指示總線操作起始和終止。

● IRDY#:主設(shè)備準(zhǔn)備好信號。

● TRDY#:目標(biāo)設(shè)備準(zhǔn)備好信號。

● STOP#:目標(biāo)設(shè)備要求終止當(dāng)前數(shù)據(jù)傳輸信號。

● DEVSEL #:目標(biāo)設(shè)備選中信號。

● IDSEL:配置空間讀寫時的片選信號。

● LOCK#:總線鎖定信號。

● RST#:復(fù)位信號。

● INTA#、INTB#、INTC#和INTD#:中斷請求。

● REQ#、GNT#:PCI總線請求與仲裁后的授權(quán)。

● AD63-AD32、C/BE7-4等:作用于64位擴(kuò)展的PCI總線。

圖2.18 PCI總線信號

cPCI(Compact PCI,緊湊型 PCI)是以 PCI 電氣規(guī)范為標(biāo)準(zhǔn)的高性能工業(yè)用總線,結(jié)合了VME(Visa Module Eurocard,維薩信用卡模塊歐洲卡)的高性能、可擴(kuò)展性和可靠性與PCI標(biāo)準(zhǔn)的經(jīng)濟(jì)有效和靈活性。cPCI的CPU及外設(shè)與標(biāo)準(zhǔn)PCI是相同的,使用與傳統(tǒng)PCI相同的芯片和軟件,操作系統(tǒng)、驅(qū)動和應(yīng)用程序都感覺不到兩者的區(qū)別。圖2.19展示了與cPCI總線相關(guān)的板卡、背板和機(jī)箱,基本上都是“大塊頭”,應(yīng)用于工業(yè)控制和大型通信設(shè)備。

圖2.19 cPCI板卡、背板與機(jī)箱

2.4 CPLD和FPGA

CPLD(復(fù)雜可編程邏輯器件)由完全可編程的與或門陣列以及宏單元構(gòu)成。

CPLD中基本邏輯單元是宏單元,宏單元由一些“與或”陣列加上觸發(fā)器構(gòu)成,其中“與或”陣列完成組合邏輯功能,觸發(fā)器完成時序邏輯。宏單元中與陣列的輸出稱為乘積項,其數(shù)量標(biāo)志了CPLD的容量。乘積項陣列實際上就是一個“與或”陣列,每一個交叉點都是一個可編程熔絲,如果導(dǎo)通就是實現(xiàn)“與”邏輯。在“與”陣列后一般還有一個“或”陣列,用以完成最小邏輯表達(dá)式中的“或”關(guān)系。圖2.20所示為非常典型的CPLD的單個宏單元的結(jié)構(gòu)。

圖2.20 典型的CPLD宏單元

圖2.21給出了一個典型CPLD的整體結(jié)構(gòu)。這個CPLD由LAB(邏輯陣列模塊,由多個宏單元組成)通過 PIA(可編程互連陣列)互連組成,而CPLD與外部的接口則由I/O控制模塊提供。

圖2.21 典型CPLD的結(jié)構(gòu)

圖中宏單元的輸出會經(jīng) I/O 控制塊送至I/O引腳,I/O控制塊控制每一個I/O引腳的工作模式,決定其為輸入、輸出還是雙向引腳,并決定其三態(tài)輸出的使能端控制。

與 CPLD 不同,F(xiàn)PGA(現(xiàn)場可編程門陣列)基于LUT(查找表)工藝。查找表本質(zhì)上是一片RAM,當(dāng)用戶通過原理圖或HDL(硬件描述語言)語言描述了一個邏輯電路以后, FPGA 開發(fā)軟件會自動計算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入 RAM。這樣,輸入一組信號進(jìn)行邏輯運算就等于輸入一個地址進(jìn)行查表輸出對應(yīng)地址的內(nèi)容。

圖2.22所示為一個典型的FPGA的內(nèi)部結(jié)構(gòu)。這個FPGA由IOC(輸入/輸出控制模塊)、EAB (嵌入式陣列塊)、LAB和FAST TRACK(快速通道互連)構(gòu)成。

圖2.22 典型FPGA的結(jié)構(gòu)

IOC是內(nèi)部信號到I/O引腳的接口,它位于FAST TRACK的行和列的末端,每個IOC包含一個雙向I/O緩沖器和一個既可做輸入寄存器也可做輸出寄存器的觸發(fā)器。

EAB(嵌入式存儲塊)是一種輸入輸出端帶有寄存器的非常靈活的RAM。EAB 不僅可以用作存儲器,也可以事先被寫入查表值來以用來構(gòu)成如乘法器、糾錯邏輯等電路。當(dāng)用于RAM時, EAB可配制成8位、4位、2位和1位長度的數(shù)據(jù)格式。

LAB主要用于邏輯電路設(shè)計,一個LAB包括多個LE(邏輯單元),每個LE包括組合邏輯及一個可編程觸發(fā)器。一系列LAB構(gòu)成的邏輯陣列用來實現(xiàn)普通邏輯功能,如計數(shù)器、加法器、狀態(tài)機(jī)等。

器件內(nèi)部信號的互連和器件引出端之間的信號互連由FAST TRACK連線提供,F(xiàn)AST TRACK遍布于整個FPGA器件,是一系列水平和垂直走向的連續(xù)式布線通道。

表2.1所示為一個4輸入LUT的實際邏輯電路與LUT實現(xiàn)方式的對應(yīng)關(guān)系。

表2.1 實際邏輯電路與查找表的實現(xiàn)

續(xù)表

CPLD和FPGA的主要廠商有Altera、Xilinx和Lattice等,采用專門的開發(fā)流程,在設(shè)計階段使用HDL語言(如VHDL、Verilog HDL)編程。它們可以實現(xiàn)許多復(fù)雜的功能,如實現(xiàn)UART、I2C等I/O控制芯片、通信算法、音視頻編解碼算法等,甚至還可以直接集成ARM等CPU核和外圍電路。

對于驅(qū)動工程師而言,我們只需要這樣看待 CPLD和FPGA:如果它完成的是特定的接口和控制功能,我們就直接把它當(dāng)成由很多邏輯門(與、非、或、D觸發(fā)器)組成的完成一系列時序邏輯和組合邏輯的ASIC;如果它完成的是CPU的功能,我們就直接把它當(dāng)成CPU。驅(qū)動工程師眼里的硬件比IC設(shè)計師要宏觀。

2.5 原理圖分析

2.5.1 原理圖分析的內(nèi)容

原理圖分析的含義是指通過閱讀電路板的原理圖獲得各種存儲器、外設(shè)所使用的硬件資源,主要包括存儲器和外設(shè)控制芯片所使用的片選、中斷和DMA資源。通過分析片選得出芯片的內(nèi)存、I/O基地址,通過分析中斷、DMA信號獲得芯片使用的中斷號和DMA 通道,并歸納出如表2.2所示的表格。

表2.2 存儲器、外設(shè)控制器資源占用表

上述表格對驅(qū)動開發(fā)的意義很重大,實際上,在大多數(shù)情況下,硬件工程師已經(jīng)給驅(qū)動工程師提供了這個表格。

2.5.2 原理圖的分析方法

原理圖的分析方法是以CPU為中心向存儲器和外設(shè)輻射,步驟如下。

(1)閱讀CPU部分,獲知CPU的哪些片選、中斷和集成的外設(shè)控制器被使用,列出這些元素a、b、c…。

CPU引腳比較多的時候,芯片可能會被分成幾個模塊單獨被畫在原理圖的不同頁上,這時候應(yīng)該把相應(yīng)的部分都分析到位。

(2)對第一步中列出的元素從原理圖中對應(yīng)的外設(shè)和存儲器電路中分析出實際的使用情況。

硬件原理圖中包含如下元素。

● 符號(symbol)。

symbol描述芯片的外圍引腳以及引腳的信號,對于復(fù)雜的芯片,可能被分割為幾個symbol。在symbol中,一般把屬于同一個信號群的引腳排列在一起。圖2.23所示為NOR Flash AM29LV160DB和NAND Flash K9F2G08的symbol。

圖2.23 原理圖中的symbol

● 網(wǎng)絡(luò)(net)。

描述芯片、接插件和分離元器件引腳之間的互連關(guān)系,每個網(wǎng)絡(luò)需要根據(jù)信號的定義賦予一個合適的名字,如果沒有給網(wǎng)絡(luò)取名字,EDA 軟件會自動添加一個默認(rèn)的網(wǎng)絡(luò)名。添加網(wǎng)絡(luò)后的AM29LV160DB如圖2.24所示。

圖2.24 原理圖中的net

● 描述

原理圖中會添加一些文字來輔助描述原理圖(類似源代碼中的注釋),如每頁頁腳會有該頁的功能描述,對重要的信號,在原理圖的相應(yīng)symbol和net也會附帶文字說明。圖2.25中給出了原理圖中描述的例子。

LDD6410 Evaluation Board Schematics

圖2.25 原理圖中的描述

2.6 硬件時序分析

2.6.1 時序分析的概念

驅(qū)動工程師一般不需要分析硬件的時序,但是鑒于許多企業(yè)內(nèi)驅(qū)動工程師還需要承擔(dān)電路板調(diào)試的任務(wù),因此,掌握時序分析的方法也就比較必要了。

對驅(qū)動工程師或硬件工程師而言,時序分析的意思是讓芯片之間的訪問滿足芯片手冊中時序圖信號有效的先后順序、采樣建立時間(setup time)和保持時間(hold time)的要求,在電路板工作不正常的時候,準(zhǔn)確地定位時序方面的問題。

建立時間是指在觸發(fā)器的時鐘信號邊沿到來以前,數(shù)據(jù)已經(jīng)保持穩(wěn)定不變的時間,如果建立時間不夠,數(shù)據(jù)將不能在這個時鐘邊沿被打入觸發(fā)器;保持時間是指在觸發(fā)器的時鐘信號邊沿到來以后,數(shù)據(jù)還需穩(wěn)定不變的時間,如果保持時間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。如圖2.26所示,數(shù)據(jù)穩(wěn)定傳輸必須滿足建立和保持時間的要求,當(dāng)然在一些情況下,建立時間和保持時間的值可以為零。

圖2.26 建立時間和保持時間

在工具方面,SynaptiCAD公司的Timing Diagrammer Pro是一種非常好的數(shù)字/模擬時序圖編輯器及分析引擎。

2.6.2 典型硬件時序

最典型的硬件時序是SRAM的讀寫時序,在讀/寫過程中涉及的信號包括地址、數(shù)據(jù)、片選、讀/寫、字節(jié)使能和就緒/忙。對于一個16位、32位(甚至64位)的SRAM,字節(jié)使能表明哪些字節(jié)被讀寫。

圖2.27給出了 SRAM的一個讀時序,寫時序與此相似。首先是地址總線上輸出要讀寫的地址,然后SRAM片選被發(fā)出,接著讀/寫信號被輸出,之后讀寫信號要經(jīng)歷數(shù)個等待周期。當(dāng)SRAM讀寫速度比較慢時,等待周期可以由MCU的相應(yīng)寄存器設(shè)置,也可以通過設(shè)備就緒/忙(如圖2.27中的nWait)向CPU報告,這樣,讀寫過程中會自動添加等待周期。

圖2.27 SRAM讀時序圖

NOR Flash和許多外設(shè)控制芯片都使用了類似SRAM的訪問時序,因此,牢固掌握這個時序意義重大。一般,在芯片數(shù)據(jù)手冊給出的時序圖中,會給出圖中各段時間的含義和要求,真實的電路板必須滿足芯片手冊上描述的建立時間和保持時間的最小要求。

2.7 芯片手冊閱讀方法

芯片手冊往往長達(dá)數(shù)百頁甚至上千頁,而且全部是英文,從頭到尾不加區(qū)分地閱讀需要花費非常長的時間,而且不一定能獲取對設(shè)計設(shè)備驅(qū)動有幫助的信息。芯片手冊的正確閱讀方法是快速而準(zhǔn)確地定位有用信息,重點閱讀這些信息,忽略無關(guān)內(nèi)容。下面以 S3C6410A的datasheet為例來分析閱讀方法,為了直觀地反映閱讀過程,本節(jié)的圖都直接從手冊中抓屏而得。

打開S3C6410 A的datasheet,發(fā)現(xiàn)頁數(shù)為1378頁,閱讀這樣的數(shù)據(jù)手冊所花費的時間足夠完成整個驅(qū)動的設(shè)計工作了。

S3C6410A datasheet的第1章“PRODUCT OVERVIEW”即“產(chǎn)品綜述”是必讀的,通過閱讀這一部分可以獲知整個芯片的組成。這一章往往會給出一個芯片的整體結(jié)構(gòu)圖,并對芯片內(nèi)的主要模塊進(jìn)行一個簡潔的描述。如圖2.28所示,S3C6410A的整體結(jié)構(gòu)圖在第61頁出現(xiàn)。

圖2.28 S3C6410A datasheet中芯片結(jié)構(gòu)圖

第2~43章每一章都對應(yīng)S3C6410A整體結(jié)構(gòu)圖中的一個模塊,圖2.29為從Adobe Acrobat中直接抓出的S3C6410A datasheet目錄結(jié)構(gòu)圖。

圖2.29 S3C6410A datasheet目錄結(jié)構(gòu)

第2章“MemoryMap”即“內(nèi)存映射”比較關(guān)鍵,對于定位存儲器和外設(shè)所對應(yīng)的基地址有直接指導(dǎo)意義,這一部分應(yīng)該細(xì)看。

第3~34章對應(yīng)于CPU內(nèi)部集成的外設(shè)或總線控制器,當(dāng)具體編寫某一接口的驅(qū)動時,應(yīng)該詳細(xì)閱讀,主要是要分析數(shù)據(jù)、控制、地址寄存器(datasheet 中一般會以表格列出)的訪問控制和具體設(shè)備的操作流程(datasheet 中會給出步驟,有的還會給出流程圖)。譬如為了編寫S3C6410A的I2C控制器驅(qū)動,我們需要詳細(xì)閱讀類似圖2.30的寄存器定義表格和圖2.31的操作流程圖。

圖2.30 芯片手冊中以表格形式列出寄存器定義

第44章“ELECTRICAL DATA”即“電氣數(shù)據(jù)”,描述芯片的電氣特性,如電壓、電流和各種工作模式下的時序及建立時間和保持時間的要求。所有的datasheet都會包含類似章節(jié),這一章對于硬件工程師比較關(guān)鍵,但是,一般來說,驅(qū)動工程師并不需閱讀。

第45章“MECHANICAL DATA”即“機(jī)械數(shù)據(jù)”,描述芯片的物理特性、尺寸和封裝,硬件工程師會依據(jù)這一章繪制芯片的封裝(footprint),但是,驅(qū)動工程師無需閱讀。

圖2.31 芯片手冊中給出外設(shè)控制器的操作流程

2.8 儀器儀表使用

2.8.1 萬用表

在電路板調(diào)試過程中我們主要使用萬用表的兩個功能。

● 測量電平。

● 使用二極管 測量電路板上網(wǎng)絡(luò)的連通性,當(dāng)示波器被設(shè)置在二極管 ,測量連通的網(wǎng)絡(luò)會發(fā)出“ ”的叫,否則,沒有連通。

2.8.2 示波器

示波器是利用電子示波管的特性,將人眼無法直接觀測的交變電信號轉(zhuǎn)換成圖像,顯示在

光屏上以便測量的電子儀器。它是觀察數(shù)字電路實驗現(xiàn)象、分析實驗中的問題、測量實驗結(jié)果必不可少的重要儀器。

使用示波器主要應(yīng)注意調(diào)節(jié)垂直偏轉(zhuǎn)因數(shù)選擇(VOLTS/DIV)和微調(diào)、時基選擇(TIME/DIV)和微調(diào)以及觸發(fā)方式。

如果VOLTS/DIV設(shè)置不合理,則可能造成電壓幅度超出整個屏幕或在屏幕上變動太過微小無法觀測的現(xiàn)象。圖2.32所示為同一個波形在 VOLTS/DIV 設(shè)置由大到小變化過程中的示意圖。

如果TIME/DIV設(shè)置不合適,則可能造成波形混迭。混迭意味著屏幕上顯示的波形頻率低于信號的實際頻率。這時候,可以通過慢慢改變掃速TIME/DIV到較快的時基 ,如果波形的頻率參數(shù)急 改變或者 動的波形在某個較快的時基 穩(wěn)定下來,說明之前發(fā)生了波形混迭。根據(jù)

斯特定理,采樣速率至少高于信號高頻成分的2倍才不會發(fā)生混迭,如一個500MHz的信號,至少需要1GS/s的采樣速率。圖2.33所示為同一個波形在TIME/DIV設(shè)置由小到大變化過程中的示意圖。

圖2.32 示波器的VOLTS/DIV設(shè)置與波形

奈奎斯特定理即為采樣定理,指當(dāng)采樣頻率fsmax大于信號中最高頻率fmax的2倍時,即fsmax≥2fmax時,采樣之后的數(shù)字信號可完整地保留了原始信息。這條定理在信號處理領(lǐng)域的地位相當(dāng)之高,大致相當(dāng)于物理學(xué)領(lǐng)域的牛頓定律。

示波器的觸發(fā)能使信號在正確的位置點同步水平掃描,使信號特性清晰。觸發(fā)控制按鈕可以穩(wěn)定重復(fù)的波形并捕獲單次波形。大多數(shù)用示波器的用戶只采用邊沿觸發(fā)方式,如果擁有其他觸發(fā)能力在某些應(yīng)用上是非常有用的,特別是對新設(shè)計產(chǎn)品的故障查詢,先進(jìn)的觸發(fā)方式可將所關(guān)心的事件分離出來,找出用戶關(guān)心的非正常問題,從而最有效地利用采樣速率和存儲深度。觸發(fā)能力的提高可以較大提高測試過程的靈活性。

圖2.33 示波器的TIME/DIV設(shè)置與波形

2.8.3 邏輯分析儀

邏輯分析儀是利用時鐘從測試設(shè)備上采集數(shù)字信號并進(jìn)行顯示的儀器,其最主要的作用是用于時序的判定。與示波器不同,邏輯分析儀并不具備許多電壓等級,通常只顯示兩個電壓(邏輯1和0)。在設(shè)定了參考電壓之后,邏輯分析儀對待測試信號通過比較器來進(jìn)行判定,高于參考電壓者為High,低于參考電壓者為Low。

例如,如果以n MHz采樣率測量一個信號,邏輯分析儀會以1000/n ns為周期采樣信號,當(dāng)參考電壓設(shè)定為1.5V時,超過1.5V則判定為1,低于1.5V則為0,將邏輯1和0連接成連續(xù)的波形,工程師依據(jù)此連續(xù)波形可尋找時序問題。

高端的邏輯分析儀會安裝有Windows XP操作系統(tǒng)并提供非常友善的邏輯分析應(yīng)用軟件,在其中可方便地編輯探針、信號并察看波形,如圖2.34所示。

邏輯分析儀的波形可以顯示地址、數(shù)據(jù)、控制信號及任意外部探 信號的變化軌 ,在使用之前應(yīng)先編輯每個探鉤的信號名。

圖2.34 邏輯分析儀及配套軟件

邏輯分析儀具有超強(qiáng)的邏輯跟蹤分析功能,它可以捕獲并記錄嵌入式處理器的總線周期,也可以捕獲如實時跟蹤用的ETM 接口的程序執(zhí)行信息,并對這些記錄進(jìn)行分析、譯碼并還原出應(yīng)用程序的執(zhí)行過程。因此,可使用邏輯分析儀通過觸發(fā)接口與ICD(在線調(diào)試器)協(xié)調(diào)工作以補(bǔ)充ICD在跟蹤功能方面的不足。邏輯分析儀與ICD協(xié)作可為工程師提供斷點、觸發(fā)和跟蹤調(diào)試手段,如圖2.35所示。

ICD是一個容易與ICE(在線仿真器)混淆的概念,ICE本身需要完全仿真CPU的行為,可以從物理上完全替代CPU,而ICD則只是與芯片內(nèi)部提供的嵌入式ICE單元通過JTAG等接口互通。因此,對ICD的硬件性能要求遠(yuǎn)低于ICE。目前市面上出現(xiàn)的很多號稱為ICE的產(chǎn)品實際上是ICD,如ARM公司的Multi-ICE、WindRiver公司的visionICE和visionProbe等。

圖2.35 邏輯分析儀與ICD協(xié)作

2.9 總結(jié)

本章簡單地講解了驅(qū)動軟件工程師必備的硬件基礎(chǔ)知識,描述了處理器、存儲器的分類以及各種處理器、存儲器的原理與用途,并分析了常見的外圍設(shè)備接口與總線的工作方式。

此外,本章還講述了對驅(qū)動工程師進(jìn)行實際項目開發(fā)有幫助作用的原理圖、硬件時序分析方法,數(shù)據(jù)手冊閱讀方法以及萬用表、示波器和邏輯分析儀的使用方法。

主站蜘蛛池模板: 齐齐哈尔市| 荔浦县| 浪卡子县| 报价| 从江县| 巴林右旗| 文登市| 区。| 辉南县| 安远县| 安阳市| 平邑县| 建始县| 昌宁县| 呈贡县| 都匀市| 临邑县| 蛟河市| 敖汉旗| 阿克苏市| 鹿泉市| 苍溪县| 阜南县| 舒兰市| 万山特区| 资兴市| 大姚县| 横峰县| 商洛市| 福安市| 通渭县| 汉源县| 阿拉善盟| 台江县| 深水埗区| 江津市| 霍城县| 安化县| 若尔盖县| 临江市| 莱芜市|