Zynq開發實踐(Verilog、仿真、FPGA和芯片設計)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing @163.com】

? ? ? ? zynq最大的優勢,就是把arm和fpga結合在一起了。這樣一顆soc里面,就可以用軟件去驅動外設ip,這是之前沒有過的體驗。因為以前,arm和fpga通信,大多數都是分列式設計,arm是單獨的一顆soc,fpga也是單獨的芯片,兩者通過外部總線溝通,比如pcie等等。現在有了zynq,直接借助于axi總線就能通信。但是很多小伙伴呢,還是不太明白fpga該怎么開發,以及verilog、仿真、fpga和芯片設計的關系,正好借此機會聊一下。

1、verilog

? ? ? ? verilog是一門描述語言,和它類似的還有vhdl。有了描述語言,我們就可以描述時序電路、組合邏輯電路,這兩部分都是設計的基礎。再加上輸入接口、輸出接口、時鐘、復位、狀態機,不管是硬件協議,還是算法電路,都可以去實現了。所以學好verilog的前提是數字電路,只要掌握了數字電路,就可以明白verilog的基本原理了。至于語法中的阻塞、非阻塞,以及綜合、不可綜合,這些概念遇到的時候處理一下即可。

2、仿真

? ? ? ? verilog的仿真,就類似于c語言port到嵌入式開發板子前,先用windows平臺仿真一下是一個道理。仿真不僅可以模擬出各種激勵信號,還能實現自動化測試,非常適合上板之前的功能確認。從工具層面,verilog不考慮布局布線,也不考慮功耗,只是從功能層面確認下實現是否ok。而且,仿真的效率一般非常之高,有興趣的小伙伴甚至可以自己寫一個仿真器。

? ? ? ? 從大的地方說,仿真就是按照復位信號,組合邏輯、時序邏輯、組合邏輯一步一步往前走,按照這個思路,自己就可以寫一個最簡單的仿真器。比如,我們出現這樣一個電路,

assign d = a ? b : c;

? ? ? ? 如果改成c語言,基本就是這樣的組合邏輯,

int get_data(int a, int b, int c)
{if(a){return b;}else{return c;}
}int d = get_data(a,b,c);

? ? ? ? 哪怕是時序邏輯,也可以處理。計算的時候,如果clock沒有到,先計算組合邏輯,然后clock來臨之后,把組合邏輯的結果賦值給寄存器,這樣就可以實現時序仿真了。

3、fpga

? ? ? ? fpga是介于軟件和硬件的產物。本質上fpga是由一個一個的lut查找表、開關連線、外設三部分組成。當然,除了這三部分,還是pll、rom、ram、fifo、dsp等資源。最主要的部分,還是剛才說的lut、switch box、io。

????????其中lut本質上就是查找表,它不知道什么與或非,我們需要什么功能,工具幫忙編譯成對應的lut就可以了。比如一個或門,就可以是 0 0 0/ 0 1 1/ 1 0 1/ 111。前面兩個輸入,最后一個是輸出。當然除了組合邏輯之外,lut內部一般還有d觸發器,這個用來處理時序電路。因此,我們寫的組合邏輯和時序邏輯都是由這樣一個一個lut拼起來的。

? ? ? ? 既然是拼起來的lut,那么就會涉及到模塊和模塊的互聯。比如下面這句話,

assign flag = (a|b) & (c|d);

? ? ? ? 這個flag信號的處理,來自于a、b、c、d。假設lut最大只能處理兩路信號,那么這個電路就需要三個lut才能實現。第一個lut處理a和b,第二個lut處理c和d,然后兩個lut的處理結果送到第三個lut,這樣才實現了基本的flag輸出。那么lut直接按怎么通信呢,其實內部可以看成是這樣一個結構,

? ? ? ? 有了swich box之后,就可以這樣一直把信號傳遞下去。當然,換一個角度來看,switch box也是一種特殊的lut。至于輸入輸出模塊也是一樣,只不過這種輸入、輸出要涉及到fpga的引腳,本質上也是一種特殊的lut。

4、asic芯片

? ? ? ? verilog本身作為描述語言,可以描述fpga,也可以描述芯片的設計。fpga下面除了lut,還有pll、dsp、fifo、rom、ram等很多資源,所以fpga看上去更像是搭積木,fpga的工具就是把用戶的verilog的描述映射到這一個一個資源上面。雖然整體很方便,不過也容易出問題,比如布局布線,信號和信號之間會不會距離太長,需不需要加時間約束等等。所以對于fpga來說,前端設計和后端設計是一體的,后端設計是fpga廠家的工具幫助自動完成的。因此,很多芯片設計開發功能的時候,都是用fpga來做前端設計的,甚至是幾塊fpga芯片一起來仿真。

? ? ? ? 而asic設計,看上去更像是從0到1開始造房子。雖然也是用verilog開發,但是底層實現來自于代工廠的工藝庫,里面有組合邏輯、時序邏輯、rom、ram模塊等等。工藝庫就是實實在在的mos管邏輯電路,而不是fpga那種查表機制的lut了。不過,soc里面有些ip需要從第三方購買,有些ip需要自己設計,這些ip都ok之后,通過總線連接在一起之后,這才相當于完成了基本的soc邏輯設計。接下來就是后端工程師的工作。

? ? ? ? 芯片的前后端設計,非常類似于電路的前后端設計,電路的前端設計就是原理圖設計,電路的后端設計就是pcb layout。原理圖ok不見得pcb就ok。比如電源擺放是不是合理,模數有沒有分開,高頻、低頻有沒有分開,發熱有沒有提前布局,這都是pcb layout考慮的。后端芯片設計也是一樣,比如pin腳布局、時鐘樹設計、電源信號處理等等,既要有利于生產、提高良品率,也要考慮到后續客戶的使用習慣。哪怕現在很多芯片后端設計都是外包的,至少發包方要在關鍵指標上提出明確訴求,不然很容易爛尾掉,畢竟芯片流片也不便宜。

? ? ? ? fpga本身依賴于查表和ram機制,這是它自身的可編程性決定的,也是fpga得以存在的基礎。因此不管是功耗上,還是頻率上,都不如asic。但是fpga勝在一個靈活,因此只有量大的場景才會asic化,如果是非標類的應用,一般用fpga就可以了,尤其是圖像和通信類領域。

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

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

相關文章

LabVIEW刺激響應測量解析

?該 LabVIEW 程序用于刺激 - 響應測量,實現測試信號生成、響應采集及測量分析,涵蓋信號同步、并行處理等概念,用于設備總諧波失真(THD)等電信號特性測量場景,借助 LabVIEW 圖形化編程優勢,將復…

Boosting(提升法)詳解

一、引言在集成學習(Ensemble Learning)中,Boosting(提升法) 是一種非常經典且強大的方法。它通過將多個弱學習器(Weak Learners)進行迭代組合,逐步提升整體的預測性能,從…

寵物智能手機PetPhone技術解析:AI交互與健康監測的系統級創新

當你的寵物通過AI自主接聽視頻通話,背后是計算機視覺與邊緣計算的技術融合。全球首款寵物智能手機正在重新定義跨物種人機交互。近日,亞洲寵物展覽會上亮相的PetPhone引發了技術社區的廣泛關注。這款專為寵物設計的智能設備集成了多項技術創新&#xff0…

智慧零售商品識別誤報率↓74%!陌訊多模態融合算法在自助結算場景的落地優化

原創聲明:本文為原創技術解析文章,核心技術參數與架構設計引用自 “陌訊技術白皮書”,禁止未經授權的轉載與篡改。文中算法邏輯與實戰方案均基于陌訊視覺算法 v3.2 版本展開,所有實測數據均來自智慧零售場景下的真實部署環境。一、…

ArcGIS學習-9 ArcGIS查詢操作

前置操作加載數據修改坐標系修改單位屬性查詢單條件查詢打開安徽省縣界的屬性表多條件查詢值得注意的是,不加括號和前面加括號,查出來的結果一致(35條記錄)而后面加括號,查詢結果與之前的不一致(25條記錄&a…

A-Level物理課程全解析:知識點、學習計劃與培訓機構推薦

A-Level物理課程是國際教育體系中的重要科目,不僅為大學理工科專業打下基礎,也培養學生的科學思維與實驗能力。本文將從核心知識點解析、高效學習計劃制定,以及優質培訓機構推薦三個方面,為學生和家長提供全面、實用的指南。一、A…

Linux 進階之性能調優,文件管理,網絡安全

一、系統性能調優系統性能調優是 Linux 管理中的關鍵技能,它能顯著提升系統在不同應用場景下的表現。通過針對性的調優,可以解決資源瓶頸問題,提高服務響應速度,優化資源利用率。(一)CPU 性能調優知識點詳解…

【科普向-第五篇】MISRA C實戰手冊:規則與指令全解析

目錄 引言 1.1 起源與目的 1.2 規則體系結構 一.變量與類型(Rule 1–9) Rule 1.1 — 變量必須顯式初始化(Mandatory) Rule 1.2 — 使用固定寬度整數類型(Mandatory) Rule 1.3 — 避免未定義行為的類…

Custom SRP - Shadow Masks

截圖展示的是:近處實時陰影,遠處烘焙陰影1 Baking Shadows陰影讓場景更具層次感和真實感,但是實時陰影渲染距離有限,超出陰影距離的世界由于沒有陰影顯得很“平”.烘焙的陰影不會受限于陰影距離,可以與實時陰影結合解決該問題:最大陰影距離之內使用實時陰影最大陰影距離之外用烘…

Python爬蟲實戰:研究spidermonkey庫,構建電商網站數據采集和分析系統

1 引言 1.1 研究背景 互聯網數據已成為商業決策、學術研究的核心資源,網絡爬蟲作為數據獲取的主要工具,在靜態網頁時代發揮了重要作用。然而,隨著 AJAX、React、Vue 等技術的廣泛應用,超過 70% 的主流網站采用 JavaScript 動態生成內容(如商品列表滾動加載、評論分頁加載…

智能駕駛規劃技術總結

前言 本文主要對智能駕駛規劃技術相關知識進行初步探究和總結,以加深理解,及方便后續學習過程中查漏補缺。 分層規劃策略 尋徑 A*算法 概念 節點:網格化后的每一個最小單元父節點:路徑規劃中用于回溯的節點列表:需要不…

05 網絡信息內容安全--對抗攻擊技術

1 課程內容 網絡信息內容獲取技術網絡信息內容預處理技術網絡信息內容過濾技術社會網絡分析技術異常流量檢測技術對抗攻擊技術 2 對抗攻擊概述 2.1 對抗攻擊到底是啥? 咱們先舉個生活例子: 你平時看蘋果能認出來 —— 紅顏色、圓溜溜、帶個小揪揪。但如果…

【FPGA】VGA顯示-貪吃蛇

這個項目實現了一個完整的貪吃蛇游戲,使用Verilog HDL在FPGA上構建。項目包含了VGA顯示控制、按鍵消抖處理、游戲邏輯和圖形渲染等多個模塊,展示了數字邏輯設計的綜合應用。 項目概述 該設計使用硬件描述語言實現了經典貪吃蛇游戲的所有核心功能&#…

從PostgreSQL到人大金倉(KingBase)數據庫遷移實戰:Spring Boot項目完整遷移指南

📖 前言 在國產化浪潮的推動下,越來越多的企業開始將數據庫從國外產品遷移到國產數據庫。本文將以一個真實的Spring Boot項目為例,詳細介紹從PostgreSQL遷移到人大金倉(KingBase)數據庫的完整過程,包括遇到…

Docker 入門指南:從基礎概念到常見命令及高級工具詳解

Docker 入門指南:從基礎概念到常見命令及高級工具詳解 大家好!今天我們來聊聊 Docker 這個強大的容器化工具。如果你是一個開發者、運維工程師,或者只是對云計算和容器技術感興趣的人,Docker 絕對值得你深入了解。它可以幫助你輕松…

Redis數據持久化——RDB快照和Aof日志追加

Redis數據持久化數據持久化:將內存中的數據保存到磁盤中。作用:讓Redis服務重啟后可以恢復之前的數據。一、Redis數據持久化的方式:RDB(快照):將內存中Redis緩存的所有數據,都以二進制字符串的方…

淺聊達夢數據庫物理熱備的概念及原理

達夢數據庫(DM Database)的物理熱備份,核心是在數據庫不中斷業務(聯機) 的前提下,通過對數據庫物理文件(如數據文件、控制文件、日志文件等)的增量或全量復制,實現數據備…

C++ 中 ::(作用域解析運算符)的用途

C 中 ::(作用域解析運算符)的應用場景詳解 在 C 中,:: 被稱為 作用域解析運算符(Scope Resolution Operator),用于明確指定某個名字(變量、函數、類型等)所屬的命名空間或類作用域&a…

鴻蒙中CPU活動分析:CPU分析

1 CPU分析的核心概念與重要性 CPU活動分析(CPU Profiling)是性能優化的核心手段,它通過測量代碼執行時間,幫助開發者定位性能瓶頸。應用的響應速度直接影響用戶體驗,過長的加載時間或卡頓會導致用戶流失 1.1 為什么C…

十大經典 Java 算法解析與應用

在 Java 開發的世界里,算法就如同構建大廈的基石,它們支撐著各種復雜應用的高效運行。無論是處理海量數據的排序,還是在龐大結構中精準查找信息,合適的算法都能大幅提升程序的性能。接下來,我們將深入解析十大經典的 J…