微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请问这些verilog语句综合成什么语句

请问这些verilog语句综合成什么语句

时间:10-02 整理:3721RD 点击:
想问大侠们一道问题:
如果只能用latch, DFF, AND, OR 和 NOT 这些门和器件。如下Verilog代码会被综合成什么?
(a) always @(select or A or B)
          if(select==1) OUT=A;
          else OUT=B;
(b) always @(posedge clk)
          if(select==1) OUT=A;
          else OUT=B;
(c) always @(select)
          if(select==1) OUT=A;
                   else OUT=B;
我认为(a)是只用2个AND,一个NOT,还有一个OR在输出端,就是一个纯组合电路。
我觉得(b)是(a)的基础上在输出端又加了一个DFF(不知道对不对)。
(c) 我不知道会综合成什么?
请大侠指点。

综合一下就知道了,我只是觉得always后面的begin end没有了,很不爽

可以看下RTL即

不同的综合工具往往结果是不同的。动手试一试就知道了。

1.纯组合逻辑,没有锁存
2.时序的
3.锁存+门



    多谢指点,请问第三个问题中,锁存器和各种门具体应该怎么相连呢?


谢谢,我不太明白这句话的含义,请明示

C是锁存器嘛

我把如下代码写到ISE中,用view RTL schematics看图,发现第三个和第一个一样的?
请问这是为什么?感觉第三个明显就是错的啊。
module ABC1(OUT,A,B,Select);
output OUT;
input A,B,Select;
reg OUT;
always @(Select or A or B)
        if(Select==1) OUT=A;
        else OUT=B;
endmodule
module ABC2(OUT,A,B,Select, clk);
output OUT;
input A,B,Select,clk;
reg OUT;
always @(posedge clk)
        if(Select==1) OUT=A;
        else OUT=B;
endmodule
module ABC3(OUT,A,B,Select);
output OUT;
input A,B,Select;
reg OUT;
always @(Select)
        if(Select==1) OUT=A;
        else OUT=B;
endmodule



(a)2选1多路选择其器,小编正解;
(b)很奇怪的写法,貌视很难理解;如果是多路选择器加D触发器,一般写成非阻塞赋值吧;怀疑不同的综合工具不一样;
(c)锁存器。



    (c)就是锁存器,baidu一下经典电路就知道了,我也不知道!



    自己琢磨就差不多能理解了,自己想到的才是自己的东西

ABC1  和 ABC3是一样的。 综合出来的结果是一样的。
With ABC3, always block is only triggered by select toggling.
If select keeps high, A toggles,  out will not follow A.
So the simulaition result of RTL code is different from that of post-SYN netlist.

正确的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top