vhdl通用十进制加法器Word下载.docx
《vhdl通用十进制加法器Word下载.docx》由会员分享,可在线阅读,更多相关《vhdl通用十进制加法器Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
年月日
摘要
随着科技的发展,通用十进制加法器的应用已广泛融入到现实生活中。
EDA技术的应用引起电子产品及系统开发的革命性变革。
本文采用EDA技术设计,并以VHDL语言为基础制作的通用十进制加法器。
该系统借助于强大的EDA工具和硬件描述语言可实现两个一位以上的十进制数的加法,在输入两个十进制数之后,给出两个数的相加结果。
本设计充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,提高了设计的效率。
设计主要步骤:
首先利用QUARTUS‖来编辑、编译、仿真各个模块;
然后以原理图为顶层文件建立工程,再进行引脚锁定、编译、下载,最后采用杭州康芯电子有限公司生产的GW48系列/SOPC/EDA实验开发系统,进行硬件测试。
关键词:
通用十进制加法器;
EDA技术;
VHDL语言;
QUARTUS‖
目录
设计要求1
1、方案论证与对比1
1.1方案一1
1.2方案二1
1.3方案的对比与选择2
2、设计原理2
3、通用十进制加法器的主要硬件模块3
3.14位BCD码全加器模块3
3.2八加法器的实现框图3
4、调试与操作4
4.1通用十进制加法器的功能仿真4
4.2模式选择与引脚锁定4
4.2.1模式选择4
4.2.2引脚锁定4
4.3设备与器件明细表5
4.4调试6
4.4.1软件调试6
4.4.2硬件调试6
5、总结与致谢7
5.1总结与思考7
5.2致谢7
附录8
附录一8
附录二10
参考文献12
通用十进制加法器
设计要求
1、用VHDL硬件描述语言设计4位的BCD码全加器;
2、以4位BCD码全加器为模块设计两位十进制数的加法。
1、方案论证与对比
1.1方案一
方案一,通过VHDL语言设计一个4位的BCD码全加器,以其作为底层文件,然后建立一个顶层文件,调用这个底层文件设计出双4位的BCD码全加器,最后结果通过译码电路译为7段显示输出。
方案一原理方框图如图1所示:
图1方案一结构方框图
1.2方案二
方案二,采用原理图输入,先定制LPM_ROM宏模块,然后再采用原理图输入的方法画出电路图。
方案二原理方框图如图2所示:
图2方案二结构方框图
1.3方案的对比与选择
方案一:
采用VHDL语言输入,它具有多层次的设计描述功能,层层细化,最后可直接生成电路描述,移植性很强。
而且采用VHDL语言输入设计不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。
当设计描述完成后,可以用多种不同的器件结构来实现其功能。
方案二:
采用原理图输入,原理图输入的设计方法不能实现真实意义上的自顶向下的设计,并无法建立行为模型。
而且不同的EDA软件中的图形处理工具对图形的设计规则、存档格式和图形编译方式都不同,因此兼容性差。
选择方案一的理由:
方案一比较方案二具有综合设计优点。
2、设计原理
用VHDL进行设计,首先应该了解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。
应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统是非常有用的,它使得人们可以从简单的单元入手,逐渐构成庞大而复杂的系统。
通用十进制加法器的功能为:
输入两个十进制数,通过输入信号BTN相加得出十进制数结果,最后通过译码器来显示结果。
图3加法器原理图
3、通用十进制加法器的主要硬件模块
3.14位BCD码全加器模块
图34位的BCD码全加器
3.2八加法器的实现框图
图48位加法器原理
4、调试与操作
4.1通用十进制加法器的功能仿真
图5时序仿真1
图6时序仿真2
4.2模式选择与引脚锁定
4.2.1模式选择
根据程序,结合电路设计情况,最终选择了模式3,以CTRA,CTRA1,CTRB,CTRB1为输入信号,每按一下输入信号CTRA(CTRB),两位的十进制数的个位就加一,同理,按一下输入信号CTRA1(CTRB1),这个十进制数的十位加一;
并通过控制信号BTN来得出结果,最后译码显示出来。
4.2.2引脚锁定
表1引脚锁定表
信号名
类型(输入/输出)
引脚号
说明
BTN
IN
PIN_233
控制信号
CTRA
PIN_239
输入信号
CTRA1
PIN_240
CTRB
PIN_237
CTRB1
PIN_238
A4[0]
OUT
PIN_161
BUFFER
A4[1]
PIN_162
A4[2]
PIN_163
A4[3]
PIN_164
A14[0]
PIN_165
A14[1]
PIN_166
A14[2]
PIN_167
A14[3]
PIN_168
B4[0]
PIN_137
B4[1]
PIN_138
B4[2]
PIN_139
B4[3]
PIN_140
B14[0]
PIN_141
B14[1]
PIN_158
B14[2]
PIN_159
B14[3]
PIN_160
S[0]
PIN_13
输出信号
S[1]
PIN_14
S[2]
PIN_15
S[3]
PIN_16
S[4]
PIN_17
S[5]
PIN_18
S[6]
PIN_19
S[7]
PIN_20
S[8]
PIN_21
S[9]
PIN_41
S[10]
PIN_128
S[11]
PIN_132
4.3设备与器件明细表
表2设备与器件明细表
名称
型号/参数
数量
SOPC/EDA开发系统
GW48系列
1套
微型计算机
联想
1台
QuartusII开发软件
QuartusII
4.4调试
4.4.1软件调试
本系统的软件系统很长,首先按照QuartusII设计流程,完成各项步骤,编好VHDL程序。
然后运行,查看是否有语法错误,当确认程序没有语法错误的前提下,开始建立波形编辑器文件,开始时序仿真,查看结果是否符合题目要求,若符合,则进行下一步的硬件调试,否则,重新检查程序,以及仿真设置等等,直到符合要求。
软件调试采取的是自分断调试的方法,即单独调试好每一个模块,然后再连接成一个完整的系统,最后完成一个完整的系统调试。
4.4.2硬件调试
锁定引脚后,然后进行硬件调试,本课程设计采用的是Cycone系列的SOPC/EDA开发系统,根据电路设计情况,通过分析,最终选择了模式7,选择CLOCK0作为输入的时钟信号的端口,16位预置输入数通过4个4位的按键控制。
引脚锁定后,开始下载到Cycone系列的SOPC/EDA开发系统,通过按键输入不同的初始值,输入完毕后,通过按键2控制输出两输入数的和。
最后,通过嵌入式逻辑分析仪SignalTalII测试,然后通过设置以确定前后触发捕捉信号信息的比列。
5、总结与致谢
5.1总结与思考
本次EDA课程设计,是我们第一次深入接触电路设计和工程设计的内容。
作为一个学生,在过去的两年半中学习了专业的各方面知识,包括电路原理、模拟电路、数字电路等等,而这周的EDA课设,将我们学过的各方面电学知识和现代电路设计方法结合起来,应用计算机软件进行课题项目设计,不单夯实了我们的理论知识和对数字电路的理解,更极大的锻炼了我们实际动脑、动手能力。
我们的设计题目是通用十进制加法器,通过拨码开关输入两个十进制数,将输入的数通过数码管显示,相加后的结果也通过数码管显示出来。
这个设计题目是整体来看是比较简单的。
仔细分析这个题目,遇到的第一个问题是要对两个输入的数进行处理,当其大于9的时候要把它变成0后再输入加法器。
而后比较棘手的问题是怎样把输出的二进制结果转换成十进制数。
由此我们设计出一个查表方案。
至此,整个设计方案就比较完善了。
5.2致谢
通过两周课程设计,我们受益良多。
在老师的指导下,我们逐步完善了各个环节的构思与设计。
在这两周的时间里,这次课设让我在实际中真正地运用了在课本中学到的东西,既加深理论知识的理解,又锻炼了自己的动手能力。
在此,对老师们致以衷心的感谢和崇高的敬意!
最终,在老师及同学们的帮助与指导下顺利完成了本次的课程设计。
附录
附录一
底层源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYadd_fIS
PORT(C4:
INSTD_LOGIC;
--前一位的进位C
A4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
--被加数A
B4:
--被加数B
S4:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
--相加的和S
BTN:
instd_logic;
CO4:
OUTSTD_LOGIC);
--相加产生的进位C
ENDENTITYadd_f;
ARCHITECTUREARTOFadd_fIS
SIGNALS5,S6:
STD_LOGIC_VECTOR(4DOWNTO0);
SIGNALA5,B5:
BEGIN
process(BTN)
begin
ifBTN'
EVENTANDBTN='
1'
then
A5<
='
0'
&
A4;
--扩展被加数A高位为0
B5<
B4;
--扩展被加数B高位为0
S5<
=A5+B5+C4;
--二数相加,并加上前一位的进位
ifS5>
"
01001"
THEN
S6<
=S5+"
00110"
;
ELSES6<
=S5;
ENDIF;
endif;
S4<
=S6(3DOWNTO0);
CO4<
=S6(4);
endprocess;
ENDARCHITECTUREART;
附录二
顶层源文件
useieee.std_logic_arith.all;
ENTITYaddIS
PORT(A4,A14:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0);
B4,B14:
BTN,CTRA,CTRA1,CTRB,CTRB1:
INstd_logic;
S:
OUTSTD_LOGIC_VECTOR(11DOWNTO0));
ENDENTITYadd;
ARCHITECTUREARTOFaddIS
componentadd_f
PORT(C4:
BTN:
INSTD_LOGIC;
endcomponent;
SIGNALCOUT,C1,C2:
STD_LOGIC;
PROCESS(CTRA,CTRA1,CTRB,CTRB1)
BEGIN
IFCTRA'
EVENTANDCTRA='
IFA4<
1001"
THENA4<
=A4+1;
ELSEA4<
="
0000"
ENDIF;
IFCTRA1'
EVENTANDCTRA1='
IFA14<
THENA14<
=A14+1;
ELSEA14<
IFCTRB'
EVENTANDCTRB='
IFB4<
THENB4<
=B4+1;
ELSEB4<
IFCTRB1'
EVENTANDCTRB1='
IFB14<
THENB14<
=B14+1;
ELSEB14<
ENDPROCESS;
C1<
u1:
add_fportmap(C4=>
C1,A4=>
A4,B4=>
B4,BTN=>
BTN,CO4=>
COUT,S4=>
S(3DOWNTO0));
u2:
COUT,A4=>
A14,B4=>
B14,BTN=>
C2,S4=>
S(7DOWNTO4));
s(8)<
=C2;
S(11DOWNTO9)<
000"
参考文献
[1]潘松,黄继业主编.EDA技术与VHDL[M].北京:
清华大学出版社.2006年9月
[2]潘松,王国栋编著.VHDL实用教程[M].成都:
电子科技大学出版社,2006
[3]江国强主编.EDA技术与应用[M].北京:
电子工业出版社.2007
[4]康华光主编.数字技术基础(第五版)[M].北京:
高等教育出版社.2000
[5]徐志军,徐光辉编著.CPLD/FPGA的开发与应用[M].北京:
电子工业出版社.2002
[6]李玉华.DEA技术与电子实验教学结合的探讨[J].长春师范学院报(自然科学版),2009,(06)
[7]庄海军,林咏海.基于FPGA的数控分频器的实现[J].电子与封装,2008,(11)
[8]周立功编著.EDA实验与实践[M].北京:
北京航空航天大学出版社.2007年3月