本篇整理自Adam Taylor的設(shè)計教學(xué)博客。
在我寫的大多數(shù)博客里,都演示或解釋了FPGA/SoC的設(shè)計細(xì)節(jié)技術(shù)。但是這篇文章將有所不同,因為在這里我要提出另外一個問題。
你該如何開始做可編程邏輯設(shè)計的架構(gòu)?
在我有一次同時在為三個FPGA項目設(shè)計架構(gòu)(作為衛(wèi)星開發(fā)的一部分)時,這個問題浮現(xiàn)在我的腦海中。當(dāng)然,由于最終應(yīng)用場景的原因,該架構(gòu)受到了主承包商和航天局的多次審查。因此,我將盡可能詳細(xì)的畫出架構(gòu)圖,以便讓我的設(shè)計團隊可以很輕松地從中進行工作。
盡可能詳細(xì)地畫出架構(gòu)圖,在本子上就可以
可編程邏輯的架構(gòu)設(shè)計可能非常復(fù)雜,因此好的架構(gòu)通常要定義以下幾個元素:
1.模塊需要實現(xiàn)所需的功能,當(dāng)然,這些模塊也可以包含層次結(jié)構(gòu)。
2.每個模塊接收時鐘和時鐘使能,必須考慮如果信號跨越多個時鐘域時的跨時鐘域需求。
3.每個模塊收到的復(fù)位。就像時鐘一樣,必須考慮每個模塊的復(fù)位要求。
4.架構(gòu)中每個模塊接口信號相互連接
高效的架構(gòu)和實現(xiàn)應(yīng)盡可能利用供應(yīng)商的現(xiàn)有IP核。確定可以在整個體系結(jié)構(gòu)中重用的模塊也是明智的,例如控制算法或通信總線。我的設(shè)計中有3個FPGA需要構(gòu)建,因此識別可以通用的模塊將在開發(fā)和驗證過程中節(jié)省大量時間。
接口重用十分劃算,因為它是標(biāo)準(zhǔn)化模塊。使用標(biāo)準(zhǔn)接口(例如AXI,AXI Stream和APB)作為模塊接口,可以在多個設(shè)計中輕松復(fù)用。在我的這個項目中,可能不需要復(fù)用IP核,但在將來的開發(fā)中可能需要相同的功能。
在我的復(fù)雜接口(如ADC/DAC接口、AXI或存儲接口)架構(gòu)圖中,我更喜歡使用一類接口類型,該類型包含所有較低級別的信號。然后可以在體系結(jié)構(gòu)文檔中定義接口類和所有信號。這種方法有幾個優(yōu)點:它使架構(gòu)圖更簡單,并使修改(例如 信號添加或重命名)只需要在一個位置進行。
各種接口類型的定義
信號列表和時序圖
在創(chuàng)建架構(gòu)時,我的傳統(tǒng)方法是從筆和紙開始,勾勒出主要的設(shè)計模塊和關(guān)鍵界面。完成此操作后,我將使用Visio將其電子圖形化,以使其添加在文檔中時看起來更加專業(yè)。
當(dāng)然,此圖需要顯示塊之間的所有信號和信號類別。理想情況下,工程師應(yīng)能夠拾取架構(gòu)和架構(gòu)文檔,并根據(jù)其角色開始開發(fā)或驗證。
在研究架構(gòu)時,我對其他工程師如何開發(fā)可編程邏輯架構(gòu)感到好奇,因此我在多個FPGA討論板/論壇上提出了問題并收到了很多有趣的回答。大多數(shù)受訪者表示他們使用了常見的圖紙設(shè)計套件,包括:
· Microsoft Visio (https://www.microsoft.com/en-gb/microsoft-365/visio/flowchart-software
· draw.io (https://app.diagrams.net/)
· yED (https://www.yworks.com/products/yed)
· Dia (http://dia-installer.de)
· OmniGraffle (https://www.omnigroup.com/omnigraffle)
· LibreOffice Draw (https://www.libreoffice.org/discover/draw/)
· Gliffy Diagrams for Confluence (https://marketplace.atlassian.com/apps/254/gliffy-diagrams-for-confluence)
· Lucidchart (https://www.lucidchart.com/)
· XMind (https://www.xmind.net/)
我們可以使用這里所有的繪圖包創(chuàng)建漂亮的架構(gòu)圖,有趣的是,有幾個人回答說他們使用Symbolator,而我并不熟悉。
Symbolator是Windows和Linux中的命令行工具,它將讀取VHDL、Verilog和組件聲明然后生成組件圖。然后可以在您首選的圖紙包中使用這些symbol。
直接安裝Symbolator。我們可以使用pip進行安裝,并注意您安裝的時候可能需要安裝一些其他軟件,包括Pycairo,PyGObject和Python-gi-cairo。完成此操作后,您可以使用各種不同格式和表示樣式的組件聲明創(chuàng)建組件symbol。
自從我學(xué)習(xí)到有關(guān)Symbolator的知識以來,我感覺這工具還挺好用,于是決定將它用到我正在設(shè)計的三個架構(gòu)工作中。
用Symbolator進行block設(shè)計
Symbolator的介紹地址:https://kevinpt.github.io/symbolator/
我非常喜歡使用清晰的時鐘和數(shù)據(jù)接口組定義來創(chuàng)建block。這一次,我使用Symbolator和Visio完成了架構(gòu)設(shè)計,但對于各位架構(gòu)師來說,每個人都有每個人的習(xí)慣。大家更習(xí)慣如何開展FPGA/SoC架構(gòu)設(shè)計工作呢?
原文標(biāo)題:你一般如何做可編程邏輯設(shè)計的架構(gòu)?
文章出處:【微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601232 -
soc
+關(guān)注
關(guān)注
38文章
4099瀏覽量
217768 -
可編程邏輯
+關(guān)注
關(guān)注
7文章
514瀏覽量
44054
原文標(biāo)題:你一般如何做可編程邏輯設(shè)計的架構(gòu)?
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論