一、電平(Level)
在數字電路中,1表示高電平,0表示低電平,一個數字電路的管腳,總是存在一個電平的,要么高要么低,或者說要么1要到0。
二、總線(Bus)
將每個外設采用獨立的信號線連到處理器不可行,且處理器在單一時間內只會對一個外設進行訪問,那么久采用共享的信號線將所有的芯片連在一起呢?這就是總線概念的由來。
對于總線,我們往往說總線是處理器的,而其它的外設是掛在總線上的。那有一個問題,我們每一時間只能訪問掛在總線上的一個外設,那如何區分這些外設呢?和我們的路一樣,我們需要用地址來區分每一個家庭,在總線上,也是采用地址來進行區分的。這樣,總線就根據其功能分為兩類了。一類是地址總線,這一總線上的數據只會是從處理器向外設“流”,是單向的。另一類則是數據總線,用來將數據從處理器傳送到外設(從處理器的角度來說是寫操作)或者是將數據從外設傳送到處理器(從處理器的角度來說是讀操作),顯然,數據總線是雙向的。也就是說,在我們的嵌入式系統中同時存在地址總線和數據總線將所有需要與處理器進行通訊的芯片連在一起的。
總線是有寬度的,正如我們的路分為“三車道”或是“四車道”,我們說32位處理器,是指其數據總線寬度是32位,也就是“有32輛車能同時跑”,顯然,寬度越是寬我們的處理器速度就越是快,因為我們從外設芯片存取數據的速度會更快,這就是為什么我們的計算機向64位發展的原因。同樣的,地址總線也是有寬度的,對于32位處理器其寬度也就是32位。
總線的概念有了,那接下來的一個問題是,即使是每一個外設都有一個地址,那這一地址記在哪里呢?是放在外設芯片上嗎?如果這樣的話,那就有一個問題,每一類外設的地址必須是不能重疊的,而當一個產品中需要兩塊一樣的芯片的話,兩塊芯片的地址就無法區分了,看來這樣操作存在問題。還有,如果這樣的話每一個外設也得與(比如,32根)數據總線完全相連,并監聽數據線以了解處理器是不是在“叫”自己,這樣很是復雜。此外,地址也有可能因為外設種類的增多而用光。總的來說地址不能存放在外設芯片,那如何讓外設知道,此時它是被處理器招換從而需要進行讀寫訪問的呢?答案就是芯片的片選(CS, chip select)信號,或者又號使能(ENable)信號。
三、片選(CS 或EN)
片選信號對于外設芯片來講,就是一個(也是一根)通知信號,告訴芯片“嘿,請開門,我要放些東西進來,或是拿些東西走”,這里的東西只能是數據,不可能是玉米棒什么的。那有個問題,這個信號源從哪里來呢?顯然,只能從處理器來。那是不是也是像總線那樣,每一個芯片都共用一根線連在一起呢?如果這樣,可能處理器“一叫開門”所有的芯片都將“門”打開了。如果是處理器寫數據,那可能所有的芯片都被寫入同樣的數據。而取數據時,每個外設芯片都向外“扔”數據,這一定會造成數據總線沖突,因為有的芯片向總線上“扔”1,有的則“扔”0,這種情況下處理器一定會“發瘋”的,因為它不知道應當得到1還是0。
即然這樣,那顯然不能將所有的片選信號連在一起了,只能是各芯片的片選信號獨立。前面提到了地址總線,我們是采用一根地址線連一個外設芯片呢?還是采用其它的方法。如果采用一根地址線連一個外設芯片,那可能多只能掛接32個芯片了,這顯然不行。其實,在現實中,是采用32位的數字來表示一個外設芯片的地址的,比如1可以表示芯片A,而6534可以表示另外一個芯片B,等等。由此看來,理論上我們可以表示2的32次方(4294967296)個設備,之所以說理論上,是因為有的設備要占用大量的地址。即然這樣,那還有一個問題,如果將32位的地址總線轉換成芯片的一根片選信號呢?這需要引入譯碼(器)的概念。
四、譯碼(器)
譯碼器將一個數據轉換成一根信號線上的信號,比如3/8譯碼器,可以將一個位寬是3位的數據轉換成8根(2的3次方)完全獨立的信號線,當向數據側寫入二進制的011時,對應的是8根線的第3根,當輸入二進制的111時,對應的是8根線中的一根。有了譯碼器,處理器的地址線就簡化了,只要32根地址線加上外面的譯碼器,就可以訪問大量的外設芯片了。
五、高阻態
很顯然,當處理器從目標外設讀數據時,我們希望其它沒有被選上的芯片的數據總線不會對目標外設所要傳送的數據有影響,那怎么辦呢?實際上,當芯片沒有被選中時,其數據總線都處于高阻態。所謂的高阻態,我們可以理解成這一管腳在外設芯片內部是斷開的,如此一來,顯然不會對處理器從目標外設讀取數據造成任何的影響了。我們說當一個芯片沒有被選中或是沒有被使能時,其數據總線一定是處于高阻態的。前面用了“門”的開和關來打比方,那“門”是指什么呢?是指外設的數據總線,片選信號的作用就是控制將外設的數據總線與處理器的數據總線相連或是斷開。
六、驅動
總線上的數據是誰放上去的我們就說誰是那一時刻的驅動者。也就是說,當處理器向外設寫數據時,它是在驅動數據總線的,而當處理器從目標外設讀取數據時,目標外設是在驅動數據總線的。對于地址總線,因為只可能從處理器向目標外設寫,所以地址總線永遠是由處理器驅動的。當一個芯片沒有被選中時,我們說它并不驅動數據總線。
以上就是粵嵌科技的小編給大家整理的關于零基礎的學員應該要怎么學習好嵌入式技術的內容,先讓零基礎的學員了解到想要學習到嵌入式技術的話會學習到什么知識。想要學習嵌入式技術的的學員可以先了解下以上長沙粵嵌科技的小編說的這些知識,如果說你想要來學習嵌入式技術的話,那么要學習的知識就不止是這些了。長沙粵嵌科技歡迎每位想要學習嵌入式技術的學員來我們公司進行實地考察,也可以點擊我們文章下面的獲取試聽資格按鈕來獲取我們的嵌入式培訓免費課程試聽資格,來免費體驗我們的嵌入式課程,也可以和我們的講師進行面對面的交流和互動,只有實地考察和試聽才可以真正的了解一家嵌入式培訓機構。