【iCore1S 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
实验现象:
iCore1s 双核心板上与FPGA相连的三色LED(PCB上标示为FPGA·LED),按键按下红灯点亮,松开按键红灯熄灭。
核心源代码:
module KEY(
input CLK_12M,
input FPGA_KEY,
output FPGA_LEDR,
output FPGA_LEDG,
output FPGA_LEDB
);
//----------------------rst_n-----------------------//
//产生复位信号
reg rst_n;
reg [:]cnt_rst; always@(posedge CLK_12M)
if(cnt_rst=='d10)
begin
rst_n <= 'd1;
cnt_rst <= 'd10;
end
else cnt_rst <= cnt_rst + 'd1;
//-----------------------KEY_CLK--------------------//
//将按键的按下与松开转换为KEY_CLK,按下后松开为上升沿
reg KEY_CLK;
reg [:]cnt_key0;
reg [:]cnt_key1;
always@(posedge CLK_12M or negedge rst_n )
begin
if(!rst_n)
begin
KEY_CLK <= 'd0;
cnt_key0 <= 'd0;
cnt_key1 <= 'd0;
end
else if(!FPGA_KEY)
begin
cnt_key0 <= cnt_key0 + 'd1;
if(cnt_key0=='d200)//消抖
begin if(!FPGA_KEY)
begin
KEY_CLK <= 'd0;
cnt_key0 <= 'd0;
end
end
end
else if(FPGA_KEY)
begin
cnt_key1 <= cnt_key1 + 'd1;
if(cnt_key1=='d200)//消抖
begin
if(FPGA_KEY)
begin
KEY_CLK <= 'd1;
cnt_key1 <= 'd0;
end
end
end
end
//-----------------------led-------------------------//
reg [:]led_state;
reg ledr,ledg,ledb; always@(posedge KEY_CLK or negedge rst_n)
begin
if(!rst_n)
begin
led_state <= -'d1;//初始化使灯熄灭
ledr <= 'd1;
ledg <= 'd1;
ledb <= 'd1;
end
else
begin
led_state <= led_state + 'd1;
if(led_state > 'd2)
begin
led_state <= 'd0;
end
case(led_state)
'd0: //红灯亮
begin
ledr <= 'd0;
ledg <= 'd1;
ledb <= 'd1;
end
'd1: //绿灯亮
begin
ledr <= 'd1;
ledg <= 'd0;
ledb <= 'd1;
end
'd2: //蓝灯亮
begin
ledr <= 'd1;
ledg <= 'd1;
ledb <= 'd0;
end
default : //灯熄灭
begin
ledr <= 'd1;
ledg <= 'd1;
ledb <= 'd1;
end
endcase
end
end assign FPGA_LEDR = ledr;
assign FPGA_LEDG = ledg;
assign FPGA_LEDB = ledb; //--------------------endmodule------------------//
endmodule
代码包下载:
链接:http://pan.baidu.com/s/1kUWAJC7 密码:13jp

【iCore1S 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入的更多相关文章
- 【iCore4 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
实验现象: 按键每按下一次,三色LED切换一次状态. 核心源代码: module key_ctrl( input clk_25m, input rst_n, input key, output fpg ...
- 【iCore1S 双核心板_FPGA】例程十二:基于单口RAM的ARM+FPGA数据存取实验
实验现象: 核心代码: module single_port_ram( input CLK_12M, input WR, input RD, input CS0, inout [:]DB, input ...
- 【iCore1S 双核心板_FPGA】例程十七:基于双口RAM的ARM+FPGA数据存取实验
实验现象: 核心代码: module DUAL_PORT_RAM( input CLK_12M, inout WR, input RD, input CS0, :]A, :]DB, output FP ...
- 【iCore1S 双核心板_FPGA】例程十五:基于I2C的ARM与FPGA通信实验
实验现象: 核心代码: int main(void) { int i,n; ]; ]; HAL_Init(); system_clock.initialize(); led.initialize(); ...
- 【iCore1S 双核心板_FPGA】例程十六:基于SPI的ARM与FPGA通信实验
实验现象: 核心代码: int main(void) { int i,n; ]; ]; HAL_Init(); system_clock.initialize(); led.initialize(); ...
- 【iCore1S 双核心板_FPGA】例程一:GPIO输出实验——点亮LED
实验现象: 三色LED循环点亮. 核心源代码: //--------------------Module_LED-----------------------------// module LED( ...
- 【iCore1S 双核心板_FPGA】例程三:计数器实验——计数器的使用
实验现象: 程序下载成功后,程序中的计数器开始计数,每次计满后,计数器清零,三色LED中红色LED的状态反转.可以看到,红色LED以一定的时间间隔闪烁. 核心源代码: //-------------- ...
- 【iCore1S 双核心板_FPGA】例程五:Signal Tapll 实验——逻辑分析仪
核心代码: //--------------------Module_Signal_TapII-------------------// module Signal_TapII( input CLK_ ...
- 【iCore1S 双核心板_FPGA】例程六:状态机实验——状态机使用
核心代码: module FSM( input CLK_12M, input FPGA_KEY, output FPGA_LEDR, output FPGA_LEDG, output FPGA_LED ...
随机推荐
- C++雾中风景番外篇:理解C++的复杂声明与声明解析
在学习C系列语言的过程之中,理解C/C++的复杂声明一直是初学者很困扰的问题.笔者初学之时也深受困扰,对很多规则死记硬背.后续在阅读<C专家编程>之后,尝试在编译器的角度来理解C/C++的 ...
- Vim-一款好用的文本编辑器
关于vim的使用,通过博客,无论是静态的截图或者是代码/文本复制,很难展示所要表现的内容.更多需要读者亲自敲键盘实践之后才知道其作用. 本文不会也无法描述vim过多的细节,仅仅是对于常用的命令做一下记 ...
- 本地搭建ELK(elasticsearch, logstash, kibana)日志收集系统
环境准备:macos 预先安装brew包管理器 1.安装elasticsearch流程 那么,咱们先去安装java8 接着,咱们继续按照elasticsearch 接着,咱们启动elasticsear ...
- R1题解
估分 大佬们都去写题解了,我不写可能会被老师训诶.... 预计分数:100 + 100 + 5 + 100 + 25 + 100 = 430 实际 :80 + 100 + 0 + 100 + 25 + ...
- Python常见下划线
python中常见的下划线意义 Python中常常使用下划线里对变量进行修饰,通常作为变量的前缀或者后缀出现,被修饰的变量一般存在特殊的用法: _XXX:不能被from module import _ ...
- Struts2返回json数据xml中配置
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...
- ASP.NET 多次点击button后事件执行多次 并发解决 频繁操作解决办法
首先让我们体验一下频繁操作: 1)打开项目,在后台aspx.cs等服务器页面,设置断点. 2)点击页面按钮 3)调试开始进入断点,然后重复点击页面按钮 4)服务器第一次事件已经处理完毕,调试再次进入了 ...
- mongodb group操作 以及管道 aggregate 分组排序分页
分组获取数据: db.express_info.group({ "key":{"express_code":true}, "initial" ...
- Oracle varchar与varchar2的区别
varchar -- 存放定長的字符数据,最长2000個字符:varchar2 -- 存放可变长字符数据,最大长度为4000字符. varchar2是oracle提供的独特的数据类型oracle保证在 ...
- Scala:Object-Oriented Meets Functional
Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensi ...