基于fpga的乘法器和除法器
更新时间:2023-10-26 23:41:01 阅读量: 综合文库 文档下载
- 基于fpga的乘法器设计推荐度:
- 相关推荐
任务书:
1、 十六位硬件乘法器电路 2、 八位硬件除法器电路 摘要:
设计一个16位硬件乘法器电路。要求2位十进制乘法,能用LED数码管同时显示乘数,被乘数和积的值.本设计利用Quartus II软件为设计平台,通过移位相加的乘法原理:即从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。经软件仿真和硬件测试验证后,以达到实验要求。
设计一个8位硬件除法器电路。要求2位十进制除法,能用LED数码管显示结果、除数和被除数的值。根据被除数(余数)和除数的大小来上商,被除数低位补零,再减去右移后的除数也可以改为左移余数,减去除数,这样可以确保参与运算的寄存器具有相同位数。商写到寄存器的低位,然后再左移一位。经软件仿真和硬件验证后,以达到实验要求。
目录
2.任务书………………………………………………………………………………………………2 3.摘要…………………………………………………………………………………………………2 4.目录…………………………………………………………………………………………………3 5.正文…………………………………………………………………………………………………4 5.1.1 乘法器系统设计……………………………………………………………………………4 5.1.1.1 设计要求…………………………………………………………………………4 5.1.2.2系统设计方案……………………………………………………………………4 5.1.2 单元电路设计………………………………………………………………………………4 十进制计算模块…………………………………………………………………5 BCD码转二进制模块……………………………………………………………5 8位右移寄存器模块……………………………………………………………6 8位加法器模块…………………………………………………………………7 1位乘法器multi_1模块…………………………………………………………7 16位移位寄存器reg_16模块…………………………………………………8 16位二进制转BCD码B_BCD模块………………………………………………9 8位乘法器multi_8x8顶层设计…………………………………………………10
5.1.3 乘法器的系统测试…………………………………………………………………………14 仿真分析………………………………………………………………………………14 硬件验证………………………………………………………………………………15 5.2.1 除法器系统设计……………………………………………… 5.2.2单元电路设计………………………………………………
5.2.3 除法器的系统设计……………………………………………… 仿真分析……………………………………………… 硬件验证………………………………………………
6. 结论……………………………………………………………………………………………15 7. 参考文献………………………………………………………………………………………15 8. 分工……………………………………………………………………………………………15
2
5.正文
题目要求设计基于fpga的乘法器和除法器。本小组想出的方案是利用位移相加和相减来制作乘法器和除法器。运用的模块主要包括:
1、 输入模块:运用计数器设编码器将bcd码编译为二进制码; 2、 运算模块:包括运算器和寄存器;
3、 输出模块:将运算器运算的结果的二进制数译码位bcd码在数码管上显示出来。
其余方法:可以将输入的二进制数转为十进制再进行运算,此方法适用于人工初学者计算不适于利用芯片
计算,故不考虑。
方案先进性:简单易懂,将乘法器和除法器分开制作便于分工。但缺点也显而易见,乘法器和除法器按照
不同人的思维进行设计,不易于整合,变为两个独立的模块。
方案可行性:易于设计,但使用不便,需要重新烧入程序实现乘除法切换。
5.1乘法器系统设计
1.1 设计要求
题目要求设计一个16位硬件乘法器电路.要求2位十进制乘法;能用LED数码管同时显示乘数,被乘数和积的信息.设置一个乘法使能端,控制乘法器的计算和输出. 1.2 系统设计方案
此设计问题可分为乘数和被乘数输入控制模块,乘法模块和输出乘积显示模块基本分.
乘数和被乘数的输入模块使输入的十进制数转化为二进制数输入乘法模块,乘法模块利用移位相加的方法将输入的两组二进制数进行相乘,并将16位乘积输出到乘积输出显示模块.显示模块将输入的二进制数按千,百,十,个位分别转化为十进制数输出.
乘数和被乘数的输入可用数据开关K1~K10分别代表数字1,2,…,9,0,用编码器对数据开关K1~K10的电平信号进行编码后输入乘法器进行计算.但此方案所用硬件资源较多,输入繁琐,故不采取.
方案二是利用硬件箱自带16进制码发生器,由对应的键控制输出4位2进制构成的1位16进制码,数的范围是0000~1111,即0H~FH.每按键一次,输出递增1,输出进入目标芯片的4位2进制数将显示在该键对应的数码管.
乘数和被乘数的输入模块将16进制码的A~F码设计成输出为null.使得减少了无用码的输入. 两数相乘的方法很多,可以用移位相加的方法,也可以将乘法器看成计数器,乘积的初始值为零,每一个时钟周期将乘数的值加到积上,同时乘数减一,这样反复执行,直到乘数为零.本设计利用移位相加的方法使得程序大大简化.
系统总体电路组成原理图如下图所示:
3
5.1.2乘法器单元电路设计
下面分解8位乘法器的层次结构,分为以下7个模块:
1. 十进制计算模块:使用4个十进制计数模块,输入乘数的十位个位,被乘数的十位个位。 2. BCD码转二进制模块:实现将输入的8位BCD码转化成二进制
3. 右移寄存器模块:这是一个8位右移寄存器,可将乘法运算中的被乘数加载于其中,同时 进行乘法运算的移位操作。
4. 加法器模块:这是一个8位加法器,进行操作数的加法运算。 5. 1位乘法器模块:完成8位与1位的乘法运算。
6. 锁存器模块:这是一个16位锁存器,同时也是一个右移寄存器,在时钟信号的控制下完成输入数值的锁存与移位。
7. 二进制转BCD码模块:将16位寄存器的值(积)转化成BCD码,配合数码管显示
十进制加计数器设计
十进制计数器在每个时钟来临时计数,clk=1时清零,用于输入乘数,被乘数的个位,十位 Library ieee; --0到9计数器 Use ieee.std_logic_unsigned.all; Use ieee.std_logic_1164.all; Entity cnt10 is
Port (clk,clr: in std_logic;
q: out std_logic_vector(3 downto 0)); end cnt10;
architecture behav of cnt10 is begin
process(clk,clr)
variable cqi: std_logic_vector(3 downto 0); begin
if clr='1' then cqi:=\
elsif clk'event and clk='1' then if cqi=9 then cqi:=\ else cqi:=cqi+1; end if; end if; q<=cqi; end process; end behav;
4
BCD码转二进制码BCD_B的设计
将十进制计数器产生的十位和个位合并后,为BCD码,而计算时使用二进制码计算,所以采用该模块来转化
Library ieee; --(0到99)BCD码转二进制码 Use ieee.std_logic_unsigned.all; Use ieee.std_logic_1164.all; Entity BCD_B is
Port ( a: in std_logic_vector(7 downto 0); q: out std_logic_vector(7 downto 0)); end BCD_B;
architecture behav of BCD_B is
signal a1,a2,a3,a4,cq: std_logic_vector(7 downto 0); begin
process(a) begin
a1<=\ a2<=\ a3<=a2(6 downto 0)&'0'; a4<=a2(4 downto 0)&\ cq<=a4+a3+a1; q<=cq; end process; end behav;
8位移位寄存器reg_8的设计
8位移位寄存器是在时钟(r8_clk'event and r8_clk='1')信号作用下,当r8_load='1'时,将8位乘数加载进入;而当r8_load='0'时,对数据进行移位操作,同时定义一个信号reg8用来装载新数据及移位后的操作数,完成这些操作后,寄存器的最低位reg8(0)传送给r8_out输出。 library ieee; ---8位移位寄存器 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity reg_8 is
port(r8_clk,clr,r8_load:in std_logic;
r8_in:in std_logic_vector(7 downto 0); r8_out:out std_logic); end reg_8;
architecture arc_reg_8 of reg_8 is
signal reg8:std_logic_vector(7 downto 0);
5
正在阅读:
基于fpga的乘法器和除法器10-26
劝人的话02-10
建筑电气课程设计说明书 - 图文03-08
数据挖掘课程设计11-05
“十三五”重点项目-特色食品加工产业园项目申请报告09-21
2016初中数学一轮复习课时导学案30讲:2016初中数学中考一轮复习03-08
讲给一年级小朋友精彩寓言故事05-13
聚氨酯与聚氨酯弹性体化学与工艺04-25
独家业务合作及服务协议(EXCLUSIVE BUSINESS COOPERATION AND S07-03
石油化工专业英语03-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 乘法器
- 法器
- 基于
- fpga
- 点拨中考版中考生物考点梳理第四单元第六章人体生命活动的调节培优练新人教版
- 电拖电力拖动自动控制系统实验报告
- 信号题库
- 某水电站工程监理质量巡检自检报告 - 图文
- Solidworks绘制90度风管弯头的方法
- 组胚整理提纲
- 倒虹吸圆管涵技术交底 - 图文
- 机械设计名词解释(终极版)
- 讲章精选:我爱主吗?
- 表演游戏反思
- 高中历史 专题四 现代中国的政治建设与祖国统一 第1课 新中国初期的政治建设(第1课时)教案 人民版必修1
- 太阳能电池片丝网印刷知识点汇总
- 2019年考研政治马原预测题及答案之唯物论
- 北师大小学语文六年级下《七、科学的精神:当代神农氏》优质课导学案 - 2
- 2015年会计中级职称考试中级财务管理-预习测试(一)(4-7章)
- 安徽省皖南八校2018届高三第三次联考(4月)理科综合试卷(含答案) - 图文
- 大型落地活动策划完整方案综合模板
- 2016年北京工业大学设计学考研
- 统计学复习题计算题4
- 海归招聘会刚刚拿了PwC Offer,分享一下我的求职心得