繁体   English   中英

如何在Verilog中获得信号强度

[英]How to get magnitude of signals in Verilog

我有一个Magnitude模块:

module Magnitude(
  input [31:0] re,
  input [31:0] im,
  output [31:0] out
);
  assign out = re * re + im * im;
endmodule

现在,对于128个信号,我需要找出幅度。 也就是说,我需要一种最多可以计数128个的方法。我该怎么做?

另外,这是我编写的第一个Verilog代码。 欢迎提供任何有关提高效率的建议。

根据我对您问题的理解,您可能打算执行以下操作:

module Magnitude(
  input [31:0] re,
  input clk;
  input reset;
  input [31:0] im,
  output reg [31:0] out
);

reg [6:0] counter;

 always @(posedge clk or negedge reset)
 begin
  if(!reset)
   begin
   counter<=0;
   end
  else 
    begin
     if (counter==7'd128)
       counter<=0;
     else
       counter<=counter+1;
    end
 end

 always @(posedge clk or negedge reset)
 begin
   if(!reset)
     out<=0;
   else 
    begin
     if (counter==7'd127)
       out<=0;            // As soon as counter counts to 128, it will become zero.
     else
       out <= out + re * re + im * im;
    end
 end
endmodule

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM