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.rhkb.cn/news/186367.html

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

相关文章

python3.8.10虚拟环境安装talib总报平台不匹配

目录 环境&#xff1a; 需求&#xff1a; 问题&#xff1a; 概述 过程及解决 解决方案总结 环境&#xff1a; 操作系统&#xff1a;window10、64位 开发工具&#xff1a;pycharm python版本&#xff1a;python3.8.10 需求&#xff1a; 在python3.8.10的虚拟环境中安…

短短 45 分钟发布会,OpenAI 如何再次让 AI 圈一夜未眠

目录 前言 1. GPT-4 Turbo&#xff0c;更快&#xff0c;更省钱 2. GPT Store 来了&#xff01; 3. 零代码创建 AI Agent 前言 对于 AI 行业从业者来说&#xff0c;刚刚可能是一夜未眠。 北京时间 11 月 7 日凌晨&#xff0c;美国人工智能公司 OpenAI 的开发者大会正式开…

HTTParty库数据抓取代码示例

使用HTTParty库的网络爬虫程序&#xff0c; ruby require httparty # 设置服务器 proxy_host proxy_port # 使用HTTParty库发送HTTP请求获取网页内容 response HTTParty.get(/, :proxy > { :host > proxy_host, :port > proxy_port }) # 打印获取的网页内容 …

亚马逊云科技产品测评』活动征文|通过使用Amazon Neptune来预测电影类型初体验

文章目录 福利来袭Amazon Neptune什么是图数据库为什么要使用图数据库什么是Amazon NeptuneNeptune 的特点 快速入门环境搭建notebook 图神经网络快速构建加载数据配置端点Gremlin 查询清理 删除环境S3 存储桶删除 授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转…

Sketch是什么软件,如何收费和获得免费版

Sketch软件为设计师构建了一个优秀的本地Mac应用程序。Sketch是整个设计过程的平台&#xff0c;通过基于Web的工具共享工作&#xff0c;获取反馈&#xff0c;测试原型&#xff0c;并将其移交给任何浏览器。Sketch软件的定价根据不同的许可类型和订阅计划而变化。本文从Sketch软…

LeetCode算法题解(回溯、难点)|LeetCode332. 重新安排行程

LeetCode332. 重新安排行程 题目链接&#xff1a;332. 重新安排行程 题目描述&#xff1a; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08…

密码学 - RSA签名算法

实验九 RSA签名算法- 一、实验目的 通过实验掌握GMP开源软件的用法&#xff0c;理解RSA数字签名算法&#xff0c;学会RSA数字签名算法程序设计&#xff0c;提高一般数字签名算法的设计能力。 二、实验要求 (1)基于GMP开源软件&#xff0c;实现RSA签名算法。 (2)要求有对应…

浅谈多回路电表在荷兰光伏系统配电项目中的应用

1.背景信息 Background&#xff1a; 随着全球化石能源&#xff08;石油&#xff0c;煤炭&#xff09;越来越接近枯竭&#xff0c;污染日趋严重&#xff0c;气候日益变暖等问题&#xff0c;全球多个国家和地区相继出台了法规政策&#xff0c;推动了光伏产业的发展。但是现有的光…

MySQL索引的数据结构

1. 索引及其优缺点 1.1 索引概述 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。 索引的本质&#xff1a;索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”&#xff0c;满足特定查找算法。这些数据结…

合成数据在医疗保健行业的案例研究

从机器人辅助手术到医学成像技术&#xff0c;人工智能在医疗保健领域的应用正在迅速改变医疗保健行业&#xff0c;并改善服务成本和服务质量。例如&#xff0c;埃森哲表示&#xff0c;到 150 年&#xff0c;人工智能临床健康应用每年可以为美国医疗保健行业节省 2026 亿美元。 …

Spring RabbitMQ那些事(1-交换机配置消息发送订阅实操)

这里写目录标题 一、序言二、配置文件application.yml三、RabbitMQ交换机和队列配置1、定义4个队列2、定义Fanout交换机和队列绑定关系2、定义Direct交换机和队列绑定关系3、定义Topic交换机和队列绑定关系4、定义Header交换机和队列绑定关系 四、RabbitMQ消费者配置五、Rabbit…

各大电商平台关于预制菜品种酸菜鱼销售量

# 导入需要的包 library(rvest) # 用于网页抓取 library(tidyverse) # 用于数据处理 library(stringr) # 用于字符串处理# 设置代理信息 proxy_host <- "www.duoip.cn" proxy_port <- 8000# 设置要爬取的网页 url <- "https://jshk.com.cn/products/sa…

【正点原子STM32连载】 第四十九章 SD卡实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第四…

Spring的循环依赖问题

文章目录 1.什么是循环依赖2.代码演示3.分析问题4.问题解决5.Spring循环依赖6. 疑问点6.1 为什么需要三级缓存6.2 没有三级缓存能解决吗&#xff1f;6.3 三级缓存分别什么作用 1.什么是循环依赖 上图是循环依赖的三种情况&#xff0c;虽然方式有点不一样&#xff0c;但是循环依…

Yolov8模型训练报错:torch.cuda.OutOfMemoryError

最近在使用自己的数据训练Yolov8模型的时候遇到了很多错误&#xff0c;下面将逐一解答。 问题报错 在训练过程中红字报错&#xff1a;torch.cuda.OutOfMemoryError: CUDA out of memory. 后面还会跟着一大段报错&#xff1a; Tried to allocate XXX MiB (GPU 0; XXX GiB to…

【云原生】使用nginx反向代理后台多服务器

背景 随着业务发展&#xff0c; 用户访问量激增&#xff0c;单台服务器已经无法满足现有的访问压力&#xff0c;研究后需要将后台服务从原来的单台升级为多台服务器&#xff0c;那么原来的访问方式无法满足&#xff0c;所以引入nginx来代理多台服务器&#xff0c;统一请求入口…

OLED透明屏的应用场景有哪些

OLED透明屏在其他领域的应用包括&#xff1a; 商业展示&#xff1a;在商业展示中&#xff0c;OLED透明屏可以作为展示窗口&#xff0c;展示产品信息、广告宣传和品牌形象。通过将透明屏幕安装在展柜、货架或商业窗口中&#xff0c;可以吸引顾客的注意力并提供引人注目的展示效…

不用开会员就能在线编辑、管理及分享各类地理空间数据!

「四维轻云」作为一款地理空间数据云管理平台&#xff0c;具有三维模型、正射影像、激光点云、数字高程模型、人工模型和矢量数据等地理空间数据的在线管理、浏览及分享等功能&#xff0c;致力于为用户提供更加方便、快捷的地理空间数据解决方案。 一、发布、管理超大空间数据…

人大金仓三大兼容:SQL Server迁移无忧

SQL Server在数据库领域一直占据着重要地位。作为一款成熟稳定的关系型数据库管理系统&#xff0c;SQL Server在国内有着广泛的用户群体&#xff0c;医疗、海关、政务等行业的核心业务系统多采用SQL Server数据库。随着政策与市场的双重驱动&#xff0c;信息技术应用创新产业的…

Node.js中的文件系统(file system)模块

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…