【iCore1S 双核心板_FPGA】例程六:状态机实验——状态机使用

核心代码:
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】例程六:状态机实验——状态机使用的更多相关文章
- 【iCore1S 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
实验现象: iCore1s 双核心板上与FPGA相连的三色LED(PCB上标示为FPGA·LED),按键按下红灯点亮,松开按键红灯熄灭. 核心源代码: module KEY( input CLK_12 ...
- 【iCore1S 双核心板_FPGA】例程十六:基于SPI的ARM与FPGA通信实验
实验现象: 核心代码: int main(void) { int i,n; ]; ]; HAL_Init(); system_clock.initialize(); led.initialize(); ...
- 【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】例程三:计数器实验——计数器的使用
实验现象: 程序下载成功后,程序中的计数器开始计数,每次计满后,计数器清零,三色LED中红色LED的状态反转.可以看到,红色LED以一定的时间间隔闪烁. 核心源代码: //-------------- ...
- 【iCore1S 双核心板_FPGA】例程五:Signal Tapll 实验——逻辑分析仪
核心代码: //--------------------Module_Signal_TapII-------------------// module Signal_TapII( input CLK_ ...
- 【iCore1S 双核心板_FPGA】例程七:基础逻辑门实验——逻辑门使用
实验现象: 打开tool-->Netlist viewer-->RTL viewer可观察各个逻辑连接 核心代码: //-----------------Module_logic_gate ...
- 【iCore1S 双核心板_FPGA】例程八:触发器实验——触发器的使用
实验现象: 在本实验中,将工程中的D触发器.JK触发器实例化,对应其真值表,用signal对其进行 检验,利用SignaTap II观察分析波形. 核心代码: module D( input CLK, ...
- 【iCore1S 双核心板_FPGA】例程九:锁相环实验——锁相环的使用
实验现象: 利用Quartus内部组件生成锁相环,用SignalTap II进行校验. 核心代码: //--------------------Module_PLL------------------ ...
随机推荐
- Dart语言特性必备了解!
学习Dart语言,必须将以下的概念熟记于心: 在dart语言中,一切皆为对象.所有的对象都是一个类的实例.甚至整数.函数.null也看做是对象.所有的对象都继承于Object类 尽管Dart是强类型语 ...
- MySQL数据库crash的问题分析
[问题] 生产环境有多台slave服务器,不定期的会crash,下面是error log中的堆栈信息 Thread pointer: 0x7f1e54b26410 Attempting backtra ...
- BZOJ.2199.[USACO2011 Jan]奶牛议会(2-SAT)
题目链接 建边不说了.对于议案'?'的输出用拓扑不好判断,直接对每个议案的结果DFS,看是否会出现矛盾 Tarjan也用不到 //964kb 76ms #include <cstdio> ...
- [USACO08DEC]Secret Message
OJ题号: 洛谷2922 思路: 字典树,每个结点记录经过该节点的字符串数cnt和以该结点结尾的字符串数量val. 每次询问时累加经过节点的val值和结尾结点的cnt值. #include<cs ...
- [国家集训队]Crash的数字表格
Description: 求$ \sum_{i=1}^n \sum_{j=1}^m lcm(i,j) $ Hint: $ n,m<=10^7 $ Solution: 这题有每次询问 \(O(n) ...
- win2008R2管理员密码修改文档
场景:忘记了win2008R2服务器的管理员密码.解决办法:1. 制作一个U盘启动盘:2. 系统通过U盘启动进入WINpe系统3. 在知道Win2008安装位置的情况下:查找C:\windows\sy ...
- Revit API创建标注NewTag
start ; ) { eId = item; } ...
- selenium+python自动化78-autoit参数化与批量上传
前言 前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片. 这样每次调用的时候,在命令行里面加一个文件路径的参数就行. 一.命令行参数 ...
- idea html,js修改不用重启进程
1Setting -> build-compiler ---勾选 Build project automatically选项 2 快捷键Ctrl + Shift + A查找registry命令 ...
- 微软BI SSIS 2012 ETL 控件与案例精讲面试 200 问(SSIS 面试题,ETL 面试题)
开篇介绍 本自测与面试题出自 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程,对于学完本课程的每一课时和阅读完相关辅助 ...