[求助] fpga verilog

ren364940161   2011-8-23 20:52 楼主

确认下,fpga 中用verilog HDL 编写CASE

 语句的项中是不是不能用加法运算的?

  START:
    begin
   
    count<=cout+9`b1;

 这种自加加入代码中后报出很多错误,

同时仿真也完全不正确。

回复评论 (6)

cout这会不会写错了,count。。。。
点赞  2011-8-23 22:27
同意楼上的
努力就有不清不楚的收获。
点赞  2011-8-23 23:16
case可以这样做的啊,跟这没有关系吧
点赞  2011-8-24 09:32

不是这个打错的原因,

新加入的警告是这样的:Warning: Found combinational loop of 1 nodes

没了这句加法的话,这样的错误就没有了。

 

 

module  EQ_sample(
 in_clock,          //输入时钟
 Trigger,           //触发 
 EN ,               //模块使能
 Channel,           //通道选择
 out_cp ,           //输出信号
 state
);

//parameter  F_in=200;


input  in_clock;         //输入时钟
input  EN;               //模块使能
input  Trigger;          //触发
input  [3:1] Channel;    //通道选择
output out_cp;           //输出信号
output [1:2] state;
reg [9:1] count;           //内部时钟计数
reg [9:1] cpmax1=5;
reg [9:1] cpmax2=10;
reg count_start;
reg out_cp;

parameter KEEP=1,START=2;
reg  [1:2] my_state;
initial
  begin
  out_cp=0;
  count=9'b0;
  cpmax1=5;
  cpmax2=10;
  my_state=KEEP;
  end
 assign state=my_state;
 always
  @ ( posedge Trigger,posedge in_clock )
     begin
   //  out_cp=Trigger;
  case (my_state)
    KEEP:
   // my_state=START;
      begin
    count=9`b0;
    out_cp=0; 
   if(Trigger==1)
      begin
      my_state=START;
     end
    end
   
   
    START:
    begin
   
    //count=count+9`b1;
    if(count>1`b100)   
          out_cp=1;
          else
          out_cp=0;
     end
    
    default :
     begin
              my_state=KEEP;
              end
        endcase
    end
  endmodu

点赞  2011-8-24 10:36
if(count>1'b100)有问题,还有就是兄弟你在时序电路里用阻塞赋值,最好不要这样用
点赞  2011-8-24 11:41
Warning: Found combinational loop of 1 nodes
这是警告你综合产生出了一个锁存器latch,你看,count是个寄存器,它自加一后又赋给自己,这就有一个反馈环了(combinational loop) ,不过这种写法经常用,应该没有大碍吧,又不是errors。希望我的理解正确!
点赞  2011-8-24 18:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复