Cpu tasarımında bölme işlemi

Başlatan yamak, 22 Mart 2012, 00:30:23

z

Bu kez indiremedim ama en azindan dokumani izle secenegi ile okuyabildim. Cok az clk ile bolme islemi yapma hakkinda bilgisi olan varmi?

Bolme isleminde pipeline konusunda bir seyler soyleyecek olan?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

8bit işaretsiz bölme devresi.. başladıktan sonra 8 clokta tamamlıyor.algoritma ve kodlar bana aittir.
module mydiv(bolen,bolunen,basla,clk,bitti,kalan,bolum,rst,di);

input  [7:0] bolen;
input  [7:0] bolunen;
input  basla;
input clk;
input rst;
output reg [7:0] bolum;
output reg [7:0] kalan;
output reg  bitti;
output di;

reg [3:0] cnt;
reg basladi;
reg [7:0] bln;
reg [7:0] blnn;

wire sekiz;
wire [7:0] fark;
assign sekiz=(cnt==7)?0:1;
assign di=basladi;
assign fark={kalan[6:0],blnn[7]}-bln;

always@(posedge clk or posedge rst)
begin
	if(rst)
		begin
			bitti<=0;
			cnt<=0;
			basladi<=0;
			bitti<=0;
			bln<=0;
			blnn<=0;
			kalan<=0;
			bolum<=0;
		end
	else 
	begin
		
		if(basladi)
			basladi<=sekiz;
		else
			basladi<=basla;
		
		if(basla)
			begin
			blnn<=bolunen;
		//	blnn<={blnn[6:0],1'b0};
		//	kalan<={kalan[6:0],blnn[7]};
			bln<=bolen;
			end
			
		
		if(basladi)
			begin
				if(cnt==7)
					begin
					cnt<=0;
					bitti<=1;
					end
				else
					begin
					cnt<=cnt+1;
					bitti<=0;
					end
				
				//kalan<={kalan[6:0],blnn[7]};
				blnn<={blnn[6:0],1'b0};
				
				if({kalan[6:0],blnn[7]}>=bln)
					begin
					kalan<=fark;
					bolum<={bolum[6:0],1'b1};				
					
					end
				else
					begin
					kalan<={kalan[6:0],blnn[7]};
					bolum<={bolum[6:0],1'b0};	
					end
			end
		else
			begin
			cnt<=cnt;
			bitti<=0;
			kalan<=kalan;
			


			
			
			end
	end

end
endmodule


sinyal durumları işlem 100ns sürüyor maxsimum

çalışma frekansı cyclone2 için