设计实例
3.1.1 流水灯设计
3.1.1 试验任务
8个LED灯依次顺序点亮,产生流水效果,相邻LED灯发光时间间隔大约为0.5s,人眼可以明显感知到这个间隔。
3.1.2 程序设计
1、设计思路
通过控制1/O口的高低电平可以实现LED发光或者熄灭,但是该怎样使用计数器实现延时呢?
实验要求相邻的LED时间间隔为0.5s,FPGA开发板的晶振为50MHz,所以有0.5s/20ns=25000000(224<25000000<225),需要25位计数位宽。当有效位计数达到最大值时,实现翻转(全1变全0,往高一位进1)。
本实验使用两个计数器。第一个计数器实现延迟间隔,计数器位宽为25bit,计数器命名为counter;第二个计数器控制哪个LED灯亮,计数器位宽为3bit,计数器命名count。
counter会一直持续计数,计数到最大值后,会翻转为0.当counter每计数至0的时候, count加1;当count计数到最大值后,也会翻转为0。
2、源代码
module LED(
input sys_clk,
input sys_rst_n,
output reg[7:0] LED
);
reg [2:0] count;
reg [24:0] counter;
always @(posedge sys_clk or negedge sys_rst_n) begin
if (sys_rst_n == 1‘b0)
counter <= 25‘b0;
else
counter <= counter + 25‘b1;
end
always @(posedge sys_clk or negedge sys_rst_n) begin
if(sys_rst_n == 1‘b0)
count <=3‘b0;
else if(counter == 25‘d0)
count <= count + 3‘b1;
else ;
end
always @(posedge sys_clk or negedge sys_rst_n) begin
if(sys_rst_n == 1‘b0)
LED <= 8‘b0;
else begin
case(count)
0:LED = 8‘b00000001;
1:LED = 8‘b00000010;
2:LED = 8‘b00000100;
3:LED = 8‘b00001000;
4:LED = 8‘b00010000;
5:LED = 8‘b00100000;
6:LED = 8‘b01000000;
7:LED = 8‘b10000000;
default:LED = 8‘b00000000;
endcase
end
end
endmodule
3.2 按键控制LED实验
3.2.1 按键控制LED简介
按键是最常用的输入设备,广泛用于单片机/FPGA/DSP的输入控制,操作人员可以通过按键输人数据或者命令,实现简单的人机对话。FPGA开发板使用的按键是一种常开型的开关,通常按键的两个触点不按下时处于断开状态,按下时处于闭合状态。
本实验使用按键控制发光二极管。发光二极管输入为高时发光,按键默认未按下时由于上拉电阻原因输出高电平,所以需要将按键输入取反后赋值给发光二极管输入端,即可控制发光二极管发光。按键未按下时LED灯处于熄灭状态,按键按下时LED灯处于点亮状态。
3.2.3 实验任务
一个按键控制两个发光二极管,按下按键的可以使两个LED灯发光,未按下时两个LED灯不发光。
3.2.4 程序设计
1、设计思路
输入为4个按键,输出为8个LED,按键按下时按键输入为低电平,而LED需要驱动为高电平才能亮,所以需要对按键输入进行取反,作为LED的输入。
2、源代码
module KeyToLED(
input [3:0] key,
output wire [7:0] LED
);
assign LED = ~{key,key};
endmodule
3.3 七段数码管静态显示实验
3.3.1 数码管简介
数码管由7个条状和一个点状发光二极管制成,通过七段发光二极管亮暗的不同组合,可以显示多种数字,字母以及其他符号。
2.LED数码管分类
(1)共阴极接法(也叫共阴数码管)
把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输人高电平的段发光二极管就导通点亮,而输入低电平的段发光二极管则不点亮。
(2)共阳极接法(也叫共阳数码管)
把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V,这样阴极端输人低电平的段发光二极管就导通点亮,而输入高电平的段发光二极管则不点亮。
数码管的逻辑图如图3.8所示,全部由发光二极管组合构成。

本实验使用的是共阳极数码管,例如:假如要显示数字1,则b、c接低电平。
《手把手教你学FPGA》第三章设计实例
原文:https://www.cnblogs.com/lanliuliu/p/13777113.html