Modelsim仿真问题解疑:初始时间段内逻辑不符

news2024/11/17 14:52:29

目录

一、问题描述

    1.1 设计代码

    1.2 综合结果

    1.3 仿真结果

二、问题原因

三、解决方法

一、问题描述

    在使用mode​lsim进行功能仿真时,会遇到如下情况,仿真结果在前面一段时间内的逻辑输出不符预期,后面的结果符合预期

    以实现一个D触发器的逻辑为例

    1.1 设计代码

    功能简单,为一个异步清零的D触发器

module FF_test(d,ce,clk,clr,fdce  );
input d;
input ce;
input clk;
input clr;
output reg fdce;
always@(posedge clk,posedge clr)
    begin
    if(clr)
        fdce<=0;
    else
        if(ce)
            fdce<=d;
        else
            fdce<=0;
    end
endmodule

测试代码,根据输入数据d时间点变化将输入进行了两轮的变动,一轮在100ns以前,第二轮在100ns之后

`timescale 1ns / 1ns
module FF_tb();
reg d,ce,clk,clr;
wire out;
initial
begin
clk=0;
d=0;
ce=0;
clr=0;
//第一轮数据变化
#10 clr=1;
#4 clr=0;
#4 ce=1;
#11 d=1;
#10 d=0;
#10 d=1;
//第二轮数据变化

#60 clr=1;
#4 clr=0;
#4 ce=1;
#10 d=1;
#10 d=0;
#10 d=1;
end
//时钟周期2ns
always #1 clk=~clk;
FF_test FF(.d(d),.ce(ce),.clk(clk),.clr(clr),.fdce(out));
endmodule

    1.2 综合结果

    综合为FDCE,符合预期

 

    1.3 仿真结果

    在红框1内,当ce=1,clr=0,输入数据d变化时,输出out一直为0,不符合预期逻辑,红框2内,在输出结果正确,clr为1时清零,输出为0,ce=1,clr=0时,out跟随d变化,符合预期

 

二、问题原因

    仔细观察会发现,波形中多了一个全局复位信号GSR,在设计中是未体现的,该信号在100ns时进行了从1到0 的切换,切换之后,输出逻辑符合预期。

 

    100ns来自何处?测试文件中未有设置,信号列表中选中该信号,点击鼠标右键,进入“Object Declaration”查看其来源。

 

    GSR信号来源于FF_tb_func_impl.v文件的glbl模块,如下图,在125行定义了GSR信号,129行的initial模块中对GSR_int进行了赋值,初始值为1,等待ROC_WIDTH=100000(100ns)后状态变为0,符合前面的现象。

 

 

三、解决方法

    ​比较容易想到的办法是直接修改FF_tb_func_impl.v中initial模块,但该模块是仿真前生成的,修改重新运行会被覆盖。此时可借用modelsim的force功能,将GSR信号强制置为0再运行。

    ​操作:选中GSR信号,鼠标右键,执行restart将原有结果删除。

 

   再选中GSR信号,选择“Force”,弹出下图弹框“Force Selected Signal”,在Value中将值改为1'h0,OK进行保存。

 

     ​再将默认运行100ps修改为300ns,即运行300ns,最后执行run。如下图,GSR一直为低电平0,所以前100ns的结果也符合预期

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

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

相关文章

火车头小发猫AI伪原创[php源码]

对于大多数站长来说&#xff0c;有点困难&#xff0c;但是如果他们不知道如何原创&#xff0c;我们不知道如何伪原创吗&#xff1f;我把我常用的伪原创的方法列出来&#xff0c;希望对大家有所帮助。 使用教程&#xff1a;火车头采集器AI伪原创 <?php header("Conte…

使用配置文件自定义线程池参数

首先创建线程池MyThreadConfig &#xff1a; Configuration public class MyThreadConfig {Beanpublic ThreadPoolExecutor threadPoolExecutor(){return new ThreadPoolExecutor(20,200,10,TimeUnit.SECONDS,new LinkedBlockingDeque<>(100000),Executors.defaultThrea…

SpringBoot集成Quartz集群模式

<!-- quartz定时任务 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency> 单机版本&#xff1a; SpringBoot集成Quartz动态定时任务_jobgroupname_小…

CentOS环境下的Nginx安装

Nginx 安装 下载 nginx 下载地址&#xff1a;http://nginx.org/en/download.html 将下载好的压缩包拷贝到根目录下 通过xshell如果出现 bash: rz: 未找到命令 &#xff0c;需要先运行下面的命令 yum -y install lrzsz安装 解压到当前目录 tar -zxvf nginx-1.22.1.tar.gz安…

尚无忧餐桌预订订桌包厢预订小程序源码

1.支持中餐、晚餐不同时间段桌位预定 2.支持包厢&#xff0c;大厅等不同区域预定 本系统后台tpvue 前端原生小程序 <!-- 导航栏 --> <!-- <van-nav-bar title"{{canteen}}" title-class"navbar" /> --> <van-nav-bar title"…

路径规划算法:基于水基湍流优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于水基湍流优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于水基湍流优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

springbboot拦截器,过滤器,监听器及执行流程

执行流程 过滤器是在请求进入容器后&#xff0c;但请求进入servlet之前进行预处理的。请求结束返回也是&#xff0c;是在servlet处理完后&#xff0c;返回给前端之前 请求按照上图进入conteoller后执行完再返回 过滤器&#xff08;Filter&#xff09;&#xff1a; 过滤器是S…

Matlab画等构造图

clc;clear;close all; data xlsread(TOPBRENT等T0构造.xlsx); x data(:,1) xmax max(x); xmin min(x); y data(:,2) ymax max(y); ymin min(y); z data(:,3); N 45; …

BeanFactory与ApplicationContext基本介绍

接口定义能力&#xff0c;抽象类实现接口的一些重要方法&#xff0c;最后实现类可以实现自己的一些逻辑 BeanFactory简介 仅仅是一个接口&#xff0c;Spring 的核心容器&#xff0c;并不是IOC容器的具体实现&#xff0c;它的一些具体实现类才是 BeanFactory 与 ApplicationCo…

运动想象MI:带通滤波的Python实现

运动想象MI&#xff1a;带通滤波的Python实现 0. 引言1. 代码介绍1.1 实现方法&#xff08;1&#xff09;1.2 实现方法&#xff08;2&#xff09; 2. 函数介绍3. 滤波函数介绍4. 总结 0. 引言 在执行运动想象任务时&#xff0c;由于实际采集实验不是在完全屏蔽的环境中进行的&…

计算机体系结构基础知识介绍之高级分支预测(一)

由于需要通过分支危险和停顿来强制控制依赖&#xff0c;分支会损害管道性能。 循环展开是减少分支危险数量的一种方法&#xff1b; 我们还可以通过预测分支的行为来减少分支的性能损失。 分支预测是一种计算机技术&#xff0c;它的目的是在执行分支指令之前&#xff0c;预测分支…

人工智能三要素:算法、算力、数据

1 人工智能介绍 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是指计算机系统模拟、模仿和执行人类智能的能力。它是一门研究如何使计算机能够像人类一样思考、学习、推理和解决问题的科学和技术领域。 人工智能通过利用大量的数据和强大的计算…

ACL访问控制、Squid 反向代理

ACL访问控制、Squid 反向代理 一、ACL访问控制1、定义访问控制列表2、配置步骤 二、Squid 反向代理1、工作机制2、配置步骤 一、ACL访问控制 在配置文件 squid.conf 中&#xff0c;ACL 访问控制通过以下两个步骤来实现&#xff1a; &#xff08;1&#xff09;使用 acl 配置项定…

【我们一起60天准备考研算法面试(大全)-第八天 8/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

路径规划算法:基于混沌博弈优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于混沌博弈优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于混沌博弈优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

Vue3的使用--002

Vue3包含vue2的语法&#xff0c;学习vue3就行。 前提要求&#xff0c; 安装大于node.js15.0。 创建Vue 项目 &#xff1a; npm init Vuelastest : 这一执行将会安装并执行create-vue, 他是Vue 官方的脚手架工具。你将会看到一些Typescript 和测试支持之类的可选功能提示&…

在VSCode里使用Jupyter?Notebook调试Java代码的详细过程

目录 什么是Jupyter Notebook&#xff1f;Jupyter Notebook主要优点环境准备下载 IJava创建conda虚拟环境搭建运行环境测试 之前使用的那台电脑有点旧了&#xff0c;稍微跑一下程序就报内存不够。本来想考虑入手一台带GPU的新电脑&#xff0c;在商品浏览里的时候&#xff0c;…

DynaSLAM代码详解(1) — RGBD模式DynaSLAM运行流程

目录 1.1 DynaSLAM和ORB-SLAM2文件对比 1.2 RGBD模式运行流程 论文翻译地址&#xff1a;动态SLAM论文(2) — DynaSLAM: Tracking, Mapping and Inpainting in Dynamic Scenes_几度春风里的博客-CSDN博客 1.1 DynaSLAM和ORB-SLAM2文件对比 DynaSLAM是一个建立在ORB-SLAM2基础上…

【Leetcode】707. 设计链表

单向链表 class ListNode:def __init__(self, val0, nextNone):self.val valself.next nextclass MyLinkedList:def __init__(self):self.dummy_head ListNode()self.size 0def get(self, index):if index < 0 or index > self.size:return -1current self.dummy_h…

【简单认识LVS+Keepalived负载均衡高可用群集】

文章目录 一、Keepalived高可用详解1、简介2、原理3、Keepalived体系主要模块及其作用&#xff1a; 二、LVSKeepalived 高可用群集部署实例1.配置NFS共享存储器2.配置节点web服务&#xff08;两台的配置相同&#xff09;&#xff08;1&#xff09;配置虚拟 IP 地址&#xff08;…