verilog-for 语句实例

1.1要求:实现8位数据低4位左移到高4位

1.2代码:

module  move(result,in,res,clk);

input [3:0] in;

input clk,res;

output [7:0] result;

reg [7:0] result;

integer i;

always@(clk or in or res)

begin

 if(res=0)//res=0,则复位

  begin

  result[7:0]=0;

  in[3:0]=0;

 end

else begin

       result[7:4]=0;

       result[3:0]=in;

     for(i=4, i<=7, i=i+1)

     begin

     result[i]=result[i-4];

     end

     result[3:0]=0;

         end

end

endmodule


2.1.要求:在一个时钟周期内用for语句实现计算出13路脉冲信号为高电平的个数(verilog数字系统设计与FPGA实现 p48)

2.2代码:

module content(clk,res,datain,mun);

input clk,res;

input[12:0] datain;

output [3:0] mun;


wire [3:0] mun;

reg[3:0] i;

reg [3:0] mun1;


always@(posedge clk)

  begin

   if (res=0)

   mun1=0;

   else

    begin

     for(i=0; i<13; i=i+1)

     begin

     if( datain[i] )

    mun1=mun1+1;

    end

   end

end

assign mun=mun1;

 endmodule

这一段代码的一个可以学习的地方是,输出mun使用线型,而内部另外使用一个mun1作寄存器,最后mun1输出给mun。

你可能感兴趣的:(verilog,学习)