来源 | Digilent中文技术社区

作者 | 阿Q

FPGA正在逐渐成为EECS专业的同学们在校期间学习掌握的一项必备技能。无论是在课程实验、竞赛作品、科研项目还是未来求职过程中,拥有FPGA技能包对每一名电类工科生而言都会是一项不小的加分项。

对于想要学习着手开始学习FPGA的童鞋们,我们有一则坏消息和一则好消息。先说坏消息:现今每家FPGA厂商都有其专属的开发工具链,这也意味着要想对不同的FPGA开发板进行编程,你首先得熟悉掌握不同的开发工具链,而这往往并不简单。接下来的好消息你一定会眼前一亮:现在,你可以使用Multisim这一在电路实验中无处不在并广受欢迎的电路搭建与仿真工具来对多款Digilent FPGA开发板进行编程了!是的,你没有听错哦。只需要一些基本的设置,你所熟悉的Multisim就将成为助你探索FPGA奇妙世界的一项利器。

在今天分享的教程中,我们就将手把手一步步教你如何使用Multisim对Digilent FPGA开发板进行编程。如果你有兴趣,赶紧跟着我们一起来操作吧!

——阿Q

1获取正确的工具

想要使用Multisim来对Digilent FPGA开发板进行编程,你首先得安装一些必要的软件:

LabVIEW 2014或更新版本

Multisim 14.0或更新版本

Vivado 2014.4或更新版本

第一步记得先安装LabVIEW,这是由于Multisim的一些文件需要在装好LabVIEW的基础上才能实现交互运作。当上述每一个软件装好之后,记得重启电脑以使其生效。

在这里,我所安装的是LabVIEW 2016版,默认安装路径为:“C:\Program Files\National Instruments”而非“C:\Program Files (x86)\National Instruments”。由于Multisim会与LabVIEW产生交互,故而我选择将LabVIEW目录调整为“C:\Program Files (x86)\National Instruments”,以确保两个软件在同一目录下。

当前,Multisim支持对以下型号搭载Xilinx Aritx-7芯片的Digilent FPGA开发板进行编程,包括:

●Basys 3

●Nexys 4 DDR

●Arty A7

●CMOD A7

要想正确将Mulisim与Vivado实现关联,你同时需要下载安装相关的FPGA工具。点击「阅读原文」下载安装NI LabVIEW FPGA Vivado 2014.4工具包。

下载页中所推荐的“NI Download Manager”选项可以帮你获取一个较小的下载文件,在此基础上帮你再下载工具包所需的安装文件。对应的,“Browser Download”选项直接帮助你获取一个*.iso镜像下载文件,并随后会直接自动安装到你的电脑光驱上。这里你可以选择任意一种你喜欢的方式进行下载安装。

如果*.iso镜像文件下载完毕后没有自动进入安装程序,你可以在默认下载路径中双击它来启动安装程序。

点击“Next”然后输入安装文件包中所包含的任一序列号。我使用的是LabVIEW序列号。

之后软件会自动搜索更新文件。一路选择“Accept”,然后单击“Next”。

随后,点击“Next”以接受3 License Agreements 。

之后,再点击一次“Next”即可开始安装。

安装完毕之后,记得务必重启你的电脑。然后进入“C:\NIFPGA\programs\Vivado2014_4\data\xicom\cable_drivers\nt64\digilent”,单击运行“install_digilent.exe”文件以安装Digilent Adept程序(如果提示需要的话)。

到这里,所有的软件程序及关联组建就都安装完毕了。接下来我们开始进行Multisim编程部分的讲解。

2FPGA“代码编写”概述

通常,用于FPGA芯片的代码我们都是通过硬件描述语言来编写,其中最为广泛使用的即是VHDL或Verilog。绝大多数的硬件描述语言都可归结为使用两种不同的设计理念来编写代码:结构性或行为性。上述两种方式指的不是某种特定的语言,而是思考如何编写代码的两种概念方法。当然,你也可以在同一个项目中,同时使用结构性与行为性两种方法,只要你觉得没有问题的话。

在行为性设计中,我们简单地阐述所想要做的编译操作,代码会自行在某一特定背景下以芯片能够理解的方式“施展它的魔力”。以下是一个带有进位的二位全加法器的代码示例:

// 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

当你增加3位时,你所能获得的最大值为十进制的3,或二进制的11,因此在这里我们需要'sum'值对于'sum'位数而言是一个二位占位符。编译器明白“+”的意义,并创建了一个二进制代码来完成这一任务。S与Cout位被对应的分配给'sum'中的相应位数。

相对应的,结构性设计是一种对于“实现正确处理输入数据的精确逻辑”的明确描述,以下是对于同一全加法器的结构性描述代码示例:

// 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

在这一代码示例中,我们已经明确告知编译器我们是如何希望所输入的数据被逻辑处理的。编译器再一次“施展它的魔力”并以芯片能够理解的方式编译文件。

这里写了这么多是想告诉你:由于Multisim是一款使用图形进行电路设计的工具,故而我们将使用结构性设计方式来“编写”我们的代码,但这里我们将用的是图形而非文本语言。如何理解这句话?图1即为针对上述同一全加法器的Multisim实现(直接从Multisim画布中复制过来)。这次你会发现我们使用的是图形化的逻辑门:

通过上述方式,我们使用Multisim十分清晰地构建了一个逻辑电路。试想,如果想要视觉化地来描述电路的结构而不使用结构性编程方法的话,难道还能有其它第二种方法吗?

以上就是使用Multisim来对FPGA开发板进行编程的全部基础知识所需。下面让我们进一步瞅瞅如何来进行编程。

3现在让我们用Multisim来编写一些代码

使用Multisim来对FPGA开发板编程,更像是在画画,只是你首先需要有设计思路。这里,我们还是从设计一个先前提到的二位全加法器开始。

打开Multisim,你会看到一个默认的空白画布(canvas),用以设计或仿真模拟电路。

将鼠标移动到左上角,单击“File”然后选择“New”。

弹出窗口中,点击顶端的“PLD design”按钮,然后点击底部的“Create”按钮。

下一个跳出的窗口会让你去选择你的配置文件。在这里,你可以选择各种Multisim所支持的Digilent FPGA开发板定义,这些都已经在软件安装过程中被加载入。此处,你可以从下拉框中选择一种标准定义,或是加载一个自定义的配置文件(如果你有的话),再或是创建一个空白的PLD项目。在这一教程中,我将使用的是Digilent Basys 3 FPGA开发板。在选择好对应的开发板后,点击“Next”。

在下一个窗口中,给你的项目取一个名字。然后点击下一步。

之后的一个窗口中,你可以选择你希望加入到项目中的开发板所对应的全部I/O外设。在我的项目中,我需要5个LED,3个开关,因此我选择LED0 → LED4 and SW0 → SW2。选择好之后,点击“Finish”。

现在,PLD项目会在Multisim窗口左侧的Design Toolbox(设计工具箱)中出现,同时canvas(画布)上会显示你所选择的I/O接口。

我们有两种放置组件的方式。第一种方式为点击工具栏中的AND门小图标。这会帮你打开组件选择窗口,并默认对应到"PLD Logic"组过滤器。第二种方式为点击顶部菜单栏中的“Place”按钮,然后选择"Component" ,同样会帮你打开组件选择窗口。

在此教程中,我们将使用基础逻辑门,所以我们在左侧菜单栏中选择它,并高亮你准备放置的第一个门。放置好之后,选择下一个门。重复操作放置,直到所有的都放置完毕。在这个二位全加法器中,我们需要2个XOR2,2个AND2,和1个OR2门。将所有的门连接起来。需要注意的是,在这里你可以更改接口的标签,但并不鼓励你这样做。

4使用Multisim对FPGA开发板进行编程

下一步,我们将代码部署到FPGA中去。这里,我们首先要确保FPGA开发板通过USB线已经连上电脑,并将之开关打开。然后,点击Mulitisim菜单栏中的“Transfer”,并选择“Export to PLD...”。

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并删除内容。

0

0

更多推荐

fpga板子怎么和电脑连_干货教程 | 手把手教你如何使用Multisim对Digilent FPGA开发板进行编程...