FPGA正在逐漸成為EECS專業(yè)的同學(xué)們?cè)谛F陂g學(xué)習(xí)掌握的一項(xiàng)必備技能。無(wú)論是在課程實(shí)驗(yàn)、競(jìng)賽作品、科研項(xiàng)目還是未來(lái)求職過(guò)程中,擁有FPGA技能包對(duì)每一名電類工科生而言都會(huì)是一項(xiàng)不小的加分項(xiàng)。
對(duì)于想要學(xué)習(xí)著手開(kāi)始學(xué)習(xí)FPGA的童鞋們,我們有一則壞消息和一則好消息。先說(shuō)壞消息:現(xiàn)今每家FPGA廠商都有其專屬的開(kāi)發(fā)工具鏈,這也意味著要想對(duì)不同的FPGA開(kāi)發(fā)板進(jìn)行編程,你首先得熟悉掌握不同的開(kāi)發(fā)工具鏈,而這往往并不簡(jiǎn)單。接下來(lái)的好消息你一定會(huì)眼前一亮:現(xiàn)在,你可以使用Multisim這一在電路實(shí)驗(yàn)中無(wú)處不在并廣受歡迎的電路搭建與仿真工具來(lái)對(duì)多款Digilent FPGA開(kāi)發(fā)板進(jìn)行編程了!是的,你沒(méi)有聽(tīng)錯(cuò)哦。只需要一些基本的設(shè)置,你所熟悉的Multisim就將成為助你探索FPGA奇妙世界的一項(xiàng)利器。
在今天分享的教程中,我們就將手把手一步步教你如何使用Multisim對(duì)Digilent FPGA開(kāi)發(fā)板進(jìn)行編程。如果你有興趣,趕緊跟著我們一起來(lái)操作吧!
1.獲取正確的工具
想要使用Multisim來(lái)對(duì)Digilent FPGA開(kāi)發(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支持對(duì)以下型號(hào)搭載Xilinx Aritx-7芯片的Digilent FPGA開(kāi)發(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工具包。
下載頁(yè)中所推薦的“NI Download Manager”選項(xiàng)可以幫你獲取一個(gè)較小的下載文件,在此基礎(chǔ)上幫你再下載工具包所需的安裝文件。對(duì)應(yīng)的,“Browser Download”選項(xiàng)直接幫助你獲取一個(gè)*.iso鏡像下載文件,并隨后會(huì)直接自動(dòng)安裝到你的電腦光驅(qū)上。這里你可以選擇任意一種你喜歡的方式進(jìn)行下載安裝。

如果*.iso鏡像文件下載完畢后沒(méi)有自動(dòng)進(jìn)入安裝程序,你可以在默認(rèn)下載路徑中雙擊它來(lái)啟動(dòng)安裝程序。

點(diǎn)擊“Next”然后輸入安裝文件包中所包含的任一序列號(hào)。我使用的是LabVIEW序列號(hào)。

之后軟件會(huì)自動(dòng)搜索更新文件。一路選擇“Accept”,然后單擊“Next”。

隨后,點(diǎn)擊“Next”以接受3 License Agreements 。

之后,再點(diǎn)擊一次“Next”即可開(kāi)始安裝。

安裝完畢之后,記得務(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)組建就都安裝完畢了。接下來(lái)我們開(kāi)始進(jìn)行Multisim編程部分的講解。
2.FPGA“代碼編寫”概述
通常,用于FPGA芯片的代碼我們都是通過(guò)硬件描述語(yǔ)言來(lái)編寫,其中最為廣泛使用的即是VHDL或Verilog。絕大多數(shù)的硬件描述語(yǔ)言都可歸結(jié)為使用兩種不同的設(shè)計(jì)理念來(lái)編寫代碼:結(jié)構(gòu)性或行為性。上述兩種方式指的不是某種特定的語(yǔ)言,而是思考如何編寫代碼的兩種概念方法。當(dāng)然,你也可以在同一個(gè)項(xiàng)目中,同時(shí)使用結(jié)構(gòu)性與行為性兩種方法,只要你覺(jué)得沒(méi)有問(wèn)題的話。
在行為性設(shè)計(jì)中,我們簡(jiǎn)單地闡述所想要做的編譯操作,代碼會(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‘值對(duì)于’sum‘位數(shù)而言是一個(gè)二位占位符。編譯器明白“+”的意義,并創(chuàng)建了一個(gè)二進(jìn)制代碼來(lái)完成這一任務(wù)。S與Cout位被對(duì)應(yīng)的分配給’sum‘中的相應(yīng)位數(shù)。
相對(duì)應(yīng)的,結(jié)構(gòu)性設(shè)計(jì)是一種對(duì)于“實(shí)現(xiàn)正確處理輸入數(shù)據(jù)的精確邏輯”的明確描述,以下是對(duì)于同一全加法器的結(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ì)方式來(lái)“編寫”我們的代碼,但這里我們將用的是圖形而非文本語(yǔ)言。如何理解這句話?圖1即為針對(duì)上述同一全加法器的Multisim實(shí)現(xiàn)(直接從Multisim畫(huà)布中復(fù)制過(guò)來(lái))。這次你會(huì)發(fā)現(xiàn)我們使用的是圖形化的邏輯門:

通過(guò)上述方式,我們使用Multisim十分清晰地構(gòu)建了一個(gè)邏輯電路。試想,如果想要視覺(jué)化地來(lái)描述電路的結(jié)構(gòu)而不使用結(jié)構(gòu)性編程方法的話,難道還能有其它第二種方法嗎?
以上就是使用Multisim來(lái)對(duì)FPGA開(kāi)發(fā)板進(jìn)行編程的全部基礎(chǔ)知識(shí)所需。下面讓我們進(jìn)一步瞅瞅如何來(lái)進(jìn)行編程。
3.現(xiàn)在讓我們用Multisim來(lái)編寫一些代碼
使用Multisim來(lái)對(duì)FPGA開(kāi)發(fā)板編程,更像是在畫(huà)畫(huà),只是你首先需要有設(shè)計(jì)思路。這里,我們還是從設(shè)計(jì)一個(gè)先前提到的二位全加法器開(kāi)始。
打開(kāi)Multisim,你會(huì)看到一個(gè)默認(rèn)的空白畫(huà)布(canvas),用以設(shè)計(jì)或仿真模擬電路。

將鼠標(biāo)移動(dòng)到左上角,單擊“File”然后選擇“New”。

彈出窗口中,點(diǎn)擊頂端的“PLD design”按鈕,然后點(diǎn)擊底部的“Create”按鈕。

下一個(gè)跳出的窗口會(huì)讓你去選擇你的配置文件。在這里,你可以選擇各種Multisim所支持的Digilent FPGA開(kāi)發(fā)板定義,這些都已經(jīng)在軟件安裝過(guò)程中被加載入。此處,你可以從下拉框中選擇一種標(biāo)準(zhǔn)定義,或是加載一個(gè)自定義的配置文件(如果你有的話),再或是創(chuàng)建一個(gè)空白的PLD項(xiàng)目。在這一教程中,我將使用的是Digilent Basys 3 FPGA開(kāi)發(fā)板。在選擇好對(duì)應(yīng)的開(kāi)發(fā)板后,點(diǎn)擊“Next”。

在下一個(gè)窗口中,給你的項(xiàng)目取一個(gè)名字。然后點(diǎn)擊下一步。

之后的一個(gè)窗口中,你可以選擇你希望加入到項(xiàng)目中的開(kāi)發(fā)板所對(duì)應(yīng)的全部I/O外設(shè)。在我的項(xiàng)目中,我需要5個(gè)LED,3個(gè)開(kāi)關(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à)布)上會(huì)顯示你所選擇的I/O接口。

我們有兩種放置組件的方式。第一種方式為點(diǎn)擊工具欄中的AND門小圖標(biāo)。這會(huì)幫你打開(kāi)組件選擇窗口,并默認(rèn)對(duì)應(yīng)到“PLD Logic”組過(guò)濾器。第二種方式為點(diǎn)擊頂部菜單欄中的“Place”按鈕,然后選擇“Component” ,同樣會(huì)幫你打開(kāi)組件選擇窗口。

在此教程中,我們將使用基礎(chǔ)邏輯門,所以我們?cè)谧髠?cè)菜單欄中選擇它,并高亮你準(zhǔn)備放置的第一個(gè)門。放置好之后,選擇下一個(gè)門。重復(fù)操作放置,直到所有的都放置完畢。在這個(gè)二位全加法器中,我們需要2個(gè)XOR2,2個(gè)AND2,和1個(gè)OR2門。將所有的門連接起來(lái)。需要注意的是,在這里你可以更改接口的標(biāo)簽,但并不鼓勵(lì)你這樣做。

4.使用Multisim對(duì)FPGA開(kāi)發(fā)板進(jìn)行編程
下一步,我們將代碼部署到FPGA中去。這里,我們首先要確保FPGA開(kāi)發(fā)板通過(guò)USB線已經(jīng)連上電腦,并將之開(kāi)關(guān)打開(kāi)。然后,點(diǎn)擊Mulitisim菜單欄中的“Transfer”,并選擇“Export to PLD.。.”。

在接下去的一個(gè)窗口,會(huì)提示有多個(gè)選項(xiàng)提示操作。勾選單選框選擇“Program the connected PLD”。

之后的一個(gè)窗口,記得確保在選擇框中點(diǎn)擊選中“NI LabVIEW FPGA”工具選項(xiàng)。然后點(diǎn)擊底部的“Finish”來(lái)對(duì)FPGA實(shí)現(xiàn)編程。實(shí)際操作中,我也嘗試勾選了“Xilinx Vivado 2016.4”選項(xiàng),發(fā)現(xiàn)也沒(méi)有任何問(wèn)題。

隨后,Multisim會(huì)自動(dòng)連接至Vivado以生成編程開(kāi)發(fā)板所需的正確文件。整個(gè)過(guò)程需要持續(xù)幾分鐘。一旦以上步驟全部都完成之后,你的開(kāi)發(fā)板就編程完畢了。

5.配置文件的一些注意事項(xiàng)
Multisim使用配置文件來(lái)實(shí)現(xiàn)與Vivado之間的通信。每一塊開(kāi)發(fā)板需要兩個(gè)配置文件,一個(gè)是*.mspc擴(kuò)展文件,還有一個(gè)*.ucf或*.xdc文件。如果你所用的是Basys 3或是Nexys 4 DDR開(kāi)發(fā)板(非老版本的Nexys 4),上述這些文件往往會(huì)缺失或者不完整。這里給大家講解一下如何添加或修改這些配置文件。如果你使用的是其它開(kāi)發(fā)板,則這里你可以略過(guò)。
對(duì)于Nexys 4 DDR開(kāi)發(fā)板而言,上述配置文件并非默認(rèn)包含。所以這里第一步我們首先要確保斷開(kāi)Multisim。然后,點(diǎn)擊「閱讀原文」下載DigilentNexys4DDR.mspc文件。接著,轉(zhuǎn)至配置文件所在的Multisim目錄。路徑名稱應(yīng)該類似于:“C:\Program Files (x86)\National Instruments\Circuit Design Suite 14.1\pldconfig”。找到之后,將所下載的兩個(gè)配置文件放到這個(gè)文件夾中。打開(kāi)Multisim,接下來(lái)你就可以參考前述步驟來(lái)對(duì)你的Nexys 4 DDR進(jìn)行項(xiàng)目編程了。
Basys 3的配置文件在Multisim安裝時(shí)會(huì)自動(dòng)生成,但這一文件中缺失了一些定義。最簡(jiǎn)單的方法,同樣你可以點(diǎn)擊「閱讀原文」下載DigilentBasys3.xdc 和 DigilentBasys3.mspc兩個(gè)配置文件,然后將之前自動(dòng)生成的Basys 3配置文件覆蓋掉。與之前提到的方法一樣,轉(zhuǎn)至配置文件所在的Multisim目錄,將下載好的兩個(gè)文件拖到文件夾中覆蓋掉原始文件。
在這里,如果你希望挑戰(zhàn)一下自己來(lái)自行修改原始的Basys 3配置文件,下文將教你如何實(shí)現(xiàn)。當(dāng)你在Multisim中打開(kāi)一個(gè)新的PLD項(xiàng)目,并選擇Basys 3作為你的開(kāi)發(fā)板,其中會(huì)有幾個(gè)I/O選項(xiàng)丟失。丟失的部分同時(shí)包括了VGA,RS-232,USB HID(PS/2),以及quad SPI flash的定義。見(jiàn)圖1。
Multisim使用配置文件來(lái)實(shí)現(xiàn)與Vivado之間的通信。每一塊開(kāi)發(fā)板需要兩個(gè)配置文件,一個(gè)是*.mspc擴(kuò)展文件,還有一個(gè)*.ucf或*.xdc文件。如果你所用的是Basys 3或是Nexys 4 DDR開(kāi)發(fā)板(非老版本的Nexys 4),上述這些文件往往會(huì)缺失或者不完整。這里給大家講解一下如何添加或修改這些配置文件。如果你使用的是其它開(kāi)發(fā)板,則這里你可以略過(guò)。
對(duì)于Nexys 4 DDR開(kāi)發(fā)板而言,上述配置文件并非默認(rèn)包含。所以這里第一步我們首先要確保斷開(kāi)Multisim。然后,點(diǎn)擊「閱讀原文」下載DigilentNexys4DDR.mspc文件。接著,轉(zhuǎn)至配置文件所在的Multisim目錄。路徑名稱應(yīng)該類似于:“C:\Program Files (x86)\National Instruments\Circuit Design Suite 14.1\pldconfig”。找到之后,將所下載的兩個(gè)配置文件放到這個(gè)文件夾中。打開(kāi)Multisim,接下來(lái)你就可以參考前述步驟來(lái)對(duì)你的Nexys 4 DDR進(jìn)行項(xiàng)目編程了。
Basys 3的配置文件在Multisim安裝時(shí)會(huì)自動(dòng)生成,但這一文件中缺失了一些定義。最簡(jiǎn)單的方法,同樣你可以點(diǎn)「閱讀原文」下載DigilentBasys3.xdc 和 DigilentBasys3.mspc兩個(gè)配置文件,然后將之前自動(dòng)生成的Basys 3配置文件覆蓋掉。與之前提到的方法一樣,轉(zhuǎn)至配置文件所在的Multisim目錄,將下載好的兩個(gè)文件拖到文件夾中覆蓋掉原始文件。
在這里,如果你希望挑戰(zhàn)一下自己來(lái)自行修改原始的Basys 3配置文件,下文將教你如何實(shí)現(xiàn)。當(dāng)你在Multisim中打開(kāi)一個(gè)新的PLD項(xiàng)目,并選擇Basys 3作為你的開(kāi)發(fā)板,其中會(huì)有幾個(gè)I/O選項(xiàng)丟失。丟失的部分同時(shí)包括了VGA,RS-232,USB HID(PS/2),以及quad SPI flash的定義。

要想解決這一問(wèn)題,我們需要修改這些已經(jīng)安裝好的配置文件。要想找到這些文件,第一步我們需要確保斷開(kāi)Multisim,然后打開(kāi)Multisim的根目錄文件夾。路徑名稱應(yīng)該類似于:“C:\Program Files (x86)\National Instruments\Circuit Design Suite 14.1\pldconfig”。找到兩個(gè)名為“DigilentBasys3”的文件。其中一個(gè)文件的擴(kuò)展名為.xdc,另一個(gè)則為.mspc。

在開(kāi)始下一步操作之前,務(wù)必記得復(fù)制這兩個(gè)文件,并將之放到一個(gè)單獨(dú)的目錄文件夾中,比如你可以在桌面上為之新建一個(gè)文件夾。這樣做的目的是為以防整個(gè)操作過(guò)程的結(jié)果失敗,這樣可以讓你保留有原始文件以取得再次嘗試的機(jī)會(huì)。在這里,我不建議你選擇修改文件,除非你對(duì)自己的能力很有信心。這是因?yàn)殄e(cuò)誤的文件修改雖然不會(huì)對(duì)Multisim的操作性能產(chǎn)生影響,但是你所編程的開(kāi)發(fā)板很可能會(huì)因此出現(xiàn)問(wèn)題。
想要做這些修改,你需要用到文本編輯器,比如:Notepad++。記得不要去雙擊打開(kāi).mspc文件,這會(huì)直接打開(kāi)Multisim,而這樣做對(duì)我們毫無(wú)意義。你所要做的只是對(duì)文件中的真實(shí)文本進(jìn)行修改,以使Multisim能夠讀取并加載正確的開(kāi)發(fā)板配置文件。因此,這里你需要做的是右鍵點(diǎn)擊.mspc文件,選擇“Open with.。.”,在彈出菜單中選擇你的文本編輯器以將之打開(kāi)。.mspc文件往往以標(biāo)記語(yǔ)言形式撰寫,類似于HTML或XML。這種形式簡(jiǎn)單易懂,但這里我們需要對(duì)其進(jìn)行一些修改。
我們無(wú)需對(duì)頂部的1-9行數(shù)據(jù)做任何的修改。我們需要關(guān)心的部分是所有標(biāo)簽之間的數(shù)據(jù)。每一個(gè)I/O引腳定義需要一些基本的參數(shù)。其中,“Name”需要與.xdc文件中的引腳名稱保持一致?!癕ode”決定了引腳是被定義為輸入(“in”),輸出(“out”),還是雙向引腳(“bidir”)。“Location”則用來(lái)告訴Multisim在畫(huà)布上以何種默認(rèn)的方向來(lái)放置引腳。正常情況下,輸入朝向左面,輸出則朝向右面。“Place”選項(xiàng)則是一個(gè)布爾值標(biāo)志,以用來(lái)告訴Multisim當(dāng)你初次選擇I/O引腳時(shí),是否是默認(rèn)選擇。

這里,你可以自行根據(jù)需求添加缺失的引腳,或者可以簡(jiǎn)單地復(fù)制以下定義:

將上述文本復(fù)制黏貼入“JXA_”定義下方的.mspc文本文件。然后保存更新好的.mspc文件,確保該文件所在的位置為Multisim目錄下的“pldconfig” 文件夾內(nèi)。
下面,我們?cè)谖谋揪庉嬈髦写蜷_(kāi)“Basys 3 .xdc”文件。在“JXA_”定義下方,增加以下行段:
##VGA Connector
set_property PACKAGE_PIN G19 [get_ports {vgaRed0}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed0}]
set_property PACKAGE_PIN H19 [get_ports {vgaRed1}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed1}]
set_property PACKAGE_PIN J19 [get_ports {vgaRed2}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed2}]
set_property PACKAGE_PIN N19 [get_ports {vgaRed3}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed3}]
set_property PACKAGE_PIN N18 [get_ports {vgaBlue0}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue0}]
set_property PACKAGE_PIN L18 [get_ports {vgaBlue1}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue1}]
set_property PACKAGE_PIN K18 [get_ports {vgaBlue2}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue2}]
set_property PACKAGE_PIN J18 [get_ports {vgaBlue3}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue3}]
set_property PACKAGE_PIN J17 [get_ports {vgaGreen0}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen0}]
set_property PACKAGE_PIN H17 [get_ports {vgaGreen1}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen1}]
set_property PACKAGE_PIN G17 [get_ports {vgaGreen2}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen2}]
set_property PACKAGE_PIN D17 [get_ports {vgaGreen3}]
set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen3}]
set_property PACKAGE_PIN P19 [get_ports Hsync]
set_property IOSTANDARD LVCMOS33 [get_ports Hsync]
set_property PACKAGE_PIN R19 [get_ports Vsync]
set_property IOSTANDARD LVCMOS33 [get_ports Vsync]
##USB-RS232 Interface
set_property PACKAGE_PIN B18 [get_ports RsRx]
set_property IOSTANDARD LVCMOS33 [get_ports RsRx]
set_property PACKAGE_PIN A18 [get_ports RsTx]
set_property IOSTANDARD LVCMOS33 [get_ports RsTx]
##USB HID (PS/2)
set_property PACKAGE_PIN C17 [get_ports PS2Clk]
set_property IOSTANDARD LVCMOS33 [get_ports PS2Clk]
set_property PULLUP true [get_ports PS2Clk]
set_property PACKAGE_PIN B17 [get_ports PS2Data]
set_property IOSTANDARD LVCMOS33 [get_ports PS2Data]
set_property PULLUP true [get_ports PS2Data]
##Quad SPI Flash
set_property PACKAGE_PIN D18 [get_ports {QspiDB0}]
set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB0}]
set_property PACKAGE_PIN D19 [get_ports {QspiDB1}]
set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB1}]
set_property PACKAGE_PIN G18 [get_ports {QspiDB2}]
set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB2}]
set_property PACKAGE_PIN F18 [get_ports {QspiDB3}]
set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB3}]
set_property PACKAGE_PIN K19 [get_ports QspiCSn]
set_property IOSTANDARD LVCMOS33 [get_ports QspiCSn]
然后保存上述更新好的.xdc文件,同樣確保其在“pldconfig” 文件夾內(nèi)。接著,我們重新回到“pldconfig” 文件,檢查一下確保文件的修改日期與當(dāng)前的時(shí)間一致,而非你安裝Multisim時(shí)的時(shí)間。

當(dāng)上述步驟都完成好之后,讓我們回過(guò)頭來(lái)檢查一下,確保所做的所有努力都能行之有效。打開(kāi)Multisim并啟動(dòng)一個(gè)新的PLD?,F(xiàn)在,你會(huì)發(fā)現(xiàn)所有的板載I/O在配置操作步驟中,都能夠正常顯示并可供選擇。

到這里,所有的步驟與注意事項(xiàng)就都完成啦!如你所見(jiàn),使用Multisim對(duì)FPGA進(jìn)行編程是如此地簡(jiǎn)單方便。你所需要的僅僅只是具有一定的邏輯電路工作原理的知識(shí),而無(wú)需再去去學(xué)習(xí)掌握硬件描述語(yǔ)言了。如果你有興趣,趕緊拿起開(kāi)發(fā)板與Multisim跟著一步步嘗試一下吧!
-
FPGA
+關(guān)注
關(guān)注
1650文章
22217瀏覽量
627790 -
Multisim
+關(guān)注
關(guān)注
136文章
765瀏覽量
118804 -
Digilent
+關(guān)注
關(guān)注
2文章
219瀏覽量
16875
發(fā)布評(píng)論請(qǐng)先 登錄
開(kāi)發(fā)者福利 一文帶你了解Digilent Arty S7 FPGA開(kāi)發(fā)板
Digilent公司推出新型FPGA硬件開(kāi)發(fā)平臺(tái):NEXYSTM3開(kāi)發(fā)板
Digilent公司basys2開(kāi)發(fā)板的全套開(kāi)發(fā)例程
Digilent公司發(fā)布新款FPGA開(kāi)發(fā)板
利用FPGA開(kāi)發(fā)板進(jìn)行ASIC原型開(kāi)發(fā)的技巧
采用FPGA的原型開(kāi)發(fā)板進(jìn)行ASIC驗(yàn)證與開(kāi)發(fā)設(shè)計(jì)
digilent支持Python編程的Zynq開(kāi)發(fā)板介紹
digilent Spartan-7開(kāi)源創(chuàng)客開(kāi)發(fā)板介紹
digilent Artix-7 FPGA開(kāi)發(fā)板簡(jiǎn)介

使用Multisim對(duì)Digilent FPGA開(kāi)發(fā)板進(jìn)行編程的步驟解析
評(píng)論