使用verilog时遇到的多点问题

  • Post author:
  • Post category:其他




前言

你好!这是我第一次写博客,主要目的是留下一点作为学习笔记一样的东西,以后回过头来看看,能捡起以前学习新技术时遇到的各种问题。内容完全是想到哪写到哪,可能会很简陋。里面的总结全靠个人经验理解,可能会有很多错误,希望各位网友适当参考,不能全信。



关于报错[Synth 8-91] ambiguous clock in event control

这个报错是因为只能在一个if-else语句里面对一个变量赋值,如果在两个if语句里对一个变量赋值,就会出现这个错误。仔细想想也确实搜索这样:verilog是并行逻辑,如果两个if都成立,给一个信号赋了不同的值,那么信号该听谁的呢?

always @ (posedge clk or negedge rst_n )begin
  if(!rst_n)  begin cnt<=25'd0;inc<=0; end
     if(button) begin cnt<=0; inc<=1; end 
      if(cnt_inc)  cnt<=cnt+1;
    if(cnt_end) cnt<=25'd0;`

这里多个if语句都对cnt赋值,导致综合时报错。

always @ (posedge clk or negedge rst_n )begin
  if(!rst_n)  begin cnt<=25'd0;inc<=0; end
    else if(button) begin cnt<=0; inc<=1; end 
     else if(cnt_inc)  cnt<=cnt+1;
   else if(cnt_end) cnt<=25'd0;



关于赋初值的问题

给变量赋初值最好写在rst语句里面,我也不知道为什么,因为别人告诉我最好不要写在外面,也不要用initial。



尾记

先就这样,主要是熟悉一下这个博客要怎么写,以后想到问题再加,拜拜!再拜!



版权声明:本文为qq_51134359原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。