欢迎来到天天文库
浏览记录
ID:55689184
大小:302.00 KB
页数:5页
时间:2020-05-25
《四位二进制除法器.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、四位二进制除法器设计李振礼1、设计方法采用移位相减法设计二进制除法器:被除数和除数都是二进制数,采用将除数移位的方法。1)判断除数和被除数是否为零:如果除数为零,返回等待;如果被除数为零,则商和余数都为零。2)被除数和除数都不为零时,判断被除数和除数的大小:如果除数大于被除数,则商为零,余数等于被除数;如果除数小于等于被除数,则对除数进行移位,第一次移位使被除数的最高位和除数的最低位对齐。然后对移位后的除数和被除数进行判断:如果被除数大于等于除数,则用被除数减去除数,并将所得结果做为新的被除数;如果被除数小于除数,则将除数在第一次移位的基础上右移一位,在对被除数
2、和除数进行判断,根据被除数和除数的大小关系进行类似的操作。2、算法流程图图中:被除数和除数分别放在A、B中,商和余数分别放在S、和Y中,C作为移位计数器3、VHDL程序代码:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;---打开可能用到的库entitydedect1isport(A,B:instd_logic_vector(3downto0);S,Y:outstd_logic_vector(3downto0));
3、endentitydedect1;----四位二进制除法器实体定义architecturebehvofdedect1isbegins1:process(A,B)---进程开始敏感信号A、Bvariabletmpa,tmpb:std_logic_vector(7downto0);--中间变量定义variabletmpc:std_logic_vector(3downto0);begintmpa:="";tmpb:="";tmpc:="0000";---中间变量初始化if(B>"0000")then---B不为零(除数不为零)if(A>"0000")then----A
4、不为零(被除数不为零)if(A>B)then----被除数大于除数时tmpa(3downto0):=A;-----以下四条If语句完成求满足以上tmpb(6downto3):=B;---三个条件时被除数除以除数的商和余数if(tmpa>=tmpb)thentmpa:=tmpa-tmpb;tmpc(3):='1';elsetmpc(3):='0';endif;tmpb(5downto2):=B;tmpb(6):='0';if(tmpa>=tmpb)thentmpa:=tmpa-tmpb;tmpc(2):='1';elsetmpc(2):='0';endif;tmp
5、b(4downto1):=B;tmpb(5):='0';if(tmpa>=tmpb)thentmpa:=tmpa-tmpb;tmpc(1):='1';elsetmpc(1):='0';endif;tmpb(3downto0):=B;tmpb(4):='0';if(tmpa>=tmpb)thentmpa:=tmpa-tmpb;tmpc(0):='1';elsetmpc(0):='0';endif;Y<=tmpa(3downto0);S<=tmpc;elsif(A=B)then---------被除数等于除数S<="0001";Y<="0000";elseS<="0
6、000";---------被除数小于除数Y<=A;endif;else----被除数为零时S<="0000";Y<="0000";endif;else---------除数为零时S<="ZZZZ";Y<="ZZZZ";endif;endprocess;---进程结束endarchitecturebehv;4、仿真结果:图中:A、B、S、Y分别是被除数、除数、商和余数。被除数为零时,除数为零和不为零时的商和余数;被除数不为零时,除数为零和不为零时的商和余数;被除数等于除数,大于除数及小于除数时的商和余数;
此文档下载收益归作者所有