EDA大作业 课程设计 简易计算器
EDA课程设计报告书 简易cpu设计
执行结束后不会改变通用寄存器组的值。
通用寄存器组的两个读出端口,一个是目的寄存器读出端口,一个是源寄存器读出端口,从这两个端口读出的内容供执行部分exe_unit和存储器部分memory_unit使用。
通用寄存器组内还有两个标志位:z_out和c_out,在t3的下降沿根据指令执行的结果改变或者不改变它们的值。
这两个标志位的值送执行部分exe_unit使用。
寄存器模块芯片图寄存器模块2.取指令部分在本程序设计中,取指部分完成4项工作:⑴产生时钟信号t1、t2和t3,供CPU各部分使用;⑵在复位信号reset为低时将pc复位为0,在一条指令执行结束之后,根据指令执行的结果在t3的下降沿改变pc的值;⑶将从存储器读出的指令的第一个字在t2的上升沿送至指令寄存器IR中;⑷计算pc+1的值pc_inc,为双字指令取第二个指令字做准备取指令部分3.指令译码部分在本程序设计中,指令译码部分的功能是:根据指令寄存器IR的值产生实验CPU所需要的各种控制信号和其它信号,其信号作用如下:SR:源寄存器号(编址)。
DR:目的寄存器号(编址)。
op_code: 控制ALU进行8种运算操作的3位编码。
zj_instruct:为1表示本条指令是条“JNZ ADR”指令。
cj_instruct:为1表示本条指令是条“JNC ADR”指令。
lj_instruct:为1表示本条指令是条“JMP ADR”指令。
DRWr:为1表示在t3的下降沿将本条指令的执行结果写入目的寄存器。
Mem_Write:为1表示本条指令有存储器写操作,存储器的地址是源寄存器的内容。
DW_intruct:为1表示本条指令是双字指令。
change_z:为1表示本条指令可能改变Z(结果为0)标志。
change_c:为1表示本条指令可能改变C(进位)标志。
sel_memdata:为1表示本条指令写入目的寄存器的值来自读存储器。
r_sjmp_addr:计算条件转移指令转移地址所需要的16位相对地址。
EDA实验报告——计数器
模323计数器设计实验报告一、实验内容在QuartusII平台上,利用VHDL代码实现学号323计数器的设计,并在三位数码管显示出来。
二、实验步骤与过程分析1、建立工程。
打开Quartus II软件平台,点击File---〉new project wizard建立一个工程xuehao_323,工程所在文件夹名字为xuehao_323,设置顶层实体名称为xuehao_323,点击next设置device,按照实验箱上FPGA的芯片名更改编程芯片的设置。
分析:选择的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。
2、添加VHDL文件。
在所在工程添加文件cnt10.vhd(十进制计数器),cnt_xuehao.vhd(323进制计数器),scan_led3_vhd.vhd(三位数码管显示),exp_cnt_xuehao323_7seg.vhd(数码管显示323三位学号计数器)四个文件。
这里通过老师给出的代码进行修改且理解:cnt10.vhd如下:分析:这是十进制计数器的VHDL代码设计,因为十进制有十个状态,所以输入数据和输出状态需要四位宽,其中输入端口有aclr 清零端,clock时钟信号,cnt_en使能端,data[3..0]数据输入,sload装载使能,当aclr为高电平有效时,输出清零,从0开始,计数为时钟信号clock的上升沿到来时且使能端cnt_en 为高电平有效时自动加1(sload为低电平时),如果装载使能sload为高电平有效时,则装载数据data[3..0],输出端口有两个,分别为cout(当q[3..0]为9时输出为高电平),q[3..0]变化为0—9循环变化。
cnt_xuehao.vhd分析如下:这里是调用cnt_10十进制计数器的元件例化来设计323(学号)计数器。
输入端口aclr(高电平有效清零端),clock(时钟信号上升沿有效),cnt_en(使能端),sload(装载时能,高电平有效时装在输入的数据),datab[3..0],datas[3..0],datag[3..0](三位学号的数据输入端,每位变化相当于一个十进制计数器);输出端口qb[3..0](百位)qs[3..0](十位)qg [3..0](个位)变化为qb qs qg=000到322共323中状态,当等于322时,输出cout为高电平指示达到一个循环。
数字逻辑电路课程课程设计--简易加减计算器
摘要本次课程设计的任务是设计一个具有加减运算功能的简易计算器,并通过合适的方式来显示最后的计算结果。
此次设计电路的完成主要是利用简单的数字电路和电路逻辑运算来进行的。
简易加减计算器电路主要是对数据的输入与显示,数据的加减运算,数据的输出与显示三个主要的方面来设计研究完成的。
在输入电路的部分,我们通过开关的闭合与断开来实现数据的输入,开关闭合接入高电平“1”,断开接入低电平“0”。
而输入的数据将通过显示译码管以十进制的形式显示出来。
由于输入二进制的位数较多,我们采用个位十位分别输入的方式来简化电路。
加减运算电路则主要通过加法器来实现的。
设计电路时,我们将个位和个位、十位和十位分别接入一片加法器。
在进行加法运算时我们所选择的加法器是完全符合要求的,但是在进行减法运算时加法器就不能满足我们的设计要求了。
因此我们将减法转换为加法进行运算,运算时采用补码的形式。
在进行减法时通过异或门将减数的原码全部转换为补码,输入加法器中进行相加。
最后将进位信号加到十位的运算电路上就实现了加减法的运算电路。
在显示电路中,由加法器输出的数据是二进制码。
这些码可能表示超过十的数字,所以显示译码管就不能正确的显示出数字了。
此时要将二进制转化成BCD码,再将BCD 码送到显示译码管中就可以将计算所得的数字显示出来了。
概述1.1设计题目:简易加减计算器1.2设计任务和要求:1)用于两位以下十进制数的加减运算。
2)以合适的方式显示输入数据及计算结果。
1.3设计方案比较:方案一:输入十进制的数字,再通过编码器对十进制的数字进行编码,输出二进制的数据。
运用显示译码器对输入的数字以十进制的形式进行显示。
在进行加减计算的时候将二进制数字运用数模转换,然后再进行相加减。
然后将这些模拟信号再次转换成数字信号转换成数字信号,再将数字信号输入到显示译码管中来显示数剧。
这个方案中要进行数模转换和模数转换所需要的电路器件有些复杂,并且转换的时候需要很长的时间,而且转换以后数值的精度不高。
(完整word版)EDA计算器设计大作业
计算器设计专业:电子信息工程设计者:本文介绍了一个简单的计算器的设计,该设计采用了现场可编程逻辑器件FPGA设计,并基于VHDL 语言实现加减乘除功能,并用十进制显示在数码管上.系统由计算部分、输入部分、选择部分、输出部分组成,计算部分为加法器、减法器、乘法器和除法器组成.使用Altera公司的QuartusII开发软件进行功能仿真并给出仿真波形,并下载到试验箱,用实验箱上的按键开关模拟输入,用数码管显示十进制计算结果.通过外部按键可以完成四位二进制数的加、减、乘、除四种运算功能,其结果简单,易于实现.关键字:VHDL,计算器,QuartusII一.实验目的 (4)二、流程图 (5)三.顶层原理图 (5)四、各个模块 (7)(1)加法器模块 (7)1、封装元件 (7)2、加法器程序 (7)3、仿真结果 (8)(2)减法器模块 (9)1、封装元件 (9)2、减法器程序 (10)3、仿真结果 (11)4、硬件运行结果 (11)(3)乘法器模块 (12)1、封装元件 (12)2、乘法器的设计思想 (13)3、乘法器程序 (14)4、仿真结果 (14)5、硬件运行结果 (15)(4)除法器模块 (16)1、封装元件 (16)2、除法器设计思想 (16)3、除法器程序 (16)4、仿真结果 (17)5、硬件运行结果 (17)(5)8位除法器 (18)1、封装元件 (18)2、8位除法器设计思想 (19)3、8位除法器程序 (19)4、仿真结果 (22)(6)数码管七段译码电路 (22)1、封装元件 (22)2、共阴极七段显示码十六进制转换表 (23)3、七段译码器程序 (23)4、仿真结果 (24)(7)选择模块 (24)1、封装元件 (24)2、程序 (25)五、管脚锁定 (26)六、小结与收获 (26)一.实验目的1、熟悉QuartusII软件的相关操作,掌握数字电路设计的基本流程.2、介绍QuartusII 的软件,掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,下载等基本操作。
简易加减计算器设计(数电)
电子技术课程设计电气与信息工程学院建筑电气与智能化专业题目:简易加减计算器设计姓名:徐雪娇学号:094412110指导教师:祁林简易加减计算器设计一、设计目的1、在前导验证性认知实验基础上,进行更高层次的命题设计实验.2、在教师指导下独立查阅资料、设计、特定功能的电子电路。
3、培养利用数字电路知识,解决电子线路中常见实际问题的能力.4、积累电子制作经验,巩固基础、培养技能、追求创新、走向实用。
5、培养严肃认真的工作作风和严谨的科学态度。
二、设计要求1、用于两位一下十进制的加减运算。
2、以合适方式显示输入数据及计算结果。
三、总体设计第一步置入两个四位二进制数。
例如(1001)2,(0011)2和(0101)2,(1000)2,同时在两个七段译码显示器上显示出对应的十进制数9,3和5,8。
第二步通过开关选择加(减)运算方式;第三步若选择加运算方式所置数送入加法运算电路进行运算;同理若选择减运算方式,则所置数送入减法运算电路运算;第四步前面所得结果通过另外两个七段译码器显示。
即:方案一通过开关J1-J8接不同的高低电平来控制输入端所置的两个一位十进制数,译码显示器U10和U13分别显示所置入的两个数。
数A直接置入四位超前进位加法器74LS283的A4-A1端,74LS283的B4-B1端接四个2输入异或门。
四个2输入异或门的一输入端同时接到开关S1上,另一输入端分别接开关J5-J8,通过开关J5-J8控制数B的输入。
当开关S1接低电平时,B与0异或的结果为B,通过加法器74LS283完成两个数A和B的相加。
当开关J1接高电平时,B与1异或的结果为B非,置入的数B在74LS283的输入端为B的反码,且74LS283的进位信号C0为1,其完成S=A+B(反码)+1,实际上其计算的结果为S=A-B完成减法运算。
由于译码显示器只能显示0-9,所以当A+B>9时不能显示,我们在此用另一片芯片74LS283完成二进制码与8421BCD码的转换,即S>9(1001)时加上6(0110)2,产生的进位信号送入译码器U12来显示结果的十位,U11 2显示结果的个位。
eda的计数器课程设计
eda的计数器课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握计数器的设计原理。
2. 学生能描述不同类型的计数器,并了解它们在实际应用中的区别。
3. 学生能运用所学知识,分析并设计简单的计数器电路。
技能目标:1. 学生能够运用EDA工具进行计数器电路的绘制、仿真和调试。
2. 学生能够通过小组合作,解决设计过程中遇到的问题,提高团队协作能力。
3. 学生能够运用所学知识,独立完成计数器电路的设计与验证。
情感态度价值观目标:1. 学生对电子设计产生兴趣,培养探究精神和创新意识。
2. 学生在小组合作中,学会倾听、尊重他人意见,培养良好的沟通能力和团队精神。
3. 学生能够认识到科技发展对社会进步的重要性,增强社会责任感和使命感。
课程性质:本课程为电子信息科学与技术专业的实践课程,旨在让学生通过实际操作,掌握计数器的设计原理和EDA工具的使用。
学生特点:学生已具备一定的电子基础知识和EDA软件操作能力,具有较强的动手能力和探究欲望。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调动手实践和团队合作,提高学生的实际操作能力和创新能力。
通过本课程的学习,使学生能够达到上述课程目标,为后续课程和实际工作打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 计数器原理与分类- 计数器的基本概念、功能和分类- 不同类型计数器(同步、异步、Johnson等)的工作原理及应用2. EDA工具使用- 介绍EDA软件的基本操作和功能- 计数器电路的绘制、仿真与调试方法3. 计数器设计实践- 设计简单的同步计数器电路- 设计简单的异步计数器电路- 设计简单的Johnson计数器电路4. 小组讨论与总结- 分析设计过程中遇到的问题及解决方法- 各小组展示设计成果,分享经验和心得教学内容安排与进度:第1周:计数器原理与分类学习,了解EDA工具的基本操作第2周:设计简单的同步计数器电路,进行仿真与调试第3周:设计简单的异步计数器电路,进行仿真与调试第4周:设计简单的Johnson计数器电路,进行仿真与调试第5周:小组讨论与总结,展示设计成果教材章节与内容:第1章 计数器原理与分类第2章 EDA工具使用第3章 计数器设计实践第4章 小组讨论与总结三、教学方法本课程采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:教师通过讲解计数器原理、分类及EDA工具的使用方法,为学生奠定理论基础。
eda计数器的课程设计
eda计数器的课程设计一、课程目标知识目标:1. 让学生理解EDA(电子设计自动化)计数器的基本原理和功能;2. 使学生掌握计数器的种类、工作方式及应用场景;3. 帮助学生掌握使用EDA工具进行计数器设计的方法。
技能目标:1. 培养学生运用EDA工具设计简单计数器的能力;2. 培养学生分析计数器电路、调试和优化电路的技能;3. 提高学生团队协作和沟通表达的能力。
情感态度价值观目标:1. 培养学生对EDA技术及电子设计的兴趣和热情;2. 培养学生严谨、细致、勇于探索的科学态度;3. 增强学生的国家认同感和自豪感,认识到我国在EDA技术领域的发展。
课程性质分析:本课程为电子技术专业课程,以实践为主,理论联系实际。
结合学生特点和教学要求,注重培养学生的实际操作能力和团队合作精神。
学生特点分析:学生为高中生,具有一定的电子技术基础和动手能力,对新鲜事物充满好奇心,喜欢探索和实践。
教学要求:1. 理论与实践相结合,注重培养学生的实际操作能力;2. 激发学生的创新意识,提高学生的设计能力;3. 引导学生关注我国EDA技术领域的发展,培养学生的国家认同感。
二、教学内容1. 计数器原理:讲解计数器的基本概念、分类(同步、异步计数器)、工作原理和功能;教材章节:第二章第二节《计数器的基本概念与分类》2. EDA工具使用:介绍常见的EDA工具(如Multisim、Proteus等),学习如何使用这些工具进行计数器设计;教材章节:第三章第一节《电子设计自动化工具介绍》3. 计数器设计:分析简单计数器电路原理,学习使用EDA工具进行设计,包括电路图绘制、仿真测试等;教材章节:第三章第三节《计数器的设计与仿真》4. 电路调试与优化:学习如何对计数器电路进行调试、优化,提高电路性能;教材章节:第四章第二节《电路调试与优化方法》5. 实践操作:分组进行计数器设计实践,培养团队协作能力和实际操作技能;教材章节:第五章《实践操作》6. 总结与拓展:总结计数器设计与实践过程中的经验教训,探讨计数器在其他领域的应用;教材章节:第六章《课程总结与拓展》教学内容安排与进度:1. 计数器原理(1课时)2. EDA工具使用(1课时)3. 计数器设计(2课时)4. 电路调试与优化(1课时)5. 实践操作(3课时)6. 总结与拓展(1课时)总计8课时,确保学生在掌握理论知识的基础上,充分进行实践操作,提高综合运用能力。
基于EDA的简易计算器的设计
EDA 课程设计报告书课题名称 基于EDA 的简易计算器的设计 姓 名学 号 院 系 专 业 指导教师年 月 日※※※※※※※※※ ※※ ※※ ※※※※※※※※※※※****级学生EDA 课程设计基于EDA的简易计算器的设计1 设计目的(1)学习面向可编程器件的FPGA的简单数字系统的设计流程;(2)掌握EDA软件Quartus II的原理图输入方式,以及硬件描述语言描述方式;(3)熟悉EDA编辑软件。
2设计的主要内容和要求1、设计一个1位全加器。
运用波形仿真检查功能正确后,将其封装成1位全加器模块。
2、以1中已封装的1位全加器模块为基础设计一个4位全加器并将其封装成模块。
3、以全加器为基础设计一个4位乘法器并封装成乘法器模块,输出显示乘积和正负数标志。
4、以2、3中生成的器件模块为基础构成一个简易计算器,实现如图2.1所示。
根据S的输入,分别完成Y=A+B或Y=A×B。
要求:(1) 加数为正时,实现两个4位二进制数与来自低位进位的加法运算,输出显示和及高位进位。
(2) 加数为负时,实现两个4位二进制数的减法运算,输出显示差的原码和正负数标志。
图2.1 简易计算器框图3 整体设计方案根据设计要求和系统所具有功能,并参考相关的文献资料经行方案,先设计一个全加器,再四位全加器,四位乘法器,然后构成简易计算器。
4 硬件电路的设计4.1 设计一位全加器一位全加器电路如图4.1所示。
其中A1、B1分别为两个加数,C1为来自低位的进位,S为输出的全加和,C01为向高位的进位。
图4.1 一位全加器检查正确无误后,进行全编译,然后将其封装成一位全加器模块,如图4..2所示。
图4.2 一位全加器模块4.2 设计四位全加器要实现一个四位全加器,能进行加减法且以原码方式输出结果,分三步进行,流程如图4.3所示。
图4.3 四位全加器流程图(1)设计四位加法器用四个一位全加器的串行接法,即可得到四位串行加法器,实现四位二进制数的加法,用原理图的方式在Quartus II中构建原理图如图4.4。
EDA计算器课程设计
EDA计算器课程设计一、课程目标知识目标:1. 学生能理解EDA计算器的基本原理和功能,掌握其操作方法。
2. 学生能够运用EDA计算器进行简单的数据分析和解决实际问题。
3. 学生掌握EDA计算器在工程和数据领域的应用场景。
技能目标:1. 学生能够熟练使用EDA计算器的各项功能,如数据处理、图表生成等。
2. 学生能够运用EDA计算器解决实际问题时,具备分析和解决的能力。
3. 学生能够通过EDA计算器,提高自己的逻辑思维和创新能力。
情感态度价值观目标:1. 学生通过学习EDA计算器,培养对工程和数据科学的兴趣,激发学习的内驱力。
2. 学生在学习过程中,养成合作、探究的学习习惯,形成良好的团队协作意识。
3. 学生能够认识到科技发展对社会进步的重要性,增强社会责任感和使命感。
课程性质分析:本课程为实践性较强的课程,以学生动手操作和实际应用为主,注重培养学生的实际操作能力和解决问题的能力。
学生特点分析:学生处于好奇心强、求知欲旺盛的阶段,对新鲜事物有较高的兴趣。
他们具备一定的计算机操作基础,但EDA计算器的使用还需进一步学习。
教学要求:1. 教师需注重理论与实践相结合,引导学生学以致用。
2. 教师应关注学生的个体差异,提供有针对性的指导。
3. 教学过程中要充分调动学生的积极性,鼓励学生主动探索和解决问题。
二、教学内容1. EDA计算器概述- 计算器的发展历程- EDA计算器的定义与特点2. EDA计算器的功能与操作- 数据处理功能:数据录入、排序、筛选等- 图表生成:柱状图、折线图、饼图等- 基本运算:加减乘除、百分比、求和等3. EDA计算器在实际应用案例- 工程领域:数据分析、项目管理等- 数据科学:数据挖掘、预测分析等4. 教学内容的安排与进度- 第一课时:EDA计算器概述及基本功能介绍- 第二课时:数据处理功能的操作与实践- 第三课时:图表生成功能的操作与实践- 第四课时:基本运算操作及实际应用案例5. 教材章节及内容列举- 第一章:计算器概述- 第一节:计算器发展历程- 第二节:EDA计算器定义与特点- 第二章:EDA计算器功能与操作- 第一节:数据处理功能- 第二节:图表生成功能- 第三节:基本运算操作- 第三章:EDA计算器在实际应用案例- 第一节:工程领域应用- 第二节:数据科学应用教学内容确保科学性和系统性,以培养学生的实际操作能力和解决问题的能力为核心,注重理论与实践相结合。
eda课程设计计数器
eda课程设计 计数器一、课程目标知识目标:1. 理解计数器的基本概念,掌握其工作原理;2. 学会运用EDA工具进行计数器的设计与仿真;3. 掌握计数器的应用场景,了解其在数字系统中的作用。
技能目标:1. 能够运用所学知识,设计简单的计数器电路;2. 熟练使用EDA工具进行电路的绘制、仿真和调试;3. 培养动手实践能力和团队协作能力,提高问题解决能力。
情感态度价值观目标:1. 培养学生对电子设计的兴趣,激发学习热情;2. 培养学生的创新意识和探究精神,鼓励尝试和改进;3. 增强学生的责任感,认识到计数器在现代社会生活中的重要性。
课程性质:本课程为电子设计自动化(EDA)课程的实践环节,旨在让学生通过动手实践,掌握计数器的设计与应用。
学生特点:学生具备一定的电子基础知识,对EDA工具有一定的了解,具有较强的学习能力和动手能力。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调动手实践,培养学生的实际操作能力。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高其电子设计能力。
教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
二、教学内容1. 计数器原理讲解:- 理解异步计数器与同步计数器的工作原理;- 掌握二进制、十进制和任意进制计数器的设计方法。
2. EDA工具使用:- 学习并熟练使用Multisim、Proteus等EDA工具进行计数器电路设计;- 掌握电路绘制、仿真和调试的基本步骤。
3. 实践操作:- 设计并实现一个简单的二进制计数器电路;- 设计并实现一个十进制计数器电路;- 尝试设计任意进制计数器电路。
4. 教学大纲:- 第一章:计数器原理及分类;- 第二章:EDA工具的基本操作;- 第三章:二进制计数器设计与实践;- 第四章:十进制计数器设计与实践;- 第五章:任意进制计数器设计与实践。
5. 教学内容安排与进度:- 原理讲解:2课时;- EDA工具使用:2课时;- 二进制计数器设计:2课时;- 十进制计数器设计:2课时;- 任意进制计数器设计:2课时。
EDA实验五计数器实验
实验五计数器实验一、实验目的1.设计一个能带使能输入、进位输出及同步清0的增1十进制计数器2.设计一个带计数使能、同步清0、同步加载的4位计数器二、实验内容设计一个能带使能输入、进位输出及同步清0的增1十进制计数器library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;entity counter1 isPort ( clk : in STD_LOGIC;clr : in STD_LOGIC;en : in STD_LOGIC;co : out STD_LOGIC;count: out STD_LOGIC_VECTOR (3 downto 0));end counter1;architecture Behavioral of counter1 isSIGNAL cnt : STD_LOGIC_VECTOR(3 downto 0);BEGINPROCESS (clk)BEGINIF (clk'EVENT AND clk = '1') THENIF clr = '1' THENcnt <= (OTHERS => '0');ELSIF en = '1' THENIF cnt = "1001" THENcnt <= "0000";co<='1';ELSEcnt <= cnt + '1';co<='0';END IF;END IF;END IF;END PROCESS;count <= cnt;end Behavioral;VHDL Test Bench测试代码VHDL Test Bench测试代码clk_process :processbeginclk <= '0';wait for 40 ns;clk <= '1';wait for 40 ns;end process;clr<='1','0' after 60 ns;en<='1';PROCESS (clk)BEGINIF (clk'EVENT AND clk = '1') THENIF clr = '1' THENcount <= (OTHERS => '0');ELSIF en = '1' THENIF count = "1001" THENcount <= "0000";co<='1';ELSEcount <= count + '1';co<='0';END IF;END IF;END IF;END PROCESS;END;功能仿真图:时序仿真图:其中的管脚配置:#The following constraints were newly addedNET "count<1>" LOC = E9;NET "count<2>" LOC = D11;NET "count<3>" LOC = C11;NET "co" LOC = F11;NET "clk" LOC = E10;NET "en" LOC = L13;NET "clr" LOC = B16;NET "count<0>" LOC = F9;Xpower功耗分析The power estimate will be calculated using PRODUCTION data. Design load 20% completeDesign load 25% completeDesign load 30% completeDesign load 60% completeDesign load 95% completeDesign load 100% completeDesign Analysis 33% completeDesign Analysis 67% completeDesign Analysis 100% complete查看Device Utilization Summary延时报告;实验结果符合设计设计一个带计数使能、同步清0、同步加载的4位计数器library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;entity aa isPort ( clk : in STD_LOGIC;clr : in STD_LOGIC;en : in STD_LOGIC;load : in STD_LOGIC;dir : in STD_LOGIC;data_in : in STD_LOGIC_VECTOR (3 downto 0);count : out STD_LOGIC_VECTOR (3 downto 0)); end aa;architecture Behavioral of aa isSIGNAL cnt :STD_LOGIC_VECTOR (3 downto 0) ;BEGINPROCESS (clk)BEGINIF (clk'EVENT AND clk = '1') THENIF clr = '0' THENcnt <="0000";ELSIF load = '1' THENcnt <= data_in;ELSIF en = '1' THENIF dir = '1' THENIF cnt = "1111" THENcnt <= "0000";ELSEcnt <= cnt + '1';END IF;ELSEIF cnt = "0000" THENcnt <= "1111";ELSEcnt <= cnt - '1';END IF;END IF;END IF;END IF;END PROCESS;count <= cnt;end Behavioral;VHDL Test Bench测试代码clk_process :processbeginclk <= '0';wait for 35 ns;clk <= '1';wait for 35 ns;end process;clr<='0','1' after 40 ns;load<='1','0' after 150 ns,'1' after 200 ns,'0' after 300 ns;en<='1';dir<='1','0' after 600 ns;PROCESS (clk)BEGINIF (clk'EVENT AND clk = '1') THENIF clr = '0' THENcount <="0000";ELSIF load = '1' THENcount <= data_in;ELSIF en = '1' THENIF dir = '1' THENIF count = "1111" THENcount <= "0000";ELSEcount <= count + '1';END IF;ELSEIF count = "0000" THENcount <= "1111";ELSEcount<= count - '1';END IF;END IF;END IF;END IF;END PROCESS;功能仿真图:功能仿真图:其中的管脚配置:#The following constraints were newly addedNET "count<1>" LOC = E9;NET "count<2>" LOC = D11;NET "count<3>" LOC = C11;NET "count<0>" LOC = F9;NET "data_in<0>" LOC = N17;NET "data_in<1>" LOC = H17;NET "data_in<2>" LOC = L14;NET "data_in<3>" LOC = L13;NET "clk" LOC = E10;NET "en" LOC = D5;NET "clr" LOC = B4;NET "dir" LOC = A4;NET "load" LOC = B16;Xpower功耗分析The power estimate will be calculated using PRODUCTION data. Design load 20% completeDesign load 25% completeDesign load 30% completeDesign load 60% completeDesign load 95% completeDesign load 100% completeDesign Analysis 33% completeDesign Analysis 67% completeDesign Analysis 100% complete查看Device Utilization Summary延时报告:实验结果与程序一致。
简单计算器eda设计最终打印版
目录第一章设计原理 (1)1.1 课程设计依据 (1)1.2 课程设计内容及原理 (1)1.3 课程设计要求 (1)第二章设计流程 (2)2.1设计流程图 (2)2.2 LED灯接线部分显示 (3)第三章模块连接 (4)3.1 四选一多路器 (4)3.1.1多路器程序设计 (4)3.1.2四选一多路器仿真图 (5)3.1.3四选一多路器仿真波形分析 (5)3.2 7段数码管显示 (5)3.2.1数码管程序设计 (5)3.2.2数码管仿真图 (6)3.2.2数码管仿真图分析 (6)3.3 循环扫描模块 (7)3.3.1循环扫描程序 (7)3.3.2循环扫描仿真图 (8)3.3.3 循环扫描模块分析 (8)3.4 简易计算器总体程序设计 (8)3.4.1简单计算器程序设计 (8)3.4.2简单计算器总体仿真图 (11)3.4.3简单计算器仿真图设计分析 (11)第四章设计体会 (12)参考文献 (13)第一章设计原理1.1 课程设计依据在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计。
1.2 课程设计内容及原理设计一个简单计算器,采用简单4*4计算器键盘,输入2位十进制数进行+、-、 *、/ 四种运算,输入数据分别用两位数码管显示,输出用四位数码管显示4位10进制数,其中除法的结果显示分为商和余数两部分,要求采用时序逻辑设计实现计算器功能。
为了完成要求的效果显示,我先设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。
实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个3—8译码器和数码管连接,通过开关控制,形成动态显示。
从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。
EDA实验_计数器设计
XXXX大学计算机科学学院实验/上机报告一、实验目的1、通过4位同步加/减法计数器的设计,掌握同步时序控制的基本方法2、掌握LPM参数化模块库中的功能块调用方法二、实验环境1、硬件:PC机、便携式EDA/SOPC/DSP实验系统;2、软件:Quartus II 5.0;三、实验内容1、完成4位同步加/减法计数器设计并实现功能仿真2、利用LPM参数化模块库中的组件设计8位同步加法计数器并实现功能仿真3、设计一个1秒钟定时器,用以控制发光二极管闪烁四、实验过程设计思想:计数器即实现计数功能的数字电路,通过累计输入脉冲个数,达到计数的目的。
对于四位的同步加/减法计数器共有24=16个输出状态,在设计时可以用一个向量进行定义。
另外,对于给定的加/减法计数器结构,可做如下描述:当计数器复位端(rst)为0时,计数器清零,否者,即处于置位端。
此时,当时钟脉冲(clk)处于上升沿时,计数器受加减控制端(updn)控制,即当updn=1时,实现加法计数,否则减法计数。
定时器通常为减1计数,当程序进入运行状态后,定时器开始自动计数。
对于1秒钟定时器,其工作原理为:在时钟脉冲为上升沿触发的情况下,当定时器使能控制信号为1时,如果定时器经过一个定时时钟,比如1s,则定时到输出时间到信号,定时器清零,否则,定时输出时间未到。
实验步骤:1、设计一个4位的同步加/减法计数器新建工程,建立源文件,输入VHDL设计文件,如下图所示:完成设计文件输入后,保存文件,对文件进行编译、仿真,以下是仿真结果,如图所示:由该仿真图可知,当rst=1处于置位状态时,若时钟脉冲信号clk处于上升沿触发,输出信号q受updn控制,即当updn=0时,计数器实现减法计数功能,当updn=1时,计数器实现加法计数功能。
可见仿真结果正确,即实现了4位的同步加/减法计数器的功能。
2、利用LPM参数化模块库中的组件设计8位同步加法计数器并实现功能仿真(1)打开MegaWizard Plug-In Manager 初始对话框在Tools 菜单中选择MegaWizard Plug-In Manager,产生如下图所示的界面:选择Create a new custom…项,即定制一个新的模块。
eda计数器课程设计
eda计数器课程设计一、课程目标知识目标:1. 让学生理解EDA计数器的基本概念,掌握计数器的工作原理;2. 学会使用EDA工具进行计数器的设计、仿真和验证;3. 了解计数器在不同领域中的应用,如数字信号处理、通信系统等。
技能目标:1. 培养学生运用所学知识,独立设计简单的EDA计数器电路;2. 提高学生分析、解决计数器设计过程中遇到问题的能力;3. 培养学生运用EDA工具进行电路仿真和验证的能力。
情感态度价值观目标:1. 激发学生对电子设计自动化(EDA)技术的兴趣,培养其主动学习的积极性;2. 培养学生团队合作精神,学会与他人共同解决问题;3. 增强学生的创新意识,鼓励他们勇于尝试、不断探索。
课程性质:本课程为电子技术专业课程,旨在让学生掌握EDA计数器的设计与应用。
学生特点:学生具备一定的电子技术基础知识,对EDA技术有一定了解,但实际操作能力有待提高。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强化实践操作,提高学生的实际动手能力。
通过本课程的学习,使学生能够将所学知识应用于实际电路设计中,培养具备创新精神和实践能力的电子技术人才。
教学过程中,注重分解课程目标为具体学习成果,以便进行教学设计和评估。
二、教学内容1. 计数器原理及分类:介绍计数器的基本概念、工作原理,以及同步、异步计数器等不同类型的计数器;教材章节:第二章第二节2. EDA工具使用:讲解如何使用EDA工具(如Multisim、Proteus等)进行计数器的设计、仿真和验证;教材章节:第三章第一节3. 计数器设计方法:介绍基于触发器和门电路的计数器设计方法,以及如何优化计数器设计;教材章节:第四章4. 计数器应用案例分析:分析计数器在数字信号处理、通信系统等领域的应用案例;教材章节:第五章5. 实践操作:指导学生进行EDA计数器的设计、仿真和验证,培养学生的实际操作能力;教材章节:第六章6. 课程总结与拓展:对本章内容进行总结,引导学生思考计数器的未来发展及其在新兴领域的应用。
EDA大作业_Quartus II_简易计算器_实验报告
实验报告——简易计算器目录:一、实验目的 (1)二、实验任务 (1)三、电路设计及仿真 (2)1. 结构设计图示如下: (2)2. 设计描述 (2)3. 一位全加器: (2)4. 四位全加器: (2)5. 补码器 (3)6. 四位加减器 (4)7. 八位全加器 (5)8. 乘法器 (5)9. 整体电路: (6)四、实验总结 (7)1. 实验收获: (8)2. 实验中出现的问题及解决: (8)一、实验目的1. 学习面向可编程器件(FPGA)的简单数字系统的设计流程。
2. 熟练掌握EDA设计软件Quartus II的原理图输入方式和层次化设计模式。
3. 熟悉实验装置——实验箱。
二、实验任务1. 设计1位全加器,并将其封装成1位全加器模块,仿真验证运算结果;2. 设计4位加/减运算器。
用封装好的1位全加器模块组成成4位加/减运算器。
仿真验证运算结果;3. 以全加器为基础设计一个4位乘法器并封装成乘法器模块,输出显示乘积和正负数标志。
仿真验证运算结果;4. 使用已生成的器件模块为基础设计一个简易计算器,根据控制端的状态,完成加、减、乘法运算,用十进制显示运算结果;用发光二极管显示负数标志。
仿真验证运算结果;即实现如下设计:三、电路设计及仿真1.结构设计图示如下:2.设计描述①利用门电路组合成1位全加器,封装;②调用1位全加器组合4位全加器和4位补码全加器(实现补码和相加),分别封装;③利用门电路实现补码器,封装;(可改进——使用4位全加器实现,见下);④调用4位补码全加器和补码器实现4位加减器;⑤调用4位全加器实现8位全加器,封装;⑥调用8位全加器实现乘法器;⑦译码(二进制码——BCD码);⑧组合4位加减器和乘法器成简易计算器;3.一位全加器:①利用门电路组合而成4位全加器;电路图如下:②将其封装成1位全加器模块。
4.四位全加器:①利用1位全加器模块搭建4位补码全加器(实现补码后相加),电路如下:② 将其封装成4位补码全加器模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计。
本次实验我完成的内容是简单计算器的设计,下面我简单的进行一下原理的阐述。
设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。
为了完成要求的效果显示,我先设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。
实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个3—8译码器和数码管连接,通过开关控制,形成动态显示。
从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。
通过改变时钟,使其看起来像同时显示在数码管上。
设计流程如下图,分别用两个数码管表示八位二进制数,用一个case 语句表示输入数值采用哪种运算方式,分别用00,01,10,11表示加,减,乘,除。
用3—8译码器选择从哪个数码管输出。
硬件流程图输出结果 A. B 的显示软件流程图LED 灯接线部分显示:中心控制 复位编码 数码管输出输入A 输入B 运算选择C 输出out L E D 8 L E D 7 L E D 6 L E D 5 L E D 4 L E D 3 L E D 2 L E D 1第三章程序简单计算器的程序如下:module jsq9(a,b,c,Dout,count,clk,rst);input[7:0]a,b;input clk,rst;input[1:0]c;output[6:0]Dout;output [2:0]count;reg[6:0]Dout;reg[2:0]count;reg[15:0]out;reg[6:0] LED7S1,LED7S2,LED7S3,LED7S4, LED7S5,LED7S6,LED7S7,LED7S8; DECL7S u1(.A(a[7:4]) , .LED7S(LED7S1));DECL7S u2(.A(a[3:0]) , .LED7S(LED7S2));DECL7S u3(.A(b[7:4]) , .LED7S(LED7S3));DECL7S u4(.A(b[3:0]) , .LED7S(LED7S4));DECL7S u5(.A(out[15:12]) , .LED7S(LED7S5));DECL7S u6(.A(out[11:8]) , .LED7S(LED7S6));DECL7S u7(.A(out[7:4]) , .LED7S(LED7S7));DECL7S u8(.A(out[3:0]) , .LED7S(LED7S8));reg[7:0]out1,out2;always@(a,b,c,Dout,count,clk,rst)case(c)2'b00:out=a+b;2'b01:out=a-b;2'b10:out=a*b;2'b11:beginout1=a/b;out2=a%b;out={out1,out2};enddefault:;endcasealways@(posedge clk or negedge rst)beginif(!rst)count<=3'b000;else if(count==3'b111)count<=3'b000;elsecount<=count+3'b001;endalways@(posedge clk)begincase(count)3'b000: Dout<=LED7S1;3'b001:Dout<=LED7S2;3'b010:Dout<=LED7S3;3'b011:Dout<=LED7S4;3'b100: Dout<=LED7S5;3'b101:Dout<=LED7S6;3'b110:Dout<=LED7S7;3'b111:Dout<=LED7S8;endcaseendendmodulemodule DECL7S (A, LED7S);input [3:0] A;output [6:0] LED7S;reg [6:0] LED7S;always @(A)begincase(A)4'b0000 : LED7S<=7'b0111111; 4'b0001: LED7S <= 7'b0000110 ; 4'b0010: LED7S <= 7'b1011011; 4'b0011: LED7S <= 7'b1001111; 4'b0100: LED7S <= 7'b1100110 ; 4'b0101: LED7S <= 7'b1101101; 4'b0110: LED7S <= 7'b1111101 ; 4'b0111: LED7S <= 7'b0000111 ; 4'b1000: LED7S <= 7'b1111111 ; 4'b1001: LED7S <= 7'b1101111 ; 4'b1010: LED7S <= 7'b1110111 ; 4'b1011: LED7S <= 7'b1111100 ; 4'b1100: LED7S <= 7'b0111001 ;4'b1101: LED7S <= 7'b1011110 ; 4'b1110: LED7S <= 7'b1111001 ; 4'b1111: LED7S <= 7'b1110001 ; endcaseendendmodule第四章模块连接在本程序中,共由三个模块组成,第一个模块是一个四选一多路器其仿真图为:第二个模块是7段数码管显示程序如下module DECL7S (A, LED7S);input [3:0] A;output [6:0] LED7S;reg [6:0] LED7S;always @(A)begincase(A)4'b0000 : LED7S<=7'b0111111;4'b0001: LED7S <= 7'b0000110 ;4'b0010: LED7S <= 7'b1011011;4'b0011: LED7S <= 7'b1001111;4'b0100: LED7S <= 7'b1100110 ;4'b0101: LED7S <= 7'b1101101;4'b0110: LED7S <= 7'b1111101 ;4'b0111: LED7S <= 7'b0000111 ;4'b1000: LED7S <= 7'b1111111 ;4'b1001: LED7S <= 7'b1101111 ;4'b1010: LED7S <= 7'b1110111 ;4'b1011: LED7S <= 7'b1111100 ;4'b1100: LED7S <= 7'b0111001 ;4'b1101: LED7S <= 7'b1011110 ;4'b1110: LED7S <= 7'b1111001 ;4'b1111: LED7S <= 7'b1110001 ;endcaseendendmodule仿真图如下:把这个两个模块用一个3—8译码器进行连接,使其达到实验的要求。
第五章调试及仿真结果仿真时序图如下:设计一个四选一多路器,当c为00时,为加法,c为01时,为减法;c为10时,为乘法;c为11时,为除法。
如图,在rst为低电平时,输出延迟,当rst为高电平后,在clk上升沿时,a为00000000,b 为00000000,c为00,数码管1表示a的高四位,数码管2表示a的低四位,数码管3表示b的高四位,数码管4表示b的低四位,数码管5到数码管8表示输出Dout。
依次类推,可以看出,仿真出来的时序图是正确的。
第六章设计过程中出现问题首先我的考虑是如何用两个数码管表示一个八位的二进制数,我想应该把八位二进制转化为十六进制,这样就可以在数码管上显示,其次,在电路箱中,不能同时显示八位数码管,必须用一个译码器设计成扫描电路,让实验结果能清晰的显示出来。
再次,是加入一个二输入一输出的选择编码器,将四个显示模块分别编码为:00,01,10,11。
可是在往常实验过程中这两个输入端都是运用手动按键进行控制的,而本次试验需要的是自动顺序循环显示四个模式。
由于设计思路简单,程序比较清晰。
但时序仿真电路中,仿真出的时序图并不是很明显,所以,我改变了rst的时序波形,并把啊,a,b输出,用8位二进制表示出来,在定义引脚时,把右侧四个数码管分别表示a,b,左侧表示输出,让结果看起来明显些。
在试验箱上搭接完电路,进行下载,led显示模块初步完成了设计的要求。
通过手动输入a,b和c,实验结果正确。
设计过程中最大的困难就是写程序,查阅了很多资料,求助于同学,在电脑上不停的修改,最后终于把正确的程序写了出来。
但是过长的编译时间,在设计过程中使得解决故障的环节非常令人头痛。
会出现如下三个问题:①有时候故障很难定位,只知道哪个模块出错,很难定位到具体的信号上,给抓信号带来麻烦。
如果故障定位不准确,漏抓了关键信号,则需要重新添加信号、编译版本并再次上板定位故障,浪费时间。
②故障定位后,修改代码还需要再编译一次产生新版本的下载文件,修改后若还有问题则要重复这一过程,这样从故障定位到修改完成需要很多次编译。
③上板重新进行验证时,如果这个bug的出现的几率很小,短时间内不再复现,并不能说明在极端情况下的故障真的被解决了。