fpga板子怎么和电脑连_干货教程 | 手把手教你如何使用Multisim对Digilent FPGA开发板进行编程...
來源 | Digilent中文技術(shù)社區(qū)
作者 | 阿Q
FPGA正在逐漸成為EECS專業(yè)的同學(xué)們在校期間學(xué)習(xí)掌握的一項(xiàng)必備技能。無論是在課程實(shí)驗(yàn)、競賽作品、科研項(xiàng)目還是未來求職過程中,擁有FPGA技能包對每一名電類工科生而言都會(huì)是一項(xiàng)不小的加分項(xiàng)。
對于想要學(xué)習(xí)著手開始學(xué)習(xí)FPGA的童鞋們,我們有一則壞消息和一則好消息。先說壞消息:現(xiàn)今每家FPGA廠商都有其專屬的開發(fā)工具鏈,這也意味著要想對不同的FPGA開發(fā)板進(jìn)行編程,你首先得熟悉掌握不同的開發(fā)工具鏈,而這往往并不簡單。接下來的好消息你一定會(huì)眼前一亮:現(xiàn)在,你可以使用Multisim這一在電路實(shí)驗(yàn)中無處不在并廣受歡迎的電路搭建與仿真工具來對多款Digilent FPGA開發(fā)板進(jìn)行編程了!是的,你沒有聽錯(cuò)哦。只需要一些基本的設(shè)置,你所熟悉的Multisim就將成為助你探索FPGA奇妙世界的一項(xiàng)利器。
在今天分享的教程中,我們就將手把手一步步教你如何使用Multisim對Digilent FPGA開發(fā)板進(jìn)行編程。如果你有興趣,趕緊跟著我們一起來操作吧!
——阿Q
1獲取正確的工具
想要使用Multisim來對Digilent FPGA開發(fā)板進(jìn)行編程,你首先得安裝一些必要的軟件:
LabVIEW 2014或更新版本
Multisim 14.0或更新版本
Vivado 2014.4或更新版本
第一步記得先安裝LabVIEW,這是由于Multisim的一些文件需要在裝好LabVIEW的基礎(chǔ)上才能實(shí)現(xiàn)交互運(yùn)作。當(dāng)上述每一個(gè)軟件裝好之后,記得重啟電腦以使其生效。
在這里,我所安裝的是LabVIEW 2016版,默認(rèn)安裝路徑為:“C:\Program Files\National Instruments”而非“C:\Program Files (x86)\National Instruments”。由于Multisim會(huì)與LabVIEW產(chǎn)生交互,故而我選擇將LabVIEW目錄調(diào)整為“C:\Program Files (x86)\National Instruments”,以確保兩個(gè)軟件在同一目錄下。
當(dāng)前,Multisim支持對以下型號搭載Xilinx Aritx-7芯片的Digilent FPGA開發(fā)板進(jìn)行編程,包括:
●Basys 3
●Nexys 4 DDR
●Arty A7
●CMOD A7
要想正確將Mulisim與Vivado實(shí)現(xiàn)關(guān)聯(lián),你同時(shí)需要下載安裝相關(guān)的FPGA工具。點(diǎn)擊「閱讀原文」下載安裝NI LabVIEW FPGA Vivado 2014.4工具包。
下載頁中所推薦的“NI Download Manager”選項(xiàng)可以幫你獲取一個(gè)較小的下載文件,在此基礎(chǔ)上幫你再下載工具包所需的安裝文件。對應(yīng)的,“Browser Download”選項(xiàng)直接幫助你獲取一個(gè)*.iso鏡像下載文件,并隨后會(huì)直接自動(dòng)安裝到你的電腦光驅(qū)上。這里你可以選擇任意一種你喜歡的方式進(jìn)行下載安裝。
如果*.iso鏡像文件下載完畢后沒有自動(dòng)進(jìn)入安裝程序,你可以在默認(rèn)下載路徑中雙擊它來啟動(dòng)安裝程序。
點(diǎn)擊“Next”然后輸入安裝文件包中所包含的任一序列號。我使用的是LabVIEW序列號。
之后軟件會(huì)自動(dòng)搜索更新文件。一路選擇“Accept”,然后單擊“Next”。
隨后,點(diǎn)擊“Next”以接受3 License Agreements 。
之后,再點(diǎn)擊一次“Next”即可開始安裝。
安裝完畢之后,記得務(wù)必重啟你的電腦。然后進(jìn)入“C:\NIFPGA\programs\Vivado2014_4\data\xicom\cable_drivers\nt64\digilent”,單擊運(yùn)行“install_digilent.exe”文件以安裝Digilent Adept程序(如果提示需要的話)。
到這里,所有的軟件程序及關(guān)聯(lián)組建就都安裝完畢了。接下來我們開始進(jìn)行Multisim編程部分的講解。
2FPGA“代碼編寫”概述
通常,用于FPGA芯片的代碼我們都是通過硬件描述語言來編寫,其中最為廣泛使用的即是VHDL或Verilog。絕大多數(shù)的硬件描述語言都可歸結(jié)為使用兩種不同的設(shè)計(jì)理念來編寫代碼:結(jié)構(gòu)性或行為性。上述兩種方式指的不是某種特定的語言,而是思考如何編寫代碼的兩種概念方法。當(dāng)然,你也可以在同一個(gè)項(xiàng)目中,同時(shí)使用結(jié)構(gòu)性與行為性兩種方法,只要你覺得沒有問題的話。
在行為性設(shè)計(jì)中,我們簡單地闡述所想要做的編譯操作,代碼會(huì)自行在某一特定背景下以芯片能夠理解的方式“施展它的魔力”。以下是一個(gè)帶有進(jìn)位的二位全加法器的代碼示例:
//?Verilog?example?of?a?behavioral?design
module?Full_Adder_behavioral(
input?A,
input?B,
input?Cin,
output??S,
output?Cout
);
wire?[1:0]?sum;
//?The?next?line?makes?it?clear?what?we?have.?All?three?terms?are?added
//?together,?so?we?must?have?an?adder.?We've?described?the?behavior?of
//?the?circuit.?Note?the?absence?of?any?logic?declarations?like?"AND"?or?"&".
assign?sum?=?A?+?B?+?Cin;
assign?S?=?sum[0];
assign?Cout?=?sum[1];
endmodule
當(dāng)你增加3位時(shí),你所能獲得的最大值為十進(jìn)制的3,或二進(jìn)制的11,因此在這里我們需要'sum'值對于'sum'位數(shù)而言是一個(gè)二位占位符。編譯器明白“+”的意義,并創(chuàng)建了一個(gè)二進(jìn)制代碼來完成這一任務(wù)。S與Cout位被對應(yīng)的分配給'sum'中的相應(yīng)位數(shù)。
相對應(yīng)的,結(jié)構(gòu)性設(shè)計(jì)是一種對于“實(shí)現(xiàn)正確處理輸入數(shù)據(jù)的精確邏輯”的明確描述,以下是對于同一全加法器的結(jié)構(gòu)性描述代碼示例:
//?Verilog?example?of?a?structural?design
module?Full_Adder_structural(
input?A,
input?B,
input?Cin,
output?S,
output?Cout
);
//?Here?we?see?the?use?of?several?logic?gate?structures.?Without?deciphering
//?the?logic,?it?would?be?difficult?at?best?to?know?what?exactly?is?going?on
//?just?by?glancing?at?the?code.?Now?imagine?a?large?project?with?100s?of
//?lines?of?code?to?decipher.
wire?w01?=?A?^?B;
wire?w02?=?Cin?&?w01;
wire?w03?=?A?&?B;
assign?S?=?w01?^?Cin;
assign?Cout?=?w02?|?w03;
endmodule
在這一代碼示例中,我們已經(jīng)明確告知編譯器我們是如何希望所輸入的數(shù)據(jù)被邏輯處理的。編譯器再一次“施展它的魔力”并以芯片能夠理解的方式編譯文件。
這里寫了這么多是想告訴你:由于Multisim是一款使用圖形進(jìn)行電路設(shè)計(jì)的工具,故而我們將使用結(jié)構(gòu)性設(shè)計(jì)方式來“編寫”我們的代碼,但這里我們將用的是圖形而非文本語言。如何理解這句話?圖1即為針對上述同一全加法器的Multisim實(shí)現(xiàn)(直接從Multisim畫布中復(fù)制過來)。這次你會(huì)發(fā)現(xiàn)我們使用的是圖形化的邏輯門:
通過上述方式,我們使用Multisim十分清晰地構(gòu)建了一個(gè)邏輯電路。試想,如果想要視覺化地來描述電路的結(jié)構(gòu)而不使用結(jié)構(gòu)性編程方法的話,難道還能有其它第二種方法嗎?
以上就是使用Multisim來對FPGA開發(fā)板進(jìn)行編程的全部基礎(chǔ)知識(shí)所需。下面讓我們進(jìn)一步瞅瞅如何來進(jìn)行編程。
3現(xiàn)在讓我們用Multisim來編寫一些代碼
使用Multisim來對FPGA開發(fā)板編程,更像是在畫畫,只是你首先需要有設(shè)計(jì)思路。這里,我們還是從設(shè)計(jì)一個(gè)先前提到的二位全加法器開始。
打開Multisim,你會(huì)看到一個(gè)默認(rèn)的空白畫布(canvas),用以設(shè)計(jì)或仿真模擬電路。
將鼠標(biāo)移動(dòng)到左上角,單擊“File”然后選擇“New”。
彈出窗口中,點(diǎn)擊頂端的“PLD design”按鈕,然后點(diǎn)擊底部的“Create”按鈕。
下一個(gè)跳出的窗口會(huì)讓你去選擇你的配置文件。在這里,你可以選擇各種Multisim所支持的Digilent FPGA開發(fā)板定義,這些都已經(jīng)在軟件安裝過程中被加載入。此處,你可以從下拉框中選擇一種標(biāo)準(zhǔn)定義,或是加載一個(gè)自定義的配置文件(如果你有的話),再或是創(chuàng)建一個(gè)空白的PLD項(xiàng)目。在這一教程中,我將使用的是Digilent Basys 3 FPGA開發(fā)板。在選擇好對應(yīng)的開發(fā)板后,點(diǎn)擊“Next”。
在下一個(gè)窗口中,給你的項(xiàng)目取一個(gè)名字。然后點(diǎn)擊下一步。
之后的一個(gè)窗口中,你可以選擇你希望加入到項(xiàng)目中的開發(fā)板所對應(yīng)的全部I/O外設(shè)。在我的項(xiàng)目中,我需要5個(gè)LED,3個(gè)開關(guān),因此我選擇LED0 → LED4 and SW0 → SW2。選擇好之后,點(diǎn)擊“Finish”。
現(xiàn)在,PLD項(xiàng)目會(huì)在Multisim窗口左側(cè)的Design Toolbox(設(shè)計(jì)工具箱)中出現(xiàn),同時(shí)canvas(畫布)上會(huì)顯示你所選擇的I/O接口。
我們有兩種放置組件的方式。第一種方式為點(diǎn)擊工具欄中的AND門小圖標(biāo)。這會(huì)幫你打開組件選擇窗口,并默認(rèn)對應(yīng)到"PLD Logic"組過濾器。第二種方式為點(diǎn)擊頂部菜單欄中的“Place”按鈕,然后選擇"Component" ,同樣會(huì)幫你打開組件選擇窗口。
在此教程中,我們將使用基礎(chǔ)邏輯門,所以我們在左側(cè)菜單欄中選擇它,并高亮你準(zhǔn)備放置的第一個(gè)門。放置好之后,選擇下一個(gè)門。重復(fù)操作放置,直到所有的都放置完畢。在這個(gè)二位全加法器中,我們需要2個(gè)XOR2,2個(gè)AND2,和1個(gè)OR2門。將所有的門連接起來。需要注意的是,在這里你可以更改接口的標(biāo)簽,但并不鼓勵(lì)你這樣做。
4使用Multisim對FPGA開發(fā)板進(jìn)行編程
下一步,我們將代碼部署到FPGA中去。這里,我們首先要確保FPGA開發(fā)板通過USB線已經(jīng)連上電腦,并將之開關(guān)打開。然后,點(diǎn)擊Mulitisim菜單欄中的“Transfer”,并選擇“Export to PLD...”。
免責(zé)聲明:本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請與我們聯(lián)系,我們將根據(jù)您提供的版權(quán)證明材料確認(rèn)版權(quán)并刪除內(nèi)容。
0
0
總結(jié)
以上是生活随笔為你收集整理的fpga板子怎么和电脑连_干货教程 | 手把手教你如何使用Multisim对Digilent FPGA开发板进行编程...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android读取剪切板的方法,Andr
- 下一篇: 【jdk1.8特性】之Instant