《EDA课程设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计.doc(17页珍藏版)》请在三一办公上搜索。
1、目录第一章 绪论2一、EDA技术的发展2二、EDA技术的应用2三、EDA技术的设计方法31、传统的设计方法32、现代的设计方法3第二章 交通灯控制系统设计7一、交通灯控制系统简介7二、设计要求7三、设计思路8四、设计流程图9五、设计步骤及程序101、设计步骤102、参考源程序11六、 硬件实现与调试结果141、器件下载编程与硬件实现142、调试结果分析14第三章 课程设计总结16参考文献17第一章 绪论一、EDA技术的发展EDA是以计算机为平台,融合了应用电子技术、计算机技术、智能化技术最新成果而研制的电子CAD通用软件包,主要辅助进行三方面的工作:IC设计、电子线路设计以及PCB设计,回顾近
2、30年电子设计技术的发展历程,可将EDA技术分为三个阶段:20世纪70年代为CAD阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作,产生计算机辅助技术的概念。20世纪80年代为CAE阶段,与CAD相比,除了纯粹的图形设计功能之外又增加了电路功能设计和结构设计,并且通过电器连接网络表将二者结合在一起,实现了工程设计,这就是计算机辅助设计的概念。CAE的主要功能是:原理图输入,逻辑图仿真,电路分析,自动布局不限,PCB分析。20世纪90年代为EDA阶段,尽管CAD/CAE技术取得了很大的成功,但并没有把人们从繁重的劳动中解放出来。在整个设计过程中,自动化和智能化程度还不高
3、,各种软件界面千差万别,学习使用困难,互不兼容,直接影响到设计环节的衔接,基于以上环节不足,人们开始最求:贯彻整个设计过程的自动化,这就是EDA即电子系统设计自动化。二、EDA技术的应用EDA技术在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。在科研方面,主要利用电路仿真工具进行电路设计与仿真,利用虚拟一起进行产品测试,将CPLD/FPGA器件实际应用到仪器设备中,从事PCB设计和ASIC设计等。在产品设计与制造方面,EDA技术应用于仿真、生产、测试等各个环节。EDA技术已经应用于各行各业,在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域都有EDA技术的应用。另外,
4、EDA软件的功能也日益强大。三、EDA技术的设计方法 数字系统设计有多种方法,如模块设计法、自顶向下设计法和自底向下设计法等。数字系统的设计一般采用自顶向下、由粗到细、逐步求精的方法。1、传统的设计方法由底向上的设计方法其主要步骤是:根据系统对硬件的要求详细编制技术规格书,画出系统控制流程图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图:进行个功能模块的细化和电路设计;个功能模块设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。其设计过程大致如图1所示。2、现代的设计方法EDA技术采用现代的设计方法自顶向下的设计方法。这种设计方法综
5、合运用各方面的知识,设计者必须从系统的角度 图 1 流程图 来分析每个设计,同时还要对数字电路结构、EDA工具、微电子等有关知识有比较全面的了解,这样才能发挥自顶向下设计的优势,提高电路设计的质量和效率。在进行自顶向下的设计时,仿真和综合只是系统实现的手段,要成功完成一个复杂系统的设计,不仅要熟练使用先进的高层次设计工具,还要对系统本身有正确理解。 采用自顶向下技术进行设计可分为三个主要阶段:系统设计、系统的综合优化和系统实现,各个阶段之间并没有绝对的界限。如图1是一个完整的自顶向下的设计流程。 图 2 自顶向下设计流程1、系统设计系统设计是整个设计流程中最重要的部分,它包括系统功能分析、体系
6、结构设计、系统描述与系统功能仿真4个步骤,这一阶段所做的工作基本上决定了说设计电路的性能,后面所做的工作都是以这一部分为基础的。(1)系统功能分析进行系统功能分析的目的是在进行系统设计之前明确系统的需求,也就是确定系统所要完成的功能、系统的输入输出以及输入输出之间的关系等,并且要确定系统的时序要求。系统功能分析的另外一个目的就是进行系统的模块划分。在系统分析时,应根据功能的耦合程度,将系统划分为不同的功能模块,每一个功能都映射到一个模块,同时还需要确定模块之间的相互关系,这模块化设计的基本要求。(2)体系结构设计体系结构设计是整个系统设计阶段最重要的工作,它的首要任务就好似数据通路和控制通路的
7、设计。在数字系统设计中,系统的控制是建立在数据通路基础之上的,不同的数据通路对应了不同的控制通路。数据通路的设计包括呗处理数据的类型分析、单元的划分以及处理单元之间的关联程度等。控制通路是数据通路上数据传输的控制单元,用于协调数据处理单元之间的关系。控制通路的设计主要包括数据的调度、数据的处理算法和正确的时序安排。(3) 系统描述所谓系统描述,也就是使用HDL语言对系统进行编码。在进行大型然间的开发时,编码与前面所进行的系统划分工作相比就显得不那么重要了,但在使用硬件描述语言进行数字电路描述时,情况则完全不同,因为语言的描述直接决定着电路的性能,不好的编码将无法反映所确定的体系结构,可能导致前
8、面所做的工作完全被浪费。(4) 系统功能仿真系统功能仿真用于检查色和记者所编写的硬件描述语言代码是否完成了预定的功能。几乎所有的高层设计软件都鸡翅语言级的系统仿真,这样在系统综合前就可以通过系统功能仿真来验证所设计系统的功能正确与否。2、系统综合优化 在完成系统功能仿真后,接下来的工作就是系统的综合优化,主要包括系统的综合优化与门级仿真。(1) 系统的综合优化综合器对系统的综合优化主要分为两步:第一步将硬件描述语言翻译成门电路;第二步对产生的电路进行优化。综合优化的主要工作是在第二步进行的,判断一个综合器性能的标准也基于这一步。系统优化的目的就是花费最少的硬件资源满足最大的时序要求,所以系统优
9、化就是在系统的速度和面积之间找到一个最佳方案。系统优化的关键在于系统约束条件的设定,施加到系统的约束条件将使综合器对系统的优化按照设计者期望的目标进行。(2) 门级仿真 综合工具可以从综合优化后的电路中提取出系统门级描述的硬件描述语言文件,该文件内不仅包含了完成系统功能所需的元件信息,而且也包含了电路元件的一些时序特性,经过门级仿真的电路通过布局布线后仿真的可能性增大。进行ASIC设计是,在生产厂家的工艺库上布局布线的流程较为繁琐,进行门级仿真可以在进行布局布线之前最大限度地发现问题而节省时间。如果进行布局布线后时序仿真的条件便利,很多情况下就不需要进行门级仿真工作了。3、系统实现如果系统综合
10、优化的结果满足设计者的要求,就可以进行系统实现了,设计者可以将综合后的电路的网表文件和设计者的时序要求交给IC生产厂家进行下一步的工作,也可以通过EDA工具软件对FPGA/CPLD芯片进行配置与编程。 第二章 交通灯控制系统设计一、交通灯控制系统简介 随着我国经济的快速发展,车辆拥有量也随之几句增加,再加上人口数量的膨胀,城市的交通拥挤问题变得日益突出。如何使交通灯的控制更加合理,使现有的交通资源发挥更大的效益,已经成为城市管理者和科技工作者共同关心的问题。这个交通灯控制系统主要利用可编程逻辑器件来实现,通过外部输入可方便的设定交通灯的延迟时间,使交通灯控制数字电路设计得到了优化,提高了系统的
11、灵活性、可靠性和可扩展性。该系统可以较好的缓解交通压力,并可实现对突发事件进行紧急处理。通过使用硬件描述语言进行数字电子系统设计。VHDL语言由于具有强大的行为描述能力和丰富的仿真语句从而成为系统设计领域最佳的硬件描述语言。系统主要分为三大模块:时钟分频模块、控制和计时模块、扫描显示译码模块。二、设计要求能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态,用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯; 南北向为主干道,每次通行时间为25S,东西向为支干道,每次通行时间为15S;能实现正常的倒计时功能,用两组数码管作为东西、南北向的倒计时显示。其中,黄灯:5S。能实现特殊状态的功能。按
12、下SP键后,能实现以下特殊功能: (1)显示倒计时的两组数码管闪烁; (2)计数器停止计数并保持在原来的状态; (3)东西、南北路口均显示红灯状态; (4)特殊状态解除后能继续计数; 5. 能实现全清零功能。按下reset键后,系统实现全清零,计数器由初状态计数,对应状态的指示灯亮; 6. 用VHDL语言设计上述功能的交通灯控制器,并用层次化方法设计该电路; 7. 仿真、验证设计的正确性。 8.时钟输入:clkin=2KHz采用分频器分成:1Hz,然后提供给系统三、设计思路1.交通灯控制器的电路控制原理框图如图3所示,主要包括置数器模块、定时计数器模块、主控制器模块和译码器模块。置数器模块将交
13、通灯的点亮时间预置到置数电路中。计数器模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。核心部分是主控制模块。具体控制情况见表1。 图 3 电路控制原理框图 表格 1 交通灯控制器状态控制表状态主干道支干道时间/s1红灯亮红灯亮202黄灯亮红灯亮53红灯亮绿灯亮104红灯亮黄灯亮5四、设计流程图由以上要求可以得到该系统的程序流程图如图4所示。其中,GA、RA、YA表示A支路的绿灯、红灯、黄灯,GB、RB、YB表示B支路的绿灯、红灯、黄灯,S表示特殊功能按键,T表示计时的时间。 图 4 程序流程图五、设计步骤及程序1、设计步骤(1) 编写各个模块的源程序,
14、检查编译。(2) 建立工程,以顶层原理图文件名为工程名,把先前建立的VHDL程序假如这个工程中,并对每个VHDL程序创建原理图符号,通过原理图输入设计顶层原理图。建立如图5所示的原理图,检查编译,并进行系统仿真。(3) 选择元器件,定义好管脚。(4) 编译,进行时序仿真并分析波形。(5) 下载程序,进行硬件测试。 图 5 交通灯控制系统结构图2、参考源程序(1)分频器模块设计 ffpin.vhd 源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned
15、.all;entity ffpin is port (clklk:in std_logic; ft:out std_logic);end ffpin;architecture a of ffpin issignal fm:std_logic;beginprocess(clk1k)variable num:integer range 0 to 2000;beginif clk1kevent and clk1k=1 then if num1000 then num:=num+1; else num:=1; fm=not fm; end if ;end if;ft=fm;end process;en
16、d a;(2)交通灯控制模块设计 ledcontrol.vhd 源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcontrol is port(reset,clk,urgen :in std_logic; state :out std_logic_vector(1 downto 0); sub,set1,set2 :out std_logic);end ledcontrol;architecture a of ledcontrol is signal count:std_
17、logic_vector(6 downto 0); signal subtemp:std_logic; beginsub=subtemp and (not clk);statelabel:process(reset,clk)beginif reset=1 then count=0000000; state=00;elsif clkevent and clk=1 then if urgen=0 then count=count+1;subtemp=1;else subtemp=0;end if; if count=0 then state=00;set1=1;set2=1; elsif coun
18、t=20 then state=01;set1=1; elsif count=25 then state=10;set1=1;set2=1; elsif count=35 then state=11;set2=1; elsif count=49 then count=0000000;else set1=0;set2=0;end if;end if;end process statelabel;end a;(3)交通灯显示模块设计 ledshow.vhd 源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned
19、.all;entity ledshow is port(clk,urgen :in std_logic; state :in std_logic_vector(1 downto 0); sub,set1,set2 :in std_logic; r1,g1,y1,r2,g2,y2 :out std_logic; led1,led2 :out std_logic_vector(7 downto 0);end ledshow;architecture a of ledshow is signal count1,count2:std_logic_vector(7 downto 0); signal s
20、etstate1,setstate2:std_logic_vector(7 downto 0); signal tg1,tg2,tr1,tr2,ty1,ty2:std_logic;beginled1=11111111 when urgen=1 and clk=0 else count1;led2=11111111 when urgen=1 and clk=0 else count2;tg1=1 when state=00 and urgen=0 else 0;ty1=1 when state=01 and urgen=0 else 0;tr1=1 when state(1)=1 or urge
21、n=1 else 0;tg2=1 when state=10 and urgen=0 else 0;ty2=1 when state=11 and urgen=0 else 0;tr2=1 when state(1)=0 or urgen=1 else 0;setstate1= 00100000 when state=00 else 00000101 when state=01else 00010101;setstate2= 00010000 when state=10 else 00000101 when state=11else 00100101;label2:process(sub)be
22、ginif subevent and sub=1 thenif set2=1 then count2=setstate2;elsif count2(3 downto 0)=0000 then count2=count2-7;else count2=count2-1;end if; g2=tg2; r2=tr2; y2=ty2;end if;end process label2;label1:process(sub)beginif subevent and sub=1 thenif set1=1 then count1=setstate1;elsif count1(3 downto 0)=000
23、0 then count1=count1-7;else count1=count1-1;end if; g1=tg1; r1=tr1; y1=ty1;end if;end process label1;end a;六、 硬件实现与调试结果1、器件下载编程与硬件实现在进行硬件测试时,按键k1对应复位端reset,按键k2对应紧急开关urgent。EDA实验开发系统上的时钟cp2对应计数时钟CLK,数码管M3、M4对应东西走向的时钟显示。LED灯l16、l15、l14对应东西走向的绿灯G1、黄灯Y1、红灯R1。数码管M1、M2对应南北走向的时钟显示。LED灯l1、l2、l3对应南北走向的绿灯G2、
24、黄灯Y2、红灯R2,对应的硬件结构示意图如图6所示。图 6 交通灯控制系统的硬件示意图2、调试结果分析从仿真图8可以看出,从25S到01S第一个绿灯(用于指示南北方向)亮,下一个周期05S到01S第一个黄灯亮,紧接着第一个红灯亮起,符合南北方向通行30S的要求。从20S到06S第二个绿灯(用以指示东西向)亮起,从05S到00S第二个黄灯亮起,紧接着第二个红灯亮起,符合东西向通行20S的要求。紧急状态和复位状态也符合要求。其顶层原理图如图7所示。 图 7 顶层原理图图 8 仿真波形第三章 课程设计总结通过这次课程实际,我进一步加深了对电子设计自动化的了解。并进一步熟练的对QuartusII软件的
25、操作。在编写程序过程中,遇到了很多问题,让我知道自己以前的学习上还存在很多的不足。通过和同学探讨与老师的知道,最终把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。在做课程设计之前,我努力的把交通灯的原理分析了一遍又一遍,虽然如此,在硬件调试时还是出现了许多问题。所以必须把原理完全掌握,确定一个大的设计方向,在按照这个方向分模块把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总的来说,在这次设计中有了很大的收获,对软件编程、排错调试、相关仪器设备的使用等方面有了提高。参考文献【1】 顾斌 数字电路EDA设计 西安:西安电子科技大学出版社,2007【2】 孙加存 电子设计自动化 西安:西安电子科技大学出版社,2008【3】 林明权 等 VHDL数字控制系统设计范例 北京:电子工业出版社,2005【4】 尹常永 EDA技术与数字控制系统设计 西安:西安电子科技大学出版社,2007