时序图绘制软件

一. 序言

在FPGA设计过程中,经常需要编写设计文档,其中,不可缺少的就是波形图的绘制,可以直接截取Vivado或者Modelsim平台实际仿真波形,但是往往由于信号杂乱无法凸显重点。因此,通过相应软件绘制波形,并予以标注,会更加直观。目前,常用的波形绘制软件有:" Visio、TimeGen、WaveDrom" 等,本文主要介绍这三款软件波形图的绘制。

一、Visio

Visio软件用于波形绘制相较于后两者绘图可以达到一样的效果,但是在波形绘制过程中要做到信号名、信号波形边沿对齐等是比较繁琐的,而且需要搭配相应的图形包绘制起来才会更便捷(Visio常用波形图形包)。Visio绘制的时序波形如下图所示。

二、TimeGen

TimeGen软件的界面如下图所示。
在这里插入图片描述

该界面下的按键功能说明如下:

在这里插入图片描述

添加时钟信号:用于添加理想时钟该信号。选中该信号右键选择Edit Attributes可以设置信号名、信号名字体、信号名字号颜色、上升沿触发(Rising Edge )还是下降沿触发(Falling Edge)、时钟信号占空比(Clock Duty)以及该时钟信号的时钟宽度是默认时钟宽度的几倍(Clock)等;
添加电平信号: 用于添加位宽为1的电平信号。与时钟信号一致,选中该信号右键选择Edit Attributes可以设置各个参数;
添加多比特信号:用于添加位宽为多比特的信号;
添加空信号:在选中信号的上一行添加一个空信号(即占一个信号的高度);
ASCII波形输出:用于输出整个时序波形的ASCII表示,可以直接复制粘贴到word文档中;
删除一个时钟周期:删除选中波形图中所有信号的最后一个时钟周期;
增加一个时钟周期:在最后一个时钟周期后面添加一个时钟周期;
增加时钟周期宽度:增加每个时钟周期的宽度;
减小时钟周期宽度:减小每个时钟周期的宽度;
增加信号高度:增加每个信号的高度;
减小信号高度:减小每个信号的高度;
减小信号之间间距:减小信号与信号之间的间距;
增加信号之间间距:增加信号与信号之间的间距;
选中信号:选中某个信号或者选中某个信号的某个时钟周期内的值;
转为高/低电平:将信号当前时钟周期的值转为高/低电平(选中后向上/向下拉)
转为高阻态Z:将信号当前时钟周期的值转为高阻态Z;
多位宽信号变化:用于设置多比特信号在上升沿或者下降沿处发生改变;
在某个时钟周期内添加数值:对信号某个时钟周期内的数值进行标注;
标注建立/保持时间:标注建立时间/保持时间(两种不同的标注形式,一种是双向箭头,一种是两个单向箭头);
添加信号箭头标注:在不同信号的不同时钟之间添加箭头标注;
省略符:添加省略符,用于表示信号一段时间内保持该值;
填充颜色:填充颜色,右击可切换填充色;
清除填充颜色:清除填充颜色;
TimeGen绘制的时序波形如下图所示。

在这里插入图片描述

三、WaveDrom

WaveDrom是一种基于js的时序图工具,与前两者相比,没有便捷的工具栏直接绘制波形图,通过js语言进行绘制,绘制的波形图也较为美观。其基本语法如下:

{signal: [
// 信号1
{name: ‘信号名1’, wave: ‘波形’},
// 信号2
{name: ‘信号名2’, wave: ‘波形’},
// 信号…
],
“config” : { “hscale” : 信号宽度 }
}

这里波形绘制主要有两个主要参数:信号名与波形。这里波形的控制常用语法如下表所示:

符号 功能
. 将先前的状态再延迟一个时钟周期
p 以上升沿开始的一个时钟周期
P 以上升沿开始的一个时钟周期(上升沿带箭头)
n 以下降沿开始的一个时钟周期
N 以下降沿开始的一个时钟周期(下降沿带箭头)
x 不定态波形
z 高阻态波形
u 虚线高阻态波形
d 虚线低电平
l 理想波形的低电平
h 理想波形的高电平
L 理想波形的低电平(在变为低电平处带箭头)
H 理想波形的高电平(在变为高电平处带箭头)
0 理想波形的低电平
1 理想波形的高电平
2 多比特数据(背景白色)
3 多比特数据(背景黄色)
4 多比特数据(背景橙色)
5 多比特数据(背景蓝色)
6 多比特数据(背景天青色)
7 多比特数据(背景绿色)
8 多比特数据(背景紫色)
9 多比特数据(背景粉色)
= 多比特数据(背景白色),与“2”功能一致
∣ |∣ 省略符

在这里插入图片描述

WaveDrom软件绘制的时序波形如下图所示。

{signal: [
{name: ‘clk’, wave: ‘P…’},
{name: ‘a’ , wave:‘010…10’},
{name: ‘b’ , wave:‘0.1…0.’},
{name: ‘c’ , wave:‘01.0…’},

],
“config” : { “hscale” : 1 }
}

在这里插入图片描述

四、总结
Visio、TimeGen 和 WaveDrom 功能互补,可满足不同场景下的波形图绘制需求。
在这里插入图片描述

原文链接:https://blog.csdn.net/qq_42224089/article/details/138061567

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

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

相关文章

计网学习笔记第3章 数据链路层(灰灰题库)

题目 11 单选题 下列说法正确的是______。 A. 路由器具有路由选择功能,交换机没有路由选择功能 B. 三层交换机具有路由选择功能,二层交换机没有路由选择功能 C. 三层交换机适合异构网络,二层交换机不适合异构网络 D. 路由器适合异构网络&…

SQL的LEFT JOIN优化

原sql,一个base表a,LEFT JOIN三个表抽数 SELECT ccu.*, ctr.*, om.*, of.* FROM ods.a ccu LEFT JOIN ods.b ctr ON ccu.coupon_code ctr.coupon_code AND ctr.is_deleted 0 LEFT JOIN ods.c om ON ctr.bill_code om.order_id AND om.deleted 0 LEFT JOIN ods.…

Redis 核心概念、命令详解与应用实践:从基础到分布式集成

目录 1. 认识 Redis 2. Redis 特性 2.1 操作内存 2.2 速度快 2.3 丰富的功能 2.4 简单稳定 2.5 客户端语言多 2.6 持久化 2.7 主从复制 2.8 高可用 和 分布式 2.9 单线程架构 2.9.1 引出单线程模型 2.9.2 单线程快的原因 2.10 Redis 和 MySQL 的特性对比 2.11 R…

【Day 18】Linux-DNS解析

目录 一、DNS概念 1、概念和作用 2、域名解析类型 3、 软件与服务 4、DNS核心概念 区域 记录 5、查询类型 6、分层结构 二、DNS操作 配置本机为DNS内网解析服务器 (1)修改主配置文件 (2)添加区域 正向解析区域: …

Python 中 OpenCV (cv2) 安装与使用介绍

Python 中 OpenCV (cv2) 安装与使用详细指南 OpenCV (Open Source Computer Vision Library) 是计算机视觉领域最流行的库之一。Python 通过 cv2 模块提供 OpenCV 的接口。 一、安装 OpenCV 方法 1:基础安装(推荐) # 安装核心包&#xff0…

微软WSUS替代方案

微软WSUS事件回顾2025年7月10日,微软最新确认Windows Server Update Services(WSUS)出现了问题,导致IT管理员无法正常同步和部署Windows更新。WSUS是允许管理员根据策略配置,将更新推送到特定计算机,并优化…

Minio 分布式集群安装配置

目录创建 mkdir -p /opt/minio/run && mkdir -p /etc/minio && mkdir -p /indata/disk_0/minio/datarun:启动脚本及二进制文件目录/etc/minio:配置文件目录data:数据存储目录下载 minio wget https://dl.min.io/server/minio…

Spring Boot + ShardingSphere 实现分库分表 + 读写分离实战

🚀 Spring Boot ShardingSphere 实现分库分表 读写分离(涵盖99%真实场景) 🏷️ 标签:ShardingSphere、分库分表、读写分离、MySQL 主从、Spring Boot 实战 分库分表 vs 读写分离 vs 主从配置与数据库高可用架构区别 …

将普通用户添加到 Docker 用户组

这样可以避免每次使用 Docker 命令时都需要 sudo。以下是具体步骤:1. 创建 Docker 用户组(如果尚未存在) 默认情况下,安装 Docker 时会自动创建 docker 用户组。可以通过以下命令检查: groupadd docker(如果…

Scrapy(一):轻松爬取图片网站内容​

目录 一、CrawlSpider 简介​ 二、实战案例:图片网站爬取​ 三、代码解析:核心组件详解​ 类定义: 2.核心属性:​ 3.爬取规则(Rules):​ 4.数据提取方法(parse_item)…

使用 systemd 的原生功能来实现 Redis 的自动监控和重启,而不是依赖额外的脚本最佳实践方案

使用 systemd 的原生功能来实现 Redis 的自动监控和重启,而不是依赖额外的脚本最佳实践方案方案 1:配置 systemd 服务文件(推荐)1. 检查/创建 Redis 的 systemd 服务文件2. 配置关键参数(覆盖配置示例)3. 重…

Eclipse 代码模板

Eclipse 代码模板 引言 Eclipse 作为一款功能强大的集成开发环境(IDE),深受广大开发者的喜爱。在编程过程中,使用代码模板可以大大提高开发效率,减少重复劳动。本文将详细介绍 Eclipse 代码模板的配置、使用方法以及一…

输电线路防外破声光预警装置 | 防山火/防钓鱼/防施工安全警示系统

在输电网络的安全保障中,外力破坏是一个不容忽视的问题,各类隐患可能对电力系统造成严重影响。TLKS-PMG-WP 输电线路声光防外破警示装置在应对这类挑战时,有着独特的技术表现,下面从功能和技术参数两方面进行详细介绍。核心功能解…

STM32——STM32CubeMX

总:STM32——学习总纲 一、简介 注意,非逻辑代码。 可兼容不同系列的STM32Cube固件包。 STM32Cube前置知识链接: STM32——HAL库 不可过多依赖,此工具只针对STM32芯片,类似英飞凌芯片无法配置。主要用于参考。 二、安…

Java NIO 核心原理与秋招高频面试题解析

一、NIO 概述Java NIO(New I/O 或 Non-blocking I/O)是 Java 1.4 引入的一套全新 I/O API,位于 java.nio 包下。NIO 提供了与传统 BIO(Blocking I/O)完全不同的 I/O 处理方式,通过非阻塞模式、缓冲区&#…

vue3+element-plus,el-popover实现筛选弹窗的方法

实现一个筛选框,点击筛选按钮出现弹窗,弹窗内有选择框/输入框/单选框等等,底部有重置/确定两个按钮。需求:点击筛选外部其他位置可以关闭弹窗,关闭弹窗后已编辑的数据不保存,点击确定按钮关闭弹窗&#xff…

python每日一题 贪心算法练习

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost &…

Python + Pika RabbitMQ集群压测完整方案

一、最近搭建了个rabbitmq集群 三个磁盘节点,上生产环境之前想做个压测,测试下稳定性,参考Deepseek做了如下测试方案二、核心代码实现: 配置文件 (config.py) import os RABBITMQ_NODES [amqp://admin:123456192.168.0.175:8101,…

【第7话:相机模型3】自动驾驶IPM图像投影拼接技术详解及代码示例

IPM图像投影拼接技术详解 IPM(逆透视映射)图像投影拼接技术是一种在计算机视觉中广泛应用的图像处理方法,主要用于将多个透视视图的图像转换为鸟瞰视图并拼接成一个无缝的大场景图像。该技术特别适用于自动驾驶、机器人导航和监控系统等领域&…

【测试工程思考】测试自动化基础能力建设

1 回顾 传统软件研发体系下定义的软件测试是从用户视角设计的。测试是试图穷尽用户行为的工程,从测试用例(use case)的英文定义就可见一般。测试的逻辑资产就是用自然语言去描述用户的操作行为或路径。 但随着软件工程向分布式架构和敏捷交付…