d触发器q端的输出波形_D触发器、波形、代码(转)

d触发器q端的输出波形_D触发器、波形、代码(转)在学习 verilog 之前 我们先学习一下 D 触发器以及它的代码 FPGA 的设计基础是数字电路 因此很多同学会认为我们要先学好数字电路之后 才学习 FPGA 但是 数字电路教材的内容很多 例如 JK 触发器 RS 触发器 真值表 卡诺图等 但是 这里的很多内容其实已经过时了 此外 对于 FPGA 的学习来讲 我们只用到了其中很少很少的一部分内容 如果没有数字电路的基础 我们建议就看一部分 知道 D 触发器就够了 那

在学习verilog之前,我们先学习一下D触发器以及它的代码。

FPGA的设计基础是数字电路,因此很多同学会认为我们要先学好数字电路之后,才学习FPGA。但是,数字电路教材的内容很多.例如:JK触发器、RS触发器、真值表、卡诺图等。但是,这里的很多内容其实已经过时了。此外,对于FPGA的学习来讲,我们只用到了其中很少很少的一部分内容。如果没有数字电路的基础,我们建议就看一部分,知道D触发器就够了。

那么D触发器是什么样子的呢?

d触发器q端的输出波形_D触发器、波形、代码(转)

这个就是D触发器的示意图。其中,clk为时钟,rst_n为复位,d为输入,q为输出。这个功能非常简单,复位有效的时候,这个q的值你可以认为是0。如果复位无效的时候,那么在时钟上升沿的时候,就把d的值给了q。就是这么简单,记住这个动作,先有时钟上升沿,再有把d的值给了q。这就意味着,时钟上升沿的时候q的值还是没变的。只有时钟上升沿之后,q的值才变化。这是一个很重要的概念,也就是说先有时钟上升沿才有q的变化。如果下一个时钟上升沿没有到来,那么q的值就保持不变。因此,q的值是在时钟上升沿之后一点点变化。这就是D触发器,我们所有的FPGA电路都是基于这个结构来进行设计的。就是这么简单,诸如JK触发器、RS触发器之类完全不需用到。我们就用最简单的结果来进行设计。有些同学会问为什么如此简单就足以进行设计呢?其实我们要做一个系统,一个稳定的系统,一定是从一个最简单的结构搭建起来的,而不会是一个很复杂的结构,因此我们FPGA电路里面就是利用D触发器的稳定性,把它搭建起来的。

那么D触发器所对应的波形图是怎么样的呢?

d触发器q端的输出波形_D触发器、波形、代码(转)

这个是波形图,你可以看一看q,它都是在时钟上升沿之后变化的,在第2个时钟上升沿,看到d的值为0,那么q就输出0,q的值就保持不变了直到下一个时钟上升沿的到来。

下一个时钟上升沿d的值为1,那么q就输出1,如此类推。这就是我们d触发器的功能,非常非常地简单。

那么这个D触发器在FPGA里面用verilog代码怎么描述呢?

d触发器q端的输出波形_D触发器、波形、代码(转)

其实就是这样的代码,可以看出来,这个代码跟这个D触发器是完全一样的,描述的就是D触发器。怎么讲,可以分析一下这个代码:

1····总是(always)在时钟(clk)上升沿(posedge)的时候或者下降沿(negedge)复位(rst_n)的时候执行2~8的代码,如果不满足则q的值不变。

2····如果是复位就执行3的代码;

3····q就等于0;

5····如果不是复位,而是时钟上升沿就执行6的代码;

6····将d的值给了q;

这个代码描述的就是一个D触发器,一个always就生成了一个D触发器。你可以认为D触发器就是我们电路上的一个元件。

总结要点:

1. q的值只有在时钟上升沿才变化。

2. 时钟上升沿时,将d的值赋给q。即先有上升沿,才有信号变化。

为什么强调先有上升沿,才有信号变化呢?有什么用呢?例如:

d触发器q端的输出波形_D触发器、波形、代码(转)

明德扬的波形,默认的情况下都是同步信号,这意味着en和dout都是由D触发器产生的。

因此信号的变化,都是在时钟上升沿之后才开始的,en也是在时钟上升沿之后一点点才变化的;

在2的上升沿这个点上看到en的值是0的,因为en还没变化;

而在3的上升沿这个点上看到en的值是1,dout的值是0;

最后,在10的上升沿这个点上看到dout的值是1。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233871.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 归一化、标准化、正则化公式相关小记「建议收藏」

    归一化、标准化、正则化公式相关小记「建议收藏」特征缩放面对特征数量较多的时候,保证这些特征具有相近的尺度(无量纲化),可以使梯度下降法更快的收敛。这两张图代表数据是否均一化的最优解寻解过程(左边是未归一化的),从这两张图可以看出,数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解在前边讲梯度下降的时候咱们也提到过,一般在最优化前会加归一化操作机器学习最优化算法之梯度下降_RayChiu757374816的博客-CSDN博客原因就是这样会减少数据模型的震荡,以最快的速度达到最优化。缩放的方法…

    2022年10月8日
    2
  • 关于部分动态爬虫「建议收藏」

    关于部分动态爬虫「建议收藏」前言爬虫的动态处理方法(我用较为简单的一些网址举例比如豆瓣的热门电影)一、动态爬虫动态爬虫与静态爬虫的最大区别就是源代码与网页内容不同,动态爬虫可以通过抓包(就是直接利用浏览器的F12进行network抓包,获取相关对应的文件)二、使用步骤1.先通过网址找到需要的东西截图如下(示例):按F12进入开发者模式,第二步点击左上角刷新重新加载一下内容,第三步在红框里选取需要的内容,可以通过“预览”来查看是否对应查找正确之后然后在“标头”里找到“请求URL”以及“User-Agent”,把这些找到

    2022年7月26日
    13
  • android之Activity.startManagingCursor方法详解

    在使用数据库操作查询数据后,如果是在Activity里面处理,那么很可能就会用到startManagingCursor()方法,在这里讲一下它的作用和使用注意事项.调用这个方法,就是将获得的Cursor对象交与Activity 来管理,这样Cursor对象的生命周期便能与当前的Activity自动同步,省去了自己管理Cursor。看下文档里的注释This method allows

    2022年3月10日
    41
  • Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图「建议收藏」

    Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图「建议收藏」IntelliJIDEA使用教程(总目录篇)Maven组件界面介绍  如上图标注1所示,为常用的Maven工具栏,其中最常用的有: 第一个按钮:ReimportAllMavenProjects 表示根据 pom.xml 重新载入项目。一般单我们在 pom.xml 添加了依赖包或是插件的时候,发现标注4的依赖区中没有看到最新写的依赖的话,可以尝试点击此按…

    2022年8月22日
    62
  • 两款工控控件对比评测:Iocomp和ProEssentials

    两款工控控件对比评测:Iocomp和ProEssentials对于程序员来说,要凭一己之力开发出漂亮逼真的工控仪表和工控图表是非常耗时间和精力的,那么使用专业的第三方控件就是不错的选择,不仅节约开发时间,降低了项目风险,最重要的是第三方控件写的程序更专业,工控图

    2022年7月1日
    35
  • list数组遍历时能不能使用remove()方法,要注意什么

    list数组遍历时能不能使用remove()方法,要注意什么list数组遍历时能不能使用remove()方法,要注意什么

    2022年4月23日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号