FPGA学习笔记——点亮LED
软件平台:win7(64bit) + Quartus II 9.1 (64-Bit)
硬件平台:东理电子Easy-FPGA Cyclone II EP2C5T114C8N
这个开发板买了很长时间了,买来后一直放那,下面来一个点灯的例子。
1. 实验任务
点亮发光二极管。 通过这个实验, 熟悉并掌握 CPLD/FPGA 开发软件 Quartus II 的使用方法和开发流程以及 Verilog HDL 的编程方法。
2. 实验环境
软件实验环境为 Quartus II 9.1 开发软件。
3. 实验原理
FPGA 器件同单片机一样, 为用户提供了许多灵活的独立的输入/输出 I/O 口 (单元)。 FPGA 每个 I/O 口可以配置为输入、 输出、 双向、 集电极开路和三态 门等各种组态。 作为输出口时, FPGA 的 I/O 口可以吸收最大为 24mA 的电流, 可以直接驱动发光二极管 LED 等器件。 图 1. 1 为 8 个发光二极管硬件原理图。 通过 原理图可知如果要点亮这八个 LED, 所以只要正确分配并锁定引脚后, 在相应 的引脚上输出相应低电平“ 0”, 就可实现点亮该发光二极管的功能。

图 1. 1 发光二极管 LED 硬件原理图
4. 实验程序
(1) 利用连续赋值 assign 语句来实现(文件名 led_test.v)
(2) 利用过程赋值语句来实现(文件名 led_test_1.v)
5. 实验步骤
1) 打开 Quartus II 软件并建立工程
( 1) 通过桌面上的快捷方式打开 Quartus II 9.1 软件, 进入集成开发环境, 软 件界面如图 1. 2 所示。

图 1. 2 Quartus II 软件界面
(2)在图 1.2 中选择 File→ New project wizard 来新建一个工程。 新建工程 向导说明对话框如图 1.3 所示

图 1.3 新建工程向导说明对话框
(3)在图 1.3 中单击 Next 进入如图 1.4 所示对话框

图 1.4 新建工程路径、 名称、 顶层实体指定对话框
(4)在图 1.4 中单击 Next 进入如图 1.5 所示对话框

图 1.5 新建工程添加文件对话框
(5) 在图 1.5 中单击 Next 进入如图 1.6 所示对话框。 在该对话框中指定目 标器 件, 这里 我们选择的是 Cyclone II 系 列 的 EP2C5T144C8

图 1.6 新建工程器件选择对话框
(6) 指定完器件后, 单击 Next 进入如图 1.7 所示对话框。 本实验利用的集成环 境开发,不使用第三方的 EDA 工具, 采用默认设置。

图 1.7 新建工程 EDA 工具设置对话框
(7) 单击图 1.7 中的 Next 进入如图 1.8 所示对话框。 从该对话框中, 可以看到 工程配置信息报告。单击 Finish 完成新工程的建立。

图 1.8 新建工程配置信息报告对话框
2) 建立文本编辑文件
( 1) 在 Quartus II 主界面中选择 File→New 打开新建文件对话框如图 1.9 所 示。

( 2) 选择 VerilogHDL File 点击 OK 建立一个空的 VerilogHDL 文件, 将实验程 序清单中的程序输入到文件中, 然后在在 Quartus II 主界面中选择 File→Save As 改名为 led_test.v 并保存。
( 3) 选择图 1.10 工具栏中的
按钮启动编译, 若在编译中发现错误, 则找出 并更正错误, 直到编译成功为止。

图 1.10 led_test.v 文件编译对话框
3) 选择器件型号及器件和引脚的其他设置
(1) 选择器件型号
每种型号的 FPGA 芯片的引脚可能都不相同, 因此在进行引脚分配之前都应 选择相应的目 标 FPGA 芯片型号。 这一步在新建工程中已经完成, 这里目 的是初 学者了解, 在 Quartus II 工程创建好后仍然可以选择并修改器件型号。 在 Quartus II 软件主界面下选择 Assignments→Device 打开如图 1.11 所示对话框。在该对话 框中指定所需的目 标器件型号。

图 1.11 器件选择对话框
(2) 器件和引脚的其他设置
单击图 1.11 中的 Device and Pin Options 打开 Device and Pin Options 对话框, 在该对 话框中选择 Configuration 选项卡, 并按图 1.12 所示进行设置, 即采用串行配置 器件 EPCS1 的主动配置方式。 在 Device and Pin Options 对话框中选择 Unused Pins 选项卡对未使用的引脚按照图 1.13 所示设置为高阻输入。

图 1.12 Configuration 设置

图 1.13 未用引脚设置
4) 分配 FPGA 引脚
( 1)在 Quartus II 软件主页面下, 选择 Assignments→Pins 或选择工具栏上
按钮打开如图 1.14 对话框。
( 2) 按照开发板各引脚对应关系, 在 To 栏中输入各引脚名称, 在 Location 栏中选择相应的引脚, 最终分配结果如图 1.14 所示。
( 3) 选择 File Close 退出。

图 1.14 分配引脚对话框
5) 编译工程项目
在 Quartus II 主页面下, 选择 Processing→Start Compilation 或点击工具栏上的
按钮启动编译, 直到出现“ Full Compilation Report”对话框, 点击 OK 即可。
6) 波形仿真
由于本次试验比较简单, 波形仿真将在后面实验详细讲解。
7) 下载设计程序到目 标 FPGA
(1) 在 Quartus II 主页面下, 选择 Tools→Pragrammer 或点击工具栏上的 将会出现如下图 1.15 所示窗口。

图 1.15 配置对话框
(2) 一切准备就绪后点击
开始使用配置文件对 FPGA 进行配置, Progress 框中显示配置进度, 配置进度条为 100%时说明配置成功, 即可观察实验现象。
6. 实验现象
第一个实验终于完成了, 看到实验板上的 8 个 LED 灯间隔点亮, 是不是 特有成就感! 只要动手, 一切都这么简单! 让我们进行下面的实验吧! 以后 的实验将会更精彩!
完。
参考资料:
FPGA不同下载方式的区别【扫盲】以及如何利用AS模式固化程序
FPGA学习笔记——点亮LED的更多相关文章
- STM32学习笔记——点亮LED
STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1 ...
- FPGA学习笔记(二)——FPGA学习路线及开发流程
###### [该随笔部分内容转载自小梅哥] ######### 一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -& ...
- FPGA学习笔记(七)——FSM(Finite State Machine,有限状态机)设计
FPGA设计中,最重要的设计思想就是状态机的设计思想!状态机的本质就是对具有逻辑顺序和时序规律的事件的一种描述方法,它有三个要素:状态.输入.输出:状态也叫做状态变量(比如可以用电机的不同转速作为状态 ...
- FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程(转)
很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部.即使MCU断电了再重新上电,程序也能继续运行.这是因为对MCU烧写固件 的实质就是将程序固件写入到M ...
- FPGA学习笔记(八)—— 状态机设计实例之独立按键消抖
###### [该随笔中部分内容转载自小梅哥] ######### 独立按键消抖自古以来在单片机和FPGA中都是个不可避免的问题,首先,解释一下什么叫做按键抖动,如图,按键在按下和松开的那个瞬间存在大 ...
- FPGA学习笔记(六)—— 时序逻辑电路设计
用always@(posedge clk)描述 时序逻辑电路的基础——计数器(在每个时钟的上升沿递增1) 例1.四位计数器(同步使能.异步复位) // Module Name: coun ...
- FPGA学习笔记之按键控制
参考: [黑金原创教程][FPGA那些事儿-驱动篇I ]实验二:按键模块① - 消抖 源码如下: key_funcmod.v module key_funcmod(clk, rst, key, led ...
- FPGA学习笔记(三)—— 数字逻辑设计基础(抽象的艺术)
FPGA设计的是数字逻辑,在开始用HDL设计之前,需要先了解一下基本的数字逻辑设计-- 一门抽象的艺术. 现实世界是一个模拟的世界,有很多模拟量,比如温度,声音······都是模拟信号,通过对模拟信号 ...
- FPGA学习笔记(一)——初识FPGA
###### [该随笔部分内容转载自小梅哥] ######### FPGA(Field-Programmable Gate Array,现场可编程门阵列),正如其名,FPGA内部有大量的可 ...
随机推荐
- Python 解析式、生成器
标准库datetime datetime模块 对日期.时间.时间戳的处理 datetime类 类方法 today() 返回本地时区当前时间的datetime对象 now(tz=None) 返回当前时间 ...
- 《CNCF × Alibaba云原生技术公开课》知识点自测(三):Kubernetes核心概念
(单选)1.Kubernetes的中文含义是___. A. 船 B.舵手 C.容器平台 D.起重机 (单选) 2.Kubectl是_____. A. 一个与Kubernetes集群进行交互.管 ...
- 【计算机视觉】OpenCV读取视频获取时间戳等信息(PS:经测试并不是时间戳,与FFMPEG时间戳不一样)
OpenCV中通过VideoCaptrue类对视频进行读取操作以及调用摄像头,下面是该类的API. 1.VideoCapture类的构造函数: C++: VideoCapture::VideoCapt ...
- 关于PADS的一些概念和实用技巧(二)
关于PADS的一些概念和实用技巧(二) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 1. 关于制作part 首先在logic中绘制CAE封装,在保存元件时 ...
- webkit浏览器下改变滚动条样式
/*定义滚动条轨道 内阴影+圆角*/ ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); ba ...
- 哈夫曼编解码压缩解压文件—C++实现
前言 哈夫曼编码是一种贪心算法和二叉树结合的字符编码方式,具有广泛的应用背景,最直观的是文件压缩.本文主要讲述如何用哈夫曼编解码实现文件的压缩和解压,并给出代码实现. 哈夫曼编码的概念 哈夫曼树又称作 ...
- 乐字节Java反射之四:反射相关操作
大家好,乐字节小乐继续为Java初学者讲述Java基础知识.上次说到乐字节Java反射之三:方法.数组.类加载器,这次是Java反射之四:反射相关操作 1.操作属性 //1.获取Class对象 Cla ...
- airflow删除dag不在页面显示
当我们需要把dag删除的时候,遇到了删除了相应的dag文件,但页面还是显示 这个时候需要重启airflow 的webserver ps -ef|egrep rm -rf /home/airflow ...
- GFS(Google File System,谷歌文件系统)----(1)文件系统简介
分布式文件系统 系统是构建在普通的.廉价的机器上,因此故障是常态而不是意外 系统希望存储的是大量的大型文件(单个文件size很大) 系统支持两种类型读操作:大量的顺序读取以及小规模的随机读取(larg ...
- 数据结构 -- 二叉树(Binary Search Tree)
一.简介 在计算机科学中,二叉树是每个结点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用于实现二叉查找树和二叉堆. ...