关于时钟上升沿到来时,企图通过一个寄存器对输入信号做一个时钟周期的延迟,但是失败的问题

WayneLin_ 2022-11-05 11:14:42

本人最近在做导师的一个小任务,在使用FPGA开发时遇到了一个问题,想请各位大佬们帮忙看一下。
我的电路中有一个寄存器信号reg data_en_buff, 我希望该寄存器能对输入的信号data_en做一个时钟周期的延迟。当我令data_en在0和1之间来回跳变时,即如下图所示时,data_en_buff能够成功对data_en做一个时钟周期的延迟。(本人使用的是modelsim进行仿真)

但是当我令data_en在某一时刻后跳变至高电平并且一直保持高电平时,即如下图所示时,data_en_buff就没有对data_en做一个时钟周期的延迟。

 下图是我的代码

下图是我在编译过后,Quartus生成的RTL view,里面可以看到data_en_buff确实是生成为一个寄存器了呀。

 

 

 

...全文
488 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_和光同尘_ 2023-09-04
  • 打赏
  • 举报
回复

应该是你写测试激励的时候,data_en置高是在时钟上升沿给的,和data_en_buff的采样沿用了同一个,导致没有采样到。这个问题只有仿真会遇到,实际电路中因为寄存器有Δt时间,是可以被正确采样并打拍的。仿真的时候,只需要将data_en置高在时钟上升沿之前有一点提前量就可以。

FPGAer 2022-11-05
  • 打赏
  • 举报
回复

你图二的测试激励是什么呢,

9,083

社区成员

发帖
与我相关
我的任务
社区描述
交流技术,分享知识,包括FPGA、数字IC、嵌入式等方向。欢迎志同道合的朋友在这里分享自己的所学所知~~
社区管理员
  • FPGA and ICer
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 欢迎大家分享学习心得与技术博客
  2. 开设板块方便大家进行交流提问
  3. 希望大家在这里都能有所收获

试试用AI创作助手写篇文章吧