硬件設計
硬件設計流程
在設計硬件電路之前,首先要把大的框架和架構要搞清楚,這要求我們搞清楚要實現什么功能,然后找找有否能實現同樣或相似功能的參考電路板(要懂得盡量利用他人的成果,越是有經驗的工程師越會懂得借鑒他人的成果)。如果你找到了的參考設計,最好還是先看懂并理解,這一方面能提高我們的電路理解能力,而且能避免設計中的錯誤。
在開始做硬件設計前,根據自己的項目需求,可以去找能夠滿足硬件功能設計的,有很多相關的參考設計。如果沒有找到,也可以自行設計。
硬件電路設計的大環節必不可少,主要都要經過以下這幾個流程:原理圖設計、PCB設計和制作物料清單(BOM)表。原理圖設計,其實就是將前面的思路轉化為電路原理圖。pcb涉及到實際的電路板,它根據原理圖轉化而來的網表(網表是溝通原理圖和pcb之間的橋梁),而將具體的元器件的封裝放置(布局)在電路板上,然后根據飛線(也叫預拉線)連接其電信號(布線)。完成了pcb布局布線后,要用到哪些元器件應該有所歸納,所以我們將用到BOM表。在硬件電路設計中,還需要利用一些現有的工具,比如選擇一些PCB設計工具,如Altium。
以protel為例,以下為一下具體的設計步驟:
一、原理圖建立+網表生成
1、原理圖庫建立。要將一個新元件擺放在原理圖上,我們必須得建立改元件的庫。庫中主要定義了該新元件的管腳定義及其屬性,并且以具體的圖形形式來代表。
2、有了充足的庫之后,就可以在原理圖上畫圖了,按照datasheet和系統設計的要求,通過wire把相關元件連接起來。在相關的地方添加line和text注釋。wire和line的區別在于,前者有電氣屬性,后者沒有。wire適用于連接相同網絡,line適用于注釋圖形。
3、做完這一步,就可以生成netlist了,這個netlist是原理圖與pcb之間的橋梁。原理圖是我們能認知的形式,電腦要將其轉化為pcb,就必須將原理圖轉化它認識的形式netlist,然后再處理、轉化為pcb。
4、得到netlist,先做ERC。ERC是電氣規則檢查的縮寫。它能對一些原理圖基本的設計錯誤進行排查,如多個output接在一起等問題。
5、然后就可以從netlist中得到了pcb。
6、確定板框大小。在keepout區(或mechanic區)畫個板框,這將限制了你布線的區域。
**二、PCB布局布線 **
1、確定完板框之后,就該元件布局了,布局這步極為關鍵。它往往決定了后期布線的難易。哪些元器件該擺正面,哪些元件該擺背面,都要有所考量。
2、接下來就是布線。這與布局往往是互動的。有經驗的人往往在開始就能看出哪些地方能布線成功。如果有些地方難以布線還需要改動布局。對于fpga設計來說往往還要改動原理圖來使布線更加順暢。布線和布局問題涉及的因素很多,對于高速數字部分,因為牽扯到信號完整性問題而變得復雜,但往往這些問題又是難以定量或即使定量也難以計算的。所以,在信號頻率不是很高的情況下,應以布通為第一原則。
3、使用DRC檢查,這是一定要檢查的。DRC對于布線完成覆蓋率以及規則違反的地方都會有所標注,按照這個再一一的排查,修正。
4、最后的pcb文件轉成gerber文件就可交付pcb生產了。
5、準備bom表,其一般能直接從原理圖中導出。但是需要注意的是,原理圖中哪些部分元件該上,哪些部分元件不該上,要做到心理有數。
三、電路板調試
1、拿到板第一步做什么,先拿萬用表看看關鍵網絡是否有不正常,主要是看電源與地之間有否短)。其實短路與否不光pcb有關,在生產制作的任何一個環節可能導致這個問題。
2、若電源網絡沒有短路,則檢查電源輸出是否是自己理想的值。
3、若電源網絡短路了,這需要我們仔細檢查自己原理圖是否有可能這樣的情況,同時結合割線的方法一步步排查倒底是什么地方短路了,是pcb的問題,還是裝配的問題,還是自己設計的問題。
4、若電源輸出正常了,還需要檢查一下電源的輸出跳變是否正常。也就是抓取開電的瞬間,看看電源從無到有的情況。
四、電源設計
電源設計是整個電路板最重要的一環。在電源設計用得最多的場合是,從一個穩定的高電壓得到一個穩定的低電壓。這也就是經常說的DC/DC,其中用得最多的電源穩壓芯片有兩種,一種叫LDO(低壓差線性穩壓器),另一種叫PWM(脈寬調制開關電源)。
而目前,基本上全部的硬件都是通過EDA工具進行設計的。
在電子設計自動化出現之前,設計人員必須手工完成集成電路的設計、布線等工作,這是因為當時所謂集成電路的復雜程度遠不及現在。工業界開始使用幾何學方法來制造用于電路光繪(photoplotter)的膠帶。到了1970年代中期,開發人應嘗試將整個設計過程自動化,而不僅僅滿足于自動完成掩膜草圖。第一個電路布局、布線工具研發成功。設計自動化研討會(Design Automation Conference)在這一時期被創立,旨在促進電子設計自動化的發展。
電子設計自動化發展的下一個重要階段以卡弗爾·米德(Carver Mead)和琳·康維于1980年發表的論文《超大規模集成電路系統導論》(Introduction to VLSI Systems)為標志。這一篇具有重大意義的論文提出了通過編程語言來進行芯片設計的新思想。如果這一想法得到實現,芯片設計的復雜程度可以得到顯著提升。這主要得益于用來進行集成電路邏輯仿真、功能驗證的工具的性能得到相當的改善。隨著計算機仿真技術的發展,設計項目可以在構建實際硬件電路之前進行仿真,芯片布局、布線對人工設計的要求降低,而且軟件錯誤率不斷降低。直至今日,盡管所用的語言和工具仍然不斷在發展,但是通過編程語言來設計、驗證電路預期行為,利用工具軟件綜合得到低抽象級(或稱“后端”)物理設計的這種途徑,仍然是數字集成電路設計的基礎。
從1981年開始,電子設計自動化逐漸開始商業化。
1984年的設計自動化會議(Design Automation Conference)上還舉辦了第一個以電子設計自動化為主題的銷售展覽。Gateway設計自動化在1986年推出了一種硬件描述語言Verilog,這種語言在現在是最流行的高級抽象設計語言。1987年,在美國國防部的資助下,另一種硬件描述語言VHDL被創造出來。現代的電子設計自動化設計工具可以識別、讀取不同類型的硬件描述。根據這些語言規范產生的各種仿真系統迅速被推出,使得設計人員可對設計的芯片進行直接仿真。后來,技術的發展更側重于邏輯綜合。
數字集成電路的設計都比較模塊化(參見集成電路設計、設計收斂(Design closure)和設計流(Design flow (EDA)))。半導體器件制造工藝需要標準化的設計描述,高抽象級的描述將被編譯為信息單元(cell)的形式。設計人員在進行邏輯設計時尚無需考慮信息單元的具體硬件工藝。利用特定的集成電路制造工藝來實現硬件電路,信息單元就會實施預定義的邏輯或其他電子功能。半導體硬件廠商大多會為它們制造的元件提供“元件庫”,并提供相應的標準化仿真模型。相比數字的電子設計自動化工具,模擬系統的電子設計自動化工具大多并非模塊化的,這是因為模擬電路的功能更加復雜,而且不同部分的相互影響較強,而且作用規律復雜,電子元件大多沒有那么理想。Verilog AMS就是一種用于模擬電子設計的硬件描述語言。此文,設計人員可以使用硬件驗證語言來完成項目的驗證工作最新的發展趨勢是將集描述語言、驗證語言集成為一體,典型的例子有SystemVerilog。
隨著集成電路規模的擴大、半導體技術的發展,電子設計自動化的重要性急劇增加。這些工具的使用者包括半導體器件制造中心的硬件技術人員,他們的工作是操作半導體器件制造設備并管理整個工作車間。一些以設計為主要業務的公司,也會使用電子設計自動化軟件來評估制造部門是否能夠適應新的設計任務。電子設計自動化工具還被用來將設計的功能導入到類似現場可編程邏輯門陣列的半定制可編程邏輯器件,或者生產全定制的專用集成電路。
現今數字電路非常模組化(參見集成電路設計、設計收斂、設計流程 (EDA)),產線最前端將設計流程標準化,把設計流程區分為許多“細胞”(cells),而暫不考慮技術,接著細胞則以特定的集成電路技術實現邏輯或其他電子功能。制造商通常會提供組件庫(libraries of components),以及符合標準模擬工具的模擬模型給生產流程。模擬 EDA 工具較不模組化,因為它需要更多的功能,零件間需要更多的互動,而零件一般說較不理想。
在電子產業中,由于半導體產業的規模日益擴大,EDA 扮演越來越重要的角色。使用這項技術的廠商多是從事半導體器件制造的代工制造商,以及使用 EDA 模擬軟件以評估生產情況的設計服務公司。目前,EDA 工具也應用在現場可編程邏輯門陣列的程序設計上。
EDA工具中重要的一部分便是工藝映射,工藝映射主要有以下三步:
分解。將綜合優化后的布爾網絡轉換成具有特定K輸入的約束的布爾網絡。由于要使用K-LUT,布爾網絡必須滿足每個節點的扇入不超過K。
劃分。將只含有原子門的網絡劃分為具有約束條件的塊,每個塊代表復雜的門,即查找表。其中約束條件是事件延時和查找表的數量。
映射。利用上一步的劃分獲得復雜門的具體實現,即調用設備數據庫中的具體組件來來實現復雜門。
高層次綜合(High Level Synthesis)
目前,設計復雜硬件的EDA工具是HLS。高層次綜合(High-level Synthesis)簡稱HLS,指的是將高層次語言描述的邏輯結構,自動轉換成低抽象級語言描述的電路模型的過程。所謂的高層次語言,包括C、C++、SystemC等,通常有著較高的抽象度,并且往往不具有時鐘或時序的概念。相比之下,諸如Verilog、VHDL、SystemVerilog等低層次語言,通常用來描述時鐘周期精確(cycle-accurate)的寄存器傳輸級電路模型,這也是當前ASIC或FPGA設計最為普遍使用的電路建模和描述方法。
然而,HLS技術在近十年來獲得了大量的關注和飛速的發展,尤其是在FPGA領域。縱觀近年來各大FPGA學術會議,HLS一直是學術界和工業界研究最集中的領域之一。
HLS實現了一種將高層次功能定義轉換成優化的寄存器傳輸層(RTL)描述的、提升硬件實現效率的自動化設計流程。其優點有以下三點:降低設計復雜度、加快仿真速度;一份源代碼可以實現多份硬件;快速的設計空間探索以及更好的結果品質。
高層次綜合在C語言的基礎上進行了硬件專用化,其具有數據類型定制,包含任意精度的定點數、定制的浮點數;通信接口定制,包含流式接口、存儲映射的I/O;存儲定制化,包含數組劃分、數據重用;計算定制化,包含循環展開(ILP/DLP技術),流水線(ILP/DLP/TLP技術),數據流(TLP技術),多線程(DLP/TLP技術)等等功能。
目前,可綜合的C/C++子集如下:
1,基礎類型:(u)char,(u)short,(u)int,(u)long,