第一篇:EDA设计论文
EDA课程设计报告书
交通灯设计
设 计 者: 邱春华 吕云兰
指导老师: 李 敏
学 号: 09387105 09387114 专业班级:通信工程0911班
摘要………………………………………………………………………………3
1、设计任务………………………………………………………………………4
2、方案选择与论证………………………………………………………4
3、实现方案原理及说明…………………………………………………………5
4、系统设计详述…………………………………………………………………6 a、分频器的设计……………………………………………………………………6 b、控制器的设计……………………………………………………………………7 c、计数器的设计……………………………………………………………………7 d、分位译码电路的设计……………………………………………………………8 e、数码管驱动的设计——绿灯和红灯驱动………………………………………9 f、数码管驱动的设计--黄灯驱动……………………………………………9
5、程序设计………………………………………………………………………10 5.1 分频器的设计…………………………………………………………………10 5.2 控制器的设计…………………………………………………………………10 5.3 计数器的设计…………………………………………………………………11 5.4 分位译码电路的设计…………………………………………………………14 5.5数码管驱动的设计……………………………………………………………15
6、整个系统的构成及仿真图……………………………………………………17
7、心得体会………………………………………………………………………18
8、参考文献………………………………………………………………………18
语言实现交通灯的设计
作者:邱春华、吕云兰
指导老师:李 敏(湖北文理学院理工学院 襄阳 230036)
【摘要】:伴随着社会的发展以及人类生活水平的提高,汽车的数量在EDA技术的发展和应用领域的扩大与深入,EDA 技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对DEA 的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了。所以,设计交通灯来完成这个需求就显的越加迫切。
【关键字】:EDA技术、VHDL语言、交通灯
QuartusII 设计软件为用户提供完整的多平台设计环境,它可以轻易满足特定设计的需要。它是单芯片可编程系统(SOPC)设计的综合性环境,EDA技术作为现代电子设计技术的核心,它依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑简化、逻辑分割、逻辑综合,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。下面详细介绍在QUARTUS II软件环境下开发基于VHDL语言交通灯的设计。、设计任务
a、设计内容
设计一个十字路口的交通灯控制系统,用实验平台上的LED 发光二极管显示车辆通过的方向(甲车道和乙车道各一组),用数码管显示该方向的亮灯时间。
b、设计要求:
交通灯按正常状态依次点亮红、黄、绿灯,交警可以根据路口车流量的情况分别设置红、绿、黄灯持续点亮的时间。在红、绿灯点亮时,能够显示其点亮持续的时间。
2、方案选择与论证
本次实验设计交通灯设计采用自顶向下、由粗到细, 逐步分解的设计方法, 最顶层电路是指系统的整体要求, 最下层是具体的逻辑电路的实现。自顶向下的设计方法将一个复杂的系统逐渐分解成若干功能模块, 从而进行设计描述, 并且应用EDA 软件平台自动完成各功能模块的逻辑综合与优化, 门级电路的布局, 再下载到硬件中实现设计。对于交通灯来说首先是分频器、控制器、计数器、分位译码电路及数码管驱动的设计,然后能在LED中显示红、绿、黄灯的转化,并带有数码管计时功能。通过参考EDA课程设计指导书,有以下方案:
(1)、顶层文件输入端口:时钟脉冲信号、复位按键及绿灯计数器的计数范围输入端t1;输出端口:两个车道的红、绿、黄输出,及其所对应各灯所输出时间计数共16个。
(2)、底层文件分为:a.分频模块、b.计数器模块、c.控制器模块、d.分位译码模块、e.数码管驱动模块。
、实现方案原理及说明
从题目中计数值与交通灯的亮灭的关系如图(1)所示:
图(1)
交通灯控制器系统框图如图2 所示:
图(2)考虑到黄灯的作用是警示已过停车线的司机尽快离开路口,而路口总宽度不变,因此将其固定为5 秒,而红灯亮的时间等于绿灯亮的时间加上黄灯亮的时间,因此紧对绿灯点亮时间进行设置就可以同时改变红灯亮的时间,这里将绿灯所能设置的最长时间设置为40 秒即(0 4、系统设计详述 其输入及输出端口有: clkin——输入的高频时钟脉冲; reset——复位端,高电平有效; t1——绿灯计数器的计数范围输入端; r1、g1、y1——分别为第一车道红、绿、黄灯输出; r1A、r1B、g1A、g1B、y1A——分别为第一车道红、绿、黄灯对应的数码管计数输出; r2、g2、y2——分别为第二车道红、绿、黄灯输出; r2A、r2B、g2A、g2B、y2A——分别为第二车道红、绿、黄灯对应的数码管计数输出; a、分频器的设计 分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器和计数器。该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。生成的Symbol 文件如图 图(3)3 和仿真波形如图4 所示。 图(4) b、控制器的设计 控制器的作用是根据计数器的计数值及t1 的输入数据控制发光二极管的亮、灭,以及输出正计时数值给七段数码管的分位译码电路。本控制器是利用时钟沿的下降沿读取前级计数器的计数值,然后作出反应;生成的实体模块如图5 和仿真波形如图6 所 图(5)示。 图(6) c、计数器的设计 计数器rcounter的计数范围为由t1引脚输入。计到t1 后,下一个时钟沿恢复到0,开始下一轮计数。仿真波形如图当t1 取7 时,计数器计数到7 后清零。实体模块如图7 和仿真波形如图8。计数器grounter和计数器ycounter的实体模块如图9 和图10 所示。 图(7)图(9)图(10) 图(8) d、分位译码电路的设计 由于控制器输出的正计时数值可能是1 位或者2 位十进制数,因此在七段数码管的译码电路前要加上分位电路(即将其分成2 个1 位的十进制数,如40 分成4 和0,5分为0 和5)。与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。控制器中,引入了寄 图(11)存器。本电路中分位电路使用组合逻辑电路实现。生成的实体模块如图11 及仿真波形如图12。 图(12) e、数码管驱动的设计——绿灯和红灯驱动 要求数码管共阳极连接(共阳极的公共端为低电平时,LED 不亮),在设计中为每个数码管都添加了一个驱动电路,在使用时通过调用模块来实现。本模块设计为时序逻 图(14) 辑电路,采用下降沿触发。实体模块如图14 和仿真波形如图15。 图(15) f、数码管驱动的设计——黄灯驱动 由于黄灯固定时间是5 秒,因此变化范围是0 至5 秒,七段数码管只要能显示0-5 的数就行了,所以单独用一个数码管驱动。实体模块如图16和仿真波形如图17。图(16) 图(17) 、程序设计 5.1 分频器的设计 library ieee;use ieee.std_logic_1164.all;entity fredevider is port(clkin:in std_logic;clkout:out std_logic);end;architecture devider of fredevider is constant N:integer:=499;signal counter:integer range 0 to N;signal clk:std_logic;begin process(clkin)begin if rising_edge(clkin)then if counter=N then counter<=0;clk<=not clk;else counter<=counter+1;end if;end if;end process;clkout<=clk;end;5.2 控制器的设计 library ieee;use ieee.std_logic_1164.all;entity control is port(clk :in std_logic;c1,c2,c3:out std_logic;w1,w2,w3:in std_logic;r1,r2 :out std_logic;y1,y2 :out std_logic;g1,g2 :out std_logic;reset :in std_logic);end control;architecture a of control is type state_space is(s3,s2,s1,s0); begin process(clk)begin if reset='1' then state<=s0;else if(clk'event and clk='1')then case state is when s0=> if w1='1' then state<=s1;end if;when s1=> if w2='1' then state<=s2;end if;when s2=> if w3='1' then state<=s3;end if;when s3=> if w2='1' then state<=s0;end if;end case;end if;end if;end process;c1<='1'when state =s0 else '0';c2<='1'when state =s1 or state =s3 else '0';c3<='1'when state =s2 else '0';r1<='1'when state =s1 or state =s0 else '0';y1<='1'when state =s3 else '0';g1<='1'when state =s2 else '0';r2<='1'when state =s2 or state =s3 else '0';y2<='1'when state =s1 else '0';g2<='1'when state =s0 else '0';end a;5.3 计数器的设计 5.3.1 绿灯计数器 library ieee;use ieee.std_logic_1164.all; port(clk :in std_logic;enable :in std_logic;t1 :in integer range 0 to 40;c1 :out std_logic;m1 :out integer range 0 to 5);end gcounter;architecture a of gcounter is begin process(clk)variable cnt : integer range 0 to 40;begin if(clk'event and clk='1')then if enable='1'and cnt library ieee;use ieee.std_logic_1164.all;entity rcounter is port(clk :in std_logic;enable :in std_logic;t1 :in integer range 0 to 40;c2 :out std_logic;m2:out integer range 0 to 32);end rcounter;architecture a of rcounter is constant y:Integer:=5;signal t2: integer range 0 to 45;begin process(clk)variable cnt : integer range 0 to 45; t2<=t1+y;if(clk'event and clk='1')then if enable='1'and cnt library ieee;use ieee.std_logic_1164.all;entity ycounter is port(clk :in std_logic;enable :in std_logic;c3 :out std_logic;m3 :out integer range 0 to 5);end ycounter;architecture a of ycounter is begin process(clk)variable cnt : integer range 0 to 5;begin if(clk'event and clk='1')then if enable='1'and cnt<5 then cnt:=cnt+1;else cnt:=0;end if;if cnt=5 then c3<='1';else c3<='0';end if;end if; end process;end a;5.4 分位译码电路设计 5.4.1分位器-1 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenwei1 IS PORT(Numin:IN integer RANGE 0 TO 45;NumA,NumB:OUT Integer RANGE 0 to 9);END;ARCHITECTURE behavior OF fenwei1 IS BEGIN process(Numin)BEGIN IF Numin>=40 THEN NumA<=4;NumB<=Numin-40;ELSIF Numin>=30 THEN NumA<=3;NumB<=Numin-30;ELSIF Numin>=20 THEN NumA<=2;NumB<=Numin-20;ELSIF Numin>=10 THEN NumA<=1;NumB<=Numin-10;ELSE NumA<=0;NumB<=Numin;END IF;END PROCESS;END;5.4.2分位器-2 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenwei2 IS PORT(Numin:IN integer RANGE 0 TO 45;);END;ARCHITECTURE behavior OF fenwei2 IS BEGIN process(Numin)BEGIN IF Numin>=40 THEN NumC<=4;NumD<=Numin-40;ELSIF Numin>=30 THEN NumC<=3;NumD<=Numin-30;ELSIF Numin>=20 THEN NumC<=2;NumD<=Numin-20;ELSIF Numin>=10 THEN NumC<=1;NumD<=Numin-10;ELSE NumC<=0;NumD<=Numin;END IF;END PROCESS;END;5.5数码管驱动的设计 5.5.1 红绿灯驱动 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ygqudong IS PORT(clk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 9;segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF ygqudong IS BEGIN process(Clk,data)BEGIN IF falling_edge(Clk)and enable='1' then case data is when 1=>segout<=“0110000”;when 2=>segout<=“1101101”;when 3=>segout<=“1111001”;when 4=>segout<=“0110011”;when 5=>segout<=“1011011”;when 6=>segout<=“0011111”;when 7=>segout<=“1110000”;when 8=>segout<=“1111111”;when 9=>segout<=“1110011”;when others =>null;END CASE;END IF;END PROCESS;END;5.5.2 黄灯驱动 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hqudong IS PORT(clk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 5;segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF hqudong IS BEGIN process(Clk,data)BEGIN IF falling_edge(Clk)and enable='1' then case data is when 0=>segout<=“1111110”;when 1=>segout<=“0110000”;when 2=>segout<=“1101101”;when 3=>segout<=“1111001”;when 4=>segout<=“0110011”;when 5=>segout<=“1011011”;when others =>null;END CASE;END IF;END PROCESS;END; 、整个系统的构成及仿真图 图(18) 图(19) 结果说明:在图18 中,绿灯计数器直接接分位译码器1,红灯计数器直接接分位译码器2,每个译码器分别接两个驱动电路,然后接输出。左边5 个驱动器接的数码管显示的是甲车道各个灯亮的时间,右边5 个驱动器接的数码管显示的是乙车道各个灯亮的时间。在19 图中可以看出甲车道绿灯亮的时间加上黄灯亮 乙车道红灯亮的时间,乙车道绿灯亮的时间加上黄灯亮的时间等于甲车道红灯亮的时间。与此同时具有灯亮时间计数显示,可以看出该系统满足我们所需的要求。 7、心得体会 一段时间的EDA课程设计,使我们学到了很多,本次课程设计的交通灯所需底层模块很多,其实现的VHDL语言程序较多,整个过程中调试程序是很重要的,要有很好的耐心,开始编译时总是会有很多错误,比如输入错误、语法错误等,发现错误之后再一遍一遍的仔细查错,直到没有错误,然后进行波型仿真。现在,对EDA 的认识有了很大的提高,能够熟练的使用QuartsII,能够用VHDL 语言编写简单的、实用的小程序,这次EDA 课程设计重点学习了交通灯部分程序的编写、调试、还有硬件下载、操作等过程。在整个课程设计的过程中,我们查阅了大量的关于EDA 的资料,特别是在网上和图书馆我找到了大量的关于硬件编程的资料。在李敏老师平时认真的授课及严格的治学态度下,让我有了一定的基础,同时还得感谢老师在实验课上的细心指导,让我们学到了很多,受益终生。 【参考文献】 [1] 潘松, 黄继业.EDA 技术实用教程[M] 第2版 北京: 科学出版社, 2006 [2] 曹昕燕,周凤臣,聂春燕.EDA技术实验与课程设计 北京:清华大学出版社,2006.5 目录 一、摘要 二、概述 2.1目的与要求 2.2实验仪器与设备 2.3实验注意事项 2.4设计环境 三、实验内容 四、4位加法器设计实现过程 4.1元件选择 4.2编辑半加器的原理图 4.3编译设计图形文件 4.4生成元件符号 4.5功能仿真设计文件 ① 建立波形文件 ② 输入信号节点 ③ 设置波形参量 ④ 设定仿真时间宽度 ⑤ 加入输入信号 ⑥ 波形文件存盘 ⑦ 进行仿真 4.6 1位全加器的实现过程 4.7 四位加法器实现过程 五、收获与心得体会 一、摘要 随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。经过人工设计、制作实验板、调试再修改的多次循环才定型的传统产品设计方法必然被计算机辅助设计所取代,因为这种费时费力又费资源的设计调试方法既增加了产品开发的成本,又受到实验工作场地及仪器设备的限制。 20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。 二、概述 2.1目的与要求 1、学习MAX+plusⅡ工具软件的基本功能和使用方法。 2、学习使用原理图输入法设计半加器,掌握原理图输入法的操作步骤。 3、初步掌握设计电路原理图的编辑、编译、仿真等操作方法。每次实验前,学生须仔细阅读本实验指导书的相关内容: 1)明确实验目的和实验内容; 2)明确实验原理与步骤; 3)复习与实验内容有关的理论知识; 4)预习仪器设备的使用方法、操作规程及注意事项。 2.2实验仪器与设备 1、PC机 2、MAX+plus II 软件 2.3实验注意事项 1.实验开始前,应先检查本人的计算机是否安装相关软件,了解其软件的使用方法和要求。 2.实验时每个同学应单独设计程序、操作、记录实验结果等,使每个同学受到全面训练。 3.测量数据或观察现象要认真细致,实事求是。使用计算机要符合操作规程,切勿随便重启频繁开关计算机。 4.未经许可,不得动用其它人的仪器设备或计算机等物。 5.实验结束后,实验记录交指导教师查看并认为无误后,离开机房。最后,应清理计算机,备份编写程序。 6.爱护公物,发生仪器设备等损坏事故时,应及时报告指导教师,按有关实验管理规定处理。 7.自觉遵守学校和实验室管理的其它有关规定。 2.4设计环境 QuartusII design 是 最 高 级 和 复 杂的,用 于system-on-a-programmable-chip(SOPC)的设计环境。QuartusII design 提 供完善的 timing closure 和 LogicLock™ 基于块的设计流程。QuartusII design是唯一一个包括以timing closure 和 基于块的设计流为基本特征的programmable logic device(PLD)的软件。Quartus II 设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmed devices开发的统一工作流程。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。 三、实验内容 以Altera公司的MAX+plus II为工具软件,采用原理图输入法设计半加器h_adder,生成元件符号,并仿真验证设计结果。 四、4位加法器设计实现过程 4.1元件选择 在MAX+plus II工具软件的元件库中已经有与门、或门、与非门和异或门等元件,在设计中可直接调用这些元件,实现电路设计。 图1 半加器原理图 在元件选择对话框的符号库“Symbol Libraries”栏目中,用鼠标双击基本元件库文件夹“d:maxplus2max2libprim”后,在符号文件“Symbol Files”栏目中列出了该库的基本元件的元件名,例如and2(二输入端的与门)、xor(异或门)、VCC(电源)、input(输入)和output(输出)等。在元件选择对话框的符号名“Symbol Name”栏目内直接输入xor,或者在“Symbol Files”栏目中,用 鼠标双击“xor”元件名,即可得到异或门的元件符号。用上述同样的方法也可以得到其他元件符号。 4.2编辑半加器的原理图 半加器逻辑电路图如图1所示,它由1个异或门和1个与门构成,a、b是输入端,SO是和输出端,CO是向高位的进位输出端。 在元件选择对话框的符号名“Symbol Name”栏目内直接输入xor,或者在“Symbol Files”栏目中,用鼠标双击“xor”元件名,即可得到异或门的元件符号。用上述同样的方法也可以得到与门及输入端和输出端的元件符号。用鼠标双击输入或输出元件中原来的名称,使其变黑后就可以进行名称修改,用这种方法把两个输入端的名称分别更改为“a”和“b”,把两个输出端的名称分别更改为“SO”和“CO”,然后按照图1所示的半加器逻辑电路的连接方式,用鼠标将相应的输入端和输出端及电路内部连线连接好,并以“h_adder.gdf”(注意后缀是.gdf)为文件名,存在自己建立的工程目录d:myedamygdf内。进行存盘操作时,系统在弹出的存盘操作对话框中,自动保留了上一次存盘时的文件名和文件目录,不要随意单击“OK”按钮结束存盘,一定要填入正确的文件名并选择正确的工程目录后,才能单击“OK”按钮存盘,这是上机实验时最容易忽略和出错的地方。 4.3编译设计图形文件 设计好的图形文件一定要通过MAX+plus II的编译。在MAX+plus II集成环境下,执行“MAX+plus”菜单下的“Compiler”命令,在弹出的编译对话框中单击“Start”按钮,即可对h_adder.gdf文件进行编译。 在编译中,MAX+plus II自动完成编译网表提取(Compiler Netlist Extractor)、数据库建立(Database Builder)、逻辑综合(Logic Synthesizer)、逻辑分割(Partitioner)、适配(Fitter)、延时网表提取(Timing SNF Extractor)和编程文件汇编(Assembler)等操作,并检查设计文件是否正确。存在错误的设计文件是不能将编译过程进行到底的,此时计算机会中断编译,并在编译(Compiler)对话框中指出错误类型和个数。 4.4生成元件符号 在MAX+plus II集成环境下,执行“File”菜单下的“Create Default Symbol” 命令,将通过编译的GDF文件生成一个元件符号,并保存在工程目录中。这个元件符号可以被其他图形设计文件调用,实现多层次的系统电路设计。 4.5功能仿真设计文件 仿真,也称为模拟(Simulation);是对电路设计的一种间接的检测方法。对电路设计的逻辑行为和功能进行模拟检测,可以获得许多设计错误及改进方面的信息。对于大型系统的设计,能进行可靠、快速、全面的仿真尤为重要。 ① 建立波形文件 进行仿真时需要先建立仿真文件。在Max+p1us II环境执行“File”的“New”命令,再选择弹出的对话框中的Waveform Editor fi1e项,波形编辑窗口即被打开。 ② 输入信号节点 在波形编辑方式下,执行“Node”的“Nodes from SNF”命令,弹出输入节点“Enter Nodes from SNF”对话框,在对话框中首先单击“List”按钮,这时在对话框左边的“Available Nodes&Groups”(可利用的节点与组)框中将列出该设计项目的全部信号节点。若在仿真中只需要观察部分信号的波形,则首先用鼠标将选中的信号名点黑,然后单击对话框中间的“=>”按钮,选中的信号即进入到对话框右边的“Selected Nodes&Groups”(被选择的节点与组)框中。如果需要删除“被选择的节点与组”框中的节点信号,也可以用鼠标将其名称点黑,然后单击对话框中间的“<="按钮。节点信号选择完毕后,单击“OK”按钮即可。 ③ 设置波形参量 在波形编辑对话框中调入了半加器的所有节点信号后,还需要为半加器输入信号a和b设定必要的测试电平等相关的仿真参数。如果希望能够任意设置输入电平位置或设置输入时钟信号的周期,可以在Options选项中,取消网格对齐Snap to Grid的选择(取消钩)。 ④ 设定仿真时间宽度 在仿真对话框,默认的仿真时间域是1μS。如果希望有足够长的时间观察仿真结果,可以选择“File”命令菜单中的“End Time”选项,在弹出的“End Time”对证框中,填入适当的仿真时间域(如5μS)即可。 ⑤ 加入输入信号 为输入信号a和b设定测试电平的方法及相关操作如教材图2.1.3所示,利用必要的功能键为a和b加上适当的电平,以便仿真后能测试so和co输出信号。 ⑥ 波形文件存盘 以“h_adder.scf”(注意后缀是.scf)为文件名,存在自己建立的工程目录d:myedamygdf内。在波形文件存盘时,系统将本设计电路的波形文件名自动设置为“h_adder.scf”,因此可以直接单击确定按钮。 ⑦ 进行仿真 4.6 1位全加器的实现过程 1位全加器可以用两个半加器及一个或门连接而成。其原理图如图2所示。在Quartus7.2图形编辑方式下,在用户目录中找到自己设计的半加器元件h_adder,并把它调入原理图编辑框中(调入两个),另外从d:maxplus2max2libprim元件库中调出一个两输入端的或门,并加入相应的输入和输出元件,按照图1所示电路连线,得到1位全加器电路的设计结果。电路中的a和b是两个1位二进制加数输入,cin是低位来的进位输入,sum是和输出,cout是向高位进位输出。 图2 1位全加器原理图 按以上步骤进行仿真,仿真图如下: 1位全加器仿真图 4.7 四位加法器实现过程 在一位全加器的基础上设计四位全加器,其原理图如图所示 图3 四位加法器原理图 按以上操作进行仿真,仿真图如: 五、收获与心得体会 本次的EDA课程设计历时一星期,时间虽短,但通过一个星期的实践,使我对EDA技术有了更进一步的了解。同时,大致懂得了一个课题制作的具体流程和实施方法。另外,课程设计对QuartusⅡ软件的使用要求较高,从而使我能较为熟练的运用此软件。在设计时,采用模块化的设计思路使得问题变的简单明了,大大缩短了时间,降低了发生错误的机侓,也便于修改和更新。 课程设计中,需要找很多资料,在当今的信息化环境中,虽然资料很多,但需要仔细斟酌才能找到所要的。这次的课程设计很好的锻炼了这种能力。此外,与同学和老师的交流必不可少,我从中也学到了不少东西。 课程设计是一次很好的锻炼机会,我从中学的很多知识对将来的学习和工作都有很大的帮助,十分感谢学校能提供这样一个机会。 数字钟 一、实验目的 1、掌握多位计数器相连的设计方法。 2、掌握十进制,六进制,二十四进制计数器的设计方法。 3、掌握扬声器的驱动及报时的设计。 4、LED灯的花样显示。 5、掌握CPLD技术的层次化设计方法。 二、实验器材 1、主芯片Altera EPF10K10LC84-4。2、8个LED灯。 3、扬声器。4、4位数码显示管。5、8个按键开关(清零,调小时,调分钟)。 三、实验内容 根据电路特点,运用层次设计概念设计。将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口。 1、时计时程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity hour is port(reset,clk : in std_logic; daout : out std_logic_vector(7 downto 0));end hour; architecture behav of hour is signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);begin p1: process(reset,clk) begin if reset='0' then count<=“0000”; counter<=“0000”; elsif(clk'event and clk='1')then if(counter<2)then if(count=9)then count<=“0000”; counter<=counter + 1; else count<=count+1; end if; else if(count=3) then counter<=“0000”; else count<=count+1; count<=“0000”; end if; end if; end if; end process; daout(7 downto 4)<=counter;daout(3 downto 0)<=count; end behav; 2、分计时程序: library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity minute is port(reset,clk,sethour: in std_logic; daout : out std_logic_vector(7 downto 0); enhour : out std_logic);end minute; architecture behav of minute is signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);signal carry_out1 : std_logic;signal carry_out2 : std_logic;begin p1: process(reset,clk)begin if reset='0' then count<=“0000”; counter<=“0000”; elsif(clk'event and clk='1')then if(counter<5)then if(count=9)then count<=“0000”; counter<=counter + 1; else count<=count+1; end if; carry_out1<='0'; else if(count=9)then count<=“0000”; counter<=“0000”; carry_out1<='1'; else count<=count+1; carry_out1<='0'; end if; end if;end if;end process; p2: process(clk)begin if(clk'event and clk='0')then if(counter=0)then if(count=0)then carry_out2<='0'; end if; else carry_out2<='1'; end if;end if;end process; daout(7 downto 4)<=counter;daout(3 downto 0)<=count;enhour<=(carry_out1 and carry_out2)or sethour;end behav; 3、秒计时程序: library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity second is port(reset,clk,setmin : in std_logic; daout : out std_logic_vector(7 downto 0); enmin : out std_logic);end second; architecture behav of second is signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);signal carry_out1 : std_logic;signal carry_out2 : std_logic;begin p1: process(reset,clk)begin if reset='0' then count<=“0000”; counter<=“0000”; elsif(clk'event and clk='1')then if(counter<5) then if (count=9) then count<=“0000”; counter<=counter + 1; else count<=count+1; end if; carry_out1<='0'; else if(count=9) then count<=“0000”; counter<=“0000”; carry_out1<='1'; else count<=count+1; carry_out1<='0'; end if; end if;end if;end process;daout(7 downto 4)<=counter; daout(3 downto 0)<=count;enmin<=carry_out1 or setmin;end behav;6 4、alert程序: library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity alert is port(clkspk : in std_logic; second : in std_logic_vector(7 downto 0); minute : in std_logic_vector(7 downto 0); speak : out std_logic; lamp : out std_logic_vector(8 downto 0));end alert; architecture behav of alert is signal divclkspk2 : std_logic;begin p1: process(clkspk)begin if(clkspk'event and clkspk='1')then divclkspk2<=not divclkspk2; end if;end process;p2: process(second,minute)begin if(minute=“01011001”)then case second is when “01010001”=>lamp<=“000000001”;speak<=divclkspk2;when “01010010”=>lamp<=“000000010”;speak<='0';when “01010011”=>lamp<=“000000100”;speak<=divclkspk2;when “01010100”=>lamp<=“000001000”;speak<='0';when “01010101”=>lamp<=“000010000”;speak<=divclkspk2;when “01010110”=>lamp<=“000100000”;speak<='0';when “01010111”=>lamp<=“001000000”;speak<=divclkspk2;when “01011000”=>lamp<=“010000000”;speak<='0';when “01011001”=>lamp<=“100000000”;speak<=clkspk;when others=>lamp<=“000000000”;end case;end if;end process;end behav;8 5、seltime程序 library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity seltime is port(ckdsp : in std_logic; reset : in std_logic; second : in std_logic_vector(7 downto 0); minute : in std_logic_vector(7 downto 0); hour : in std_logic_vector(7 downto 0); daout : out std_logic_vector(3 downto 0); sel : out std_logic_vector(2 downto 0));end seltime; architecture behav of seltime is signal sec : std_logic_vector(2 downto 0);begin process(reset,ckdsp)begin if(reset='0')then sec<=“000”; elsif(ckdsp'event and ckdsp='1')then sec<=“000”;else sec<=sec+1;end if;end if;end process; process(sec,second,minute,hour)begin case sec is when “000”=>daout<=second(3 downto 0);when “001”=>daout<=second(7 downto 4);when “011”=>daout<=minute(3 downto 0);when “100”=>daout<=minute(7 downto 4);when “110”=>daout<=hour(3 downto 0);when “111”=>daout<=hour(7 downto 4);when others=>daout<=“1111”;end case;end process; if(sec=“111”)then sel<=sec;end behav; 6、deled程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all; ENTITY deled IS PORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO 0); A,B,C,D,E,F,G,H: OUT STD_LOGIC);END deled; ARCHITECTURE BEHAV OF deled IS SIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN DATA<=S;PROCESS(DATA)BEGIN CASE DATA IS WHEN “0000”=>DOUT<=“00111111”;WHEN “0001”=>DOUT<=“00000110”;WHEN “0010”=>DOUT<=“01011011”;WHEN “0011”=>DOUT<=“01001111”;WHEN “0100”=>DOUT<=“01100110”;WHEN “0101”=>DOUT<=“01101101”;WHEN “0110”=>DOUT<=“01111101”;WHEN “0111”=>DOUT<=“00000111”;WHEN “1000”=>DOUT<=“01111111”;WHEN “1001”=>DOUT<=“01101111”;WHEN “1010”=>DOUT<=“01110111”;WHEN “1011”=>DOUT<=“01111100”;WHEN “1100”=>DOUT<=“00111001”;WHEN “1101”=>DOUT<=“01011110”;WHEN “1110”=>DOUT<=“01111001”;WHEN “1111”=>DOUT<=“01000000”;WHEN OTHERS=>DOUT<=“00000000”;END CASE;END PROCESS;H<=DOUT(7); G<=DOUT(6); F<=DOUT(5); E<=DOUT(4);D<=DOUT(3);C<=DOUT(2);B<=DOUT(1);A<=DOUT(0);END BEHAV; 7、顶层原理图: 四、实验结果 顶层原理图仿真波形: 五、心得体会 1、系统设计进要行充分的方案论证,不可盲目就动手去做; 2、实验中对每一个细节部分都要全面思考,要对特殊情况进行处理; 3、对于数字系统,要考虑同步、异步问题; 4、数字电路的理论分析要结合时序图; 5、遇到问题,要顺藤摸瓜,分析清楚,不可胡乱改动,每做一次改变都要有充分的理由; 6、模块化设计方法的优点在于其简洁性,但是在实验设计中也发现,在实验最终电路确定之前,要尽量减少模块重叠嵌套,因为在总的电路敲定之前,电路还不成熟,很多地方需要改进,如果在开始时就进行多层模块化,里层模块电路的修改将影响其外层的全部电路,这样就是牵一发动全身,很显然,这样将导致电 数字钟课程设计 电路设计的低效,所以在设计过程中,一定要尽量减少超过两层的模块; 7、遇到问题花了很长时间没有解决掉,要学会想他人请教,别人的不经意一点,可能就能把自己带出思维死区。 EDA 多 功 能 数 字 时 钟 专业:11级应用电子技术 班级:二班 学号:110372021307 姓名:贺成林 指导老师:祝宏 日期:2012年6月29日 一、实验目的 1、课程设计是一实践教学环节,是针对《数字电子技术》课程的要求,结合实践对学生进行综合设计性训练,在自学和实践训练中培养学生理论联系实践和实践动手能力,独立地解决实际问题能力。 2、通过课程设计是使学生熟悉和了解可编程专用数字逻辑电路的设计、开发流程,熟悉和了解现代EDA设计工具,掌握数字电子系统层次化的设计方法。 已知条件:MAX+Plus软件 基本功能: 1、以数字形式显示时、分、秒的时间; 2、小时计数器为24进制; 3、分秒计数器为60进制。 二、实验要求、综合应用《数字电子技术基础》课程中的理论知识去独立地完成一个设计课题; 2、熟悉和了解现代EDA设计、编程、编译、仿真及下载技术的全过程。 三、EDA 技术介绍 1、EDA 技术概况 EDA 是电子设计自动化(Electronic Design Automation)的缩写,在 20 世 纪 90 年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA 技术就是以计算机为工 具,设计者在 EDA 软件平台上,用硬件描述语言 HDL 完成设计文件,然后由计算机 自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特 定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA 技术的出现,极大地提 高了电路设计的效率和可*性,减轻了设计者的劳动强度。 2、ALTERA QUARTUS II 软件介绍 Quartus II 是 Altera 公司的综合性 PLD 开发软件,支持原理图、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种 设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件 配置的完整 PLD 设计流程。 四、关键词 数字计数器、动态显示、快速校分、整点报时、时段控制。 五、实验步骤 1、秒计数器是60进制的。当下面的74161到9时等下一个脉冲来是向上面的74161计数,到5时将两个74161共同预置。从而实现00—59秒的计数功能。 电路图如下: 进行编译及波形仿真,如下图: 将上述文件保存并打包,如图: 2、分计数器是60进制的。功能如秒计数器。其电路图如下: 波形图仿真及打包图如下: 3、小时计数器是24进制的。当下面的74161到9时等下一个脉冲来是向上面的74161计数。但是等到上面的记到2时下面的将不能超过4,所以等上面的记到2,下面的记到4时就将两个74161共同预置。从而实现00—24秒的计数功能。 原理图如下: 仿真的波形图及打包的文件图如下: 4、校时。校时是通过加快时分的计数速度来快速校准时间的。实际上我们把秒脉冲cps加到分计数和时计数上,是他们加快计数速度。所以其中我们需要通过开关来选择。 原理图及打包图如下: 5、时段控制:时段控制是通过7485集成电路的数据比较来控制的。 原理图及打包图如下: 6、整点报时:整点报时是通过整点时的二进制数据规律来报时的。 原理图及打包图如下: 7、将时分秒打包文件连成多功能数字电路图如下: 8、多功能数字钟硬件测试原理图如下: 9、部分制作过程图,如下: 六、实验工具 装有QuartusⅡ软件的电脑,EDA开发板,相关EDA设计方面的书籍。 七、设计中遇到问题及解决方法 1、实验后期的引脚分配及下载方法不当,实验所用电脑没有 quartus11.0 的 驱动。耗费时间较多。解决方法:参阅西安电子科技大学出版社出版的《数字电路设计及 Verilog HDL 实现》第 394 页关于引脚分配和下载验证的介绍; 2、下载验证过程中时段控制部分有错误,原代码在软件上仿真没有错误,但是下载到实验板验证时,出现错误。解决方法:通过去请教同学及查阅相关资料得到解决。 八、特点和实用性 利用 QuartusII 软件,结合所学的数字电路的知识设计一个 24 时多功能数 字钟,具有正常分、秒计时,动态显示、快速校分、整点报时、时段控制的功能。分析整个电路的工作原理,分别说明各子模块的设计原理和调试、仿真、编 程下载的过程,并对最终结果进行总结,最后提出在实验过程中出现的问题和解 决的方案。通过实验掌握一些逻辑组合器件的基本功能和用法,同时体会利用软件设计 电路的方便快捷,避免硬件布线的繁琐,提高效率。 九、心得体会 1、设计必须要有整体概念,提前熟悉软件。刚开始时没头绪,不知道该怎 样分块,进度很慢,加上对软件不是很熟悉,比如:封装要注意哪些,哪些不能 运行,哪些是不正确的操作等等,走了很多冤枉路。 2、设计的模块要分块调试,免得等所有都完工了再调试出错,那样的话很 难确定是什么出错,更加没头绪。有必要的话做一部分后就送到平台上调试,这 样会大大减少出错率。 3、没有硬件软件化的概念,开始设计时没有总体的规划,不知道什么是可行 的,什么是封装,怎样使搭配组合最优化。 4、遇到问题先自己摸索,查阅资料要有技巧,避免没有目的和思路。明白 自己要解决什么问题。同时请教老师,和同学交流。良好的沟通很重要。针对本次的毕业设计,用我国著名的数学家的话概括一下我的感受: “科学上没有平坦的大道,真理长河中有无数礁石险滩。只有不为畏攀登的采药者,只有不怕 巨浪的弄潮儿,才能登上高峰采得仙草,深入水底觅得骊珠。” 十、参阅教材及文献 1、蒋立平编著《数字电路》.南京理工大学翻印; 2、南京理工大学电子技术中心编著.《EDA 设计实验指导书》 南京理工大学,2008 年; 3、谭会生,张昌凡.《EDA 技术及应用》.西安电子科技大学出版社,2001年; 4、《数字电路设计及 Verilog HDL 实现》 西安电子科技大学出版社出版; 5、《电子线路实验设计与仿真讲义》。 EDA技术应用报告 ——微波炉控制器的应用实例 院(系、部): 姓 名: 学 号: 年 级: 专 业: 任课教师: 信息工程学院 安 蕊 080719 大学本科三年级 计算机科学与技术 李 洋 2010 年 11月 9 日·北京 目 录 一、EDA技术的发展及应用..................................1 1.EDA简介..............................................1 2.EDA发展史............................................1 3.EDA技术的发展趋势....................................2 二、EDA技术的工程应用实例................................3 1.设计的基本要求与内容.................................3 2.系统的分析设计方案...................................3 3.系统仿真结果.........................................6 4.设计技巧分析.........................................7 5.系统扩展思路.........................................7 三、心得体会.............................................8 四、参考文献.............................................9 一、EDA技术的发展及应用 1.EDA简介 EDA在通信行业(电信)里的另一个解释是企业数据架构,EDA给出了一个企业级的数据架构的总体视图,并按照电信企业的特征,进行了框架和层级的划分。EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。由于它是一门刚刚发展起来的新技术,涉及面广,内容 丰富,理解各异,所以目前尚无一个确切的定义。但从EDA技术的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以 计算 机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。可以实现逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真。完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片。 20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。 2.EDA发展史 EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,至今已有30多年的历程。大致可以分为三个发展阶段。 20世纪70年代的CAD(计算机辅助设计)阶段:这一阶段的主要特征是利用计算机辅助进行电路原理图编辑,PCB布同布线,使得设计师从传统高度重复繁杂的绘图劳动中解脱出来。20世纪80年代的CAE(计算机辅助工程设计)阶段:这一阶段的主要特征是以逻辑摸拟、定时分析、故障仿真、自动布局布线为核心,重点解决电路设计的功能检测等问题,使设计而能在产品制作之前预知产品的功能与性能。 20世纪90年代是EDA(电子设计自动化)阶段:这一阶段的主要特征是以高级描述语言,系统级仿真和综合技术为特点,采用“自顶向下”的设计理念,将设计前期的许多高层次设计由EDA工具来完成。 EDA是电子技术设计自动化,也就是能够帮助人们设计电子电路或系统的软件工具。该工具可以在电子产品的各个设计阶段发挥作用,使设计更复杂的电路和系统成为可能。在原理图设计阶段,可以使用EDA中的仿真工具论证设计的正确性;在芯片设计阶段,可以使用EDA中的芯片设计工具设计制作芯片的版图:在电路板设计阶段,可以使用EDA中电路板设计工具设计多层电路板。特别是支持硬件描述语言的EDA工具的出现,使复杂数字系统设计自动化成为可能,只要用硬件描述语言将数字系统的行为描述正确,就可以进行该数字系统的芯片设计与制造。有专家认为,21世纪将是四A技术的高速发展期,EDA技术将是对21世纪产生重大 影响 的十大技术之一。 3.EDA技术的发展趋势 面对当今飞速发展的电子产品市场,设计师需要更加实用、快捷的EDA工具,使用统一的集成化设计环境,改变传统设计思路,将精力集中到设计构思、方案比较和寻找优化设计等方面,需要以最快的速度,开发出性能优良、质量一流的电子产品,对EDA技术提出了更高的要求。未来的EDA技术将在仿真、时序分析、集成电路自动测试、高速印刷电路板设计及开发操作平台的扩展等方面取得新的突破,向着功能强大、简单易学、使用方便的方向发展。 (1)可编程逻辑器件发展趋势 可编程逻辑器件已经成为当今世界上最富吸引力的半导体器件,在现代电子系统设计中扮演着越来越重要的角色。过去的几年里,可编程器件市场的增长主要来自大容量的可编程逻辑器件CPLD和FPGA,其未来的发展趋势如下: 1)向高密度、高速度、宽频带方向发展 2)向在系统可编程方向发展 3)向可预测延时方向发展 4)向混合可编程技术方向发展 5)向低电压、低功耗方面发展 (2)开发工具的发展趋势 面对当今飞速发展的电子产品市场,电子设计人员需要更加实用、快捷的开发工具,使用统一的集成化设计环境,改变优先考虑具体物理实现方式的传统设计思路,将精力集中到设计构思、方案比较和寻找优化设计等方面,以最快的速度开发出性能优良、质量一流的电子产品。开发工具的发展趋势如下: 1)具有混合信号处理能力 2)高效的仿真工具 3)理想的逻辑综合、优化工具 (3)系统描述方式的发展趋势 1)描述方式简便化 2)描述方式高效化和统一化 二、EDA技术的工程应用实例 ——微波炉控制器的设计与分析 1.设计的基本要求与内容: 现需设计一个微波炉控制器WBLKZQ,其外部接口如图1所示。通过该控制器再配以4个七段数码二极管完成微波炉的定时及信息显示。 图1 微波炉控制器外部接口符号图 其中图1中的各信号的功能及要求如下: CLK是秒时钟脉冲输入,它接收每秒一个时钟脉冲的节拍信号。RESET为复位信号,高电平有效,用于芯片的复位功能。TEST为测试信号,高电平有效,用于测试4个七段数码二极管工作是否正常。 2.系统的分析设计方案: (1)微波炉控制器的总体设计方案 根据该微波炉控制器的功能设计要求,本系统可由以下4个模块组成:① 状态控制器KZQ;② 数据装载器ZZQ;③ 烹调计时器JSQ;④ 显示译码器YMQ47。其内部组成原理图如图2所示。 图2 微波炉控制器WBLKZQ的内部组成原理图 1)状态控制器KZQ的功能是控制微波炉工作过程中的状态转换,并发出有关控制信息;输入信号为CLK、TEST、START、SET_T、RESET和DONE,输出信号为LD_DONE、LD_CLK、LD_8888和COOK信号。 2)数据装载器ZZQ的功能是根据KZQ发出的控制信号选择定时时间、测试数据或烹调完成信息的装入。 3)计时器JSQ的功能是负责烹调过程中的时间递减计数,并提供烹调完成时的状态信号供KZQ产生烹调完成信号。 4)显示译码器YMQ47的功能就是负责将各种显示信息的BCD转换成七段数码管显示的驱动信息编码。需要译码的信息有:数字0~9,字母d、o、n、E。 (2)状态控制器KZQ的设计 状态控制器KZQ的功能是控制微波炉工作过程中的状态转换,并发出有关控制信息,因此我们可用一个状态机来实现它。经过对微波炉工作过程中的状态转换条件及输出信号进行分析,我们可得到其状态转换图如图3所示,其输入、输出端口如图4所示。 图3 KZQ的状态转换图 图4 KZQ的输入、输出端口图 (3)数据装载器ZZQ的设计 ZZQ的输入、输出端口如图5所示,根据其应完成的逻辑功能,它本质上就是一个三选一数据选择器。本设计采用一个进程来完成,但由于三个被选择的数据只有一个来自输入端口,因此另两个被选择的数据则通过在进程的说明部分定义两个常数来产生。 图5 ZZQ的输入、输出端口图 (4)烹调计时器JSQ的设计 烹调计时器JSQ为减数计数器,其最大计时时间为59:59。因此我们可用两个减计数十进制计数器DCNT10和两个减计数六进制计数器DCNT6级联构成。JSQ的内部组成原理如图6所示。 图6 JSQ的内部组成原理图 (5)显示译码器YMQ47的设计 本显示译码器YMQ47不但要对数字0~9进行显示译码,还要对字母d、o、n、E进行显示译码,其译码对照表如表1所示。 表1 YMQ47的译码对照表 3.系统仿真结果 (1)系统的有关仿真 状态控制器KZQ、数据装载器ZZQ和烹调计时器JSQ的仿真分别如图 7、图8和图9所示。 图7 状态控制器KZQ的仿真图 图8 数据装载器ZZQ的仿真图 图9 烹调计时器JSQ的仿真图 4.设计技巧分析 (1)在状态控制器KZQ中,利用状态机的设计方法简化了设计。 (2)在数据装载器ZZQ的设计中,利用三个装载信号的组合LD_8888 & LD_DONE & LD_CLK赋给变量TEMP,巧妙地解决了装载数据的选择问题。 (3)在烹调计时器JSQ的设计中,利用两个减法十进制计数器和两个减法六进制计数器的串级组合,非常简便地实现了59′59″数之间的计时和初始数据的装载。 5.系统扩展思路 (1)本微波炉控制器要求系统时钟CLK固定为1 Hz,而预置时间数据输入总线DATA0位数太多(为16位),因此我们可对该系统进行改进,增加一个分频电路FPQ和一个“虚拟式”按键预置数据输入电路YZDL(如图10所示),以使系统的通用性更好写。 (2)设计外围电路:系统用方波信号源,直流工作电源。 图10 微波炉控制器WBLKZQ扩充后的内部组成原理图 三、心得体会 这学期EDA课程历经了10周,在这半学期的日子里,付出了很多,流了不少汗水,但真的学到了很多很多的东西,不仅是课本上所讲过的知识,更有很多在书本上所没有学到过的知识。通过一次次的实验和这次论文,我在一步步加深对EDA的了解,让我对它也有了更加浓厚的兴趣。特别是在实验操作过程中,每一个子模块编写调试成功时,心里都特别的开心。但是在编写一些其他的程序时,也遇到了不少问题,出现很多错误,在老师的帮助以及自己的细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里也终于舒了一口气。 通过这学期的EDA课程使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的学为所用,从而提高自己的实际动手能力和独立思考的能力。在实践的过程中会遇到问题,也会发现了自己的不足之处——对以前所学过的知识理解得不够深刻,掌握得不够牢固。 对于本次的论文,我同样是受益匪浅,查阅资料过程中进一步了解到了关于EDA技术的历史,更了解了EDA技术几十年来它的发展经历和作用,以及今后的发展方向和趋势,同时也再一次体会到了要将学到的知识与生活中的事物联系起来。通过对智力抢答器基本工作原理的理解与实际操作,我还基本掌握了EDA相关软件的使用方法。在整个过程中我虽然碰到了许多的问题,但是通过课上老师的详细讲解以及在网上搜集的资料,最后都得到了解决,可以说是取得了基本满意的成果。 在论文的最后,感谢李老师一学期的辛劳付出,为我们带来了生动的课堂知识,感谢周老师的耐心与帮助,使我们的实验能够圆满完成,在此,谢谢老师们了!! 四、参考文献 1、李 洋《EDA技术实用教程》(第2版)机械工业出版社2009.8 201-280 2、章彬宏《EDA应用技术》 北京 高等教育出版社 2007 76-93 3、包 明《EDA技术与可编程器件的应用》北京航天航空大学出版社 2007 58-72 4、潘松 王国栋《VHDL实用教程》(修订版)电子科技大学出版社 2001.7 13-24 5、朱力恒《电子技术仿真实验教程》北京 电子工业出版社 2003 23-29第二篇:EDA课程设计论文
第三篇:EDA数字钟设计
第四篇:EDA设计报告
第五篇:EDA结课论文