核心代码:

module FSM(
input CLK_12M,
input FPGA_KEY,
output FPGA_LEDR,
output FPGA_LEDG,
output FPGA_LEDB
);
//----------------------state--------------------//
parameter state_RST = 'd0; //灯熄灭
parameter state_LEDR = 'd1; //红灯亮
parameter state_LEDG = 'd2; //绿灯亮
parameter state_LEDB = 'd3; //蓝灯亮
parameter state_LED_R_G_B = 'd4; //灯都亮(接近白光) //----------------------rst_n--------------------//
reg rst_n;
reg [:]cnt_rst; always@(posedge CLK_12M)
if(cnt_rst=='d10)
begin
cnt_rst <= 'd10;
rst_n = 'd1;
end
else cnt_rst <= cnt_rst + 'd1; //-------------------key in---------------------//
reg key;
reg [:]low_cnt;
reg [:]hig_cnt;
parameter ms_10 =; always@(posedge CLK_12M or negedge rst_n)
begin
if(!rst_n)
begin
key <= 'd1;
low_cnt <= 'd0;
hig_cnt <= 'd0;
end
else if(FPGA_KEY) //检测按键状态为高时,延时10ms,把按键状态提取出来。
begin
low_cnt <= 'd0;
if(hig_cnt==ms_10)
begin
key <= FPGA_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 <= FPGA_KEY;
low_cnt <= low_cnt;
end
else low_cnt <= low_cnt +'d1;
end
end //----------------led_state------------------//
reg [:]led_state; //key的下降沿,即按键按下后,进行状态转换
always@(negedge key or negedge rst_n)
begin
if(!rst_n)
begin
led_state <= 'd0;
end
else
begin
led_state <= led_state + 'd1;
if (led_state == 'd4)
begin
led_state <= 'd0;
end
end
end //------------------led---------------------//
reg ledr,ledg,ledb; always@(posedge CLK_12M or negedge rst_n)
begin
if(!rst_n)
begin
ledr <= 'd1;
ledg <= 'd1;
ledb <= 'd1;
end
else case(led_state)
state_RST: //灯熄灭
begin
ledr <= 'd1;
ledg <= 'd1;
ledb <= 'd1;
end
state_LEDR: //红灯亮
begin
ledr <= 'd0;
ledg <= 'd1;
ledb <= 'd1;
end
state_LEDG: //绿灯亮
begin
ledr <= 'd1;
ledg <= 'd0;
ledb <= 'd1;
end
state_LEDB: //蓝灯亮
begin
ledr <= 'd1;
ledg <= 'd1;
ledb <= 'd0;
end
state_LED_R_G_B: //灯交替亮
begin ledr <= 'd0;
ledg <= 'd0;
ledb <= 'd0;
end
default: //都不亮
begin
ledr <= 'd1;
ledg <= 'd1;
ledb <= 'd1;
end
endcase
end assign FPGA_LEDR = ledr;
assign FPGA_LEDG = ledg;
assign FPGA_LEDB = ledb; //-----------------endmodule-----------------//
endmodule

实验方法及指导书:

链接:http://pan.baidu.com/s/1o8skJCe 密码:var9

【iCore1S 双核心板_FPGA】例程六:状态机实验——状态机使用的更多相关文章

  1. 【iCore1S 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入

    实验现象: iCore1s 双核心板上与FPGA相连的三色LED(PCB上标示为FPGA·LED),按键按下红灯点亮,松开按键红灯熄灭. 核心源代码: module KEY( input CLK_12 ...

  2. 【iCore1S 双核心板_FPGA】例程十六:基于SPI的ARM与FPGA通信实验

    实验现象: 核心代码: int main(void) { int i,n; ]; ]; HAL_Init(); system_clock.initialize(); led.initialize(); ...

  3. 【iCore1S 双核心板_FPGA】例程十七:基于双口RAM的ARM+FPGA数据存取实验

    实验现象: 核心代码: module DUAL_PORT_RAM( input CLK_12M, inout WR, input RD, input CS0, :]A, :]DB, output FP ...

  4. 【iCore1S 双核心板_FPGA】例程十五:基于I2C的ARM与FPGA通信实验

    实验现象: 核心代码: int main(void) { int i,n; ]; ]; HAL_Init(); system_clock.initialize(); led.initialize(); ...

  5. 【iCore1S 双核心板_FPGA】例程三:计数器实验——计数器的使用

    实验现象: 程序下载成功后,程序中的计数器开始计数,每次计满后,计数器清零,三色LED中红色LED的状态反转.可以看到,红色LED以一定的时间间隔闪烁. 核心源代码: //-------------- ...

  6. 【iCore1S 双核心板_FPGA】例程五:Signal Tapll 实验——逻辑分析仪

    核心代码: //--------------------Module_Signal_TapII-------------------// module Signal_TapII( input CLK_ ...

  7. 【iCore1S 双核心板_FPGA】例程七:基础逻辑门实验——逻辑门使用

    实验现象: 打开tool-->Netlist viewer-->RTL viewer可观察各个逻辑连接 核心代码: //-----------------Module_logic_gate ...

  8. 【iCore1S 双核心板_FPGA】例程八:触发器实验——触发器的使用

    实验现象: 在本实验中,将工程中的D触发器.JK触发器实例化,对应其真值表,用signal对其进行 检验,利用SignaTap II观察分析波形. 核心代码: module D( input CLK, ...

  9. 【iCore1S 双核心板_FPGA】例程九:锁相环实验——锁相环的使用

    实验现象: 利用Quartus内部组件生成锁相环,用SignalTap II进行校验. 核心代码: //--------------------Module_PLL------------------ ...

随机推荐

  1. IdentityServer4-端点

    一.发现端点 二.授权端点 三.令牌端点 四.UserInfo端点 五.Introspection端点 六.撤销端点 七.结束会话端点 一.发现端点 发现端点可用于检索有关IdentityServer ...

  2. 使用starUML一步一步画顺序图

    顺序图:是UML中能表现出一个过程中各个详细步骤的模型图,过程可以理解为一个功能的执行过程. 下面我们以一个简单的影院管理系统中售票功能为例来一步一步完成顺序图的构建. 建模工具:starUML 版本 ...

  3. OSINT系列:威胁信息挖掘ThreatMiner

     OSINT系列:威胁信息挖掘ThreatMiner   ThreatMiner.org是一个非营利性组织.它收集各种开放的网络信息和安全信息,然后进行整理,供安全人员检索.它可以提供六大类.十八小类 ...

  4. Mac电脑 阿里云ECS(ContentOS) Apache+vsftpd+nodejs+mongodb建站过程总结

    简介:我这里采用的阿里云免费提供的6个月ECS服务器:制作了一个简单的爬虫程序:里面很多功能还么做:搜索里面功能回去的数据未做处理会崩溃(大家不要点搜索功能):地址:http://loldragon. ...

  5. jquery监听input元素输入

    一般我们监听input内容的变化都是通过onchange()事件来绑定,但这个做法有一个缺陷就是只有当正在被输入的input元素失去焦点时(即鼠标点击了别处)才会触发,而实际上我们往往希望能够满足在用 ...

  6. 洛谷.2234.[HNOI2002]营业额统计(Splay)

    题目链接 //模板吧 #include<cstdio> #include<cctype> #include<algorithm> using namespace s ...

  7. Python3NumPy——ndarray对象

    Python3NumPy——ndarray对象 1.前沿 推荐导入语法:import numpy as np NumPy中使用ndarray对象表示数组,ndarray是NumPy库的核心对象 2.创 ...

  8. [POI2011]Rotacje na drzewie (2)/[BZOJ3702]二叉树

    [POI2011]Rotacje na drzewie (2) 题目大意: 一棵有\(n\)个叶子结点的二叉树,每个叶子结点有一个权值,恰好是\(1\sim n\)的一个排列,你可以任意交换每一对子结 ...

  9. swoole深入学习 1. swoole初始

    0. 前言 swoole在PHP圈火了这么久,从2年前我用node写socket聊天服务器的时候就火了,那时候,经常有类似的文章php+swoole完爆nodejs之类的文章来吸引眼球,先不说它的好与 ...

  10. Editplus中添加System.out.println()快捷键

    首先,找到自己电脑Editplus的安装路径,在所属文件夹中找到JAVA.ACP文件: 然后,在文件的末尾加上如下代码: #T=syso System.out.println("^!&quo ...