軟件是如何做到控制芯片電路的閉合的?

ITdog905

以往回答過類似問題,軟件歸根結底,就是二進制代碼01,而在電路上的確是沒有直接的01的,電路上只有高低電平,所謂的01,是通過顯示器顯示出來的一種給人看的,方便你理解的東西,電路上並沒有什麼0和1這個代碼,本質上它在硬件電路上還是高低電平,比如可以規定TTL電路高電平是:2.4V-5.0V;而低電平是:0.0V-0.4V。也就是電路上的電壓在某個數值範圍代表1,某個數值範圍代表0,請關注:

容濟點火器

然後電路上的這些高低電平這些東西,一般是通過觸發器這些電路來存儲的,比如RS觸發器,它是最基本的,可以通過阻容和三極管這些器件來組成,你在電腦上看到的所謂1或者0,在實際電路上它就是電壓不同而已。

然後多個觸發器組合成移位寄存器這些,通過硬件的晶振發出脈衝來讓這些寄存器移位,這樣寄存器的狀態就可以改變了,你在鍵盤上下某個命令,就相當於觸發某個開關,開關導通了,當然會直接讓某個電路狀態變化,移位寄存器的01狀態也跟著改動,這樣電路上就會達到你需要的功能,然後電路狀態變化後,又通過液晶這些,把這種變化的狀態,顯示出來所謂的01給你看,你看到的只是一個符號而已,實際上電路上變化的,還是電壓。

然後很多個寄存器再組合起來,就形成了所謂的芯片,講白了,就是把這些硬件電路做得非常小,集成到一塊硅片上去了。


容濟點火器

純手打微機原理了解一下🙃😀。

除了沒配圖(純手機碼字配圖要奔潰的),我覺得沒毛病,哈哈。當然了,大神莫怪,我是想用盡可能通俗的語言去解釋,畢竟這不是微機原理課,我也不是數電專家。

1,程序從電路層面看,就是0和1而已。所以本質上,程序只是一串長長的0和1,所以存儲程序就是存儲0和1。那麼在物理上,我們用電壓高低表示0和1就可以了。想要存儲起來,硬盤就是個好辦法,我們可以用磁場的強和弱來表示01,或者用磁極南和北表示01,當然也可以用電場強弱表示0和1,於是科學家就發明了機械硬盤,它是基於磁場來存儲的,後來又發明了固態硬盤,它是基於電場來存儲的,存儲電場高低最好的例子,就是電容。當我們想要讀取程序時,就是讀取0和1,也就是讀取高低電壓,或者叫電平,讀取高低電平,你簡單理解一下,就可以用一排電線,電線的一頭連著一個神奇的元件,以機械硬盤為例(基於磁場存儲0和1),這個元件可以根據磁盤中磁場的變化,轉變成01這種高低電平的變化,然後這些變化的電平通過電線送到另一頭的“電平處理機”——硬件。這樣子就是讀取程序了。

2,那麼,軟件如何控制硬件呢?就是說,這些輸送過去的0和1如何控制硬件呢?它通過另外一種神奇的東西“門電路”。首先,什麼叫控制?控制就是我們希望,從程序裡讀取過來的0和1,能不能讓它變成1和0,具體來講就是01序列的變換,這個變換也是用門電路來實現。比方說,有個叫“與門”的電路,他有兩個輸入,一個輸出。你給他輸入兩個1時,他就輸出1,其他情況都輸出0。像這樣子的輸入輸出過程其實就是序列變換,也可以說你是在用軟件控制硬件了。你可能要問,要輸入10個1或0怎麼辦啊?那就把門電路組合起來呀,設法讓門電路變成10個輸入,甚至更多就可以了。

3,那“門電路”是如何實現的呢,從物理的角度,他是用晶體管做成的,晶體管他是一種電子開關,這種電子開關就能做出各種各樣的“門電路”,比如上面講的“與門”。簡單說,晶體管是利用硅(或鍺)這類半導體的一個重要特性來實現門電路,就是硅的參雜特性,利用這個特性可以用一個小電流(或電壓)來控制一個硅半導體的“通電”或“斷電”,就達到了“電子開關”的目的(實際造電子開關的材料和方法還有很多種,這裡是為了舉例),而這個小電流就是控制信號。

4,那麼,為什麼電路一閉合,程序就工作起來了呢?前面我們說了,程序控制硬件(或者叫硬件處理程序中的數據),就是把01序列不斷地輸入到硬件中去處理的過程(其實處理你硬盤上數據的東西,它本身也是個程序,軟硬件本質上是一樣的)。那麼,數據到底是怎麼輸入的呢?試想一下,你搭建了一個閉合電路,開頭是一個硬盤數據讀取裝置——》然後是導線——》硬件(電平處理機)——》輸出裝置,把變換後的序列顯示出來(比如做了個加法,把結果顯示出來)。這個電路在閉合時(或者是在斷開時)會做一次加法,然後顯示結果,但是之後他就一直顯示那個結果,如果你想要做10次加法,也就是做個乘法怎麼辦呢?難道你要手動不停地“打開”和“閉合”電路嗎?(也就是我們要不斷產生控制信號,才能自動讓電路開合,這裡的開合理解成高低電平,並不是真的讓電路斷電,控制信號就像上文說的那個小電流),這時我們就需要另一種神奇的電路:振盪器,他會交替產生高低電平(這裡邊其實非常複雜,涉及到觸發器,鎖存器,上升沿下降沿等眾多概念,不再展開)。振盪器的震盪快慢用頻率表示,而頻率高電路變化起來就快,就是說做10次加法的速度就快。這就是為什麼你會聽說很多時候,cpu頻率越高運算速度就越快。

4,接下來,既然我們造好了門電路,有了振盪器,就可以造各種各樣的更復雜電路了,比如通過複雜的門電路組合起來,再加一些其他的基本電路,就可以做出來鎖存器(或者叫鎖存電路)。聽說過CPU的緩存,還有寄存器吧,這些東西就可以用鎖存器來造,鎖存器相當於內存一樣,可以高速存取數據,也就是存取0和1啦,但是計算機的內存並不是用鎖存電路來造的,因為內存需要很大,大則幾個G,十幾個G,而cpu緩存只需要十幾到幾十M,或者更小,從工程和商業成本的角度,內存是用比cpu緩存速度更慢的元器件來造的。

5,有了cpu,內存,硬盤,再來個主板,把這些硬件組合到一起就變成電腦咯~~


大喵喵666

我簡單泛泛的談一下。計算機是由晶體管構成,基本的電路原件就是三級管、二極管等等,這些基本原件只有兩種狀態1和0,1表示電路接通,0表示電路斷開。由基本的三級管和二級管組成最小的存儲單元,也就是1位,單位是BIT,這個存儲位可以顯示兩種狀態1和0,即電路開和關。由8個這樣的位組成一個存儲單元,這個存儲單元稱為字節(BYTE)。通過成千上萬的1和0,由嚴謹的邏輯編排形成所謂的軟件。舉個例子,比如一副圖片是怎樣顯示在顯示器中?數字圖片由成千上萬個1和0組成,CPU從存儲器提取這張圖片中有規律的1和0,通過顯卡投射到顯示器的像素點上,從而把圖片還原出來,顯示器像素點就好比一個燈管,當接收到1(電路開)時像素點就亮,接收到0(電路關)時像素點就滅。同理,由1和0組成的高級軟件就會控制電源的開或關,控制電腦關閉或啟動諸如此類等等。樓主可能會問CPU為什麼會進行加減乘除運算,CPU有一個控制單元,或者稱它為邏輯單元(邏輯單元也是由基本的三極管和二極管組成),通過邏輯單元進行加減乘除運算,1(電路開)+0(電路關)=1(電路開),0+0=0(電路關),以此類推,通過二進制運算實現加減乘除。弄懂計算機硬件基本原理,你就不會有疑問了。


海軍上士

運行程序的機器處理器擁有自己的指令集,由微程序與之對應,微程序存儲在處理器的控制器單元的存儲模塊。軟件代碼被編譯為機器指令指令,執行機器指令時由操作系統控制送入內存,並等待送入處理器執行。當指令被讀入處理器,通過譯碼指令的操作碼部分找到該機器指令對應的微程序入口地址,微指令通過處理器中控制器的微程序控制器譯碼執行,執行過程中控制器對處理器的算數邏輯單元、內存等硬件芯片發出高低電平信號,配合處理器時鐘脈衝信號在邏輯電路的與或非中完成一條指令的執行。軟件的執行就是在操作系統的控制下很多條指令的執行。//@過去與今天:代碼怎麼來驅動電路內部的開或者關呢


萬象科技

這個問題如果做詳細的回答很麻煩。首先你這個問題是工業控制方面的問題,如果真的弄明白需要一些數字電路和單片機的一些知識。電器方面你有什麼問題,請關注心靈的寄存處,將給你做最靠譜的回答。

無論什麼軟件,芯片都不能直接識別,數字電路的芯片內部的半導體器件只能識別0和1,不同的0和1組合,可以代表不同的事件,無論什麼軟件,最後送到芯片裡的都是0和1的不同組合數據,這個是由軟件編譯完成的,芯片按邏輯處理這些0和1,最後經輸入輸出送給外部電路。

你的第一個問題,程序軟件只是一種邏輯的人為規定表達形式,芯片不能識別,必須經過編譯,轉換成不同0和1的代碼組合送給芯片,不同0和1的代碼組合來對應那些軟件不同的語音。最早的計算機語音是彙編語言,那個需要自己查,自己把彙編語言轉化成由0123456789ABCDEF構成的代碼,比如F0(11110000)表示彙編語言裡寄存器R的數輸出。現在有了各種編程語言,是為了方便編程,但最後都需要編譯成不同的0和1組合。數字電路是能夠識別0和1的,因為在數字電路芯片裡的半導體器件只有兩個狀態,開和關,如果用開表示1,那麼0就關,如果用高電平表示1,那麼低電平就是0。你在芯片的輸入端,加了高電平,那麼就是加了1,芯片是能夠識別的。第二個問題是芯片內部的邏輯電路根據你的程序從第一句到最後一句,需要做什麼,送給輸入輸出電路。完成一次掃描。芯片一次一次一直不停的重複掃描,就按你的軟件來動作,達到識別輸入,控制輸出的目的。


心靈的寄存處

首先得有一個讓軟件運行的最基本硬件環境,而這個最基本的硬件運行環境叫基礎守護程序硬件系統,它監控底層軟件參數的變化或外部給予的的變化量,當監測到預先設計的軟件參數變化後,守護硬件系統會根據設計做出相應的反應輸出,可以是題主說的輸出開關量,也可以通過D/A輸出模擬量。

但不管輸出如何,軟件運行得先有一個相應的硬件環鏡讓軟件的守護程序部分先運行起來。比如通用PC計算機的ROM,硬件一加電,最先運行計算機的ROM就是守護程序,由它來接受外部的指令翻譯成機器硬件能執行的0和1機器指令,或者把硬件的控制權移交給更高級的軟件系統,如UNlX、Dos、Windows、Mac OS等以實現更高級的應用。


影子我喔

晶圓上的電路是有格式的。有許多按井字型排列的與非門陣列,是按照可編程邏輯陣列燒寫過的。

如上圖,這些通路既可以連接、也可以斷開,這叫做熔絲技術。用電壓控制。燒寫器負責執行電路燒寫工作。按照事先編寫的程序,實現哪些電路是連接的,哪些電路是斷開的。這樣就形成了不同邏輯的線路。早期的燒寫是一次性的,不能更改,現在有了可擦除技術,可以隨時更改。

芯片工作時,根據指令集的指揮,建立起電信號和與非門列陣的聯繫,按軟件的工作指令,控制通路的連接和斷開,實現運算。


仁觀天下

大家都知道在數字電路中都是高低電平的,在實際控制中也是一樣的,只有兩種狀態,舉個簡單例子,當三級管工作在截止和飽和狀態時,就相當於一個開關,通過控制集電極的電平即可控制三極管的狀態;在數字電路中有個叫做數模轉換器的元器件,即輸入數字量可以轉換成你想要的模擬量。如下圖


機車的搖籃

一層層實現的,軟件已經是在系統裡的一個元素,而系統已經被加載到了內存,內存中的空間除了系統外,還有動態空間,這些空間有獨立的地址,這些地址分別連接其它器件,軟件中的每一次改變都映射在內存中的控制寄存器,寄存器就是每個十字路口的門,你可以通過這些門去芯片的任何地方。


國慶142860452

芯片都有很多針腳吧?每個針腳都有定義,內部邏輯功能都是通過硬件實現的,也都是固定的,將多個針腳通斷實現的邏輯功能的組合定義成指令,我理解的不知道對不對,一組指令集就相當於一組接口函數,我們編程就是調用這些接口函數,從而控制部分針腳的通斷,從而實現內部邏輯功能,我們讀取部分針腳的電壓值,將得到內部邏輯功能實現的結果,按照編定的程序不停的循環這個過程,最後得到程序所需要的結果。


分享到:


相關文章: