ZYNQ_project:key_led

条件里是十进制可以不加进制说明,编译器默认是10进制,其他进制要说明。

实验目标:

 模块框图:

时序图:

代码:

`include "para.v"module key_filter (input       wire                            sys_clk     ,input       wire                            sys_rst_n   ,input       wire    [`key_length -1 :0]     key_in      ,output      reg     [`key_length -1:0]      key_flag    
);reg     [`key_length -1 :0]     key_in_r1   ;reg     [`key_length -1 :0]     key_in_r2   ;reg     [3:0]                   state_c     ;reg     [3:0]                   state_n     ;reg     [19:0]                  cnt_core    ;wire    nege                  ;wire    pose                  ;wire    cnt_done_filter       ;wire    IDLEtoFILTER_UP       ;wire    FILTER_UPtoSAMPLING   ;wire    FILTER_UPtoIDLE       ;wire    SAMPLINGtoFILTER_BACK ;wire    FILTER_BACKtoIDLE     ;   localparam  IDLE        = 4'b0001 ,FILTER_UP   = 4'b0010 ,SAMPLING    = 4'b0100 ,FILTER_BACK = 4'b1000 ;/*********************************************************************/// reg     [`key_length -1 :0]     key_in_r1   ;// reg     [`key_length -1 :0]     key_in_r2   ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) beginkey_in_r1 <= 2'b11 ;key_in_r2 <= 2'b11 ;endelse beginkey_in_r1 <= key_in ;key_in_r2 <= key_in_r1 ;endend// wire                            nege        ;assign  nege = |(~key_in_r1 & key_in_r2) ;// wire                            pose        ;assign  pose = |( key_in_r1 & ~key_in_r2 );// reg     [3:0]       state_c ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) state_c <= IDLE ;elsestate_c <= state_n ;end// reg     [3:0]       state_n ;always @(*) begincase(state_c)IDLE        :   if(IDLEtoFILTER_UP)state_n = FILTER_UP ;else state_n = IDLE ;FILTER_UP   :   if(FILTER_UPtoSAMPLING)state_n = SAMPLING ;else if(FILTER_UPtoIDLE)state_n = IDLE ;else state_n = FILTER_UP ;SAMPLING    :   if(SAMPLINGtoFILTER_BACK)state_n = FILTER_BACK ;else state_n = SAMPLING ;FILTER_BACK :   if(FILTER_BACKtoIDLE)state_n = IDLE ;else state_n = FILTER_BACK ;default     :       state_n = IDLE ;endcaseendassign  IDLEtoFILTER_UP         = state_c == ( IDLE         ) && ( nege             ) ; assign  FILTER_UPtoSAMPLING     = state_c == ( FILTER_UP    ) && ( cnt_done_filter  ) ; assign  FILTER_UPtoIDLE         = state_c == ( FILTER_UP    ) && ( pose             ) ; assign  SAMPLINGtoFILTER_BACK   = state_c == ( SAMPLING     ) && ( pose             ) ; assign  FILTER_BACKtoIDLE       = state_c == ( FILTER_BACK  ) && ( cnt_done_filter  ) ; // reg     [19:0]                  cnt_core    ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) cnt_core <= 20'd0 ;elsecase (state_c)IDLE        :   cnt_core <= 20'd0 ;FILTER_UP   :   if( cnt_core == `MAX_CNT_10MS - 1 )cnt_core <= 20'd0 ;else cnt_core <= cnt_core + 1'b1 ;SAMPLING    :   cnt_core <= 20'd0 ;FILTER_BACK :   if( cnt_core == `MAX_CNT_10MS - 1 )cnt_core <= 20'd0 ;else cnt_core <= cnt_core + 1'b1 ;default     :   cnt_core <= 20'd0 ;endcaseend// cnt_done_filter   assign   cnt_done_filter = ( cnt_core == `MAX_CNT_10MS - 1 ) ;// reg     [`key_length -1:0]      key_flag  always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) key_flag <= 0 ;else if(FILTER_UPtoSAMPLING)key_flag <= ~key_in_r2 ;else key_flag <= 0 ;endendmodule
// led闪烁实验,间隔0.25s
`include "para.v"
module led(input       wire            sys_clk     ,input       wire            sys_rst_n   ,input       wire    [1:0]   key_in      ,output      reg     [1:0]   led_out     
);reg     [1:0]   led_mod  ;reg     [23:0]  cnt_25ms ;wire            cnt_25ms_flag ;// led_modalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) led_mod <= 2'b00 ;else if((led_mod == 2'b01 && key_in == 2'b01) || (led_mod == 2'b10 && key_in == 2'b10))led_mod <= 2'b00 ;else if(key_in == 2'b01)led_mod <= 2'b01 ;else if(key_in == 2'b10)led_mod <= 2'b10 ;else led_mod <= led_mod ;end// cnt_25msalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) cnt_25ms <= 24'd0 ;else if(led_mod == 2'b01 || led_mod == 2'b10) beginif(cnt_25ms == `MAX_CNT_250MS - 1)cnt_25ms <= 24'd0 ;else cnt_25ms <= cnt_25ms + 1'b1 ;endelse cnt_25ms <= 24'd0 ;endassign  cnt_25ms_flag = (cnt_25ms == `MAX_CNT_250MS - 1) ;// led_outalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) led_out <= 2'b11 ;else case (led_mod)2'b00:  led_out <= 2'b11 ;2'b01:  if(led_out[1] == led_out[0])led_out <= 2'b10 ;else if(cnt_25ms_flag)led_out <= ~led_out ;else led_out <= led_out ;2'b10:  if(led_out[1] != led_out[0])led_out <= 2'b11 ;else if(cnt_25ms_flag)led_out <= ~led_out ;else led_out <= led_out ;default: led_out <= led_out ;endcaseendendmodule

`define key_length 2
`define MAX_CNT_10MS  500_000
`define MAX_CNT_500MS 25_000_000
`define MAX_CNT_250MS 12_500_000

`include "para.v"
module top(input       wire            sys_clk    ,input       wire            sys_rst_n  ,input       wire    [1:0]   key_in     ,output      wire    [1:0]   led_out       
);// 例化间连�?wire    [`key_length -1:0]      key_flag    ;
key_filter key_filter_inst(.sys_clk                ( sys_clk    ) ,.sys_rst_n              ( sys_rst_n  ) ,.key_in                 ( key_in     ) ,.key_flag               ( key_flag   )  
);led led_inst(.sys_clk                ( sys_clk   ) ,.sys_rst_n              ( sys_rst_n ) ,.key_in                 ( key_flag  ) ,.led_out                ( led_out   )  
);endmodule

仿真:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/139883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

长春理工大学漏洞报送证书

获取来源&#xff1a;edusrc&#xff08;教育漏洞报告平台&#xff09; url&#xff1a;主页 | 教育漏洞报告平台 兑换价格&#xff1a;10金币 获取条件&#xff1a;提交长春理工大学任意中危或以上级别漏洞

Linux驱动开发——PCI设备驱动

目录 一、 PCI协议简介 二、PCI和PCI-e 三、Linux PCI驱动 四、 PCI设备驱动实例 五、 总线类设备驱动开发习题 一、 PCI协议简介 PCI (Peripheral Component Interconnect&#xff0c;外设部件互联) 局部总线是由Intel 公司联合其他几家公司一起开发的一种总线标准&#…

【数据结构】树与二叉树(十二):二叉树的递归创建(算法CBT)

文章目录 5.2.1 二叉树二叉树性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点&#xff0c;其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…

mysql基础 --子查询

文章目录 子查询子查询案例 子查询 一个查询语句&#xff0c;嵌套在另一个查询语句内部&#xff1b;子查询先执行&#xff0c;其结果被外层主查询使用&#xff1b;子查询放入括号内&#xff1b;子查询放在比较条件的右侧&#xff1b;子查询返回一条&#xff0c;为单行子查询(对…

python工具HIKVISION视频编码设备接入网关任意文件下载

python工具 构造payload /serverLog/downFile.php?fileName../web/html/serverLog/downFile.php漏洞证明 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法而造成的任何…

PyTorch技术和深度学习——三、深度学习快速入门

文章目录 1.线性回归1&#xff09;介绍2&#xff09;加载自由泳冠军数据集3&#xff09;从0开始实现线性回归模型4&#xff09;使用自动求导训练线性回归模型5&#xff09;使用优化器训练线性回归模型 2.使用torch.nn模块构建线性回归模型1&#xff09;使用torch.nn.Linear训练…

通过SD卡给某摄像头植入可控程序

0x01. 摄像头卡刷初体验 最近研究了手上一台摄像头的sd卡刷机功能&#xff0c;该摄像头只支持fat32格式的sd卡&#xff0c;所以需要先把sd卡格式化为fat32&#xff0c;另外微软把fat32限制了最大容量32G&#xff0c;所以也只能用不大于32G的sd卡来刷机。 这里使用32G的sd卡来…

基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码

基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于樽海鞘群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

vColorPicker与vue3-colorPicker——基于 Vue 的颜色选择器插件

文章目录 前言样例特点 一、使用步骤&#xff1f;1. 安装2.引入3.在项目中使用 vcolorpicker 二、选项三、事件四、问题反馈问题所在安装引入例子效果图 前言 vColorPicker——官网 vColorPicker——GitHub 样例 vColorPicker是基于 Vue 的一款颜色选择器插件&#xff0c;仿照…

【入门Flink】- 10基于时间的双流联合(join)

统计固定时间内两条流数据的匹配情况&#xff0c;需要自定义来实现——可以用窗口&#xff08;window&#xff09;来表示。为了更方便地实现基于时间的合流操作&#xff0c;Flink 的 DataStrema API 提供了内置的 join 算子。 窗口联结&#xff08;Window Join&#xff09; 一…

面向对象基础(以python语言为例)

1、定义一个类&#xff1b;实例化类的对象&#xff1b;调用类中的方法 #定义一个类 class Student:#类方法&#xff08;即函数&#xff09;def study(self,course_name):print(f学生正在学习{course_name})def play(self):print("xx学生正在玩游戏")#实例化&#xf…

从0到1实现一个前端监控系统(附源码)

目录 一、从0开始 二、上报数据方法 三、上报时机 四、性能数据收集上报 收集上报FP 收集上报FCP 收集上报LCP 收集上报DOMContentLoaded 收集上报onload数据 收集上报资源加载时间 收集上报接口请求时间 五、错误数据收集上报 收集上报资源加载错误 收集上报js错…

Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器

1.前言 首先要实现这个功能&#xff0c;必须先搞懂如何通过C调用python脚本文件最为关键&#xff0c;因为两者的环境不同。本质上是在 c 中启动了一个 python 解释器&#xff0c;由解释器对 python 相关的代码进行执行&#xff0c;执行完毕后释放资源。 2 模块功能 2.1python…

Windows server 2008 R2 IIS搭建ASP网站教程

一、安装应用程序服务器 提示安装成功 二、添加角色服务asp 三、asp网站配置 放入源码 设置网站首页为index.asp: 设置应用程序池 四、设置网站目录属性 五、access数据库连接配置 Cd c:\Windows\System32\inetsrv appcmd list apppool /xml | appcmd set apppool /…

K9203 996920302 面向DNP3的网络安全解决方案

K9203 996920302 面向DNP3的网络安全解决方案 2014年ISA卓越技术创新奖获得者&#xff0c;超电子&#xff0c;3eTI的CyberFence工业防火墙解决方案提供强大加密和应用程序级深度数据包检测(DPI)功能。最近&#xff0c;3eTI为其CyberFence产品线增加了DNP3(分布式网络协议)支持…

SpringBoot Web开发

SpringBoot3-Web开发 SpringBoot的Web开发能力&#xff0c;由SpringMVC提供。 Web开发的三种方式 方式处理过程注意事项实现效果全自动直接编写控制逻辑全部使用自动给配置默认效果手自一体Configuration、 配置WebMvcConfigurer、 配置WebMvcRegistrations不要标注 EnableWeb…

【Linux】:静动态库

静动态库 一.静态库1.设计静态库2.生成静态库3.发布静态库4.使用静态库 二.动态库1.设计动态库2.生成和发布动态库3.使用 一.静态库 程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。 静态库链接格式&#xff1a;libxxx.a(前缀是lib,后缀是…

基于安卓android微信小程序的四六级助手系统

项目介绍 随着我国教育需求不断增加&#xff0c;高校教育资源有限&#xff0c;教育经费相对不足的情况下&#xff0c;利用现代信息技术发展高等教育&#xff0c;不仅充分利用了优秀的教育资源&#xff0c;而且为更多的人提供接受高等教育的机会&#xff0c;同时这也是极大促进…

【Unity每日一记】“调皮的协程”,协程和多线程的区别在哪里

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

网络原理-UDP/TCP详解

一. UDP协议 UDP协议端格式 由上图可以看出&#xff0c;一个UDP报文最大长度就是65535. • 16位长度&#xff0c;表示整个数据报&#xff08;UDP首部UDP数据&#xff09;的最大长度&#xff08;注意&#xff0c;这里的16位UDP长度只是一个标识这个数据报长度的字段&#xff0…