Verilog语言 求下面程序的功能

作者&投稿:水毕 (若有异议请与网页底部的电邮联系)
求这个verilog程序的各条语句的解释~


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

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

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


灵山县19286059464: 求帮助,用verilog语言写出描述下图的代码,并解释其功能 -
蒲莘去羟: reg s0; reg s1; wire P; always @ (posedge clk) s0 <= L; always @ (posedge clk) s1 <= ~(L & s0); assign P = s0 & s1; 消除L输入高电平时间小于CLK时钟周期的毛刺!

灵山县19286059464: 2 - 4译码器verilog语言编写程序实现功能 -
蒲莘去羟: always @(*) begin case(input[1:0])2'b00:out = 4'b0001;2'b01:out = 4'b0010;2'b10:out = 4'b0100;2'b11:out = 4'b1000; endcase end

灵山县19286059464: 请问这个Verilog程序的功能是怎样的呢? -
蒲莘去羟: 初步判断,这个模块会根据输入的B,在每个时钟的上升沿,往结果Q输出Bx75,我想作者可能本身的想法是往原先结果加上Bx75,但是他把TOUT = 32'b0写在了always块了,所以每次clk上升沿,TOUT都会清零.很明显,这段代码的作者对于...

灵山县19286059464: 用verilog代码编写下面的程序1. 某雷达站有三部雷达A、B、C,其中A和B的功耗相等,C的功耗是A的2倍.这些雷达由2台发电机X和Y供电,发电机X的最大输... -
蒲莘去羟:[答案] 这就是把ABC三个电台的启动信号变为输入,XY的启动信号为输出,列出真值表就行了吧. 真值表为: a b c x y 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

灵山县19286059464: Verilog HDL 中for语句for(i=0;i<=7;i=i+1) if(A[i]) Y=Y+1这段语句主要实现的功能分析 -
蒲莘去羟: 前边是定义,A定义为8位,所以循环八次.主题是for循环语句.for(i=0;i{ 循环体语句; } 这样的循环体会执行8次(分别是i=0,i=1,····i=7的情况) 它的执行流程是这样的:首先给变量i赋初值0,然后判断,若满足条件i这样就把A的每一位都判断是否等于1,Y统计的是A中含1的数量

灵山县19286059464: 【Verilog】请对rega这个八位二进制数中值1的位进行计数,请对下面程序补充要求在能直接运行成功,急用!! -
蒲莘去羟: module count1s(tempreg,clk); input [7:0] tempreg; input clk; input rst;reg [3:0] count always @(posedge clk or posedge rst) beginif(rst) count <= 4'b0; else begin if(tempreg[0]) count <= count + 4'b1; tempreg <= {1'b0,tempreg[7:1]}; end end endmodule这个是模块,如果要测试还需要testbench.

灵山县19286059464: 用verilog语言实现4511芯片的功能. -
蒲莘去羟: module counter_M4(clk,rst_n,reset,q); input clk; input rst_n; input reset; output [3:0] q; reg [3:0] cnt; reg [3:0] q; always @ (posedge clk or negedge rst_n) begin if(rst_n) begin; cnt8269

灵山县19286059464: 8位十进制简易计算器 Verilog语言 求代码 加减乘除 -
蒲莘去羟: module count(input clk, input reset, output reg [7:0] cnt ); always@(posedge clk,posedge reset) begin if(reset)cnt<=8'd0; elsecnt<=cnt+1'b1;endendmodule/////////////////很简单啦,显示端什么意思,连在led等或者数码管都行!lcd,或者显示屏都可以!

灵山县19286059464: 给注释一下下面的verilog Hdl语言,并说明他的功能! -
蒲莘去羟: module count24(Rd,EN,CLK,Qh,Ql,C); input Rd,EN,CLK; output [3:0]Qh,Ql;----------------------------------输出,Qh代表十位,Qi代表个位 output C; --------------------------------------------进位标志,当Qh与QI总和达到24时,C置1 reg [3:0]Qh,Ql; reg C;-----...

灵山县19286059464: FPGA中,用Verilog实现的程序,求大神帮忙分析一下程序 -
蒲莘去羟: module d_asyn(clk,clr,d,q); //模块输入输出口,共四个信号,每个都是1bit的 input clk,clr,d; //这些是作为输入 output q; //这些是作为输出 reg q; //q在作为寄存器类的输出,就是说可以用<= 箭头赋值(见下面) always @(posedge clr) ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网