【iCore4 双核心板_FPGA】例程七:状态机实验——状态机使用
实验现象:
按键每按下一次,三色LED改变一次状态。
核心代码:
//--------------------module_rst_n---------------------------//
module state_ctrl(
input clk_25m,
input rst_n,
input key,
output fpga_ledr,
output fpga_ledg,
output fpga_ledb
);
//--------------------key_in--------------------------------//
parameter ms_10 = ;
reg key_r;
reg [:]low_cnt;
reg [:]hig_cnt; always @(posedge clk_25m or negedge rst_n) //按键消抖动,提取按键状态
if (!rst_n)
begin
key_r <= 'd0;
low_cnt <= 'd0;
hig_cnt <= 'd0;
end
else if(key) //检测按键状态为高时,延时10ms,把按键状态提取出来。
begin
low_cnt <= 'd0;
if (hig_cnt == ms_10)
begin
key_r <= key;
hig_cnt <= hig_cnt;
end
else hig_cnt <= hig_cnt + 'd1;
end
else //按键状态为低时,延时10ms,把按键状态提取出来。
begin
hig_cnt <= 'd0;
if (low_cnt == ms_10)
begin
key_r <= key;
low_cnt <= low_cnt;
end
else low_cnt <= low_cnt + 'd1;
end wire key_state = key_r;
//--------------------led_ctrl-----------------------------//
reg [:]led_cnt;
reg ledr,ledg,ledb; always@(negedge key_state or negedge rst_n) //按键下降沿控制led状态切换
if (!rst_n)
begin
led_cnt <= 'd0;
end
else if (led_cnt == 'd2)
begin
led_cnt <= 'd0;
end
else led_cnt <= led_cnt + 'd1; always@(posedge clk_25m or negedge rst_n) //led状态切换的状态机
if (!rst_n)
begin
ledr <= 'd1;
ledg <= 'd1;
ledb <= 'd1;
end
else case(led_cnt)
'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 assign {fpga_ledr,fpga_ledg,fpga_ledb} = {ledr,ledg,ledb}; //--------------------endmodule-----------------------------//
endmodule
源代码下载链接:
链接:http://pan.baidu.com/s/1nvMFgxF 密码:b895
iCore4链接:

【iCore4 双核心板_FPGA】例程七:状态机实验——状态机使用的更多相关文章
- 【iCore4 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
实验现象: 按键每按下一次,三色LED切换一次状态. 核心源代码: module key_ctrl( input clk_25m, input rst_n, input key, output fpg ...
- 【iCore4 双核心板_FPGA】例程四:Signal Tapll 实验——逻辑分析仪
实验现象: 三色led轮流闪烁,具体的逻辑分析仪使用教程请参考iCore3逻辑分析仪例程 核心代码: module signal_ctrl( input clk_25m, input rst_n, o ...
- 【iCore4 双核心板_FPGA】例程八:乘法器实验——乘法器使用
实验现象: 程序运行时,绿色led闪烁(目前,具体的乘法器调用请参考iCore3乘法器例程) 核心代码: module multiplier_ctrl( input clk_25m, input rs ...
- 【iCore4 双核心板_FPGA】例程十七:基于FIFO的ARM+FPGA数据存取实验
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ int i; int fsmc_read_data; ; ]; ]; char *p; /* ...
- 【iCore4 双核心板_FPGA】例程五:基础逻辑门实验——逻辑门使用
实验现象: 打开tool-->Netlist viewer-->RTL viewer可观察各个逻辑连接 核心代码: //--------------------module_logic_g ...
- 【iCore4 双核心板_FPGA】例程九:锁相环实验——锁相环使用
实验现象: 利用Quartus内部组件生成锁相环,用SignalTap II进行校验. 核心代码: module pll( input clk_25m, output clk_100m, output ...
- 【iCore4 双核心板_FPGA】例程十:FSMC总线通信实验——复用地址模式
实验原理: STM32F767上自带FMC控制器,本实验将通过FMC总线的地址复用模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...
- 【iCore4 双核心板_FPGA】例程十一:FSMC总线通信实验——独立地址模式
实验原理: STM32F767上自带FMC控制器,本实验将通过FMC总线的地址独立模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...
- 【iCore4 双核心板_FPGA】例程十二:基于UART的ARM与FPGA通信实验
实验现象: 1.先烧写ARM程序,然后烧写FPGA程序. 2.打开串口精灵,会接收到字符GINGKO. 3.通过串口精灵发送命令可以控制ARM·LED和FPGA·LED. 核心代码: int main ...
随机推荐
- window下mongodb安装和配置
mongodb安装和配置 1.下载:https://www.mongodb.com 2.解压到盘的根目录下,本人解压到D盘根目录 3.在软件根目录下新建一个文件夹data 4.再新建两个文件夹db.l ...
- golang编译源代码和交叉编译方法
目录 golang编译源代码和交叉编译方法 编译源代码 编译go1.4 编译go1.12 交叉编译 golang编译源代码和交叉编译方法 编译源代码 golang编译其实很简单,下载一份最新的源代码后 ...
- Java的split()用法
特殊情况有 * ^ : | . \ 一.单个符号作为分隔符 String address="上海\上海市|闵行区\吴中路"; String[] splitAddress=addr ...
- @Resource 注解的使用
1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2.@Autowired默认按类型装配(这个注解是属业spring的),默认情况 ...
- Metasploit AFP信息获取模块afp_server_info
Metasploit AFP信息获取模块afp_server_info AFP服务默认端口为548或者427.通过扫描该端口信息,afp_server_info模块可以获取AFP服务相关信息.这些 ...
- dns安全 涉及 术语
僵木蠕 以“僵木蠕”(僵尸网络.木马.蠕虫)为代表的网络威胁 僵尸网络是攻击者出于恶意目的,传播僵尸程序bot以控制大量计算机,并通过一对多的命令与控制信道所组成的网络,我们将之称之为僵尸网络,bot ...
- BZOJ.3693.圆桌会议(Hall定理 线段树)
题目链接 先考虑链.题目相当于求是否存在完备匹配.那么由Hall定理,对于任意一个区间[L,R],都要满足[li,ri]完全在[L,R]中的ai之和sum小于等于总位置数,即R-L+1.(其实用不到H ...
- putty失活不挂起运行
https://blog.csdn.net/c1481118216/article/details/53010963 以下方式是试过了https://www.cnblogs.com/mysqlplus ...
- java计算今天是今年的第几天
Calendar.getInstance().get(Calendar.DAY_OF_YEAR)
- [原创]推荐一些在线API生成工具
[原创]推荐一些在线API生成工具 最近发现Api文档维护是个大体力活,版本控制文档统一化特别麻烦,寻思着这个怎么处理,经高人指点开源有一些工具不错,具体如下: 1.Swagger http:// ...