學習FPGA的幾點心得

2021-03-04 03:55:02 字數 2036 閱讀 4808

1、首先要明白的是軟體設計和邏輯設計的不同,並理解什麼是硬體意識。

軟體**的執行是乙個順序的過程,編繹以後的機器碼放在儲存器裡,等著cpu一條一條的取指並執行;因此軟體設計中經常會帶有順序處理的思維。而邏輯設計則不同,我們設計的是數位電路,它是由很多很多的與非門及d觸發器構成的,上電之後所有與非門和d觸發器都同時工作,不會因為a觸發器的**描述在b觸發器之前a觸發器就是先工作,事實上,rtl級**的**先後順序在綜合成網表檔案後這種順序就消失了,取代的是基本邏輯電路之間的互聯關係描述;因此邏輯設計需要的是一種併發的思維,我們也需要用併發的思維去考慮電路的設計。

當然,我們設計的電路功能一般都有先後順序的關係,如果這種順序不能通過**的先後順序來實現,那麼要怎麼完成這一功能呢?在邏輯設計中,我們所說的先後順序都是基於時間軸來實現:它的承載體就是時序邏輯,也就是那些觸發器。

2、其次就是要熟悉基本電路的設計。基本的電路不是很多,也就是d觸發器、計數器、移位暫存器、狀態機、多路選擇器、解碼器等幾種,所有複雜的電路都可由這些基本的電路構成。高手水平高的體現並不是他能寫出一些很奇特的電路,相反,水平高是體現在他們總能將複雜的電路用這些很樸素的基本電路去描述。

甚至,你會發現他們的**基本上是由if...else、case這些語句構成的,樸素的讓你覺得奇怪。

初學者在入門的時候,對於基本電路的設計應該固定化、標準化,每種電路該用什麼樣的**描述,應該要固定、統一,盡量少一些花哨的東西。說來這裡我舉個例子。

以前有幾個朋友因為**有問題請我幫忙找問題。他們的**寫的很亂,出現了很多種稀奇古怪的電路,一看頭都大了,只好建議他們按照標準的電路重新寫下**。結果過了半天,他們就和我說問題不見了。

所以,高手們喜歡用簡單的**是有道理的,電路的標準化和規範化可以減少許多稀奇古怪的問題,問題少了他們也就能在別人加班的時候回家多睡回覺,呵呵。總之,簡單的、樸素的就是最好的。

3、最後是**的規範化。

**規範主要是**書寫、命名等規範。比如不能用tab鍵空格、低電平有效訊號命名時加_n(如rst_n等)、每行只能寫一行**等。這些東西網上也很多,這裡只是強烈建議大家要嚴格遵守,像華為等公司如果**不規範的話肯定是要打回去重寫的。

入門階段要學的有:設計時序;理解約束的原理及如何加約束。

先談談設計時序。

正確的做法是我們要先對整個設計有一些規劃--時時刻刻都要有設計時序的思想。設計時序最重要的是做好方案,這裡說的方案絕不是只是擺幾個框圖在那裡。我們在做設計的時候需要做總體設計方案、邏輯詳細設計方案。

這兩種方案包括了很多東西,邏輯總體方案主要是一級模組的劃分及介面時序的定義,而邏輯詳細方案就是**的文字及圖形描述!

另乙個就是約束。

這裡的約束是針對綜合軟體和布局佈線軟體而言的。

為什麼會有約束這個東西出現呢?主要原因是eda軟體比較笨,難以明白我們的心思,如果我們不把更詳細的資訊告訴它的話它就幹不好活,比如需要將輸出暫存器放的與輸出管腳近一點,如果不加約束,eda軟體可能布通之後就不管了,導致tco狂大,一點也不善解人意。所以我們需要約束這個東西,告訴eda軟體要怎麼幹活,工程驗收的標準又是什麼。

在加約束之前,我們首先要定義一些術語好告訴eda軟體我們想幹什麼,這些術語便是fmax、tsu、tco等等這些東西。這些東西的含義這裡就不多說了,網上的討論已經很多了。

有了術語,還要有一種通訊方式與eda軟體通訊,指令碼語言充當了這一角色。不過現在像quartus這類軟體做的比較智慧型化了,提供了圖形化介面,但是這背後支撐的還是些指令碼語言,大家可以用ultraedit打加*.qsf檔案去看看我們加的約束用指令碼語言是怎麼寫的。

在加了約束之後,eda工具就可以更好地按照我們的意願去幹活了,比較我們加了fmax的約束,它就會盡可能地將關鍵路徑放的靠近一些,以提高電路工作頻率。當然,這是有代價的,尋找路徑是需要時間的,要求越苛刻,時間花的越多,因此加約束的原則的適用就行。如果約束加的過高,就相當於讓eda工具去做一件不可能完成的事,找更短的路徑的時候說不定找著找著就掉下懸崖了,效果反而更差。

雖然有約束這個好東西,不過提醒一下,在專案之前千萬對它抱有太多的幻想,把希望寄託在別人的身上並不是每一次都很可靠的,出了問題還是要麻煩自己,加約束只能做一些錦上添花的事情。所以,我們在做方案的時候就需要對關鍵路徑進行預估,要通過設計而不是約束解決這些問題。

韓語學習的幾點心得

韓語學習有什麼竅門嗎?如果你想恨不得乙個月之內就徹底吞下韓語這塊 熱豆腐 可以說沒有什麼竅門可以幫得上他。但是如果你是想渴望通過踏實的努力真正掌握這門外語,而在這個努力的過程中又偶感迷茫,希望有人告訴他怎麼才能少走冤枉路,怎樣才能切實地靠近目標,我想以下這些北京新東方學員韓語學習總體的心得 也適用於...

學習集體備課的幾點心得

集體備課給了教師們相互補充 交流學習的機會,提高了教研的效率和備課的質量。集體備課不僅提高了本人教學設計的科學性,而課後以集體評價的方式發現自己的教學收穫與教學遺憾,更讓自己在實踐中不斷提高專業水平,收到了較好的效果。1 了解備課內容,認識集體備課的作用 許多教師經常把集體備課當成找教案,當我們實際...

高職教育學習的幾點心得

資訊工程系孫繼紅 寒假前,學院領導要求大家假期間學習高職教育的理念,並發放了大量的學習檔案。抱著試試看看的心態瀏覽了一下這些檔案,並閱讀了一些關於職業教育的書籍,才發現自己以前對職業教育的認識真是非常膚淺,同時也意識到這次學習的重要性和必要性。尤其是姜大源的 職業教育學研究新論 和徐國慶的 職業教育...