zynq网络时钟控制寄存器_ZYNQ笔记(6):普通自定义IP封装实现PL精准定时中断...

软件的定时中断很难控制精准触发沿的位置,可以通过 PL-PS 的中断完成精准的定时中断。PL 的中断通过 Verilog 代码产生,这样紧密结合 PS-PL 的处理,发挥各自的优势。

一、PL 侧定时中断

1.实际要求

① 上升沿中断;

② 高电平宽度不小于1us;

③ 中断计数器的时钟为 200Mhz;

④ 有两个中断: 3ms 和0.5ms

2.Verilog中断代码

1 //**************************************************************************2 //*** 名称 : genintr3ms05ms.v3 //*** 作者 : xianyu_FPGA4 //*** 博客 :https://www.cnblogs.com/xianyufpga/

5 //*** 日期 :2019-08-106 //*** 描述 : 3ms和0.5ms精准延时7 //**************************************************************************

8

9

10 modulegenintr3ms05ms11 //====================================================================

12 (13 //input -----------------------------------------

14 input wire clk , //时钟,200Mhz

15 input wire rst , //复位,高电平有效16 //output ----------------------------------------

17 output reg intr3ms , //3ms中断

18 output reg intr05ms //0.5ms中断

19 );20 //====================================================================

21 parameter CNT3MS_END = 600000;22 parameter CNT05MS_END = 100000;23 parameter PULSEW = 200 ; //中断高电平维持时间24 //====================================================================

25 reg [23:0] cnt3ms ;26 wireadd_cnt3ms ;27 wireend_cnt3ms ;28 reg [23:0] cnt05ms ;29 wireadd_cnt05ms ;30 wireend_cnt05ms ;31

32 //==========================================================================33 //== 0.5ms延时34 //==========================================================================

35 always @(posedge clk) begin

36 if(rst)37 cnt3ms <= 0;38 else if(add_cnt3ms) begin

39 if(end_cnt3ms)40 cnt3ms <= 0;41 else

42 cnt3ms <= cnt3ms + 1;43 end

44 end

45

46 assign add_cnt3ms = 1;47 assign end_cnt3ms = add_cnt3ms && cnt3ms== CNT3MS_END-1;48

49 always @(posedge clk) begin

50 if(rst) begin

51 intr3ms <= 0;52 end

53 else if(end_cnt3ms) begin

54 intr3ms <= 1;55 end

56 else if(add_cnt3ms && cnt3ms==PULSEW-1) begin

57 intr3ms <= 0;58 end

59 end

60

61 //==========================================================================62 //== 3ms延时63 //==========================================================================

64 always @(posedge clk) begin

65 if(rst)66 cnt05ms <= 0;67 else if(add_cnt05ms) begin

68 if(end_cnt05ms)69 cnt05ms <= 0;70 else

71 cnt05ms <= cnt05ms + 1;72 end

73 end

74

75 assign add_cnt05ms = 1;76 assign end_cnt05ms = add_cnt05ms && cnt05ms== CNT05MS_END-1;77

78 always @(posedge clk) begin

79 if(rst) begin

80 intr05ms <= 0;81 end

82 else if(end_cnt05ms) begin

83 intr05ms <= 1;84 end

85 else if(add_cnt05ms && cnt05ms==PULSEW-1) begin

86 intr05ms <= 0;87 end

88 end

89

90

91

92 endmodule

3.PL中断封装成私有IP

①打开 Vivado,新建工程,然后选择菜单栏 Tools --- Create and Package New IP...

②Vivado 打开了一个新的界面,类似于原界面,但是多了一个选项

这时如果 Verilog 有语法错误,Source处会显示红色波浪线。也可以在此新界面修改代码,修改后保存,页面显示成编辑图标,必须点击更新才行。

③默认情况下,复位是低有效,我们可以手动改成高有效

④选择 Review and Package 可以看到 Package IP ,点击它即可完成 IP 的封装

⑤此页面自动关闭,回到原页面,可以在 Settings --- IP --- Repository 中可以看到这个自定义 IP,此页面也可以手动添加第三方 IP

⑥生成 bit 文件并以此加载 SDK。

二、ZYNQ硬中断的使用

1.进入到 Create Block Design 中,输入 genintr3ms05ms 即可添加该自定义 IP

2.添加 ZYNQ,复位选上,时钟频率设置为 200Mhz,同时记得勾选中断

3.连线,两个中断,但只有一个接口,我们借用一个 Concat IP 即可

4.连线可以直接点击上方 Run 自动布线,会多出一个 Processor System Reset模块,中断复位是高有效,而ZYNQ复位是低有效,此模块会协调好。而手动布线则可能出错。

5.如果布线时发现自定义 IP 需要修改,可以选中该 IP,右键进入修改

之后就可以进入到SDK进行中断代码编写了,和普通PL中断是类似的。

参考资料:

[1]V3学院FPGA教程

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

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

相关文章

后端学习 - Redis

文章目录一 Redis 概述Redis 为什么是单线程&#xff0c;单线程为什么这么快&#xff1f;数据存储结构二 常用数据类型1 String2 HashHash 的扩容机制&#xff1a;渐进式 rehash*3 List4 Set5 Zset三 Redis 事务1 乐观锁与 watch 命令2 事务的三个特性四 Redis 持久化1 RDB(Red…

再被补刀!Flash又遭抛弃,你会怀念它吗?

喜欢就关注我们吧&#xff01;微软近日发布通知&#xff0c;称更新了关于 Adobe Flash Player 的删除。微软更新目录站点可下载更新 KB4577586&#xff0c;用于删除 Flash Player。此更新适用于所有受支持的操作系统版本。重要版本 Windows 10 和 Windows 8.1 的可选更新也将在…

4位加法器的设计代码verilog_HDLBits:在线学习Verilog(六 · Problem 25-29)

本系列文章将和读者一起巡礼数字逻辑在线学习网站 HDLBits 的教程与习题&#xff0c;并附上解答和一些作者个人的理解&#xff0c;相信无论是想 7 分钟精通 Verilog&#xff0c;还是对 Verilog 和数电知识查漏补缺的同学&#xff0c;都能从中有所收获。附上传送门&#xff1a;M…

译 | 将数据从Cosmos DB迁移到本地JSON文件

点击上方蓝字关注“汪宇杰博客”原文&#xff1a;Azure Tips and Tricks翻译&#xff1a;汪宇杰在Cosmos DB中使用数据迁移工具有一项重复的任务是将数据从一种数据库格式迁移到另一种数据库格式。我最近使用Cosmos DB作为数据库来存储Ignite大会发出的所有推文。然而一旦获得了…

在线教育后端开发项目总结

文章目录一 数据库访问接口1 MyBatis2 Spring Data JPA3 Spring Data MongoDB二 数据库1 MySQL2 MongoDB3 Redis三 开发规范化、响应格式与异常处理1 开发规范2 响应格式3 异常处理四 RabbitMQ五 Spring Cloud 相关工具1 Eureka2 Ribbon3 Feign4 Zuul 网关六 搜索服务1 Elastic…

通讯故障_掌握PLC必备知识,人机界面和 PLC 出现通讯故障如何分析解决

此次主要在阐述人机界面和 PLC 通讯时的模式状态&#xff0c;并列举了通讯故障实例。帮助大伙加深对这俩者的了解&#xff0c;掌握起来也不再是难题&#xff0c;解决掉拦路虎。一 台数 显 四 辊 卷 板 机PLC 控 制 系 统 核 心 与 人机界面在使用过程中&#xff0c;出现人机界面…

.NET架构小技巧(4)——反射,架构人员法宝II

上一篇博文中&#xff0c;利用属性反射的特点&#xff0c;用两个方法完成了字符转实体&#xff0c;实体转字符的工作&#xff0c;但有些复杂的场景&#xff0c;上面方法就没那么好用了&#xff0c;就需要更复杂的方式来组装处理。先来看一个接口文档&#xff0c;下面是接口的调…

后端学习 - 设计模式与设计原则

文章目录设计原则1 单一职责原则2 开闭原则3 Liskov 替换原则4 依赖倒置原则5 接口隔离原则6 迪米特法则设计模式&#xff1a;创建型模式1 工厂模式2 抽象工厂模式3 单例模式设计模式&#xff1a;行为型模式1 观察者模式2 模板模式3 备忘录模式设计模式&#xff1a;结构型模式1…

ai的预览模式切换_AI字体制作,用AI制作创意阶梯式文字

本篇教程通过AI制作一款创意阶梯式文字&#xff0c;教程中有很多知识点需要掌握&#xff0c;比如路径分割为网络&#xff0c;3D效果应用等&#xff0c;我们要利用他们创造出我们需要的文字出来&#xff0c;具体是如何制作的&#xff0c;我们通过教程一起来学习一下吧。效果图&a…

.NET架构小技巧(5)——反射,架构人员法宝III

通过两篇博文&#xff0c;我们了解到&#xff0c;反射是通过非实例化(new)的手段来对对象和对象内的成员访问的&#xff0c;不仅仅如此&#xff0c;反射还可以突破访问修饰符的限制&#xff0c;以上帝视角来窥探对象内部全部成员(字段&#xff0c;属性&#xff0c;方法)&#x…

分类计数原理与分步计数原理_《分类计数原理与分步计数原理》优秀说课稿

《分类计数原理与分步计数原理》优秀说课稿一、本节内容的地位与重要性“分类计数原理与分步计数原理”是《高中数学》一节独特内容。这一节课与排列、组合的基本概念有着紧密的联系&#xff0c;通过对这一节课的学习&#xff0c;既可以让学生接受、理解分类计数原理与分步计数…

新版本 Swashbuckle swagger 组件中的 坑

新版本 Swashbuckle swagger 组件中的 Servers 坑Intro上周做了公司的项目升级&#xff0c;从 2.2 更新到 3.1&#xff0c; swagger 直接更新到了最新&#xff0c;swagger 用的组件是 Swashbuckle.AspNetCore&#xff0c;然后遇到一个 swagger 的问题&#xff0c; 在本地测试是…

后端学习 - MySQL存储引擎、索引与事务

文章目录一 存储引擎1 MyISAM 与 InnoDB 的差异二 索引1 主键索引与二级索引、索引覆盖、延迟关联2 聚簇索引与非聚簇索引3 数据结构3.1 哈希表3.2 B树3.3 B树3.4 跳表3.5 为什么不使用红黑树3.6 为什么不使用B树**4 索引下推 ICP **5 索引失效&#xff08;索引不命中&#xff…

itext设置pdf的尺寸_如何获取pdf文档iText 7的页面大小-问答-阿里云开发者社区-阿里云...

我在iText 7中有一个Java程序&#xff0c;可以接收JSON数据并生成一个PDF文档(带有页眉和页脚)&#xff0c;该文档可以很好地处理clientData注释中的变量中的数据&#xff0c;但是当在无注释clientData中使用变量不起作用时&#xff0c;我得到了此错误java.lang.NullPointerExc…

. NET5正式版本月来袭,为什么说gRPC大有可为?

当前企业正在慢慢改用微服务架构来构建面向未来的应用程序&#xff0c;微服务使企业能够有效管理基础架构&#xff0c;轻松部署更新或改进&#xff0c;并帮助IT团队的创新和学习。它还可以帮助企业能够设计出可以轻松按需扩展的应用程序&#xff0c;此外&#xff0c;随着企业转…

宝塔部署node项目_宝塔面板部署 node.js 项目

安装&#xff1a; Nginx 1.16.1安装&#xff1a;MySQL 5.5.62安装&#xff1a;PM2管理器 4.2.3Nginx 配置如下&#xff1a;user www www;worker_processes auto;error_log /www/wwwlogs/nginx_error.log crit;pid /www/server/nginx/logs/nginx.pid;worker_rlimit_nofile 51200…

后端学习 - 操作系统

文章目录一 基本概念1 操作系统的特征2 操作系统的位置3 计算机的硬件组成4 中断与异常5 系统调用二 进程管理1 进程控制块 PCB&#xff08;Process Control Block&#xff09;2 进程的状态与转换3 进程间的通信4 线程5 调度算法6 死锁7 PV 操作三 内存管理1 内存的非连续分配2…

西门子触摸屏脚本程序_通过驿唐PLC501远程下载Smart Line触摸屏

通过驿唐PLC-501远程下载Smart Line触摸屏一、触摸屏设置将PLC-501和Smart 700 IE V3通过网线连到一起。触摸屏上电后&#xff0c;点击Control Panel进入控制面板界面。进入控制面板后&#xff0c;点击Ethernet设置IP地址&#xff0c;与PLC-501联网宝在同一个网段。联网宝的IP地…

.NET for Apache Spark 1.0 版本发布

.NET for Apache Spark 1.0 现已发布&#xff0c;这是一个用于 Spark 大数据的 .NET 框架&#xff0c;可以让 .NET 开发者轻松地使用 Apache Spark。该软件包由微软和 .NET Foundation 牵头&#xff0c;经过大约两年的开发。在 2019 年的 Spark AI 峰会上&#xff0c;微软曾宣…

算法 - 排序算法

文章目录1 快速排序2 堆排序3.冒泡排序4.选择排序5.插入排序1 快速排序 时间复杂度 O(nlogn)不稳定在大多数情况下都是适用的&#xff0c;尤其在数据量大的时候性能优越性更加明显 def quicksort(start, end, nums):if start > end:return flag nums[start]r_ptr endl_pt…