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