Verilog语言 求下面程序的功能 下面这段Verilog语言是什么作用

作者&投稿:佛鬼 (若有异议请与网页底部的电邮联系)

module voter7(pass,vote) ;

input [7:1] vote; 

output pass
reg[2:0]  sum;

integer i;  

reg pass
always @ (vote)
  begin  

          sum=0;
          for (i=1 ;  i〈=7 ; i=i+1)
                if(vote[i])  

                     sum=sum+1;

                else

                     sum=sum;
          if(sum[2])  

               pass=1;
          else       

               pass=0
  end
endmodule


原来的代码实在无力吐槽。我按照开发者的意思重新修改了一下,你可以试着再编译一下,如果再有问题可以找我。

这是一个七位表决器,vote信号是7位信号,当七个裁判中有超过3个人投肯定票的时候,sum信号就会变成二进制数2‘b100以上的数字,这时候其最高位sum[2]就会变成1,那么pass信号就输出1表示选手通过了投票。


对这个程序的开发理念我表示如下意见:

  1. 尽量不要使用for语句,for语句不可综合。

  2. 在使用if以后一定要加上else,即使else后面跟一个空语句也行,这样不容易产生不必要的锁存器。

  3. 七位表决器的话,前面可以加上一个前置锁存模块,防止裁判在投票之后误操作导致结果出现变化,同时前置的锁存模块可以加入复位信号,使得表决器功能更为优化。



就是当vote这7位有1的时候sum+1,当sum加到4(2‘b100)的时候,及sum的第2位为1的时候,pass= 1,我想它的功能是当vote中有4个或者4个以上1的时候pass=1

功能:多数表决器
输入vote ,7bit数据输入,当有4个以上的位是1时,sum[2]为1,则通过决议。
实际应用中,vote变量相当于7个表决按键连出,当在场的有4个以上的人同意并按键,则表决通过,pass置位。

ps:输出列表写错,pss应该为pass,output pss也改为output pass

求这个verilog程序的各条语句的解释~


代码中,step1和step2,分别是一个五进制的计数器,step1是由时钟的上升沿计数,step2是由时钟的下降沿计数的。step 1的最低位和step2的最低位波形如上图所示。上述两个信号进行或操作输出clockout信号,也就是说clockout是clockin的五分频输出电路,占空比为50%。

设定参数的值,类似于C语言中的常数。