来源 | 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开发板进行编程...相关推荐

  1. 手把手教你如何使用Multisim对Digilent FPGA开发板进行编程

    1.jpg (43.84 KB, 下载次数: 0) 下载附件 2017-6-1 20:03 上传 FPGA正在逐渐成为EECS专业的同学们在校期间学习掌握的一项必备技能.无论是在课程实验.竞赛作品.科 ...

  2. oracle表结构迁移麻不麻烦_干货分享 | 手把手教你get数据库迁移的正确姿势

    一.工具简介 GBase Migration Toolkit 是南大通用自主研发的数据对象迁移工具,能够以图形化界面形式,实现以任务为单位对不同数据库之间库元数据和用户数据的自动迁移. 该工具基于C/ ...

  3. python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

  4. 干货!手把手教你穿透内网

    干货!手把手教你穿透内网 干货!手把手教你穿透内网 cpolar内网穿透使用场景 如何使用cpolar内网穿透? ↓↓ 1. 注册cpolar账号 2. 安装cpolar内网穿透 2.1 Window ...

  5. python画图代码大全-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

  6. 易基因|干货:手把手教你做RNA m5C甲基化测序分析(RNA-BS)

    大家好,这是专注表观组学十余年,领跑多组学科研服务的易基因. 本期,我们讲讲m5C RNA甲基化重亚硫酸盐测序测序(RNA-BS)实验怎么做,从技术原理.建库测序流程.信息分析流程等方面详细介绍. 一 ...

  7. 干货 :手把手教你Tableau高级数据分析功能(附数据集)

    原文标题:A Step-by-Step Guide to learn Advanced Tableau – for Data Science and Business Intelligence Pro ...

  8. matlab中高频变压器怎么找,干货|手把手教你绕制高频变压器

    原标题:干货|手把手教你绕制高频变压器 绕制一个变压器所需材料:磁芯.骨架.各种铜线.麦拉胶带. 变压器参数: 磁芯:EE22 原边:134T(1-3脚),辅助:32T(5-4脚),输出:15T(10 ...

  9. 做产品没头绪?纯干货分享手把手教你

    做产品没头绪?纯干货分享手把手教你 如何做好一个产品? 可以参考一些大厂的团队,每次推广新的产品或者研发新的产品都是好几队人马同时较量留下最优秀的方案,然后这种人员配备在大部分的公司基本是不会实现的, ...

  10. linux can总线接收数据串口打包上传_「干货」手把手教你用Zedboard学习Linux移植和驱动开发...

    本文是昨天发的文章<龙芯杯CPU设计竞赛与ZYNQ设计流程介绍>接续部分.重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种. 部分硬件设计中需要CPU完 ...

最新文章

  1. Windows、VMware、Linux及开发板间的网络连接
  2. Bootstrap -- 插件: 按钮状态、折叠样式、轮播样式
  3. Windows使用自定义消息实现进程之间通信
  4. java 组合 遍历 算法_java编程n个集合每次从每个集合里面取出一个元素组成一个字符串列出所有组合算法...
  5. 二十七、单张图片上传预览
  6. Qt connect()的第五种重载[=](){}
  7. 62. WWW 服务器
  8. 第011讲 选择器使用细节 块元素和行内元素 盒子模型
  9. kNN算法__手写识别——基于Python和NumPy函数库
  10. java+整合handwrite_E-signature-master
  11. xmanager 出现Initialize Flexnet Service failed / Error code: 50003
  12. win10下安装Ubuntu16.04双系统 (gtx1050ti)(联想legion)
  13. Ubuntu下切换root用户认证失败解决方案
  14. arcmap制作地闪密度专题图
  15. Kinect_0:项目背景
  16. 5、hibernate第六课
  17. 效率系列(二) Win10常用快捷键
  18. c语言ftell的作用,C语言的文件随机访问fseek()和ftell()函数
  19. 利用JQuery实现HTML页面跳转
  20. 如何判断线性方程组是一个解还是无穷个解

热门文章

  1. recover 没有捕获异常_Golang学习笔记之错误处理error、panic (抛出错误),recover(捕获错误...
  2. 那些年我们听过的法则
  3. Completed shut down of DiscoveryClient
  4. 从零开始学习Prometheus监控报警系统
  5. 绿色数据中心“东数西算”全面启动
  6. C# 文件复制和移动操作(单个文件)
  7. 笔记本电脑突然搜索不到无线网信号怎么办?
  8. 【Unity】问题记录:Some objects were not cleaned up when closing the scene
  9. 为什么很多炫酷的产品并没能流行起来?
  10. 服务器HBA品牌、驱动和固件版本核查