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)

module led_test (led); //模块名 led_test
output[7:0] led; //定义输出端口
assign led=8‘b10101010; //输出 0x AA
endmodule

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

(2) 利用过程赋值语句来实现(文件名 led_test_1.v)

module led_test_1(led); //模块名 led_test_1
output[7:0]led; //定义输出端口
reg[7:0]led;
always
begin
led= 8‘b10101010; //输出 0xAA
end
endmodule

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

5. 实验步骤

1) 打开 Quartus II 软件并建立工程

( 1) 通过桌面上的快捷方式打开 Quartus II 9.1 软件, 进入集成开发环境, 软 件界面如图 1. 2 所示。

图 1. 2 Quartus II 软件界面

(2)在图 1.2 中选择 FileNew 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 主界面中选择 FileNew 打开新建文件对话框如图 1.9 所 示。

( 2) 选择 VerilogHDL File 点击 OK 建立一个空的 VerilogHDL 文件, 将实验程 序清单中的程序输入到文件中, 然后在在 Quartus II 主界面中选择 FileSave As 改名为 led_test.v 并保存。

( 3) 选择图 1.10 工具栏中的按钮启动编译, 若在编译中发现错误, 则找出 并更正错误, 直到编译成功为止。

图 1.10 led.v 文件编译对话框

3) 选择器件型号及器件和引脚的其他设置

(1) 选择器件型号

每种型号的 FPGA 芯片的引脚可能都不相同, 因此在进行引脚分配之前都应 选择相应的目 标 FPGA 芯片型号。 这一步在新建工程中已经完成, 这里目 的是初 学者了解, 在 Quartus II 工程创建好后仍然可以选择并修改器件型号。 在 Quartus II 软件主界面下选择 AssignmentsDevice 打开如图 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 软件主页面下, 选择 AssignmentsPins 或选择工具栏上 按钮打开如图 1.14 对话框。

( 2) 按照开发板各引脚对应关系, 在 To 栏中输入各引脚名称, 在 Location 栏中选择相应的引脚, 最终分配结果如图 1.14 所示。

( 3) 选择 File close 退出。

图 1.14 分配引脚对话框

5) 编译工程项目

在 Quartus II 主页面下, 选择 ProcessingStart Compilation 或点击工具栏上的按钮启动编译, 直到出现“ Full Compilation Report”对话框, 点击 OK 即可。

6) 波形仿真

由于本次试验比较简单, 波形仿真将在后面实验详细讲解。

7) 下载设计程序到目 标 FPGA

(1) 在 Quartus II 主页面下, 选择 ToolsPragrammer 或点击工具栏上的 将会出现如下图 1.15 所示窗口。

图 1.15 配置对话框

(2) 一切准备就绪后点击开始使用配置文件对 FPGA 进行配置, Progress 框中显示配置进度, 配置进度条为 100%时说明配置成功, 即可观察实验现象。

6. 实验现象

第一个实验终于完成了, 看到实验板上的 8 个 LED 灯间隔点亮, 是不是 特有成就感! 只要动手, 一切都这么简单! 让我们进行下面的实验吧! 以后 的实验将会更精彩!

 

完。

时间: 2024-10-04 09:23:28

FPGA学习笔记——点亮LED的相关文章

STM32学习笔记——点亮LED

STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1.输入浮空 2.输入上拉 3.输入下拉 4.模拟输入 5.开漏输出 6.推挽式输出 7.推挽式复用功能 8.开漏复用功能 stm32GPIO模式设置相关寄存器设置的介绍 stm32中文参考手册中对GPIO模式设置对应寄存器的详细介绍: 下图为开发板LED的接线图: 根据上面的电路图可知,将GPIOB

嵌入式学习笔记002-点亮led

正如编写第一个程序所打印"hello world"那样,对TQ2440开发板的初次使用也是从最简单的部分入手,点亮led灯无疑是最简单的,起码只要设置几个寄存器就好,比起打印容易得多了,后续会讲到串口部分再来实现我们这句金典的对白~~~~ 板子共有4个led灯,如果能够成功点亮其中一个,那么其他几个将不是问题,故而我们的目标是先点亮第一个先,在此我们必须理清几个问题: a. led的引脚连接的相关寄存器 b. 编写的语言 c. 用什么来编译链接成可执行文件 d. 怎么download到

HTML&CSS基础学习笔记7-高亮文本及组合使用

HTML提供了<mark>标签可以让你的文本高亮,这样看起来更加醒目.<mark>标签内的文本会呈现特殊的样式,它和<em>,<strong>一样也是一个带有语义的标签. 代码如下: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>高亮文本</title><

FPGA学习笔记(二)——FPGA学习路线及开发流程

###### [该随笔部分内容转载自小梅哥]       ######### 一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -> 时序分析 -> 片上系统 1.工具使用 Altera:Quartus II Xlinx: Vivado 2.语法学习 Verilog HDL(FPGA设计的是电路) 3. 逻辑设计 组合逻辑:多路选择器.加法器.译码器.乘法器 ······· 时序逻辑:计数器.分频器.移位寄存器.定时器 ···

ARM 学习笔记之二 LED点亮程序设计

第一步,先聊聊单片机 LED 点亮:         单片机可操作单个位:sbit    led1    =    P1    ^    2: 通过控制 变量 led1 来控制灯 的 亮 与 灭: #include <reg52.h> sbit led1 = P1 ^ 2; void delay(unsigned int xx)//延时 { int i = 0; while(xx--) { for(i = 0; i < 400; i++); } } int main() { while(

FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程(转)

很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部.即使MCU断电了再重新上电,程序也能继续运行.这是因为对MCU烧写固件 的实质就是将程序固件写入到MCU的片上程序存储器ROM中,而现代的大部分MCU这个ROM都是FLASH存储器.FLASH存储器能够掉电保持数据, 所以可以实现掉电程序不丢失.Altera或Xilinx的FPGA芯片,使用的是基于SRAM结构的查找表,而SRAM的一大特性就是掉电数据会丢失, 当我们使用JTAG将SRAM配置文件

FPGA学习笔记之IIC—EEPROM写和读

一.IIC总线协议特点及其工作原理 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备. 1)I2C总线特点 I2C总线最主要的优点是其简单性和有效性.由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本.总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件. I2C总线的另一个优点是,它支持多主控(multimastering),

Xilinx FPGA 学习笔记一时钟资源

在Xilinx的FPGA中,时钟网络资源分为三大类:全局时钟资源和区域时钟资源. 全局时钟资源是一种专用互连网络,它可以降低时钟歪斜.占空比失真和功耗,提高抖动容限.Xilinx的全局时钟资源设计了专用时钟缓冲与驱动结构,从而使全局时钟到达CLB.IOB和BRAM的延时最小. 区域时钟资源是独立于全局时钟网络的.Xilinx的器件分成若干个时钟区域,以Virtex-6为例,Virtex-6的最小器件有6个区域,最大器件有18个区域.它与全局时钟不同,区域时钟信号X只能驱动限定的时钟区域. 这里面

Xilinx FPGA 学习笔记一-chipscope 无法观察信号 BUFG

今天开始试着使用chipscope,写了一个简单的流水灯的例程,开始综合布线的时候没有问题,但是加上chipscope 以后,综合就总报错. 第一种情况:用chipscope不可以直接观察全局时钟信号,即BUFG信号-----X 错误如下: ERROR:Place:1136 - This design contains a global buffer instance, <PLL_u0/clkout1_buf>, driving the net, <CLK_OUT1>, that