数字逻辑课程设计报告.docx
- 文档编号:29271806
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:41
- 大小:344.67KB
数字逻辑课程设计报告.docx
《数字逻辑课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字逻辑课程设计报告.docx(41页珍藏版)》请在冰豆网上搜索。
数字逻辑课程设计报告
洛阳理工学院
课程设计报告
课程名称
设计题目
专业
班级
学号
姓名
完成日期
课程设计任务书
设计题目:
运 算 器
设计内容与要求:
设计内容:
运算器:
完成算术及逻辑运算,并且把结果保存用LCD显示器显示。
设计要求:
设计原理图,并用Quartusii完成原理图绘制,或编写VHDL程序,调试电路或程序,下载到实验箱中验证,撰写课程设计报告,参加课程设计答辩。
有动手能力的同学鼓励完成实物设计。
指导教师:
2012年6月11日
课程设计评语
成绩:
指导教师:
_______________
年月日
运 算 器
摘 要
本设计是一个运算器,由按键输入模块、控制信号产生模块、修正结果模块、显示模块和顶层电路五部分组成。
能够实现运算器的加、减、与、异或四种运算,由于加法运算和减法运算的输入值以及输出结果均采用补码形式,补码范围是+7~-8,通过修正模块能够输出正确结果。
本课程设计通过安装有QuartusII6.0软件的计算机实验平台进行各模块VHDL代码的输入与编程无错误输出个模块波形,检验各模块功能是否正确,进而生成符号图,在顶层电路中将各模块符号图进行连接并编程无错误,最后下载验证至实验板上成功运算即可。
关键词:
按键输入模块、控制信号产生模块、修正结果模块、显示模块、顶层电路模块、运算器模块、实验电路板下载模块。
目 录
前 言....................................................4
第一章系统原理...........................................6
1.1运算器工作原理......................................6
1.1.1运算器的组成部分...............................6
1.1.2各模块的工作原理...............................6
1.2运算器的设计过程.............................6
1.2.1各模块的设计过程........................6
1.2.2各模块设计过程应注意事项................7
1.3运算器下载验证过程............................7
1.3.1下载验证过程............................7
1.3.2在实验板上验证出错的可能原因............7
1.4运算器的计算原理..............................7
第二章.系统各模块工作过程..........................8
2.1按键输入模块.................................8
2.1.1工作原理................................8
2.1.2仿真波形...............................13
2.2控制信号产生模块.............................13
2.2.1工作原理...............................13
2.2.2仿真波形..............................16
2.3修正结果模块................................16
2.3.1工作原理..............................17
2.3.2仿真波形..............................23
2.4显示模块...........................................24
. 2.4.1工作原理....................................24
2.5运算器电路模块...........................................28
2.5.1工作原理....................................28
2.5.2电路图.......................................28
2.6顶层电路模块...................................31
2.6.1工作原理..................................31
2.6.2顶层模块的定制选择器...........................31
2.6.3顶层电路图.....................................34
第三章下载模块 ........................................35
3.1顶层电路中按键输入模块与显示模块的引脚设置..35
3.1.1先要安装驱动程序........................35
3.1.2按照顶层电路设置引脚..........................37
3.2进行下载...........................................37
3.3下载测试...........................................37
总结......................................................38
参考文献.................................................39
前 言
运算器:
arithmeticunit,计算机中执行各种算术和逻辑运算操作的部件。
运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件
运算器由:
算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。
算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、求补等操作。
计算机运行时,运算器的操作和操作种类由控制器决定。
运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中。
与ControlUnit共同组成了CPU的核心部分
运算器能执行多少种操作和操作速度,标志着运算器能力的强弱,甚至标志着计算机本身的能力。
运算器最基本的操作是加法。
一个数与零相加,等于简单地传送这个数。
将一个数的代码求补,与另一个数相加,相当于从后一个数中减去前一个数。
将两个数相减可以比较它们的大小。
左右移位是运算器的基本操作,在有符号的数中,符号不动而只移数
据位,称为算术移位。
若数据连同符号的所有位一齐移动,称为逻辑移位。
若将数据的最高位与最低位链接进行逻辑移位,称为循环移位。
运算器的逻辑操作可将两个数据按位进行与、或、异或,以及将一个数据的各位求非。
有的运算器还能进行二值代码的16种逻辑操作。
乘、除法操作较为复杂。
很多计算机的运算器能直接完成这些操作。
乘法操作是以加法操作为基础的,由乘数的一位或几位译码控制逐次产生部分积,部分积相加得乘积。
除法则又常以乘法为基础,即选定若干因子乘以除数,使它近似为1,这些因子乘被除数则得商。
没有执行乘法、除法硬件的计算机可用程序实现乘、除,但速度慢得多。
有的运算器还能执行在一批数中寻求最大数,对一批数据连续执行同一种操作,求平方根等复杂操作。
运算器包括寄存器、执行部件和控制电路3个部分。
在典型的运算器中有3个寄存器:
接收并保存一个操作数的接收寄存器;保存另一个操作数和运算结果的累加寄存器;在进行乘、除运算时保存乘数或商数的乘商寄存器。
执行部件包括一个加法器和各种类型的输入输出门电路。
控制电路按照一定的时间顺序发出不同的控制信号,使数据经过相应的门电路进入寄存器或加法器,完成规定的操作。
而在本课程设计中只进行了加、减、与、异或四种运算,则大大降低了运算与设计的难度,也是未进行较为复杂的设计打下基础,了解运算器的设计原理,并掌握运算器的各模块结构与工作原理,从而能够实现各模块的集成,实现整体功能的运行。
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分, 分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
归纳起来,VHDL语言主要具有以下优点:
(1)VHDL语言功能强大,设计方式多样
(2)VHDL语言具有强大的硬件描述能力
(3)VHDL语言具有很强的移植能力
(4)VHDL语言的设计描述与器件无关
(5)VHDL语言程序易于共享和复用
由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。
VHDL可用的范围很广泛,只要是电子实物基本上都可以通过它来实现。
本次课程设计是VHDL简便性的一次很好的验证,通过VHDL实现了对运算器各模块代码的编写,进而通过输出波形验证各模块是否正确。
由此了解了该语言的简便性、可用性、广泛性。
VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。
面对当今市场上许多电子产品的生命周期大部分都比较短,而VHDL却能屹立而不倒,真正的看到了其作用之大、效率之高、实用性之强。
第一章 系统原理
1.1运算器工作原理
1.1.1运算器的组成部分:
运算器是由按键输入模块、控制信号长生模块、修正模块、显示模块、运算器电路模块、顶层电路模块。
1.1.2各模块的工作原理:
运算器是有各模块组成的,而各模块的工作原理均与即为其功能实现过程,在第二章将有具体的介绍。
1.2运算器的设计过程
1.2.1各模块的设计过程:
每个模块的均是根据其功能与计算方法进行设计的,
(1)按键模块是有组成:
乘(与)、除(异或)、加、减、输入数值A、输入数值B、复位键、等号这八个键组成,并且要能够判断哪个键按下,要输出什么数据和运算符,通过VHDL编码从而实现按键模块的功能;
(2)控制信号产生模块:
该模块主要是怎样将各信号通过VHDL代码生成,该信号包括各种运算符、输入的数值等,是中间连接环节。
(3)修正模块:
由于输入的数值A和B均采用补码形式,输出的结果也采用补码形式,补码范围是+7~-8,该模块的设计过程主要是修正正负溢出,也是通过VHDL代码进行修正,可见VHDL语言功能的强大,溢出时用进位构成五位补码;不溢出时,不用进位,采用四位补码。
(4)显示模块:
也是通过VHDL代码实现其功能的,主要是在下载验证时能够显示各种数据与运算符,并且能够判断应该在什么时候进行什么运算。
(5)运算器电路模块和顶层电路模块:
这两个模块均是使用电路图进行设计,主要根据数据的输入与寄存需要那些元器件,然后将元器件连接并命名,进而编程运行,无错误即可。
1.2.2各模块设计过程应注意事项:
(1)在编写代码是一定要认真细心,不要丢失字母、添加字母或更改字母,大小写均可。
(2)VHDL代码编写完之后要进行编程,并输出波形,验证其是否能够正常运行。
(3)在连接电路图是要注意不要忘了给一些线路进行命名,要正确连接各条线路,不要只图快,而是要正确率,最好一次正确。
(4)总的来说,一切都应该认真仔细,由于设计过程比较繁琐,字母也比较多,更应该严谨细心。
1.3运算器下载验证过程
1.3.1下载验证过程:
各模块在编程完成之后,要生成符号图,将符号图在顶层电路中进行连接,连接完成之后要要编程验证其是否正确,之后加引脚,全编程,具体过程请看第三章。
1.3.2在实验板上验证出错的可能原因:
(1)若输入数值错误和运算符不能正确输出时,很有可能是按键输入模块的代码有错误;
(2)若结果不能正确输出时,则显示模块出错可能性比较大,也不排除其他模块代码有错误。
(3)进行溢出验证出错时,则很有可能是修正模块出错,要进行代码的纠错。
1.4运算器的计算原理:
本课程设计只进行加、减、与、异或四种逻辑运算,加减运算时应注意溢出现象,而异或无此现象,通过实验板上的按键进行数据的输入,并根据逻辑算数运算原理验证设计的正确性。
第二章 系统各模块工作过程
2.1按键输入模块
2.1.1工作原理
1、功能介绍:
(1)按键设计组成是有八个键,分别是:
乘法键、除法键、加法键、减法键、数值A输入键、数值B输入键、复位键、等号键。
(2)通过VHDL代码实现判断哪个按键按下,判断输出的数据和运算符。
(3)按键模块的生成符图:
2、VHDL代码:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYKEYIS
PORT(EN:
OUTSTD_LOGIC;
YSF:
OUTSTD_LOGIC_VECTOR(1DOWNTO0);
RSTN,CLK:
INSTD_LOGIC;
KEYA,KEYB:
INSTD_LOGIC;
KADD,KSUB,KAND,KXOR,KEQU:
INSTD_LOGIC;
A,B,C,D:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
XSYSF:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
XA,XB:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDKEY;
ARCHITECTUREARCHOFKEYIS
SIGNALTKADD,TKSUB,TKAND,TKXOR,TKEQU:
STD_LOGIC;
SIGNALTA,TB:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
------------保存A--------------
PROCESS(KEYA,RSTN)
BEGIN
IFRSTN=’0’THENTA<=”0000”;
ELSIF(KEYA’EVENTANDKEYA=’1’)THEN
TA<=TA+1;
ENDIF;
ENDPROCESS;
---------------保存B------------
PROCESS(KEYB,RSTN)
BEGIN
IFRSTN=’0’THENTB<=”0000”;
ELSIF(KEYB’EVENTANDKEYB=’1’)THEN
TB<=TB+1;
ENDIF;
ENDPROCESS;
----------获取信号--------------------
PROCESS(RSTN,KADD)
BEGIN
IFRSTN=’0’THENTKADD<=’0’;
ELSIF(KADD’EVENTANDKADD=’1’)THENTKADD<=’1’;
ENDIF;
ENDPROCESS;
PROCESS(RSTN,KSUB)
BEGIN
IFRSTN=’0’THENTKSUB<=’0’;
ELSIF(KSUB’EVENTANDKSUB=’1’)THENTKSUB<=’1’;
ENDIF;
ENDPROCESS;
PROCESS(RSTN,KAND)
BEGIN
IFRSTN=’0’THENTKAND<=’0’;
ELSIF(KAND’EVENTANDKAND=’1’)THENTKAND<=’1’;
ENDIF;
ENDPROCESS;
PROCESS(RSTN,KXOR)
BEGIN
IFRSTN=’0’THENTKXOR<=’0’;
ELSIF(KXOR’EVENTANDKXOR=’1’)THENTKXOR<=’1’;
ENDIF;
ENDPROCESS;
PROCESS(RSTN,KEQU)
BEGIN
IFRSTN=’0’THENTKEQU<=’0’;
ELSIF(KEQU’EVENTANDKEQU=’1’)THENTKEQU<=’1’;
ENDIF;
ENDPROCESS;
PROCESS(RSTN,CLK,TKADD,TKSUB,TKAND,TKXOR,TKEQU,TA,TB)
BEGIN
IFRSTN=’0’THENYSF<=”00”;EN<=’0’;XSYSF<=”00100000”;
ELSIF(CLK’EVENTANDCLK=’1’)THEN
IFTKADD=’1’THENYSF<=”00”;XSYSF<=”00101011”;A<=TA;B<=TB;ENDIF;
IFTKSUB=’1’THENYSF<=”01”;XSYSF<=”00101101”;A<=TA;B<=TB;ENDIF;
IFTKAND=’1’THENYSF<=”10”;XSYSF<=”00101010”;A<=TA;C<=TB;ENDIF;
IFTKXOR=’1’THENYSF<=”11”;XSYSF<=”00101111”;A<=TA;D<=TB;ENDIF;
IFTKEQU=’1’THENEN<=’1’;ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(TA,TB,CLK)
BEGIN
IF(CLK’EVENTANDCLK=’1’)THEN
CASETAIS
WHEN”0000”=>XA<=”00110000”;
WHEN”0001”=>XA<=”00110001”;
WHEN”0010”=>XA<=”00110010”;
WHEN”0011”=>XA<=”00110011”;
WHEN”0100”=>XA<=”00110100”;
WHEN”0101”=>XA<=”00110101”;
WHEN”0110”=>XA<=”00110110”;
WHEN”0111”=>XA<=”00110111”;
WHEN”1000”=>XA<=”00111000”;
WHEN”1001”=>XA<=”00111001”;
WHEN”1010”=>XA<=”01000001”;
WHEN”1011”=>XA<=”01000010”;
WHEN”1100”=>XA<=”01000011”;
WHEN”1101”=>XA<=”01000100”;
WHEN”1110”=>XA<=”01000101”;
WHEN”1111”=>XA<=”01000110”;
WHENOTHERS=>NULL;
ENDCASE;
CASETBIS
WHEN”0000”=>XB<=”00110000”;
WHEN”0001”=>XB<=”00110001”;
WHEN”0010”=>XB<=”00110010”;
WHEN”0011”=>XB<=”00110011”;
WHEN”0100”=>XB<=”00110100”;
WHEN”0101”=>XB<=”00110101”;
WHEN”0110”=>XB<=”00110110”;
WHEN”0111”=>XB<=”00110111”;
WHEN”1000”=>XB<=”00111000”;
WHEN”1001”=>XB<=”00111001”;
WHEN”1010”=>XB<=”01000001”;
WHEN”1011”=>XB<=”01000010”;
WHEN”1100”=>XB<=”01000011”;
WHEN”1101”=>XB<=”01000100”;
WHEN”1110”=>XB<=”01000101”;
WHEN”1111”=>XB<=”01000110”;
WHENOTHERS=>NULL;
ENDCASE;
ENDIF;
ENDPROCESS;
ENDARCH;
2.1.2仿真波形:
2.2控制信号产生模块
2.2.1工作原理:
1、功能介绍:
(1)各种信号主要是数据和运算符的生成,还有一些功能键:
(2)该模块主要起到VHDL代码到实际电路的过渡,实现模
块化,控制各种按键的功能。
(3):
控制信号产生模块的生成符图:
2、VHDL代码:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCP3IS
PORT(RSTN,CLK:
INSTD_LOGIC;
CP,CPT,CPMUX:
BUFFERSTD_LOGIC;
SADD,SSUB,SAND,SXOR:
OUTSTD_LOGIC_VECTOR(1DOWNTO0));
ENDCP3;
ARCHITECTUREBEHAVIORALOFCP3IS
TYPESTATE1IS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11);
SIGNALPRES1,NXS1:
STATE1;
TYPESTATE2IS(SS0,SS1,SS2,SS3);
SIGNALPRES2,NXS2:
STATE2;
-------------产生四种运算的三个信号-------
BEGIN
PROCESS(CLK,RSTN)
BEGIN
IF(RSTN=’0’)THENPRES1<=S0;
ELSIF(CLK’EVENTANDCLK=’1’)THEN
PRES1<=NXS1;
ENDIF;
ENDPROCESS;
PROCESS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 逻辑 课程设计 报告