FPGA按一下按键,对应端口输出单个脉冲
对于FPGA的verilog语言,,,规定一个变量不能在多个always中被赋值.但是可以在多个alway块中做判断--结合状态机思想
module state(key,led,clk);
input key;//输入按键
input clk;//输入时钟48M output reg led;//输出led reg state=;//记录按钮状态
reg[:] cnt=;//计数器 always@(*)
begin
if(key == )//按下了
state = ; //状态置一
else if(cnt==)//到了计数值
state = ;//状态复位
end always@(posedge clk)
begin
if(state == )//如果状态置一
cnt<=cnt+'b1;//开始计数
else
cnt<=;//松开或没有按下,清零
end always@(posedge clk)
begin
if(state == )//如果状态置一
led <=;//灯亮
else
led <=;
end endmodule
按下按键灯就会亮,如果一直按着灯就会一直亮(
if(key == 0)//按下了
state = 1; //状态置一
else if(cnt==48000000)//到了计数值
state = 0;//状态复位
),可以改变一下代码,变成按下松开灯亮一秒后灭,就是加一个松手检测,或者做别的修改...
一开始请教的群里的大神给的代码--状态机思想
module relay(input clk,//输入时钟
input rst,//输入复位
input a, //输入信号
output reg b//输出
); reg[:] current_state=,next_state=;//现在的状态,下一个状态
reg[:] state_cnt=;//状态计数 localparam sIdle_state=;//空闲
localparam sInput_high=;//输入高
localparam sInput_low=;//输入低
localparam sOutput_pluse=;//输出 always@(posedge clk or negedge rst)
begin
if(~rst)
current_state <= sIdle_state;//复位空闲
else
current_state <= next_state;//把下一个状态给它
end always@(*)
begin
case(current_state)
sIdle_state://空闲态
begin
if(a==)//输入为高
next_state <= sInput_high;//赋为输入高
else
next_state <= current_state;//赋为空闲
end sInput_high://输入高
begin
if(a==)
next_state = sInput_low;//赋为输入低
else
next_state = current_state;//赋为空
end sInput_low://输入低
begin
next_state = sOutput_pluse;//赋为端口输出模式
end sOutput_pluse:
begin
if(state_cnt == )
next_state = sIdle_state;
else
next_state = current_state;//现在的状态
end default: next_state = sIdle_state; endcase
end always@(posedge clk or negedge rst)
begin
if(~rst)
begin
b<=;
end
else
begin
case(next_state)
sIdle_state://如果是空闲状态
begin end
sOutput_pluse://如果是输出状态
b<=;//输出高
default:
b<=; endcase
end
end always@(posedge clk or negedge rst)
begin
if(~rst)
state_cnt <= ;
else if(next_state != current_state)//如果上一个状态和现在的不一样
state_cnt<=;
else
state_cnt<=state_cnt+'b1; end endmodule
FPGA按一下按键,对应端口输出单个脉冲的更多相关文章
- C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符
在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员 ...
- Java的实验程序之输出单个文件中的前 N 个最常出现的英语单词
日期:2018.10.11 星期四 博客期:016 题目:输出单个文件中的前 N 个最常出现的英语单词,并输出到文本文件中 在程序运行之前,我试着先写了字符的字母的总结,加载代码如下: //如下是第一 ...
- futuba R70085SB 接收机 只有SBus端口有输出其他端口输出不变
接收机能收到遥控器信号,且Sbus端口有输出,其他端口输出没有变化,这时你要看一下接收机的模式了,肯定是遥控器的通道跟输出端口的通道不匹配.参考Futuba T14SG遥控器的说明书,如下图
- 作业题:输出单个字符 输入单个字符 scanf printf
输出单个字符用putchar() #include <iostream> using namespace std; int main(){ char x='B'; char y='O'; ...
- STM32 精确输出PWM脉冲数控制电机(转)
STM32 精确输出PWM脉冲数控制电机 发脉冲两种目的1)速度控制2)位置控制 速度控制目的和模拟量一样,没有什么需要关注的地方发送脉冲方式为PWM,速率稳定而且资源占用少 stm32位置控制需要获 ...
- FPGA低级建模---按键去抖动
FPGA低级建模,原则上一个模块一个功能,如按键去抖动建模中,有两个模块. 1.detect_module 这个是按键检测模块,主要检测按键的高低电平变化,现在按键是按下还是释放. 2.delay_m ...
- C语言输出单个汉字字符
#include "stdio.h" #include "windows.h" int main() { ] = { "多字节字符串!OK!" ...
- fpga该驱动器调试dev_dbg 无输出
近期需要调试fpga驾驶,整个是非常蛋疼.dev_dbg 我想用这个作为没有成功调试输出,它已被彻底打垮! 反射... 现在基于以下设置是不相关的打印,和网上说的有些出入,问题还得研究下. 驱动程序调 ...
- fpga Verilog hdl 按键消抖 部分程序讲解
module debounce(clk_in,rst_in,key_in,key_pulse,key_state); input clk_in;//system clock input rst_in; ...
随机推荐
- web安全CSRF和XSS
web端的安全攻击有CSRF和XSS两种,将通过以下三个方面介绍这两种安全攻击: 1.基本概念和缩写 2.攻击原理 3.防御措施 CSRF 1.基本概念和缩写 CSRF(Cross-site req ...
- C# Newtonsoft.Json反序列化为dynamic对象之后的使用
通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错 源代码: namespace ConsoleApplication1 { class Program ...
- hibernate动态表名映射
引自:http://blog.csdn.net/xvshu/article/details/39187779 最近的一个项目有一个需求,有N个考核单位,要对每个考核单位生成一张考核情况表,这样做的目的 ...
- Sap R/3 Architecture Tutorial
What is SAP R/3? SAP R/3 is a 3 tier architecture consisting of 3 layers Presentation Application Da ...
- Linux笔记(一):CentOS-7安装
(一) 安装环境 VMware® Workstation 12 Pro,安装到物理机的话还需要做个U盘启动盘 (二) 下载 https://www.centos.org/download/ ...
- jquery 绑定事件 获取方式 --------------data event 获取
//绑定事件 bind event $("body").on("click",function(){ console.log("in") } ...
- apache web服务器安全配置
尽管现在购买的云服务器很多都有一键web环境安装包,但是如果是自己配置web环境则需要对各种安全配置十分了解,今天我们就来尝试这做好web服务器安全配置.这里的配置不尽完善,若有纰漏之处还望指出. 修 ...
- 70部MAYA灯光材质渲染教程合集
MAYA灯光材质渲染教程合集 教程格式:MP4和flv 两种格式 使用版本:教程不是一年出的教程,各个版本都有 (教程软件为英文版) 清晰度:可以看清软件上的文字 语言:部分中文字幕,其他英文(通过看 ...
- kafka入门2:java 创建及删除 topic
1.pom <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.1 ...
- Oracle EBS OPM update material txn
--update_material_txn --created by jenrry DECLARE p_mmti_rec mtl_transactions_interface%ROWTYPE; p_m ...