好文档 - 专业文书写作范文服务资料分享网站

FPGA入门实验教程 适合初学者 

天下 分享 时间: 加入收藏 我要投稿 点赞

艾米电子工作室—让开发变得更简单 http://www.amy-studio.com

FPGA 入门系列实验教程——点亮LED

1. 实验任务

点亮发光二极管。通过这个实验,熟悉并掌握CPLD/FPGA 开发软件Quartus II 的使用方法和开发流程以及Verilog HDL的编程方法。

2. 实验环境

硬件实验环境为艾米电子工作室型号EP2C5T144 开发套件。 软件实验环境为Quartus II 8.1 开发软件。

3. 实验原理

FPGA 器件同单片机一样,为用户提供了许多灵活的独立的输入/输出I/O 口 (单元)。FPGA 每个I/O 口可以配置为输入、输出、双向、集电极开路和三态 门等各种组态。作为输出口时,FPGA 的I/O 口可以吸收最大为24mA 的电流, 可以直接驱动发光二极管LED 等器件。图1. 1 为8 个发光二极管硬件原理图, 本原理图对应艾米电子工作室型号为EP2C5T144 FPGA 开发板及接口板。通过 原理图可知如果要点亮这八个LED,所以只要正确分配并锁定引脚后,在相应 的引脚上输出相应高电平“1”,就可实现点亮该发光二极管的功能。本工作室开 发板均采用输出“1”点亮LED 的模式,以后就不再另作说明。

图1. 1 发光二极管LED 硬件原理图

艾米电子工作室—让开发变得更简单 http://www.amy-studio.com

FPGA 入门系列实验教程——LED 闪烁灯

1. 实验任务

让实验板上的8 个LED 周期性的闪烁。通过这个实验,熟悉并掌握采用计数 与判断的方式来实现分频的Verilog HDL 的编程方法以及Quartus II 软件的使 用方法和开发流程。

2. 实验环境

硬件实验环境为艾米电子工作室型号EP2C8Q208 增强版开发套件。 软件实验环境为Quartus II 8.1 开发软件。

3. 实验原理

艾米电子工作室开发套件板载50MHz 的时钟源,假如我们直接把它输入

到发光二极管LED,由于人眼的延迟性,我们将无法看到LED 闪烁,认为

它一直亮着。如果我们期望看到闪烁灯,就需要将时钟源的频率降低后再输

出。本实验采用计数与判段的方式来实现降低时钟源的频率。计数电路可用 计数器实现,每来一个时钟脉冲CLK,计数器就加1,而每当判断出计数器 达到某个数值时,把输出状态求反,就使得8 个LED 的亮灭反转一次,即: 周期性的输出高电平“1”和低电平“0”。这样设计相当于把50MHz 的时钟 源分频后输出。如果最终要使得LED 1S 闪烁一次,即输出1Hz 的时钟脉冲, 让计数器计到25000000 便可以让LED 亮0.5 秒、灭0.5 秒。

4. 实验程序

module led1 (clk ,led); // 模块名及端口参数 input clk; // 输入端口定义 output [7:0]led; // 输出端口定义

reg [7:0]led; // 输出端口定义为寄存器型

reg [25:0] buffer; // 中间变量buffer 定义为寄存器型 always@(posedge clk)

begin // 顺序语句,到end 止 buffer<=buffer+1; // 计数器buffer 按位加1

if(buffer==26'd25000000) //判别buffer 中的数值为25000000 时, //做输出处理 begin

led<=~led; // led[0]-led[7]反转一次。 buffer<=0; end

艾米电子工作室—让开发变得更简单 http://www.amy-studio.com

FPGA 入门系列实验教程——LED 流水灯

1. 实验任务

让实验板上的8 个LED 实现流水灯的功能。通过这个实验,进一步掌握采用 计数与判断的方式来实现分频的Verilog HDL 的编程方法以及移位运算符的 使用。

2. 实验环境

硬件实验环境为艾米电子工作室型号EP2C8Q208C8 增强版开发套件。 软件实验环境为Quartus II 8.1 开发软件。

3. 实验原理

流水灯,顾名思义就是让LED 象水一样的点亮。如果把流水做慢动作播放, 可以想象到其实就是移动,即:把水块不断地向同一方向移动,而原来的水块保 持不动,就形成了流水。同样,如果使得最左边的灯先亮;然后,通过移位,在 其右侧的灯,由左向右依次点亮,而已经亮的灯又不灭,便形成了向右的流水灯。 初始状态时,8 个灯都不亮。每来一个时钟脉冲CLK,计数器就加1。每当判断

出计数器中的数值达到25000000 时,就会点亮一个灯,并进行移位。FPGA 输出 的数据就应该首先是 10000000,隔 1 秒钟变成 11000000??一直变化到

11111111,这样,依次点亮所有的灯,就形成了流水灯。而当8 个灯都点亮时, 需要一个操作使得所有的灯恢复为初始状态,即:灯都不亮。然后,再一次流水 即可。如果是右移位,就出现向右流水的现象;反之,向左流水。

4. 实验程序

module ledwater(clk,led); // 模块名及端口参数 output [7:0] led; // 输出端口定义

input clk; // 输入端口定义,50M 时钟 reg[8:0] led_out; // 变量led_out 定义为寄存器型 reg[8:0] led_out1; // 变量led_out1 定义为寄存器型 reg[25:0]buffer; // 中间变量buffer 定义为寄存器型 always@(posedge clk) begin

buffer=buffer+1;

if (buffer==26'd25000000) // 判别buffer 数值为25000000 时,做输出处理 begin

led_out=led_out<<1; // led 向左移位,空闲位自动添0 补位 if(led_out==9'b000000000) led_out=9'b111111111;

艾米电子工作室—让开发变得更简单 http://www.amy-studio.com

FPGA 入门系列实验教程——LED 跑马灯

1. 实验任务

让实验板上的8 个LED 实现跑马灯的功能。通过这个实验,进一步掌握采用 计数与判断的方式来实现分频的Verilog HDL 的编程方法以及移位运算符的 使用。

2. 实验环境

硬件实验环境为艾米电子工作室型号EP2C8Q208C8 增强版开发套件。 软件实验环境为Quartus II 8.1 开发软件。

3. 实验原理

从LED[0]到LED[7]依次点亮,第二个灯点亮时第一个熄灭,每个灯交换的

时间为0.5S;看上去的效果就象一个亮点从LED[0] 跑向LED[7],然后重复此循

环,故命名跑马灯。初始状态时,LED[0]亮,其余熄灭。每来一个时钟脉冲CLK, 计数器就加1。每当判断出计数器中的数值达到25000000时,就会点亮LED[1],

同时LED[0]熄灭,并进行移位。这样,依次点亮所有的灯,就形成了跑马灯。而 当LED[7]点亮时,需要一个操作使得恢复为初始状态,即:LED[0]亮,其余熄 灭。然后,再进行一次跑马灯,重复此循环。如果是右移位,就出现向右跑马的 现象;反之,向左跑马。

4. 实验程序

module ledwalk(led,clk); input clk;

output [7:0] led; reg[7:0]led_out; reg[25:0]buffer;

always@(posedge clk) begin

buffer<=buffer+1'b1; if(buffer==26'd25000000) begin

led_out=led_out<<1;

if(led_out==8'b00000000) led_out=8'b00000001; end end

assign led=led_out;

endmodule

艾米电子工作室—让开发变得更简单 http://www.amy-studio.com

FPGA 入门系列实验教程——LED 花样彩灯

1. 实验任务

让实验板上的8 个LED 实现花样彩灯的功能。通过这个实验,进一步掌握采 用计数器实现分频的Verilog HDL 的编程方法以及case 语句的使用。

2. 实验环境

硬件实验环境为艾米电子工作室型号EP2C8Q208C8 增强版开发套件。 软件实验环境为Quartus II 8.1 开发软件。

3. 实验原理

本次试验是对前几个实验的总结,让LED逐步实现闪烁—流水灯—闪烁—跑 马灯—闪烁—对灯流水—闪烁,重复此循环即可实现彩灯显示功能。本次实验程 序采用case语句编写,程序比较通俗易懂,具体实现原理在前面实验都已详细讲 述,本次试验将不再重复。

4. 实验程序

module led_run(sys_clk,led); input sys_clk; output [7:0] led; reg [7:0] led; reg [24:0] count; reg [4:0] state; wire clk;

always @ (posedge sys_clk) count<=count+1'b1; assign clk=count[23];

always @ (posedge clk) begin case(state)

5'b00000: led=8'b11111111; 5'b00001: led=8'b00000000; 5'b00010: led=8'b10000000; 5'b00011: led=8'b11000000; 5'b00100: led=8'b11100000; 5'b00101: led=8'b11110000;

艾米电子工作室—让开发变得更简单 http://www.amy-studio.com

FPGA 入门系列实验教程——读取按键信号

1. 实验任务

通过开发板上的8 个按键控制发光二极管led1~led8 显示。通过这个实验,进 一步掌握case 语句的编程方法及FPGA I/O 口的输出控制。

2. 实验环境

硬件实验环境为艾米电子工作室型号EP2C8Q208C8 增强版开发套件。 软件实验环境为Quartus II 8.1 开发软件。

3. 实验原理

FPGA的所有I/O 控制块允许每个I/O 引脚单独配置为输入口,不过这种 配置是系统自动完成的。当该I/O 口被设置为输入口使用时,该I/O 控制模 块将直接使三态缓冲区的控制端接地,使得该I/O 对外呈高阻态,这样该I/O 引脚即可用作输入引脚使用。正确分配并锁定引脚后,一旦key1~key8 中有 键输入,即可在检测到按键输入的情况下,继续判断其键值并作出相应的处 理。如key4 按下,则发光二极管led1~led4 亮。

FPGA入门实验教程 适合初学者 

艾米电子工作室—让开发变得更简单http://www.amy-studio.comFPGA入门系列实验教程——点亮LED1.实验任务点亮发光二极管。通过这个实验,熟悉并掌握CPLD/FPGA开发软件QuartusII的使用方法和开发流程以及VerilogHDL的编程
推荐度:
点击下载文档文档为doc格式
2b5fl9aryw0ne2d1fayt
领取福利

微信扫码领取福利

微信扫码分享