【发布时间】:2014-12-17 21:12:50
【问题描述】:
我想在verilog中获得素数。为此,我使用了计数器,它在每个时钟的上升沿计数。使用计数器的值,我必须得到质数。我的问题是如何检查计数值是否为素数。我可以使用 for 循环来检查素数,但知道在 verilog 中 for 循环不是一个好方法,因为它需要很多时钟周期才能完成 for 循环。我必须检查没有 for 循环的素数。谁能帮我检查计数是没有循环的素数。
module prime_clk ( input clk, input reset)
parameter N =1000; // size of array
reg [31:0] prime_number[0:N-1]; // memory array for product
integer k=0 ; // counter variable
integer result_done =1; // controller
integer count =0;
always @(posedge clk )
begin
count = count+1 ;
if (count%2 !=0 || count%3 !=0 )
begin
prime_number[k] <= count;
k <= k + 1;
end
end
endmodule
【问题讨论】:
-
使用
for-loop,您可以检查一个数字在一个周期内是否为素数,但该模块的最大频率会非常低。如果没有for-loop,您肯定需要超过 1 个(即很多)周期。 -
好的。我可以使用 for 循环。拜托,你能告诉我使用for循环的有效方法吗
-
当我使用for循环时,系统变得很慢..所以for循环方法不好
标签: verilog