当前位置: 首页 > news >正文

英文网站建设服务合同网站模板 代码免费

英文网站建设服务合同,网站模板 代码免费,手机网站开发入门,广告设计公司网站源码状态机实现N位按键消抖 1、原理 利用状态机实现按键的消抖#xff0c;具体的原理可参考 (50条消息) 基于FPGA的按键消抖_fpga 按键消抖_辣子鸡味的橘子的博客-CSDN博客 状态机简介#xff1a; 状态机分类可以主要分为两类#xff1a;moore和mealy 根据三段式状态机最后…状态机实现N位按键消抖 1、原理 利用状态机实现按键的消抖具体的原理可参考 (50条消息) 基于FPGA的按键消抖_fpga 按键消抖_辣子鸡味的橘子的博客-CSDN博客 状态机简介 状态机分类可以主要分为两类moore和mealy 根据三段式状态机最后一段的组合逻辑根据状态机的输出是否与输出条件有关可以用来区分moore状态机和mealy状态机 若输出只与当前状态机有关则为moore状态机 always *beginif(current_state s4) dout 1;else dout 0;end Moore状态机仅仅和当前状态有关 Mealy状态机输出不仅取决于当前状态还和输入有关 同样是三段式描述最后的输出为 always (*)beginif(reset) dout 1b0;else if( (current_state s3)(din 1b1) ) dout 1b1;else dout 1b0;end 可见输出不仅和当前状态和输入都有关系。 最后Moore状态机和Mealy状态机可以相互转换。上述两个状态转移图实际上实现的是同一个功能就是检测序列1101. 状态机按照段式分类可分为一段式、二段式、三段式 可参考 (50条消息) 状态机详解一段式、二段式、三段式_状态机一段式二段式三段式_CuteBaBaKiller的博客-CSDN博客 2、代码 module fsm_key_n#(parameter N 4,parameter TIME_20MS 1000_000)(input wire clk,input wire rst_n,input wire[N-1:0] key_in,output wire[N-1:0] key_out ); reg[3:0] key_out_r;//中间信号 reg[24:0] cnt_20ms;//20ms计数器 //状态空间 parameter IDLE 4b0001,FILTER_DOWN 4b0010,DOWN 4b0100,FILTER_UP 4b1000;reg[3:0] cstate;//现态 reg[3:0] nstate;//次态 reg[N-1:0] key_r0,key_r1,key_r2;//按键延时 reg flag;//检测下降沿和上升沿寄存 //**************************************************************** //--状态转移条件定义 //**************************************************************** wire idle2filter_down; wire filter_down2down; wire down2filter_up; wire filter_up2idle; //**************************************************************** //--计时开始结束条件 //**************************************************************** wire add_cnt_20ms; wire end_cnt_20ms;//**************************************************************** //--下降沿上升沿检测 //**************************************************************** assign nedge |(~key_r1key_r2); assign podge |(key_r1key_r2); //**************************************************************** //--状态转移条件约束 //**************************************************************** assign idle2filter_down nedge cstate IDLE; assign filter_down2down end_cnt_20ms cstate FILTER_DOWN; assign down2filter_up podge cstate DOWN; assign filter_up2idle end_cnt_20ms cstate FILTER_UP;//**************************************************************** //--信号延时 //**************************************************************** always (posedge clk or negedge rst_n) beginif(~rst_n)beginkey_r0 {N{1b1}};key_r1 {N{1b1}};key_r2 {N{1b1}};endelse beginkey_r0key_in;key_r1key_r0;key_r2key_r1;end end//**************************************************************** //--flag信号约束 //**************************************************************** always (posedge clk or negedge rst_n) beginif(~rst_n)beginflag1b0;endelse if(nedge || podge)beginflag1;endelse if(end_cnt_20ms)beginflag0;endelse beginflagflag;end end //**************************************************************** //--20ms计数 //**************************************************************** always (posedge clk or negedge rst_n) beginif(~rst_n) begincnt_20msd0;endelse if(add_cnt_20ms)beginif(end_cnt_20ms)begincnt_20ms d0;endelse if(nedge)begincnt_20ms 0;endelse begincnt_20ms cnt_20ms 1b1;endendelse begincnt_20mscnt_20ms;end end //**************************************************************** //--20ms计数条件约束 //**************************************************************** assign add_cnt_20ms flag; assign end_cnt_20ms add_cnt_20ms cnt_20ms TIME_20MS - 1;//**************************************************************** //--三段式状态机第一段时序逻辑 //**************************************************************** always (posedge clk or negedge rst_n) beginif(!rst_n)begincstateIDLE;//初始当前状态为空闲endelse begincstatenstate;//次态赋值给现态end end//**************************************************************** //--三段式状态机第二段组合逻辑,状态转移 //**************************************************************** always (*) begincase(cstate)IDLE:beginif(idle2filter_down)beginnstate FILTER_DOWN;endelse beginnstate cstate;endendFILTER_DOWN:beginif(filter_down2down)beginnstate DOWN; endelse beginnstate cstate; end endDOWN:beginif(down2filter_up)beginnstate FILTER_UP; endelse beginnstate cstate; endendFILTER_UP:beginif(filter_up2idle)beginnstate IDLE; endelse beginnstate cstate; endenddefault:nstate cstate;endcase end//**************************************************************** //--有限状态机第三段时序逻辑 //**************************************************************** always (posedge clk or negedge rst_n) beginif(~rst_n) beginkey_out_r{N{1b0}};endelse if(filter_down2down)beginkey_out_r~key_r1;endelse beginkey_out_r{N{1b0}};end end assign key_out key_out_r;endmodule3、仿真代码 timescale 1ns/1ns module fsm_key_tb();reg clk; reg rst_n; reg[3:0] key; reg[3:0] delay;wire[3:0] key_r; parameter SYS_CLK 20; parameter TIME_20MS 10; parameter N 4; always #(SYS_CLK/2) clk ~clk;task task_init;beginclk1b0;rst_n1b0;#(2*SYS_CLK);rst_n1b1;key 4b1111;#(2*SYS_CLK);end endtasktask task_key;input[3:0] key_in;output[3:0] key_out;beginkey_out[0] ~key_in[0];key_out[2] ~key_in[2];key_out[3] key_in[3];key_out[1] key_in[1];end endtaskinitial begintask_init();repeat(10)beginrepeat (20) begintask_key(key,key);// key[0] ~key[0];// key[2] ~key[2];delay {$random()}%4;#(SYS_CLK*delay);endtask_key(key,key);// key[0] ~key[0];// key[2] ~key[2];//wait(inst_fsm_key.end_cnt_20ms);#(30*SYS_CLK);end$stop; endfsm_key_n #(.N(N),.TIME_20MS(TIME_20MS)) inst_fsm_key (.clk (clk),.rst_n (rst_n),.key_in (key),.key_out (key_r));endmodule 4、仿真结果 5、总结 使用状态机进行按键消抖可以经消抖分为四个部分空闲状态、下降沿状态、按下状态、上升沿状态这几个状态使用状态机进行按键消抖可以更好的理解消抖的原理和过程。状态机的规范编写也是提升自己理解时序理解逻辑的好的方式
http://www.w-s-a.com/news/607571/

相关文章:

  • 开源小程序模板江门关键词优化排名
  • 网站开发 知乎房地产型网站建设
  • 买完域名网站怎么设计wordpress 纯代码
  • 公司网站怎么做百度竞价宁波网络公司哪家好
  • 河西网站建设制作微信分销系统多层
  • 网站制作完成后应进入什么阶段石家庄网站建设找哪家好
  • 南通外贸网站推广自在源码网官网
  • 个人网站模板html下载餐饮vi设计案例欣赏
  • 高端网站建设wanghess网站开发售后服务承诺
  • 江西网站建设费用企业网站推广的方法有( )
  • 中国十大网站开发公司企业网站建设的要素有哪些
  • 网站防站做网站吉林
  • 嘉定区网站建设公司企业信息公示查询系统官网
  • 一个具体网站的seo优化产品介绍网站模板下载地址
  • 怎么做网站在网上能搜到你哈尔滨网站建立公司
  • 做家旅游的视频网站上海百度公司总部
  • 微信小程序公司网站怎么制作区块链平台定制开发
  • 网站资质优化ip地址域名解析
  • 如何搭建个人网站ps做网站首页怎么运用起来
  • 中小企业商务网站建设wordpress 安全加固
  • asp网站开发设计文档php建设网站怎么用
  • 服装公司网站建设需求分析报告seo搜索引擎优化实战
  • wordpress 扒站最近最新新闻
  • 手机wap网站开发与设计wordpress域名无法访问
  • 百度收录网站收费吗做网站用vs还是dw
  • 维度网络专业做网站嘉兴网站建设方案服务
  • 成品电影网站建设中国最顶尖设计师
  • 网站建设报价清单明细视频网站如何做营销
  • 建设农业网站的论文做国外网站有哪些
  • 怎么做网页 网站制作张家港网站制作哪家好