• 从RTL视图到Verilog语言-转可乐豆原创


    从RTL视图到Verilog语言

    曾经听过某位大牛都说:“当你的学习FPGA到一个境界的时候,你看到的硬件描述语言,将不再是单纯的语言,而是由一个个逻辑门组成的电路图,一旦达到这个境界,方能把代码写到极致!”

    笔者是多么希望达到这种境界啊~~,可这种境界给笔者的感觉是那么的虚无缥缈。

    前段时间笔者写了一篇名叫《关于FPGA(verilog)电平检测模块的易错点分析》的博客。我仔细看了看verilog对应的RTL视图,又将RTL视图与verilog对比,突然间略有感悟。

    首先奉上笔者亲手绘制的逻辑图,呵呵~~请原谅它的丑陋。读者能从图直接想象对应出Verilog吗?

    图中虚线左边:有一个输入A端口,输入时钟,复位信号和一个D触发器。

    图中虚线右边:有两个非门和两个与门,和两个输出端口。

    组合逻辑的输出与输入直接相关,时序逻辑的输出和原有状态也有关。

    那么左边图就是我们常常所说的时序逻辑,而右边图就是组合逻辑。

    先看看右边的视图,看看能不能把它想想成verilog,咦,似乎不难——不就是几个个输入经过几个非门和与门嘛。假设输入就叫F1和F2。

    那么对图右边视图的上部分图而言:

    wire  neg_edge  =  !F1 & F2;

    那么对图右边视图的上部分图而言:

    wire  pos_edge  =  F1 & !F2;

    再看看左边的时序逻辑视图,我们发现F1和F2时序上是有关系的,F1与D触发器的输入直接相连,而F2与D触发器的输出直接相连。而对于D触发器而言,从输入到输出,从启动沿,到锁存沿。

       F1和F2所间隔的正好是一个时钟周期(不考虑物理上的延时)。

    好的,F1和F2的关系,我们也发现了。现在试着能不能根据左边的时序逻辑视图,写成Verilog时序逻辑。试试看,似乎也不难。

    always @(posedge  CLK)//时序逻辑肯定少不了时钟,对吧~

    begin

    F1  <=  A;   //F1与输入A端口直接相连

    F2  <=  F1;  //F2与F1相隔一个时钟周期 

    end

      最后,我们看看整张图,脑子中想象Verilog代码,结果出现了。

      always @(posedge  CLK or negedge RSTn)

       if(!RSTn) begin  F1 <= 1’b0 ; F2 <= 1’b0 ; end//加上一个异步复位

        else

          begin

         F1  <=  A;   //F1与输入A端口直接相连

         F2  <=  F1;  //F2与F1相隔一个时钟周期 

          end

    wire  neg_edge  =  !F1 & F2;

    wire  pos_edge  =  F1 & !F2;

    现在给笔者的感觉,就是不需要在死记硬背这个电平检测模块,因为迷迷糊糊,笔者的脑袋里似乎浮现出一幅图,这幅图在指引这笔者如何写这个模块。

     

    其实还有一个更好的记忆方法:

    F1 Current State;F2 Previous State,  

    那么,!F1 & F2 == 1  就必须是之前值是1,现在值是0,那么检测的自然是下降沿。

    同理: F1 & !F2 == 1 就必须是之前值是0,现在值是1,那么检测的自然是上升沿。

     

     

    总结:从看到verilog就能反映出逻辑视图(RTL),笔者感觉很难,这需要大量经验的积累;反之,从看到逻辑视图就能反映出verilog,笔者感觉相对较易。如果我们先从容易的下手,慢慢的积累经验。说不定哪一天也能达到那位大牛所说的境界,哈哈~~

             2013-11-12

             ——宋桓公

  • 相关阅读:
    协方差矩阵
    VS2010+C#+EmguCV 配置详解
    OpenCv,EmguCv及.net之间的互动(The Interaction of OpenCv, EmguCv AND .net)
    EmguCV学习 与opencv的区别和联系
    redis新手入门,摸不着头脑可以看看<二>
    java常用工具类[待补充]
    redis新手入门,摸不着头脑可以看看<一>
    用java代码发送http请求
    Date和long类型互转
    WEB-INF目录下文件复制的几种方式
  • 原文地址:https://www.cnblogs.com/ccjt/p/4424891.html
Copyright © 2020-2023  润新知