【從零開始學習計算機科學】硬件設計與FPGA原理

硬件設計

硬件設計流程

在設計硬件電路之前,首先要把大的框架和架構要搞清楚,這要求我們搞清楚要實現什么功能,然后找找有否能實現同樣或相似功能的參考電路板(要懂得盡量利用他人的成果,越是有經驗的工程師越會懂得借鑒他人的成果)。如果你找到了的參考設計,最好還是先看懂并理解,這一方面能提高我們的電路理解能力,而且能避免設計中的錯誤。

在開始做硬件設計前,根據自己的項目需求,可以去找能夠滿足硬件功能設計的,有很多相關的參考設計。如果沒有找到,也可以自行設計。

硬件電路設計的大環節必不可少,主要都要經過以下這幾個流程:原理圖設計、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,

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72768.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringCloud—概述—01

一、微服務 1)單體架構 業務的所有功能實現都打包在一個 war 包或者 jar 包中,這種方式就稱為 單體架構 例如,學校中實現的博客系統,前端后端數據庫實現,都是在一個項目中 把所有模塊都寫在一個 web 項目中&#x…

C++ 學生成績管理系統

一、項目背景與核心需求 成績管理系統是高校教學管理的重要工具,本系統采用C++面向對象編程實現,主要功能模塊包括: 學生信息管理(學號/姓名/3門課程成績) 成績增刪改查(CRUD)操作 數據持久化存儲 統計分析與報表生成 用戶友好交互界面 二、系統架構設計 1. 類結構設計 …

go的grpc

GRPC介紹 目錄 單體架構微服務架構問題原始的grpc 服務端客戶端原生rpc的問題 grpc的hello world 服務端客戶端 proto文件proto語法 數據類型 基本數據類型其他數據類型 編寫風格多服務 單體架構 只能對整體擴容一榮俱榮,一損俱損代碼耦合,項目的開…

1.12.信息系統的分類【ES】

專家系統(ES)技術架構深度解析 一、ES核心定義 🧠 智能決策中樞 由三大核心能力構建的領域專家模擬系統: 存儲專家級領域知識(10^4規則量級)支持不確定性推理(置信度>85%)動態…

考研數一非數競賽復習之Stolz定理求解數列極限

在非數類大學生數學競賽中,Stolz定理作為一種強大的工具,經常被用來解決和式數列極限的問題,也被譽為離散版的’洛必達’方法,它提供了一種簡潔而有效的方法,使得原本復雜繁瑣的極限計算過程變得直觀明了。本文&#x…

html播放本地音樂

本地有多個音樂文件,想用 html 逐個播放,或循環播放,并設置初始音量。 audio 在 html 中播放音樂文件用 audio 標簽: controls 啟用控制按鈕,如進度條、播放、音量、速度等。不加不顯示任何 widget。autoplay 理應啟…

DeepSeek-Manus精品課合集【附下載】

AI消息不斷,繼DeepSeek之后,又出了一個顛覆性的AI產品Manus,號稱全球第一個通用型AI。相比與DeepSeek, Manus擁有更強的自主性和執行力。 如果說DeepDeek是一個最強大腦,那么Manus就是一個完整的人! DeepS…

MySQL復習筆記

MySQL復習筆記 1.MySQL 1.1什么是數據庫 數據庫(DB, DataBase) 概念:數據倉庫,軟件,安裝在操作系統(window、linux、mac…)之上 作用:存儲數據,管理數據 1.2 數據庫分類 關系型數據庫&#…

從源到目標:深度學習中的遷移學習與領域自適應實踐

引言:數據驅動的智能時代與遷移挑戰 在深度學習快速發展的今天,模型訓練對數據量和質量的依賴成為核心瓶頸。面對新場景時,標注數據不足、數據分布差異等問題常導致模型性能驟降。遷移學習(Transfer Learning)與領域自…

【網絡】HTTP協議、HTTPS協議

HTTP與HTTPS HTTP協議概述 HTTP(超文本傳輸協議):工作在OSI頂層應用層,用于客戶端(瀏覽器)與服務器之間的通信,B/S模式 無狀態:每次請求獨立,服務器不保存客戶端狀態(通…

Jmeter使用介紹

文章目錄 前言Jmeter簡介安裝與配置JDK安裝與配置JMeter安裝與配置 打開JMeter方式一方式二 設置Jmeter語言為中文方法一(僅一次性)方法二(永久設置成中文) Jmeter文件常用目錄 元件與組件元件組件元件的作用域元件的執行順序第一個案例添加線程組添加 H…

【NLP 32、文本匹配任務 —— 深度學習】

大劫大難以后,人不該失去銳氣,不該失去熱度,你鎮定了卻依舊燃燒,你平靜了卻依舊浩蕩,致那個從絕望中走出來的自己,共勉 —— 25.1.31 使用深度學習在文本匹配任務上主要有兩種方式:① 表示型 ②…

發展史 | 深度學習 / 云計算

注:本文為來自 csdn 不錯的“深度學習 / 云計算發展史 ” 相關文章合輯。 對原文,略作重排。 深度學習發展史(1943-2024 編年體)(The History of Deep Learning) Hefin_H 已于 2024-05-23 15:54:45 修改 …

通領科技沖刺北交所

高質量增長奔赴產業新征程 日前,通領科技已正式啟動在北交所的 IPO 進程,期望借助資本市場的力量,加速技術升級,推動全球化戰略布局。這一舉措不僅展現了中國汽車零部件企業的強大實力,也預示著行業轉型升級的新突破。…

TCP/IP 5層協議簇:網絡層(ICMP協議)

1. TCP/IP 5層協議簇 如下: 和ip協議有關的才有ip頭 2. ICMP 協議 ICMP協議沒有端口號,因為不去上層,上層協議采用端口號

RISC-V匯編學習(三)—— RV指令集

有了前兩節對于RISC-V匯編、寄存器、匯編語法等的認識,本節開始介紹RISC-V指令集和偽指令。 前面說了RISC-V的模塊化特點,是以RV32I為作為ISA的核心模塊,其他都是要基于此為基礎,可以這樣認為:RISC-V ISA 基本整數指…

C語言 —— 愿此世如黃金般輝煌 - 進制轉換與操作符詳解

目錄 1. 操作符的分類 2. ?進制和進制轉換 2.1 2進制轉10進制 2.2 10進制轉2進制 2.3 2進制轉8進制 2.4 2進制轉16進制 3. 原碼、反碼、補碼 4. 移位操作符 4.1 左移操作符 4.2 右移操作符 5. 位操作符:&、|、^、~ 5.1 & 按位與 5.2 | 按位或 …

docker1

前言 技術架構 單機架構 應用數據分離架構 應用服務集群架構 讀寫分離/主從分離架構 寫入主的時候,要同步Mysql從的數據才可以 冷熱分離架構 寫的時候要寫入主和緩存數據庫 讀的時候先去緩存看有沒有,沒有的話就去從數據庫讀數據 主要就是看這個數據是…

Spring Boot整合ArangoDB教程

精心整理了最新的面試資料和簡歷模板,有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 一、環境準備 JDK 17Maven 3.8Spring Boot 3.2ArangoDB 3.11(本地安裝或Docker運行) Docker啟動ArangoDB docker run -d --name ar…

從離散迭代到連續 常微分方程(Ordinary Differential Equation, ODE):梯度流

從離散迭代到連續 ODE:梯度下降與梯度流的奇妙聯系 在機器學習和優化領域,我們常常使用離散的迭代算法(如梯度下降)來求解目標函數的最優解。然而,你是否想過這些離散步驟背后可能隱藏著連續的動態?常微分…