作者:李西銳??校對(duì):陸輝
大俠好,歡迎來到FPGA技術(shù)江湖。本系列將帶來FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開始,最詳細(xì)操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場(chǎng)小白及打算進(jìn)階提升的職業(yè)開發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機(jī)會(huì)。
系統(tǒng)性的掌握技術(shù)開發(fā)以及相關(guān)要求,對(duì)個(gè)人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對(duì)大家有所幫助。本次帶來Vivado系列,Vivado開發(fā)軟件開發(fā)設(shè)計(jì)流程。話不多說,上貨。
Xilinx FPGA Vivado 開發(fā)流程
在做任何設(shè)計(jì)之前,我們都少不了一個(gè)工作,那就是新建工程,我們?cè)O(shè)計(jì)的一些操作,必須在工程下完成,那么接下來就向大家介紹一下新建工程的步驟。那么我以簡(jiǎn)單的二輸入與門為例向大家介紹一下操作步驟。
在后續(xù)的開發(fā)設(shè)計(jì)中,我們會(huì)做各種各樣的設(shè)計(jì)。每個(gè)設(shè)計(jì)都有自己的名字,在上述文件內(nèi),用實(shí)驗(yàn)的名字命名一個(gè)文件夾。名字的話一定要帶有某種含義,不建議隨便給個(gè)字母序列當(dāng)做名字。例如:第一個(gè)要做的二輸入與門的設(shè)計(jì),命名為and_gate2_1。
做好設(shè)計(jì)前準(zhǔn)備后,我們開始新建工程。
* 新建工程
雙擊打開Vivado。
在Quick Start中,我們選擇Creat Project。打開新建工程向?qū)В缦拢?/p>
此界面為新建工程引導(dǎo),此步驟沒有可以設(shè)置的內(nèi)容,所以直接點(diǎn)擊NEXT。
在此界面,我們第一步,需要給我們的工程起一個(gè)名字,在此我們起名為and_gate2_1。在第二步設(shè)置工程存放路徑,要求無中文路徑。第三步,如果你指定路徑位置沒有對(duì)應(yīng)的and_gate2_1文件夾,那么我們就可以勾選上,軟件會(huì)自動(dòng)幫我們新建。由于我已經(jīng)新建過了文件夾,所以此處我沒有勾選此選項(xiàng)。設(shè)置好之后,點(diǎn)擊NEXT。
此界面我們?cè)O(shè)置工程類型,選擇RTL Project。在這個(gè)選項(xiàng)下面,還有另外的一個(gè)選項(xiàng)。這個(gè)是讓我們選擇是否創(chuàng)建源文件。圖示中選擇不新建,在建完工程之后我們?cè)谛陆ㄔ次募?。繼續(xù)點(diǎn)擊NEXT。
在這個(gè)步驟里面,我們選擇對(duì)應(yīng)開發(fā)板的芯片型號(hào)。我以SANXIN-B04為例,芯片型號(hào)為XC7A35TFGG484-2。可以在搜索框里直接輸入,在下面的選項(xiàng)里面我們選擇第一個(gè),如圖所示。選中之后點(diǎn)擊NEXT。
最后一步,為工程的信息展示。確認(rèn)信息無誤后,點(diǎn)擊Finish。至此,我們的工程就新建完成了。
我們把整個(gè)界面分為5個(gè)區(qū)域,如上圖所示。
1、菜單;
軟件的常用功能全在此區(qū)域,方便我們進(jìn)行后續(xù)操作。每一項(xiàng)的作用,會(huì)在后續(xù)的講解中為大家介紹。
2、源文件;
新建文件可以在此區(qū)域,在這個(gè)窗口下面,有三個(gè)選項(xiàng),我們?cè)诘谝粋€(gè)選項(xiàng)中可以看到代碼文件的層次結(jié)構(gòu)。
3、屬性;
窗口會(huì)顯示所選內(nèi)容的具體信息
4、信息;
展示任務(wù)進(jìn)度,編譯信息等內(nèi)容。
5、報(bào)告;
展示工程信息以及狀態(tài)。此外編寫代碼也是在此區(qū)域。
通過以上的介紹,我們明白了各個(gè)區(qū)域的作用,接下來我們就新建文件開始編寫代碼:
在源文件窗口,點(diǎn)擊+號(hào)。如下圖:
三個(gè)選項(xiàng),第一個(gè)是添加或者新建管腳約束文件,第二個(gè)是添加或者新建源文件,第三個(gè)是添加或者新建仿真文件。那么我們選擇第二個(gè)選項(xiàng)。
選擇好之后,點(diǎn)擊NEXT。然后按照上圖中所示,點(diǎn)擊Creat File;
在File name一項(xiàng)中,填入文件名,其他保持默認(rèn),然后點(diǎn)擊OK,再點(diǎn)擊Finish。
此界面我們可以提前填入端口,選擇好端口方向以及位寬。然后軟件就可以幫我們寫好代碼的端口定義部分。如果不需要可以直接點(diǎn)擊OK。
再點(diǎn)擊YES。
新建好之后,會(huì)出現(xiàn)如下圖:
在Design Sources中,可以看到我們新建的文件。雙擊打開開始寫代碼。自動(dòng)生成的代碼如下:
為了更好的向大家展示,我將代碼文件中的注釋先刪除掉。代碼如下:
為了驗(yàn)證代碼的正確性,還需要寫測(cè)試文件進(jìn)行仿真測(cè)試。仍然點(diǎn)擊+號(hào)新建文件,只不過這次我們選擇第三個(gè)選項(xiàng):
點(diǎn)擊NEXT;選擇Creat File:
點(diǎn)擊OK,點(diǎn)擊Finish。定義端口界面直接跳過,因?yàn)槲覀兊姆抡嫖募]有端口。
新建好之后,按照上圖所示,雙擊打開文件。代碼如下:
我們可以使用隨機(jī)數(shù)來產(chǎn)生我們需要的輸入,代碼寫完之后,我們可以直接打開仿真。
點(diǎn)擊如圖所示的選項(xiàng),打開軟件的仿真器。
仿真圖打開后,我們點(diǎn)擊如圖所示的按鈕,可以看到全部波形。在仿真圖中,我們可以看到后半部分波形沒有變化,這是因?yàn)槲覀冸S機(jī)數(shù)生成了20組,每組20ns,所以總時(shí)長(zhǎng)為400ns。但是仿真軟件是默認(rèn)運(yùn)行1us的,所以就看到了如圖所示的情況,在此,大家可以隨意生成隨機(jī)數(shù)的個(gè)數(shù)。我們驗(yàn)證仿真時(shí),只需要看前400ns的波形就可以了。按照波形顯示,我們可以驗(yàn)證到波形輸出與與門真值表相同,所以最終結(jié)果是正確的。至于下板驗(yàn)證后續(xù)再出相關(guān)文章說明。