1. 实验任务<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
让实验板上的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
end
endmodule
5. 实验步骤
(1)建立新工程项目:
打开Quartus II软件,进入集成开发环境,点击File→New project wizard建立一个工程项目led1。
(2)建立文本编辑文件:
点击File→New...,在该项目下新建Verilog HDL源程序文件led1.v,输入试验程序中的源程序代码保存后选择工具栏中的<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。
(3)选择器件型号及引脚的其他设置:
选择所用的FPGA器件→ EP2C8Q208C8,以及进行一些配置。选择配置器件EPCS4,设置不需要使用的IO功能为As inputs,tri-stated。点击两次ok,回到主界面。
(4)配置FPGA引脚:
在Quartus II软件主页面下,选择Assignments→Pins或选择工具栏上按钮,配置led[0]---led[7]以及clk的引脚。
(5)编译工程项目:
在Quartus II主页面下,选择Processing→Start Compilation或点击工具栏上的按钮启动编译,直到出现“Full Compilation Report”对话框,点击OK即可。
(6)波形仿真:由于本次试验比较简单,波形仿真将在后面实验详细讲解。
(7)下载设计程序到目标FPGA
6. 实验现象
第二个实验完成了,看到实验板上8个LED灯周期性的闪烁,是不是觉得这个实验比上个实验有意思呢?回想一下我们通过这个实验学会了什么?采用计数与判断的方式来实现分频的Verilog HDL的编程方法,你学会了没?应该有那么一点点收获吧!
实验教程配套开发板照片:
艾米电子工作室:http://www.amy-studio.com
艾米电子淘宝店:http://shop33537127.taobao.com/
文章评论(0条评论)
登录后参与讨论