1、1EDA 课程设计报告题目:4 位加法器的设计系别 信息工程系 专业 电气工程及其自动化 班级 电气 092 姓名 郝文磊 学号 200907084223 指导教师 陶雪华 2一、设计目的本课程设计的目的,旨在通过上机实验,使学生加深理解 EDA 技术的基本方法,帮助和培养学生建立利用原理图进行电路设计的基本方法和利用 EDA 工具软件(Quartus7.2 )设计简单数字电子系统的能力。通过该课程设计,使学生掌握原理图输入法及层次化设计的操作步骤,掌握设计电路原理图的编辑、编译、仿真等操作方法,为以后从事有关数字电子系统方面的设计和研究开发工作打下基础。二、 设计要求1、 通过课程设计使学生
2、能熟练掌握一种 EDA 软件(Quartus7.2)的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程。2、 通过课程设计使学生能利用 EDA 软件(Quartus7.2)进行至少一个电子技术综合问题的设计(内容可由老师指定或自由选择) ,设计输入可采用图形输入法或 VHDL 硬件描述语言输入法。3、 通过课程设计使学生初步具有分析、寻找和排除电子电路中常见故障的能力。4、 通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告。5、 考查形式为:结合课程设计中的能力表现和设计报告,综合评分。6、 通过课程设计使学生能熟练掌握一种 EDA 软件(
3、Quartus7.2)的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程。7、 通过课程设计使学生能利用 EDA 软件(Quartus7.2)进行至少一个电子技术综合问题的设计(内容可由老师指定或自由选择) ,设计输入可采用图形输入法或 VHDL 硬件描述语言输入法。8、 通过课程设计使学生初步具有分析、寻找和排除电子电路中常见故障的能力。9、 通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告。3三、设计任务以 Altera 公司的 Quartus7.2 为工具软件,采用原理图输入法设计一个 4 位的加法器,该四位加法器由以下三个步骤完成:
4、(1)采用原理图输入法设计半加器 h_adder,生成元件符号,并仿真验证设计结果;(2)采用层次化原理图输入法设计 1 位全加器 f_adder,生成元件符号,并仿真验证设计结果;(3)在 1 位全加器的基础上,设计 4 位加法器。四、 设计步骤1、QuartusII7.2 使用说明(1). 新建项目工程使用 QuartusII7.2 设计一个数字逻辑电路,并用时序波形图对电路的功能进行仿真,同时还可以将设计正确的电路下载到可编程的逻辑器件(CPLD、FPGA )中。因软件在完成整个设计、编译、仿真和下载等这些工作过程中,会有很多相关的文件产生,为了很好的管理这些设计文件,我们在设计电路之前
5、,先要建立一个项目工程,并设置好这个工程能正常工作的相关条件和环境。建立工程的方法和步骤如下:先在电脑本地硬盘空间建一个用于保存项目的文件夹,文件夹的命名及其保存的路径不能有中文字符。如右图点击:File 菜单,选择下拉列表中的 New Project Wizard.命令,打开建立项目工程的对话框。如下图,出现第一个对话框,让你选择项目工程保存位置、定义项目名称以及设计文件顶层实体名称。4第一栏选择项目工程保存的位置,方法是点击 按钮,指向刚才我们在第一步建立的文件夹。如右图,第二栏(项目工程名称)和第三栏(设计实体名称)软件会默认为与之前建立的文件夹名称一致。没有特别需要,我们一般选择软件的
6、默认,不必特意去修改。需要注意的是:以上名称的命名中不能出现中文字符,否则软件的后续工作会出错。完成以上命名工作后,点击Next,进入下一步。如下图对话框:5这一步的工作是让你将之前已经设计好的工程文件添加到本项目工程里来,我们之前没有设计好的文件,因此就跳过这一步,直接点 Next,再进入下一步。如下图对话框:6这一步的工作是让你选择好设计文件下载所需要的硬件器件型号,现在我们只做简单的电路设计和仿真,随便指定一个就可以了。以后我们做课程设计或学习可编程逻辑器件这门课后,等熟悉了 CPLD 或 FPGA 器件以后再根据开发板的器件选择合适的器件型号。点击 Next,进入下一步。如下图对话框:
7、这一步是让你选择第三方开发工具,我不需要,直接点击 Next,进入下一步。出现下图页面: 7以上页面显示刚才我们所做的项目工程设置内容的“报告” 。点击 Finish,完成新建项目工程的任务。(2). 新建设计文件建立好项目工程后,接下来可以开始建立设计文件了。QuartusII7.2 软件可以用两种方法来建立设计文件,一种是利用软件自带的元器件库,以编辑电路原理图的方式来设计一个数字逻辑电路,另一种方法是应用硬件描述语言(如VHDL 或 Verilog)以编写源程序的方法来设计一个数字系统电路。作为初学者,我们先学会用编辑原理图的方法来设计一些简单的数字逻辑电路。原理图设计方法和步骤如下:、
8、新建设计文件如右图,从 File 菜单中选择 New命令,或直接点击常用工具栏的第一个按钮 ,打开新建设计文件对话框,如下图。选择“Block Diagram/Schematic File” ,点击 OK,即进入原理图编辑界面。、编辑原理图8QuartusII7.2 软件的数字逻辑电路原理图的设计是基于常用的数字集成电路的,要熟练掌握原理图设计,必须要认识和熟悉各种逻辑电路的符号、逻辑名称和集成电路型号。因此努力学好数字电子技术基础是后续学习其他专业知识、掌握电路设计的基本条件。设计方法和步骤如下: 双击原理图的任一空白的处,会弹出一个元件对话框。在 Name 栏目中输入 and2 ,我们就得
9、到一个 2 输入的与门。 点击 OK 按钮,将其放到原理图的适当位置。重复操作,放入另外两个 2 输入与门。也可以通过右键菜单的 Copy 命令复制得到。 双击原理图的空白处,打开元件对话框。在 Name 栏目中输入 or3 ,我们将得到一个 3 输入的或门。点击 OK 按钮,将其放入原理图。9 双击原理图的空白处,打开元件对话框。在 Name 栏目中输入 not ,我们会得到一个非门。点击 OK 按钮,将其放入原理图。 把所用的元件都放好之后,开始连接电路。将鼠标指到元件的引脚上,鼠标会变成“ 十” 字形状。按下左键,拖动鼠标,就会有导线引出。根据我们要实现的逻辑,连好各元件的引脚。 双击原
10、理图的空白处,打开元件对话框。在 Name 栏目中输入 Input , 我们便得到一个输入引脚。点击 OK 按钮,放入原理图。重复操作,给我们的电路加上 3 个输入引脚。10 双击输入引脚,会弹出一个属性对话框。在这一对话框上,我们可更改引脚的名字。我们分别给 3 个输入引脚取名 in1 、 in2 、in3 。 双击原理图的空白处,打开元件对话框。在 Name 栏目中输入 output ,我们会得到一个输出引脚。点击 OK 按钮,放入原理图。重复操作,给我们的电路加上两个输出引脚。给两个输出引脚分别命名为 led1 、led2 。11(3). 工程编译设计好的电路若要让软件能认识并检查设计的
11、电路是否有错误,需要进行工程编译,QuartusII7.2 软件能自动对我们设计的电路进行编译和检查设计的正确性。方法如下:在 【Processing】 菜单下,点击【Start Compilation】命令,开始编译我们的项目。编译成功后,点击 确定 按钮。(4). 功能仿真仿真是指利用 QuartusII 软件对我们设计的电路的逻辑功能进行验证,看看在电路的各输入端加上一组电平信号后,其输出端是否正确的电平信号输出。因此在进行仿真之前,我们需要先建立一个输入信号波形文件。方法和步骤如12下:在 File 菜单下,点击 New 命令。在随后弹出的对话框中,切换到 Other Files 页。
12、选中 Vector Waveform File 选项,点击 OK 按钮。在 Edit 菜单下,点击 Insert Node or Bus 命令。点击 Node Finder 按钮,打开 Node Finder 对话框。点击 List 按钮,列出电路所有的端子。点击 按钮,全部加入。点击 OK 按钮,确认。13回到 Insert Node or Bus 对话框,点击 OK 按钮,确认。选中 in1 信号,在 Edit 菜单下,选择 Value = Clock 命令。在随后弹出的对话框的 Period 栏目中设定参数为 50ns,点击 OK 按钮。 In2 、in3 也用同样的方法进行设置,Per
13、iod 参数分别为 100ns 和 200ns 。14保存文件,在 Processing 菜单下,选择 Start Simulation 启动仿真工具。仿真结束后,点击确认按钮。观察仿真结果,对比输入与输出之间的逻辑关系是否符合电路的逻辑功能。2. 半加器的设计(1)元件选择在 Quartus7.2 工具软件的元件库中已经有与门、或门、与非门和异或门等元件,在设计中可直接调用这些元件,实现电路设计。图 1 半加器原理图在元件选择对话框的符号库“Symbol Libraries”栏目中,用鼠标双击基本元件库文件夹“d:maxplus2max2libprim”后,在符号文件“Symbol File
14、s”栏目中列出了该库的基本元件的元件名,例如 and2(二输入端的与门)、xor(异或门)、VCC(电源 )、input( 输入)和 output(输出)等。在元件选择对话框的符号名15“Symbol Name”栏目内直接输入 xor,或者在“Symbol Files”栏目中,用鼠标双击“xor ”元件名,即可得到异或门的元件符号。用上述同样的方法也可以得到其他元件符号。(2)编辑半加器的原理图半加器逻辑电路图如图 1 所示,它由 1 个异或门和 1 个与门构成,a、b 是输入端,SO 是和输出端,CO 是向高位的进位输出端。在元件选择对话框的符号名“Symbol Name”栏目内直接输入 x
15、or,或者在“Symbol Files”栏目中,用鼠标双击“xor”元件名,即可得到异或门的元件符号。用上述同样的方法也可以得到与门及输入端和输出端的元件符号。用鼠标双击输入或输出元件中原来的名称,使其变黑后就可以进行名称修改,用这种方法把两个输入端的名称分别更改为“a”和“ b”,把两个输出端的名称分别更改为“SO” 和“CO ”,然后按照图 1 所示的半加器逻辑电路的连接方式,用鼠标将相应的输入端和输出端及电路内部连线连接好,并以“h_addergdf”(注意后缀是gdf)为文件名,存在自己建立的工程目录 d:myedamygdf 内。进行存盘操作时,系统在弹出的存盘操作对话框中,自动保留
16、了上一次存盘时的文件名和文件目录,不要随意单击“OK”按钮结束存盘,一定要填入正确的文件名并选择正确的工程目录后,才能单击“OK”按钮存盘,这是上机实验时最容易忽略和出错的地方。 (3)编译设计图形文件设计好的图形文件一定要通过 Quartus7.2 的编译。在 Quartus7.2 集成环境下,执行“Quartus7.2 ”菜单下的“Compiler”命令,在弹出的编译对话框中单击“Start”按钮,即可对 h_addergdf 文件进行编译。在编译中,Quartus7.2 自动完成编译网表提取(Compiler Netlist Extractor)、数据库建立(Database Build
17、er)、逻辑综合(Logic Synthesizer)、逻辑分割(Partitioner)、适配(Fitter)、延时网表提取(Timing SNF Extractor)和编程文件汇编(Assembler)等操作,并检查设计文件是否正确。存在错误的设计文件是不能将编译过程进行到底的,此时计算机会中断编译,并在编译(Compiler)对话框16中指出错误类型和个数。(4)生成元件符号 在 Quartus7.2 集成环境下,执行“File”菜单下的“Create Default Symbol”命令,将通过编译的 GDF 文件生成一个元件符号,并保存在工程目录中。这个元件符号可以被其他图形设计文件调
18、用,实现多层次的系统电路设计。(5)功能仿真设计文件仿真,也称为模拟(Simulation);是对电路设计的一种间接的检测方法。对电路设计的逻辑行为和功能进行模拟检测,可以获得许多设计错误及改进方面的信息。对于大型系统的设计,能进行可靠、快速、全面的仿真尤为重要。 建立波形文件进行仿真时需要先建立仿真文件。Quartus7.2 环境执行“File”的“New”命令,再选择弹出的对话框中的 Waveform Editor fi1e 项,波形编辑窗口即被打开。 输入信号节点 在波形编辑方式下,执行“Node”的“Nodes from SNF”命令,弹出输入节点“Enter Nodes from S
19、NF”对话框,在对话框中首先单击“List”按钮,这时在对话框左边的“Available NodesGroups” (可利用的节点与组)框中将列出该设计项目的全部信号节点。若在仿真中只需要观察部分信号的波形,则首先用鼠标将选中的信号名点黑,然后单击对话框中间的“=”按钮,选中的信号即进入到对话框右边的“Selected NodesGroups”(被选择的节点与组)框中。如果需要删除“被选择的节点与组”框中的节点信号,也可以用鼠标将其名称点黑,然后单击对话框中间的“=“按钮。节点信号选择完毕后,单击 “OK”按钮即可。 设置波形参量在波形编辑对话框中调入了半加器的所有节点信号后,还需要为半加器输
20、入信号 a 和 b 设定必要的测试电平等相关的仿真参数。如果希望能够任意设置输入电平位置或设置输入时钟信号的周期,可以在 Options 选项中,取消网格17对齐 Snap to Grid 的选择(取消钩)。 设定仿真时间宽度 在仿真对话框,默认的仿真时间域是 1S。如果希望有足够长的时间观察仿真结果,可以选择“File”命令菜单中的“End Time”选项,在弹出的“End Time”对证框中,填入适当的仿真时间域(如 5S )即可。 加入输入信号为输入信号 a 和 b 设定测试电平的方法及相关操作如教材图 2.31 所示,利用必要的功能键为 a 和 b 加上适当的电平,以便仿真后能测试 s
21、o 和 co 输出信号。 波形文件存盘以“h_adder scf”(注意后缀是scf)为文件名,存在自己建立的工程目录d:myedamygdf 内。在波形文件存盘时,系统将本设计电路的波形文件名自动设置为“h_adder.scf” ,因此可以直接单击确定按钮。 进行仿真波形文件存盘后,执行“Quartus7.2”选项中的仿真器“Simulator”命令,单击弹出的“仿真开始”对话框中的“Start”按钮,即可完成对半加器设计电路的仿真,可通过观察仿真波形进行设计电路的功能验证。(6)仿真图形183. 1 位全加器的设计(1)编辑 1 位全加器的原理图1 位全加器可以用两个半加器及一个或门连接而
22、成。其原理图如图 2 所示。在 Quartus7.2 图形编辑方式下,在用户目录中找到自己设计的半加器元件h_adder,并把它调入原理图编辑框中(调入两个) ,另外从d:maxplus2max2libprim 元件库中调出一个两输入端的或门,并加入相应的输入和输出元件,按照图 2 所示电路连线,得到 1 位全加器电路的设计结果。电路中的 a 和 b 是两个 1 位二进制加数输入, cin 是低位来的进位输入,sum 是和输出,cout 是向高位进位输出。(2)设计文件存盘与编译完成 1 位全加器电路原理图的编辑后,以 f_adder gdf 为文件名将 1 位全加器电路原理图设计文件保存在工
23、程目录中, “.gdf”表示图形文件。进行存盘操作时,系统在弹出的存盘操作对话框中,自动保留了上一次存盘时的文件名和文件目录,操作者不要随意单击“OK”按钮结束存盘,一定要填入正确的文件名并选择正确的工程目录后,才能单击“OK”按钮存盘,这是初学者上机实19验时最容易忽略和出错的地方。图 2 1 位全加器原理图全加器的原理图文件包括两个层次的设计。半加器 h_adder.gdf 是底层设计文件,全加器 f_adder.gdf 是顶层设计文件。在编译顶层文件之前要设置此文件为顶层文件,操作方法是先打开 f_adder.gdf,执行 “file”菜单下“project ”的“set project
24、 to current file”命令即可。完成图形文件编辑并存盘后,执行 Quartus7.2 的“Compiler”命令对设计文件进行编译,检查设计文件中的错误。如果设计文件不存在错误,则可以开始进一步对设计文件进行网表文件提取、设计文件排错、逻辑综合、逻辑分配、适配(结构综合) 、时序仿真文件提取和编程下载文件装配等操作。在 Quartus7.2 集成环境下,执行“File”菜单中的“Create Default Symbol”命令,可为通过编译的图形设计文件产生一个元件符号,并被保存在工程目录中,该元件符号可以被其他电路系统设计调用,成为该系统的一个基本元件。其输入输出端口名由系统自动
25、改为大写字母。(3)仿真设计文件在 Quartus7.2 波形编辑方式下,编辑 f_addergdf 的波形文件,并完成输入信号 a、b 和 cin 输入电平的设置。波形文件编辑结束后也要将波形文件保存在工程目录中,在存盘操作时,系统会自动将当前设计的文件名作为波形文件名,并以.scf 为文件类型(例如 1 位全加器的波形文件是 f_adder.scf),所以操作者可以直接单击“OK”按钮结束波形文件的存盘操作。波形文件存盘后,执行启动仿真器“Simulator”命令开始仿真,可通过观20察仿真波形进行设计电路的功能验证。(4)仿真图形44 位加法器的设计(1)设计原理图4 位加法器的设计中,
26、全加器成为底层文件 ain30和 bin30是两个 4 位二进制输入端,cin 是低位来得进位输入端,sum30是 4 位和输出端,cout 是向高位进位的输出端。原理图如图 3 所示。图 3 4 位加法器原理图ain30的右边连接了一条粗的信号线,表示该信号与有 ain3ain0文字标注的 4 个全加器的 ain 输入端连接。同理 bin30和 sum30。粗线表示多条信号线组成的总线,细线表示单信号线。用鼠标左键单击信号线,使之变成红21色,然后在红线上单击右键,选择“line style”命令,然后选择相应的粗或细信号线即可。单击编辑窗口左边“A”按钮可以在信号线上添加文字标注。(2)仿
27、真图形五、总结为期一周的课程设计就要结束了,这次 EDA 实训让我感觉收获颇多,在这一周的实训中我们不仅巩固了以前学过的知识,而且还学到了怎样运用 EDA 设计 4 位加法器的整个过程和思路,更加强了我们动手能力,同时也提高了我们的思考能力的锻炼,特别对我们接下来要参加的比赛很有帮助,我们在写程序的同时还要学会要改程序,根据错误的地方去修改程序。在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把所学的理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力。我们虽然碰到了很多困难和问题,到最后还是靠自己的努力与坚持独立的完
28、成了任务。当遇到了自己无法解决的困难与问题的时候,要有耐心,要学会一步步的去找问题的根源,才能解决问题,还请教老师给予指导和帮助。这次实训给我最深的印象就是扩大自己的知识面,知道要培养哪些技能对我们的专业22很重要。从整体上看来,实训课题的内容实现的功能都能实现,但也存在着不足和需要进一步改进的地方,主要体现在:1.三种波形的幅值一定,不能进行随意的调节,时间和条件允许,可通过调整数/模转换芯片上的基准电压来实现; 2.方波的幅值不稳定,没有呈水平线,这与编写的程序有关,输出的波形数据不够精密;3.需要加入一个锁存器,当一种波形输出后,没有清零时,拨动另一个开关时不影响前一个波形数据的输出。通
29、过此次的实训课题,掌握了制作任意波形技术的的原理及设计要领,学习并掌握了可编程逻辑电路的设计,掌握了软件 Quartus7.2 的应用,受益匪浅,为我今后的学习和工作奠下了坚实的基础。在此非常感谢老师这一周来的指导与教诲,感谢老师在学习上给予的指导。谢谢!六、参考文献1.教材1 江国强主编。EDA 技术与应用 (第二版)。北京:电子工业出版社,2009 年2.参考书1 潘松等主编。EDA 技术实用教程(第二版)。科学出版社,2005 年2 宋万杰等主编。CPLD 技术及其应用。西安电子科技大学出版,1999 年3 侯伯亨等主编。VHDL 硬件描述语言与数字逻辑电路设计。西安电子科技大学出版社,2002 年