32位除法器的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

subdesign divt

( a[31..0],b[31..0],inclk,trig:input; c[31..0],oe : output;

)

variable

ma[32..0],mb[32..0]:dff;

mmc[32..0]:dff;

mc[2..0],md[5..0] :dff;

begin

mmc[].clk=inclk;

ma[].clk=inclk;

mb[].clk=inclk;

md[].clk=inclk;

mc[].clk=inclk;

case mc[] is

when 0=>

mb[]=(0,b[]);ma[]=(0,a[]);

if trig==gnd then

st[]=1;

else

st[]=0;

end if;

md[]=md[];

when 1 =>

ma[]=ma[];md[]=md[]+1;

if mb[31]==gnd then

FOR i IN 31 TO 1 GENERATE

mb[i] =mb[i-1] ;

END GENERATE;

mc[]=1;

else

mb[]=mb[];

mc[]=2;

end if;

when 2=>

mb[]=mb[];

md[]=md[];

if ma[]>=mb[] then

ma[]=ma[]-mb[];

mc[]=4;mmc[]=mmc[]+1; else

mc[]=3;mmc[]=mmc[];

ma[]=ma[];

end if;

when 3=>

mc[]=4;

FOR n IN 32 TO 1 GENERATE ma[n] =ma[n-1] ;

mmc[n]=mmc[n-1];

END GENERATE;

mb[]=mb[];

md[]=md[]-1;

when 4=>

ma[]=ma[];mmc[]=mmc[];

mb[]=mb[];

if md[]==1 then

mc[]=5;md[]=md[];

else

mc[]=2;md[]=md[];

end if;

when 5=>

ma[]=ma[];

if ma[31]==vcc then

mmc[]=mmc[]+1;

else

mmc[]=mmc[];

end if;

mc[]=6;

when 6=>

c[]=mmc[31..0]; mmc[]=mmc[];ma[]=ma[];oe=vcc;

if trig==vcc then

mc[]=0;

else

mc[]=6;

end if;

end case;

end ;

相关文档
最新文档