什么是數字集成電路呢?標準的定義是:數字集成電路是基于數字邏輯(布爾代數)設計和運行的,基于邏輯門搭建的,用于處理數字信號的集成電路。數字電路是用來處理0和1的信號的,在數字電路中,就只有0和1這兩個狀態。數字電路通過復雜的邏輯門設計,通過簡單的0和1這兩個狀態的組合,就能實現非常復雜的功能。數字電路是用來處理數字信號的,那集成兩個字如何體現呢?“集成”的意思就是,把整個數字電路系統所有的元器件,包括電容,電阻,電感和晶體管以及互連線,制作在一小塊半導體晶片上,然后封裝在一起,最終實現的產品就是我們日常使用的那個指甲蓋大小的小黑片。
數字電路中的數字信號是指在時間上離散,在數值上也離散,且數值的大小和增減都是量化單位的整數倍的一類信號。處理數字信號的電子電路稱為數字電路。數字電路是以布爾代數為理論基礎,以邏輯門為基礎原件,通過非常復雜的邏輯設計,可以實現各種各樣的數字邏輯功能。
一個簡單的數字電路模型可以理解為如下,它有若干的輸入(input),若干個輸出(output),以及一個時鐘信號(clock)。輸入信號在數字電路模塊內部經過若干復雜的邏輯處理后,從輸出端口輸出。而模塊內部復雜的邏輯功能,則是設計人員工作的重點。在數字電路中的信號都是離散的二值信號,用數字0和1表示。
布爾代數是能實現數字邏輯功能的理論,數字電路的物理基礎是半導體理論?;诎雽w工藝,可以制作出符合布爾代數的實際物理器件,即與,或,非這些基本的門級電路,利用這些門級電路結構,可以搭建出更加復雜的數字邏輯電路?;陂T級電路,可以搭建出編碼器,譯碼器,數字選擇器,加法器,等等的基本模塊,利用這些基本模塊,可以搭建出復雜的專用系統,如接口信號協議轉換,圖像處理芯片,DSP芯片等等。
組合邏輯電路
組合邏輯電路的特點是輸出只取決于當前的輸入,而與之前的輸入無關,即組合邏輯電路沒有記憶功能。對應的電路特點就是組合邏輯電路只由基本的邏輯門原件構成,沒有使用到寄存器和時鐘信號。當信號從輸入端口輸入后,經過短暫的電路延遲,結果就從輸出端口輸出,不用等待時鐘信號來同步。
組合邏輯電路有基本的與門,或門,非門組成。用與,或,非三種運算符和邏輯變量可以構成任何的邏輯函數,依次稱這三個邏輯運算符是一組完備集。任何邏輯函數都可以用這三種邏輯符運算來加以表示。一個邏輯函數也可以有多種的函數表達形式。根據真值表,可以將任意的邏輯函數轉化為最大項或最小項表達式,進而化簡到需要的最簡的表達式。
一個組合邏輯電路的功能有多種表達形式,例如表達式,波形圖,符號圖燈,但能體現組合邏輯電路最本質的還是真值表。真值表是列出了邏輯事件輸入和輸出之間全部可能狀態的表格。通常以1表示真,以0表示假。在FPGA的內部,將一切的組合邏輯電路以真值表的形式存儲在LUT(look up table ,查找表)中,根據輸入來將真值表中的對應的值進行輸出,達到實現組合邏輯電路的功能。
例如,利用組合邏輯電路,就可以實現二進制的加法。首先根據加法的規律,列出二進制加法的真值表,根據真值表,化簡得到邏輯表達式,然后用基本的電路原件加以實現即可。
時序邏輯電路
時序邏輯電路的基礎是觸發器,盡管在數字電路中我們學習了許多種類的觸發器,例如RS觸發器,JK觸發器,T觸發器,但在實際的工程設計中,用到的最多的還是D觸發器。常見的D觸發器由數據輸入端口D,數據輸出端口Q,時鐘端口CLK,復位端口RESET組成。D觸發器的特點是在時鐘clk的上升沿,觸發器會接收D端的數據并在Q端輸出,在其余的時刻,D觸發器Q端的值保持不變。在通常的數字電路設計中,都統一使用同一個時鐘信號,稱為同步時序電路。 時序邏輯電路由組合邏輯電路和存儲電路兩部分組成。存儲部分通常就由觸發器組成。基于D觸發器的時鐘觸發特性和保持特性,用觸發器保持電路的臨時狀態值,在觸發器的輸入端接入組合邏輯電路,用于實現邏輯功能,再將組合邏輯的輸出連接到需要觸發器的輸入端口中,在下一個時鐘的上升沿,觸發器在次采樣保持該組合邏輯的輸出,由此構成了基于歷史狀態時序邏輯電路。
例如,對于一個基于時鐘的計數器,在復位時,使計數器的寄存器的值復位為0,將寄存器的輸出端連接到加法器的一個輸入上,加法器的另一個輸入設置為1,然后再將加法器的輸出端口連接到計數器寄存器的輸入端口,形成邏輯閉環。在非時鐘上升沿,加法器將寄存器輸出的值加1,在時鐘上升沿,將加1的結果再采樣保持到寄存器中標并輸出。由此,就能實現每個時鐘計數器加1的功能。
數字集成電路又分為專用集成電路和通用集成電路。專用集成電路是為實現特定功能而設計制造的集成電路。所謂專用集成電路就是我們常說的 ASIC ,是 Application Specific IntegratedCircuit 的縮寫,它是直接按功能和要求設計出整個系統,并把這個系統做到集成電路上。ASIC 在批量生產時與通用集成電路相比具有體積更小、功耗更低、可靠性提高、性能提高、保密性增強、成本降低等優點。通用集成電路:所謂通用集成電路就是我們常說的 51 單片機、DSP(數字信號處理器),與 ARM 等等,這些芯片中包含了通用微處理器,需要二次開發,才能用于某一用途。通用集成電路還包括俗稱的“電路零件”,就是從各種各樣的相對明確的應用當中提取出來的公共部分,比如:我們在學習數字電路中用到的各種 74 系列數字門電路、A/D、D/A 轉換器、電源電路等等,這些通用集成電路的特點是可以被各種各樣的應用系統直接添加進去完成基本的功能的部分,本質上是分立的。
硬件描述語言(HDL)
隨著數字集成電路設計的規模越來越大,門數越來越多,功能越來越復雜,現在的集成電路設計不可能從門級電路開始設計。隨著EDA設計工具的成熟以及基礎模塊設計的日趨成熟和完善化,數字集成電路設計可以往更高一個層級入手。由于基本的例如加法器,比較器,編碼器,譯碼器,寄存器等基礎模塊以及開發設計的非常完善,故只需要在這一層級上,調用這些基礎原件進行設計即可。而硬件描述語言(HardwareDescription Language,HDL)就是進行這一項工作的。我們在開發設計電路時,只要按照HDL語言的規范進行代碼編寫,EDA軟件就會自動根據特定的算法將我們用代碼描述的電路翻譯(專業術語為“綜合”)為這些基本的電路單元。然后在根據所依賴的器件和工藝的不同,將這些基本模塊映射為門級電路,用以制造專用集成電路(ASIC),或者在FPGA上映射為以LUT和寄存器為基礎原件的電路。
技術的發展是十分快的,Verilog語言開發與1989年,如今已經經過了30年的發展,基于Verilog的集成電路設計也已經十分的成熟。在以后的技術發展中,肯定會出現一種比HDL語言更高層級的集成電路設計工具,利用在現階段已經做得非常成熟的模塊,將這些模塊再作為設計基礎,進行更高層級的設計開發,實現更高層級的更復雜的功能。設計工具的出現,將開發人員從底層重復繁瑣的工作中解放出來,讓他們能從跟高層級來進行思考和設計,大大的提高了設計的便利性,這也就是技術發展的趨勢。而作為一名技術開發人員,也要跟隨技術發展的潮流,不斷地學習新的技術,才能保持競爭力。
SOC設計
SOC,是片上系統(system on chip)的簡稱。顧名思義,何為“片”,“片”指的就是芯片;按照標準的解釋,系統是由多個具有特定功能的集成電路組合在一個芯片上的產品。片上系統,就是將一整個系統設計制造在一個芯片上。在集成電路領域,一個系統要包含中央處理器(CPU),專用數字IP,專用模擬IP,片內總線通信,片上內存(或片外存儲控制接口)等,由CPU通過片內總線來控制專用模塊的工作。
我們現在用的手機處理器就是一個最典型的SOC。在手機處理器上,集成有ARM的處理器內核,有DSP,ISP,wifi模塊,藍牙模塊,音視頻硬件解碼模塊,相機驅動模塊,圖線處理器(GPU),DDR控制接口,無線基帶模塊,現在最新的手機處理器上還帶有專用的人工智能算法的加速模塊,用于加速人工智能算法的計算。利用SOC芯片,在加上一些外圍芯片,就可以設計出一個完整的可用的硬件設備。
一個典型的soc設計,包括處理器內核設計,總線設計,內存模塊設計,專用IP設計?,F在可以在ARM官網上無需授權就可以下載到designstart版本的M3內核代碼以及各種的外圍專用IP源碼。利用ARM已經提供好的內核,通過AHB,APB總線,我們可以將我們所需要的各種模塊集成到系統中,定制自己的SOC。只需要利用M3處理器內核,用于存儲運行代碼的ROM,用于程序運行時存儲數據的RAM,總線矩陣模塊,以及專用外設模塊,一個最簡單的SOC就可以正常運行。這些模塊之間利用總線和處理器內核進行數據通信。
在的數字電路芯片在往單片集成的方向發展,目標就是SOC,將所有的數字部分集成到一個單一的芯片上,不僅能提高芯片的設計生產成本,還能提高電路系統的穩定度,并降低功耗。由于利用片內的高性能的總線設計,采用最先進的工藝制造,芯片的總體頻率會達到更高最,一提供更高的性能。SOC級別的芯片,現在是ARM一統天下,在手機移動端,在微控制領域的處理器芯片,大多都是基于ARM內核來進行開發設計的。SOC級別的設計重在系統性設計,包括總線傳輸,內存接口,各個模塊之間的互聯,數據傳輸通信,各個專用外設的地址分配和驅動編寫,總之就是初中于系統級別的各個資源模塊之間的調配。做SOC還要懂得ARM內核的架構,能在匯編,C語言層級編寫驅動,在并使用操作系統來實現更加高級的功能和更加方便的開發。而專用的數字IP級別的開發則側重于算法的硬件實現,側重于數據的接收處理,側重于單一的設計目標的實現。設計好一個專用外設模塊后,可以將其打包封裝成為一個專用的數字IP外設,然后加載到自定制的SOC中去。
對于數字集成電路來說,數字電路只是一個基礎工具,我們擁有的是加法器,比價器,編碼,譯碼器等這些基本的建筑材料。根據要設計的目標的不同,我們用這些基本的建筑材料來構建出可以實現不同目標的設計。正如建設房屋一樣,我們有的基礎材料是磚瓦,水泥,鋼筋,用這些材料,可以建設出高樓大廈,也可以建設出精致的獨棟小樓,可以造出公路,也可以建設河提河壩,可以用來住人,可以用來自存儲貨物,也可以用來建設觀賞物。可謂是需求多種多樣,最終根據需求設計出來的產品也五花八門。如用數字電路的基本單元,構建一個最簡單的串口數據收發送模塊,構建一個專用芯片的時序驅動模塊,構建一個專用計算的加速模塊,例如人工智能計算中的卷積計算加速模塊,可以構建處理器,可以構建非常復雜的專用模塊,例如圖像處理模塊,接口協議轉換模塊,內存接口驅動模塊等等等等,數字電路的設計百種千樣,各個領域都有各自非常成熟的企業在做。如華為之通信,ARM之處理器核心,還有非常多的在大眾眼里不熟悉,但在行業內非常出名的企業,大到處理器芯片,交換機芯片,USB接口芯片,指紋識別芯片,小到一個手機鏡頭的防抖芯片,都有公司做出了成熟的產品。
雖然技術的發展雖然說日新月異,但卻是一脈相承的,每一個新的技術的出現其實就是在舊的技術的有一點小小上的創新。除非發送像工業革命那樣翻天覆地的技術革新,新的技術直接取代了舊的技術,在大多數時間中,技術的發展是平穩而又預期的發展的。技術底層的革新是非常緩慢的,也是百年難一遇,可遇而不可求的。在大多時間中的技術發展,其實就是對前人做的產品基礎上修修補補,增添功能,做到功能更好,性能更高,僅此而已。所以在個人一生的時間尺度之內,技術的發展其實是有跡可循的。已有的技術是基礎,要掌握,新型的技術是技術發展的趨勢,要學習。當你掌握了你領域的相關的技術時,其實很容易向其他技術去擴展的,不斷學習,不斷尋找機遇,幸運會青睞于有理想,并為理想做出行動的人的。
評論
查看更多