用于计数数字重复的Verilog代码

用于计数数字重复的Verilog代码,verilog,xilinx,Verilog,Xilinx,我正在为一个算法编写verilog代码,但有一个模块有一个问题,例如:从前一个模块接收10个二进制数(每一个4位)(每个正边缘clk有1个输入),因此有10个时钟周期来接收10个二进制数 如何计算每个数字重复的次数,并保存每个数字的频率,以供以后使用verilog hardawre语言的其他模块使用? 例如:在本模块末尾,两次查找0000,一次查找0001,…,1111零。在10个时钟周期 提前感谢…假设您有一个时钟和有效的低电平重置: module tracker( input clk,

我正在为一个算法编写verilog代码,但有一个模块有一个问题,例如:从前一个模块接收10个二进制数(每一个4位)(每个正边缘clk有1个输入),因此有10个时钟周期来接收10个二进制数

如何计算每个数字重复的次数,并保存每个数字的频率,以供以后使用verilog hardawre语言的其他模块使用? 例如:在本模块末尾,两次查找0000,一次查找0001,…,1111零。在10个时钟周期


提前感谢…

假设您有一个时钟和有效的低电平重置:

module tracker(
  input clk,
  input rst_n,
  input [3:0] data_rx
);

reg  [7:0] count [0:15];
integer i;

always @(posedge clk, negedge rst_n) begin
  if (~rst_n) begin
    for(i=0; i<16, i=i+1) begin
       count[i] <= 8'b0;
    end
  end
  else begin
    count[data_rx] <= count[data_rx] + 1;
  end
end
endmodule
模块跟踪器(
输入时钟,
输入rst\n,
输入[3:0]数据\u rx
);
注册[7:0]计数[0:15];
整数i;
始终@(posedge clk,NEGDEDGE rst_n)开始
如果开始

对于(i=0;i您希望如何获得输出?我尝试了“为每一个生成计数器”,但它不起作用。我在上面给出了示例,但我的工作取决于在每个正边缘clk生成的随机数,然后我想计算[00001111]范围内每个数字的数量在10个clk周期内出现。我能看到的最简单的方法是声明一个由16个元素组成的数组,该数组将用作计数器,并在每次计数器索引对应的数字出现时增加它们。但是,您希望得到什么样的输出格式?您能将您所说的写为verilog代码吗?我是verilog的初学者。每个数字的输出将是freq,这些数字将与另一个模块计算的另一个值相加,但直到现在我还不知道如何做:(好的,现在我使用数组,它更简单:)但是如果我想将数组(大尺寸)初始化为值“零”,我怎么能不使用for循环来做呢?因为我想编写合成代码
initial begin
  for(i=0; i<16, i=i+1) begin
     count[i] <= 8'b0;
  end
end

always @(posedge clk) begin
  count[data_rx] <= count[data_rx] + 1;
end