请选择 进入手机版|继续访问电脑版
返回列表 发新帖回复

[教程] 本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你...

[复制链接] 【【【进入图片模式】】】
  • TA的每日心情
    无聊
    2017-6-6 09:30
  • 2

    主题

    2

    帖子

    47

    积分

    学徒

    Rank: 1

    积分
    47
    发表在  2017-10-11 11:58:10  | 显示全部楼层 | 阅读模式
    本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你如何一步一步去完成一个复杂电路的设计,里面很多有实用技巧,熟练运用这些技巧,有助于你写出非常优秀的FPGA设计代码。非常简洁易读,欢迎比较。
    在学习verilog之前,我们先学习一下D触发器以及它的代码。
    FPGA的设计基础是数字电路,因此很多同学会认为我们要先学好数字电路之后,才学习FPGA。但是,数字电路教材的内容很多.例如:JK触发器、RS触发器、真值表、卡诺图等。但是,这里的很多内容其实已经过时了。此外,对于FPGA的学习来讲,我们只用到了其中很少很少的一部分内容。如果没有数字电路的基础,我们建议就看一部分,知道D触发器就够了。
    那么D触发器是什么样子的呢?

    本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你...

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

    本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你...

    本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你...
    这个是波形图,你可以看一看q,它都是在时钟上升沿之后变化的,在第2个时钟上升沿,看到d的值为0,那么q就输出0,q的值就保持不变了直到下一个时钟上升沿的到来。下一个时钟上升沿d的值为1,那么q就输出1,如此类推。这就是我们d触发器的功能,非常非常地简单。
    那么这个D触发器在FPGA里面用verilog代码怎么描述呢?

    本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你...

    本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你...
    其实就是这样的代码,可以看出来,这个代码跟这个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。即先有上升沿,才有信号变化。
    为什么强调先有上升沿,才有信号变化呢?有什么用呢?例如:

    本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你...

    本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你...
    明德扬的波形,默认的情况下都是同步信号,这意味着en和dout都是由D触发器产生的。因此信号的变化,都是在时钟上升沿之后才开始的,en也是在时钟上升沿之后一点点才变化的;在2的上升沿这个点上看到en的值是0的,因为en还没变化;而在3的上升沿这个点上看到en的值是1,dout的值是0;最后,在10的上升沿这个点上看到dout的值是1。
    回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    发表新帖 客服
    微信

    微信公众号

    微信二维码
    最优秀的创意分享平台

    客户端

    移动端

    手机端二维码
    扫码立即穿越至手机

    回到顶部
    快速回复 返回顶部 返回列表