微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog中的warning

verilog中的warning

时间:10-02 整理:3721RD 点击:
Warning (10199): Verilog HDL Case Statement warning at modula.v(57): case item expression is ignored because it never applies
所对应的程序:
module modula(clk,rst,din,dout);
input clk;
input rst;
input din;
output dout;
reg dout;
reg[1:0] q;
reg[1:0] x;
reg[1:0] y;
reg[3:0] f;
always@(posedge clk)
begin
  if(rst==1)
   begin
     q<=0;
     x<=0;
   end
  else
    begin
     case(q)
    0:
      begin  
       q<=1;
       f[1]<=1;
       f[3]<=0;
       x[1]<=din;
       y<=x;
      end
    1:
      begin
       q<=2;
       f[0]<=1;
       f[2]<=0;
      end
    2:
      begin
      q<=3;
       f[1]<=0;
       f[3]<=1;
       x[0]<=din;
      end
    3:
      begin
       q<=0;
       f[0]<=0;
       f[2]<=1;
      end
   
    endcase
   end
end
always@(f or y)
   begin
    case(y)
     00:dout=f[0];
     01:dout=f[1];
     10:dout=f[3];
    default:dout=f[2];
    endcase
   end
endmodule
当出现这个编译warning  对应的仿真也出现Warning: Ignored node in vector source file. Can't find corresponding node name "f[3]" in design.请问是什么问题?

看了半天没看出来
想问下你这个模块功能是什么?


QPSK调制,f为载波,取其中的四个点,得到四种相位,只要是X1X0就代表0度,1X0X就代表90度,X0X1就代表180度,0X1X就代表270度,1和0分别代表1和-1

注意代码的格式
always@(f or y)
      begin
            dout=f[2];
            case(y[1:0])
                  2'b00:dout=f[0];
                  2'b01:dout=f[1];
                  2'b10:dout=f[3];
                  default:dout=f[2];
             endcase
        end

建议看看代码的编写风格

因为 y不会等于10
最多等于3,
我想你第57行是想写2。



  恩!谢谢建议!



   恩!前面应该加b表示二进制~

还有小编细心呀,
我看了半天也没有注意到

module modula
    (
    clk,
    rst,
    din,
    dout
    );
input           clk;
input           rst;
input           din;
output          dout;
reg             dout;
reg     [1:0]   q;
reg     [1:0]   x;
reg     [1:0]   y;
reg     [3:0]   f;
always@(posedge clk)
begin
    if(rst==1)
    begin
        q <= 2'd0;
        x <= 2'd0;
        f <= 4'd0;
        x <= 2'd0;
    end
    else
    begin
        case(q)
            0:
            begin
                q <= 2'd1;
                f[1] <= 1'b1;
                f[3] <= 1'b0;
                x[1] <= din;
                y <= x;
            end
            1:
            begin
                q <= 2'd2;
                f[0] <= 1'b1;
                f[2] <= 1'b0;
            end
            2:
            begin
                q <= 2'd3;
                f[1] <= 1'b0;
                f[3] <= 1'b1;
                x[0] <= din;
            end
            3:
            begin
                q <= 2'd0;
                f[0] <= 1'b0;
                f[2] <= 1'b1;
            end
        endcase
    end
end
always@(*)
begin
    case(y)
         2'b00:dout = f[0];
         2'b01:dout = f[1];
         2'b10:dout = f[3];
        default:dout = f[2];
    endcase
end
endmodule

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

网站地图

Top