第4组 3位串行加法器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4组3位串行加法器_课程报告
项目名称:可数字显示的3位串行进位加法器
组员:邵捷(1111122217)
罗洪强(1111122216)
姜帅(1111122204)
指导教师:张凡
上课时间:2013/9/16 ~2013/9/27
项目摘要:将三个一位全加器串联,实现0到7的十进制加法运算,加数以二进制的形式从两端口输入。并分别对两个加数与和数进行译码,输出到三个数码管上,以十进制的形式分别显示出两个加数的输入值与和数的输出值。
关键字:全加器FPGA 数字显示
一、实验目的
实现0到7的十进制加法运算,加数以二进制的形式从两端口输入。并给出三个数码管,以十进制的形式分别显示出两个加数的输入值与和数的输出值。
二、实验设备
FPGA器件、USB JTAG调试工具、Quarts9.0软件、VHDL硬件设计语言。
三、硬件设计
3.1 框图
数据显示器1 数据显示器2 数据显示器3
A0 A1 A2 B0 B1 B2 S0 S1 S2 CO
求和输出值
S0 CO S1 CO S2 CO
1位全加器1位全加器1位全加器
A0 B0 A1 B1 A2 B2
A0 A1 A2 B0 B1 B2
输入端口1 输入端口2
3.2 原理阐述
取3只全加器,依次将低位全加器的进位输出端接到高位全加器的进位输入端,便可得到3位串行进位加法器,此时有六个输入端口A0、B0、A1、B1、A2、B2和四个输出端口S0、S1、S2、CO 。分别将六个端口通过6只开关与5V 直流电源连接起来当相应输入端口所对应的开关闭合,该端口就被输入二进制数1;开关断开,该端口就被输入二进制数0。 再将A0、A1、A2端口从低位到高位依次接到DCD_HEX_ORANGE 上,B0、B1、B2端口从低位到高位依次接到另一只DCD_HEX_ORANGE 上。这样当两个相加的数A2A1A0、B2B1B0被以二进制的形式输入时,其对应的DCD_HEX_ORANGE 上就会以十进制的形式显示出其数值。
同理,将四个输出端口S0、S1、S2、CO 从低位到高位依次接到第3只DCD_HEX_ORANGE 上,这样两个数相加得到的和就会以十进制的形式显示出来。
四、软件设计
4.1 软件设计流程图
求 和
是
进位 是
进位 是
进位
4.2 真值表
开始 数据2 数据1
A0 A1 A2 溢出?
溢出?
溢出?
A3
译码 输出
表(1) 一位全加器真值表
输入输出CI A B S CO 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0
0 1 1 0 1
1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1
表(2) BCD-七段显示译码器的真值表
输入输出
0 1 2 3 4 5 6 7 8 9
10
11
12
13
14
15 0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
1 1 1 1 1 1 1
0 1 1 0 0 0 0
1 1 0 1 1 0 1
1 1 1 1 0 0 1
0 1 1 0 0 1 1
1 0 1 1 0 1 1
0 0 1 1 1 1 1
1 1 1 0 0 0 0
1 1 1 1 1 1 1
1 1 1 0 0 1 1
0 0 0 1 1 0 1
0 0 1 1 0 0 1
0 1 0 0 0 1 1
1 0 0 1 0 1 1
0 0 0 1 1 1 1
0 0 0 0 0 0 0
数字A3 A2 A1 A0 a b c d e f g
4.3 仿真波形图
仿真波形图见附件
4.4 原理阐述
先列出一位全加器的真值表,根据真值表找出一位全加器的工作逻辑表达式。根据该逻辑表达式,便可用VHDL在F PGA器件上实现三位全加器的功能。同理,根据七段数码管实现十进制数字显示的要求,列出四位二进制数和七段数码管之间的真值表。找出译码的逻辑表达式。便可用VHDL语言在FPGA器件上实现译码功能。
五、系统调试
问题一、在进行译码的时候,由于译码逻辑表达式中用到了求和输出值,但是求和输出值被定义为out型,不能被调用,程序编译时报错。
解决方法:通过查资料,发现了对端口的buffer型和inout型定义。将求和输出值定义为buffer型。问题便得到解决。
问题二、第一版程序是完全用when语句写的,程序繁杂冗长。
解决方案:通过真值表找出相应的逻辑表达式,写出第二版程序。大大缩短了程序篇幅。
六、学习心得
这次实习选择了EDA,因为相比DSP,这门课的课堂氛围让我舒适一些,不是那么压抑。在较为宽松的氛围下,我们讨论着,有条不紊的学习着新的知识,慢慢咀嚼、消化。做项目的时候,因为自知能力有限,便在交开题报告的前一天自己绘制了一个三位加法器的电路图。原理很简单,所以这次选题也算是偷了个懒。虽然原理简单,但是芯片程序确是自己完全写出来的,这点还比较满意。本来程序是在交了开题报告的当天就写出来的了,并通过了编译。但是苦于手里的实验箱有点毛病,以致实验现象和仿真波形符合不上。这让我对自己的程序产生了怀疑,所以接下来的几天我就是在不断的学习VHDL语言,不断的实验,顺便帮帮同学改下程序。直到周四上午偶然用了一下别人的实验箱,才得出和仿真波形相符合的现象。这着实很让人兴奋,同时也懊恼自己为什么没早点换个实验箱。本来打算做完加法器后,再给其添上乘法功能的,但苦于已经没时间了,只好作