高级的嵌入式市场主要分为以下三类:ARM、DSP 和 FPGA。

其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构;而 DSP(数字信号处理器) 早年就被大面积的应用与电话、DVD、通讯基站等领域。DSP 与 ARM 的区别在于,ARM 是通用 CPU,DSP 则是专用 CPU。FPGA 则与他们不同,FPGA 的名称的由来是由于 FPGA 功能的成型是在实验室等通常工作环境下进行的;区别与专有集成电路 (ASIC)在晶圆工厂的制造,所以 FPGA 被称为是 现场可编程门阵列。

我的开发板是 黑金 AX301,当时傻乎乎的以为 FPGA 一定是比 51 高级的芯片,在商品介绍图片上的 VGA 接口,考虑到我的是笔记本电脑的显示器不可外接,在调试时需要一个外接屏幕显示打印信息,于是又另买了个 7寸的 VGA 显示器(-____-)。

我的开发板长这个样子(红色的配套的下载器,必须的):

拿到开发板后,需要做的事情:

  1. 看看板子附带的光盘资料,包括用户手册、原理图等等。熟悉下资料。
  2. 第二步,altera 官网注册一个账号,下载一个 Quartus 软件。
  3. 熟悉光盘里的资料。
  4. 按照视频上的要求打开一个 Quartus 工程(.qpf 结尾)。
  5. 装好 USB-Blaster 驱动连上开发板的 Jtag 口,下载一个(.sof)文件看看效果。
  6. 按照 PDF 教程里的说明转化(.sof)文件文件为(.jic)文件,并烧录到 EPCS 里去。

Quartus 有 免费使用 的网络版本,免费版本与注册版本的区别如下:

  1. 免费版没有多线程编译的功能,如果是多核 CPU,免费版只会使用其中一个 CPU,编译速度会慢一些。
  2. 免费版如果使用了 IP 核,生成的烧录文件(.sof)只能在线使用(一直连着电脑),而(.pof)只能使用一个小时。
  3. 免费版中 Qsys 或者 SOPCBuilder中只能使用 NIOS 精简核,否则 quartus 编译报错。

Quartus 其他版本的区别:

  1. 9 ~ 10 版本中默认包括了图形仿真激励输入工具,10 ~ 12 版本中又把他删除了,但在 13 之后的版本再次添加该工具,如果没有图形仿真激励输入工具要想仿真只能通过编写 testbench 脚本,testbench 脚本的编写和 Modelsim 的操作方法对于初学者而言会是个巨大的障碍。
  2. 11 版本之后 Qsys 会代替 SOPCbuilder 用于构建 NIOS 处理器。
  3. 14 版本之后的 Quartus 只存在对 64 位机器的支持,而 Modelsim 目前只有 32位版本的。也就是说,如果用户安装了 14 之后的版本,在运行 Modelsim仿真软件时需要 CPU 的虚拟化功能。

总的来说,对于入门而言免费的版本就足够了。

黑金社区为开发板制作了整套 PDF 教程,而且难得文笔轻松活泼。可惜对我而言笔记性质的教程是教不会初学者什么,想要看懂那些教程需要事先有硬件从业者的经历以及相关知识。

此外光盘上还附带有夏文宇老师的《数字逻辑设计》 PDF 版,这本书从语法的角度详细描述了 verilog 语言,但可能由于成书较早,书中并没有严格的区分可综合逻辑和不可综合逻辑,更要命的是没有介绍实验的方法,读者并不知道该用什么软件来练习书中的例子。

当时在网上查不到任何关于 verilog 的入门视频,只能去买本《FPGA数字逻辑设计教程——Verilog》作为教材硬着头皮去啃了。意外的的是老外写的书着实质量不错,可惜译作是以 xilinx 公司的 FPGA 作为练习的例子,使用 ISE 作为开发环境。本以为多多少少的会有些问题,但 verilog 语言强大的通用性消去了不同厂家产品的区别;当我试着把书中的多个开关输入改为常数,把多个 LED 灯减少到不超过 4 个 LED 灯作为练习,一年下来的入门学习并没有受到什么影响。

上面讲的英文词汇,可能会让人觉得云里雾里,难以理清它们之间的关系和区别。这里简单的以 51 单片机作为对比,介绍下 FPGA 的相关术语。

名称

FPGA

FPGA

8051

生产厂商

Altera

Xilinx

STC

设计工具

Quartus

ISE

Keil

语言

Verilog HDL、VHDL

Verilog HDL、VHDL

C

最后讲一下 Quartus 的安装,Quartus 是 Altera 公司的产品,它同时支持 Windows 和 Linux 操作系统。其中 Web 版本的下载和使用是免费的,任何人可以到 Altera 官网去注册下载,百度搜索也可以得到一些下载链接,这里假设您已经下载好了对应您机器的版本。

无论是下载组合包,还是独立文件或者是 DVD 镜像,解压后应该能找到类似以下的一些文件,当然不同的版本会有些区别:

双击 setup.bat 或者 QuartusSetup.exe 开始安装,安装中可能会出现窗口假死的情况,这是由于磁盘读写达到上限所导致的:

许可证,不管他,(¬︿̫̿¬☆)哼。

安装路径选择,不想失败的话就不要做任何修改,默认的是在 C:\altera\13.0sp1,不是在 C:\Program Files\altera\13.0sp1。安装目录不允许有任何中文、空格或者特殊符号;同样的,工程目录也是如此。

Quartus 安装选项,64 位机器的请勾上 Quartus II 64-bit support,Modelsim-Altera 也存在免费和付费的版本。

如果安装了 DSP Builder 就会有这一步,DSP Builder 可以联合 Matlab 进行 DSP 的设计,这里我没有装 Matlab,需要的同学请自行设定。

准备安装,这里需要大约 9G,显示分区空余 57G。

耐心的等上大约 30 分钟,配置好的可能会快一些,安装过程中会有些小弹窗。

完毕,下图的三个选项是:是否创建桌面快捷方式、是否立即启动 Quartus 软件、是否反馈用户信息。

装完后,如果提示没有安装器件库,像这样:

点击上图中的确定或是在 Tool 菜单中打开器件安装工具,注:较老版本的 Quartus 没有这个 Install Devices 选项:

找到你存放器件库压缩包(.qdz)的目录:

选择要安装的器件库,如果目录下有多个 qdz 文件,这里会显示更多。

成功,Quartus 安装完成。o(^▽^)o

我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装的更多相关文章

  1. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  2. Java-2-学习历程2:基础知识1,2,3文档、完整版视频资源、电子书籍下载

     Java学习历程:基础知识1,2,3文档.完整版视频资源.电子书籍 1.基础知识1,2.3可到下面地址下载: http://download.csdn.net/detail/iot_li/886 ...

  3. 【java基础】01 计算机基础知识

    一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...

  4. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  5. 《Python基础教程(第二版)》学习笔记 -> 第一章 基础知识

    写笔记的原因:书也看了一遍,视频也看了,但总是感觉效果不好,一段时间忘记了,再看又觉得有心无力,都是PDF的书籍,打开了就没有心情了,上班一天了,回家看这些东西,真的没多大精力了,所以,我觉得还是把p ...

  6. Web学习篇之---css基础知识(一)

    css基础知识(一) 1.css样式: 载入css样式有下面四种: 1).外部样式 2).内部样式 3).行内样式 4).导入样式 <link href="layout.css&quo ...

  7. Spring笔记01(基础知识)

    1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...

  8. FreeRTOS学习笔记——FreeRTOS 任务基础知识

    RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...

  9. Web学习篇之---html基础知识(一)

    html基础知识(一) 本篇文章主要介绍HTML头部所包括的信息. 一.下面都是在标签<head>...</head>之间的内容: 1.<title>-</t ...

随机推荐

  1. Linux下批量杀掉 包含某个关键字的 程序进程

    有时候因为一些情况,需要把 linux 下符合某一项条件的所有进程 kill 掉,又不能用 killall 直接杀掉某一进程名称包含的所有运行中进程(我们可能只需要杀掉其中的某一类或运行指定参数命令的 ...

  2. CAD快捷键

    F1: 获取帮助 F2: 实现作图窗和文本窗口的切换 F3: 控制是否实现对象自动捕捉 F4:数字化仪控制 F5: 等轴测平面切换 F6: 控制状态行上坐标的显示方式 F7: 栅格显示模式控制 F8: ...

  3. 分布式系列十: Redis安装和命令

    redis是一个开源的, 内存数据结构存储, 一般用来作为数据库,缓存和消息代理. Redis的优势 多种数据结构 字符类型String 散列类型Hash 列表类型List 集合类型Set 有序集合类 ...

  4. JavaWeb之html

    html :Hyper Text Markup Language 超文本标记语言 超文本:比文本功能更加强大 标记语言:通过一组标签对内容进行描述的一门语言 html书写规则: 文件的后缀名:.htm ...

  5. GX/GZOI2019 day2 解题报告

    GX/GZOI2019 day2 解题报告 题目链接 逼死强迫症 旅行者 旧词 t1 逼死强迫症 显然地,记 \(f(i)\) 为长度为 \(i\) 的木板的答案,可得: \(\\\) \[f(i)= ...

  6. codeforces 1151 B

    codeforces 1151  B codeforces 1151  B  1600fen 题意:n*m的矩阵,问能否从n行中每行选一个数 异或 大于0 解析:刚开始看没思路,想用dfs跑一遍,看到 ...

  7. .Net业务搭配实用技术栈(转)

      前言 昨天有篇文章在讨论webform的设计思路,我已经四五年不用webform了,虽然它也提供了HttpModule和httphandle来处理请求,提供了一般处理程序ashx来简化处理流程,但 ...

  8. Android运行时权限

    Android 6.0加入了运行时权限这一概念.对于危险权限,应用必须在使用的时候进行申请.可以使用命令行查看危险权限:adb shell pm list permissions -d -g CALE ...

  9. (原创)lua日期、时间、时间戳的计算和转换

    ----------------------------------------------日期与时间 print("当前时间戳:") local nowTime = os.tim ...

  10. 高可用Redis(四):列表,集合与有序集合

    1.列表类型 1.1 列表数据结构 左边为key,是字符串类型 右边为value,是一个有序的队列,与python的列表结构相同 可以在Redis中对列表的value进行如下操作 从左边添加元素 从右 ...