QQ空间 新浪微博 腾讯微博 微信 更多
  

verilog实现两个数的最大公因数

 1 module gcd(clk,clr,go_i,x_i,y_i,d_o);
 2 input clk,clr;
 3 input go_i;
 4 input[3:0] x_i,y_i;
 5 output reg[3:0] d_o;
 6 reg[3:0] x,y,r; 
 7 always@(posedge clk, posedge clr)
 8  if(clr)
 9  begin
10  x=0;y=0;d_o=0;
11  end
12 else
13 begin
14 if(go_i) 
15  begin
16  if(x_i<y_i) begin x=y_i; y=x_i; end 
17  else begin x=x_i; y=y_i; end
18  end
19  else
20  begin
21  if(!y)
22  begin d_o=x; end 
23  else
24  begin r=x%y; x=y; y=r; end
25  end
26  end
27 endmodule

 

posted @ 2018-05-04 00:22  nupt想象之中  阅读(448)  评论(0编辑  收藏  举报