主頁 > 軟體設計 > verilog2bit全流程覆寫V7_330上板實驗

verilog2bit全流程覆寫V7_330上板實驗

2021-02-11 13:00:39 軟體設計

概述

時至今日,不管從國際形勢還是國家對于“中國芯”的扶持,“國產化”這一話題越來越要付出實踐,對于FPGA這一“萬能芯”也是很多企業會優先考慮的,
從華為被“卡脖子”到集成電路正式成為國家學科,都能看出國家對于國產芯的迫切發展,滿懷愛國情懷的我,聽說有從事CAD(EDA)工具開發機會時,既欣喜又擔憂,欣喜,有一個投身科研的機會;欣喜,有一個為打破國外芯片軟體產業壟斷做貢獻的機會;擔憂的是,當然是怕竹籃打水一場空,這將是一個試圖改變我國FPAG EDA軟體環境,通過自研來爭取改變國際壟斷卻又被現實痛擊而不斷成長的故事,但我相信,中國集成電路要完善、崛起,就需要有更多人加入,一起貢獻想法和力量,群策群力,多元碰撞,所以勇敢向前,通過行動吸引更多的人來從事這個行業,讓這個行業碰撞出如互聯網一樣的火花!

FPGA EDA工具的前世今生

在二十世紀七十到八十年代,設計人員依靠手工完成電路圖的輸入、布局和布線,依靠手工在坐標紙上描繪出晶體管圖形,輸入到圖形發生器再用“刻紅膜”的方式制作光刻版,到了70年代中期,可編程邏輯技術出現了,開發人員嘗試將整個設計工程自動化,這個時期的CAD主要功能是互動圖形編輯,晶體管級版圖設計、布局布線、設計規則檢查,門級電路模擬和驗證等,這是EDA的雛形時期,
當下FPGA 市場份額主要被國外三家FPGA廠商霸占、壟斷,這些FGPA主流廠商是:
在這里插入圖片描述

經過半年的艱苦奮斗、歷經挫折團隊實作了在不使用任何Xilinx公司EDA工具的情況下, 將verilog語言硬體描述代碼,轉換為可燒寫在xilinx v7_330t FPGA上的bit碼流檔案;

團隊在不使用任何Xilinx CAD(EDA) 工具下實作了以下功能

   1.邏輯綜合
   2.技術映射
   3.打包
   4.布局
   5.布線
   6.碼流生成

FPGA開發流程

FPGA開發流程

1) 系統功能設計

在系統設計之前,首先要進行的是方案論證、系統設計和FPGA芯片選擇等準備作業,系統工程師根據任務要求,如系統的指標和復雜度,對作業速度和芯片本身的各種資源、成本等方面進行權衡,選擇合理的設計方案和合適的器件型別,一般都采用自頂向下的設計方法,把系統分成若干個基本單元,然后再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接使用EDA元件庫為止,

2) RTL級HDL設計

RTL級(Register Transfer Level,暫存器傳輸級)指不關注暫存器和組合邏輯的細節(如使用了多少個邏輯門、邏輯門的連接拓撲結構等),通過描述資料在暫存器之間的流動和如何處理、控制這些資料流動的模型的HDL設計方法,RTL級比門級更抽象,同時也更簡單和高效,RTL級的最大特點是可以直接用綜合工具將其綜合成為門級網表,其中RTL級設計直接決定著系統的功能和效率,

3) RTL級仿真

也稱為功能(行為)仿真,或是綜合前仿真,是在編譯之前對用戶所設計的電路進行邏輯功能驗證,此時的仿真沒有延遲資訊,僅對初步的功能進行檢測,仿真前,要先利用波形編輯器和HDL等建立波形檔案和測驗向量(即將所關心的輸入信號組合成序列),仿真結果將會生成報告檔案和輸出信號波形,從中便可以觀察各個節點信號的變化,如果發現錯誤,則回傳設計修改邏輯設計,常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等軟體,雖然功能仿真不是FPGA開發程序中的必需步驟,但卻是系統設計中最關鍵的一步,

為了提高功能仿真的效率,需要建立測驗平臺testbench,其測驗激勵一般使用行為級HDL語言描述,其中RTL級模塊是可綜合的,它是行為級模塊的一個子集合,

4) 綜合

所謂綜合就是將較高級抽象層次的描述轉化成較低層次的描述,綜合優化根據目標與要求優化所生成的邏輯連接,使層次設計平面化,供FPGA布局布線軟體進行實作,就目前的層次來看,綜合優化(Synthesis)是指將設計輸入編譯成由與門、或門、非門、RAM、觸發器等基本邏輯單元組成的邏輯連接網表,而并非真實的門級電路,真實具體的門級電路需要利用FPGA制造商的布局布線功能,根據綜合后生成的標準門級結構網表來產生,為了能轉換成標準的門級結構網表,HDL程式的撰寫必須符合特定綜合器所要求的風格,由于門級結構、RTL級的HDL程式的綜合是很成熟的技術,所有的綜合器都可以支持到這一級別的綜合,常用的綜合工具有Synplicity公司的Synplify/Synplify Pro軟體以及各個FPGA廠家自己推出的綜合開發工具,

5) 門級仿真

也稱為綜合后仿真,綜合后仿真檢查綜合結果是否和原設計一致,在仿真時,把綜合生成的標準延時檔案反標注到綜合仿真模型中去,可估計門延時帶來的影響,但這一步驟不能估計線延時,因此和布線后的實際情況還有一定的差距,并不十分準確,目前的綜合工具較為成熟,對于一般的設計可以省略這一步,但如果在布局布線后發現電路結構和設計意圖不符,則需要回溯到綜合后仿真來確認問題之所在,在功能仿真中介紹的軟體工具一般都支持綜合后仿真,

6) 布局布線

實作是將綜合生成的邏輯網表配置到具體的FPGA芯片上,將工程的邏輯和時序與器件的可用資源匹配,布局布線是其中最重要的程序,布局將邏輯網表中的硬體原語和底層單元合理地配置到芯片內部的固有硬體結構上,并且往往需要在速度最優和面積最優之間作出選擇,布線根據布局的拓撲結構,利用芯片內部的各種連線資源,合理正確地連接各個元件,也可以簡單地將布局布線理解為對FPGA內部查找表和暫存器資源的合理配置,布局可以被理解挑選可實作設計網表的最優的資源組合,而布線就是將這些查找表和暫存器資源以最優方式連接起來,

目前,FPGA的結構非常復雜,特別是在有時序約束條件時,需要利用時序驅動的引擎進行布局布線,布線結束后,軟體工具會自動生成報告,提供有關設計中各部分資源的使用情況,由于只有FPGA芯片生產商對芯片結構最為了解,所以布局布線必須選擇芯片開發商提供的工具,

7) 時序仿真

是指將布局布線的延時資訊反標注到設計網表中來檢測有無時序違規(即不滿足時序約束條件或器件固有的時序規則,如建立時間、保持時間等)現象,時序仿真包含的延遲資訊最全,也最精確,能較好地反映芯片的實際作業情況,由于不同芯片的內部延時不一樣,不同的布局布線方案也給延時帶來不同的影響,因此在布局布線后,通過對系統和各個模塊進行時序仿真,分析其時序關系,估計系統性能,以及檢查和消除競爭冒險是非常有必要的,

8) FPGA板級除錯

通過編程器將布局布線后的組態檔下載至FPGA中,對其硬體進行編程,組態檔一般為.pof或.sof檔案格式,下載的方式包括AS(主動)、PS(被動)、JTAG(邊界掃描)等方式,

v7_330t 我們來跑馬燈吧!

在Xilinx v7_330t FPGA上測驗碼流的正確性;在不使用任何Xilinx EDA工具的情況下,將跑馬燈的Verilog代碼轉為BIT檔案,并燒寫在FPGA上,上板實驗圖如下:

在這里插入圖片描述

閃起來吧,我的燈呀!

<iframe id="yer2tdJJ-1612929395221" src="https://player.bilibili.com/player.html?aid=629004525" allowfullscreen="true" data-mediaembed="bilibili"></iframe>

不用xilinx公司工具實作v7-330t的verilog2bit

總結:通過上板實驗,驗證了功能的正確性

參考

FPGA開發流程
FPGA廠家

探討聯系方式

Google郵箱:centuryofmine@gmail.com
微信:centuryofchong

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/258777.html

標籤:其他

上一篇:【C++入門】C++ 函式模板&類模板

下一篇:MySQL事務淺析|由淺入深

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more