加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

FPGA新手,準(zhǔn)備FPGA大賽AMD基礎(chǔ)賽道如何選型?

10/28 12:00
1801
閱讀需 15 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大俠好,歡迎來到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。“煮酒言歡”進(jìn)入IC技術(shù)圈,這里有近100個(gè)IC技術(shù)公眾號。

今天給大俠帶來在FPAG技術(shù)交流群里平時(shí)討論的問題答疑合集(二十九),以后還會多推出本系列,話不多說,上貨。

Q:一個(gè)剛?cè)腴Tfpga沒多久的新手,想問問為了準(zhǔn)備fpga大賽amd的基礎(chǔ)賽道如何選型?

編寫過32等單片機(jī),現(xiàn)在把verilog學(xué)完了,手上有一塊altera颶風(fēng)四代學(xué)習(xí)板,但是現(xiàn)在需要買一塊amd(fpga/zynq)的板子練習(xí)一下vivado的使用等,順便作為比賽用的板子,想問問該怎么選型(比賽自選命題應(yīng)該偏向控制類,暫時(shí)沒定做什么項(xiàng)目)

A:在選擇開發(fā)板時(shí)可以從以下幾個(gè)方面考慮:

1. 芯片性能與資源:

? 邏輯資源量:如果你的項(xiàng)目對邏輯資源需求較大,比如涉及到復(fù)雜的算法處理、狀態(tài)機(jī)控制等,那么需要選擇邏輯資源豐富的芯片。例如,AMD 的一些中高端芯片可能具有更多的邏輯單元、查找表、寄存器等資源,能夠滿足復(fù)雜項(xiàng)目的需求。如果只是一些簡單的控制類項(xiàng)目,中等邏輯資源量的芯片可能就足夠了。

? 內(nèi)存資源:開發(fā)板上的內(nèi)存資源對于數(shù)據(jù)存儲和處理非常重要。確保開發(fā)板具有足夠的 DDR 內(nèi)存或者其他類型的存儲資源,以便在項(xiàng)目中能夠快速地讀寫數(shù)據(jù)。例如,一些開發(fā)板可能配備了大容量的 DDR3 或 DDR4 內(nèi)存,這對于需要處理大量數(shù)據(jù)的項(xiàng)目是很有幫助的。

? 處理器性能:如果你的項(xiàng)目需要用到處理器進(jìn)行一些軟件層面的處理或者與 FPGA 協(xié)同工作,那么處理器的性能就需要關(guān)注。AMD 的一些 FPGA 芯片中集成了 ARM 處理器,其性能參數(shù)如主頻、核心數(shù)等會影響到整個(gè)系統(tǒng)的運(yùn)行效率。

2. 開發(fā)板的接口與外設(shè):

? 通用接口:常見的接口如 USB、以太網(wǎng)口、串口等是非常重要的。USB 接口可以方便地進(jìn)行程序下載和調(diào)試;以太網(wǎng)口可以實(shí)現(xiàn)網(wǎng)絡(luò)通信,對于一些需要遠(yuǎn)程控制或者與其他設(shè)備進(jìn)行聯(lián)網(wǎng)的項(xiàng)目很有必要;串口則常用于與其他設(shè)備進(jìn)行簡單的數(shù)據(jù)通信或者調(diào)試信息輸出。確保開發(fā)板上這些接口齊全且工作穩(wěn)定。

? 擴(kuò)展接口:考慮開發(fā)板是否具有足夠的擴(kuò)展接口,如 GPIO 引腳、FMC 接口、PCIe 接口等。GPIO 引腳可以用于連接外部的傳感器、執(zhí)行器等設(shè)備,實(shí)現(xiàn)對外部設(shè)備的控制和數(shù)據(jù)采集;FMC 接口可以連接各種功能模塊,如高速數(shù)據(jù)采集卡圖像處理模塊等,擴(kuò)展開發(fā)板的功能;PCIe 接口則可以實(shí)現(xiàn)高速數(shù)據(jù)傳輸,對于需要與其他 PCIe 設(shè)備進(jìn)行通信的項(xiàng)目非常重要。

? 視頻接口(可選):如果你的項(xiàng)目涉及到圖像或視頻處理,那么開發(fā)板上的視頻接口就很重要。例如,HDMI 接口可以用于輸出視頻信號,攝像頭接口可以用于連接攝像頭進(jìn)行圖像采集。

3. 開發(fā)工具與支持:

? 開發(fā)軟件:AMD 有自己的開發(fā)工具 Vivado,確保你選擇的開發(fā)板能夠與 Vivado 軟件兼容,并且該軟件的版本能夠支持開發(fā)板上的芯片。同時(shí),了解一下開發(fā)軟件的易用性、功能豐富度以及是否有足夠的學(xué)習(xí)資源和技術(shù)支持。

? 文檔與教程:豐富的文檔和教程對于新手來說非常重要。選擇一個(gè)提供詳細(xì)用戶手冊、教程、示例代碼的開發(fā)板,可以幫助你更快地上手和學(xué)習(xí)。可以在開發(fā)板廠商的官方網(wǎng)站上查看相關(guān)的文檔和教程資源,或者在一些技術(shù)論壇上了解其他用戶的評價(jià)。

? 技術(shù)支持:在學(xué)習(xí)和使用過程中,難免會遇到一些問題,因此開發(fā)板廠商的技術(shù)支持就顯得尤為重要。選擇一個(gè)提供良好技術(shù)支持的廠商,能夠及時(shí)解決你遇到的問題,提高開發(fā)效率。

4. 價(jià)格與預(yù)算:

? 開發(fā)板價(jià)格:FPGA 開發(fā)板的價(jià)格差異較大,根據(jù)芯片性能、功能和品牌的不同,價(jià)格可能從幾百元到幾千元甚至更高。根據(jù)自己的預(yù)算選擇合適的開發(fā)板,不要過于追求高端的開發(fā)板而超出自己的預(yù)算,但也不要為了節(jié)省成本而選擇性能過低或功能不全的開發(fā)板。

? 配件價(jià)格:除了開發(fā)板本身,還需要考慮一些配件的價(jià)格,如下載器、電源適配器、連接線等。這些配件的價(jià)格也會影響到總體的預(yù)算。

5. 項(xiàng)目需求與應(yīng)用場景:

? 控制類項(xiàng)目需求:因?yàn)槟闾岬奖荣愖赃x命題偏向控制類,所以要確保開發(fā)板的性能和接口能夠滿足控制類項(xiàng)目的需求。例如,對于需要精確控制時(shí)序的項(xiàng)目,開發(fā)板的時(shí)鐘精度和穩(wěn)定性就很重要;對于需要連接多個(gè)外部設(shè)備的項(xiàng)目,開發(fā)板的 GPIO 引腳數(shù)量和驅(qū)動(dòng)能力就需要關(guān)注。

? 可擴(kuò)展性與兼容性:考慮開發(fā)板的可擴(kuò)展性和兼容性,以便在項(xiàng)目需求變化時(shí)能夠方便地進(jìn)行升級和擴(kuò)展。例如,開發(fā)板是否支持更高性能的芯片升級,是否能夠與其他廠商的設(shè)備或模塊進(jìn)行兼容等。

一些常見的適合新手的 AMD FPGA 開發(fā)板有 Zynq 系列的開發(fā)板,如基于 XC7Z010、XC7Z020 等芯片的開發(fā)板,具有較高的性價(jià)比和豐富的功能,適合初學(xué)者進(jìn)行學(xué)習(xí)和實(shí)踐。不過,最終的選型還需要根據(jù)你的具體需求和預(yù)算來決定。

Q:Python和通信工程有關(guān)嗎?

A:問題問的沒什么太大意義,但是Python 作為工具肯定是有很大的輔助功能的,以前是一些相關(guān)理解,僅供參考:

一、通信系統(tǒng)設(shè)計(jì)與仿真

1. 在通信工程中,常常需要對通信系統(tǒng)進(jìn)行建模和仿真,以評估系統(tǒng)性能和優(yōu)化設(shè)計(jì)參數(shù)。Python 擁有豐富的科學(xué)計(jì)算和數(shù)值分析庫,如 NumPy、SciPy 和 Matplotlib 等,可以方便地進(jìn)行信號處理、頻譜分析、誤碼率計(jì)算等操作。

? 例如,可以使用 Python 生成不同類型的通信信號,如正弦波、方波、脈沖等,并對其進(jìn)行調(diào)制和解調(diào)。通過模擬通信信道的噪聲和干擾,可以評估不同調(diào)制方式和編碼方案的性能。

? 利用 Python 的繪圖功能,可以直觀地展示信號的時(shí)域和頻域特性,以及系統(tǒng)的性能指標(biāo),如誤碼率曲線、信噪比曲線等。

2. 通信系統(tǒng)中的算法實(shí)現(xiàn)也可以借助 Python。例如,信道編碼和解碼算法、均衡算法、信號檢測算法等都可以用 Python 進(jìn)行實(shí)現(xiàn)和驗(yàn)證。這有助于快速原型設(shè)計(jì)和算法優(yōu)化,提高開發(fā)效率。

二、數(shù)據(jù)處理與分析

1. 在通信工程的實(shí)際應(yīng)用中,會產(chǎn)生大量的數(shù)據(jù),如信號強(qiáng)度數(shù)據(jù)、網(wǎng)絡(luò)流量數(shù)據(jù)、設(shè)備性能數(shù)據(jù)等。Python 強(qiáng)大的數(shù)據(jù)處理和分析能力可以幫助工程師對這些數(shù)據(jù)進(jìn)行收集、清洗、分析和可視化。

? 使用 Pandas 庫可以方便地處理表格數(shù)據(jù),進(jìn)行數(shù)據(jù)篩選、排序、聚合等操作。結(jié)合 Matplotlib 和 Seaborn 等可視化庫,可以制作直觀的圖表和報(bào)表,幫助工程師更好地理解數(shù)據(jù)和發(fā)現(xiàn)問題。

? 對于時(shí)間序列數(shù)據(jù),如網(wǎng)絡(luò)流量隨時(shí)間的變化,可以使用 Python 的時(shí)間序列分析庫,如 statsmodels 和 prophet,進(jìn)行預(yù)測和趨勢分析。

2. 通信工程中的機(jī)器學(xué)習(xí)人工智能應(yīng)用也越來越廣泛。Python 擁有豐富的機(jī)器學(xué)習(xí)庫,如 Scikit-learn、TensorFlow 和 PyTorch 等,可以用于通信信號分類、故障診斷、網(wǎng)絡(luò)優(yōu)化等任務(wù)。

? 例如,通過對通信信號的特征提取和分類,可以實(shí)現(xiàn)信號的自動(dòng)識別和分類。利用機(jī)器學(xué)習(xí)算法對網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行分析,可以預(yù)測網(wǎng)絡(luò)擁塞和故障,優(yōu)化網(wǎng)絡(luò)資源分配。

三、網(wǎng)絡(luò)編程與測試

1. 通信工程中的網(wǎng)絡(luò)設(shè)備和系統(tǒng)通常需要進(jìn)行編程和測試。Python 可以用于網(wǎng)絡(luò)編程,實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議的客戶端和服務(wù)器端,進(jìn)行網(wǎng)絡(luò)性能測試和故障診斷。

? 例如,使用 Python 的 socket 庫可以編寫 TCP/IP 網(wǎng)絡(luò)程序,實(shí)現(xiàn)網(wǎng)絡(luò)通信。結(jié)合網(wǎng)絡(luò)測試工具,如 Ping、Traceroute 等,可以對網(wǎng)絡(luò)連接和性能進(jìn)行測試。

? 對于無線網(wǎng)絡(luò),Python 可以與無線網(wǎng)卡進(jìn)行交互,實(shí)現(xiàn)信號強(qiáng)度監(jiān)測、頻譜分析等功能,幫助工程師優(yōu)化無線網(wǎng)絡(luò)部署。

2. 通信工程中的自動(dòng)化測試和腳本編寫也可以使用 Python。例如,可以編寫測試腳本,自動(dòng)對通信設(shè)備進(jìn)行功能測試和性能測試,提高測試效率和準(zhǔn)確性。

? 使用 Python 的測試框架,如 Pytest 和 Unittest,可以方便地組織和運(yùn)行測試用例,生成測試報(bào)告。結(jié)合持續(xù)集成和持續(xù)部署工具,可以實(shí)現(xiàn)自動(dòng)化測試和部署,提高開發(fā)效率和軟件質(zhì)量。

Q:如何看懂別人寫的verilog 代碼?

現(xiàn)在要用到師兄寫的一段verilog代碼,師兄說代碼沒驗(yàn)證過,我得先驗(yàn)證,結(jié)果發(fā)現(xiàn)好多錯(cuò)誤,就想試圖看懂代碼,結(jié)果感覺錯(cuò)綜復(fù)雜,不知道從哪兒下手?

順便給點(diǎn)意見怎么書寫一段優(yōu)秀的代碼?通過什么方式可以增長這方面的經(jīng)驗(yàn)?

A:以下是看懂別人寫的 Verilog 代碼的一些建議,僅供參考:

一、整體了解

1. 先查看代碼的文檔說明(如果有的話),了解代碼的功能、輸入輸出端口、設(shè)計(jì)思路等總體情況。

2. 分析代碼的模塊結(jié)構(gòu),明確各個(gè)模塊的作用和相互關(guān)系。

二、逐模塊分析

1. 對于每個(gè)模塊,查看其輸入輸出端口定義,了解數(shù)據(jù)的流向。

2. 研究模塊內(nèi)部的邏輯結(jié)構(gòu),包括狀態(tài)機(jī)、組合邏輯、時(shí)序邏輯等??梢酝ㄟ^注釋、信號名等理解邏輯的意圖。

3. 注意模塊中的參數(shù)定義和宏定義,這些可能會影響代碼的行為。

三、仿真與調(diào)試

1. 使用仿真工具對代碼進(jìn)行仿真,觀察輸入輸出信號的變化,驗(yàn)證代碼的功能。

2. 在仿真過程中設(shè)置斷點(diǎn)、觀察信號值,幫助理解代碼的執(zhí)行過程。

關(guān)于書寫優(yōu)秀的 Verilog 代碼的建議:

一、代碼規(guī)范

1. 良好的命名規(guī)范:使用有意義的信號名、模塊名,提高代碼的可讀性。

2. 適當(dāng)?shù)淖⑨專簩﹃P(guān)鍵邏輯、模塊功能等進(jìn)行注釋,方便他人理解。

3. 統(tǒng)一的縮進(jìn)和格式:使代碼結(jié)構(gòu)清晰,易于閱讀。

二、邏輯清晰

1. 模塊化設(shè)計(jì):將復(fù)雜的功能分解為多個(gè)模塊,每個(gè)模塊實(shí)現(xiàn)特定的功能,提高代碼的可維護(hù)性。

2. 避免復(fù)雜的邏輯表達(dá)式:可以使用中間變量或子模塊來簡化邏輯,提高可讀性。

3. 考慮代碼的可擴(kuò)展性:在設(shè)計(jì)時(shí)預(yù)留一些參數(shù)和接口,以便在未來進(jìn)行功能擴(kuò)展。

三、驗(yàn)證充分

1. 編寫測試用例:對代碼進(jìn)行全面的功能驗(yàn)證,確保代碼的正確性。

2. 使用斷言(assertion):檢查關(guān)鍵信號的狀態(tài),及時(shí)發(fā)現(xiàn)錯(cuò)誤。

3. 進(jìn)行代碼覆蓋率分析:確保代碼的各個(gè)部分都被測試到。

增長 Verilog 代碼經(jīng)驗(yàn)的方式(也可以參考我之前發(fā)的很多關(guān)于學(xué)習(xí)的文章或者回答):

1. 學(xué)習(xí)優(yōu)秀的開源項(xiàng)目:分析別人的代碼結(jié)構(gòu)、設(shè)計(jì)思路和編碼風(fēng)格,從中吸取經(jīng)驗(yàn)。

2. 參加項(xiàng)目實(shí)踐:通過實(shí)際項(xiàng)目的開發(fā),不斷積累經(jīng)驗(yàn),提高自己的編碼能力。

3. 閱讀相關(guān)書籍和論文:了解 Verilog 語言的高級特性和設(shè)計(jì)方法,拓寬知識面。

4. 參加培訓(xùn)和交流活動(dòng):與其他開發(fā)者交流經(jīng)驗(yàn),學(xué)習(xí)新的技術(shù)和方法。

FPGA的學(xué)習(xí)還是需要自己不斷摸索,積累經(jīng)驗(yàn),積少成多,理解會更透徹。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

任何技術(shù)的學(xué)習(xí)就好比一個(gè)江湖,對于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。