EDA 论文.docx
《EDA 论文.docx》由会员分享,可在线阅读,更多相关《EDA 论文.docx(13页珍藏版)》请在冰豆网上搜索。
EDA论文
目录
第1章EDA介绍与彩灯控制器的设计方案2
1.1EDA简介2
1.2系统设计要求2
第2章彩灯控制器的设计原理3
2.1设计方案3
2.2时序控制模块3
第3章程序设计和程序仿真图形分析5
3.1时序控制电路模块程序5
第4章硬件测试11
第5章心得体会12
参考文献13
第1章EDA介绍与彩灯控制器的设计方案
1.1EDA简介
EDA设计是一种新的电子设计方法,在现代电子设计中占有十分重要的地位。
为使广大初学者能尽快掌握EDA技术,我们以深入浅出的方法探索一种学习EDA技术的新方法。
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可记性,减轻了设计者的劳动强度。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA设计可分为系统级、电路级和物理实现级。
EDA常用软件:
EDA工具层出不穷,目前进入我国并具有广泛影响的EDA软件有:
multiSIM7(原EWB的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim,ISE,modelsim等等。
这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。
1.2系统设计要求
设计一个多路彩灯控制器,十六种彩灯能循环变化,有清零开关,可以变化彩灯闪动频率即是可以选择快慢两种节拍。
第2章彩灯控制器的设计原理
2.1设计方案
整个系统有三个输入信号,分别为控制快慢的信号OPT,复位清零信号CLR,输出信号是16路彩灯输出状态。
2-1-1系统框图
主要模块组成:
时序控制电路模块和显示电路模块,时序控制电路是根据输入信号的设置得到相应的输出信号,并将此信号作为显示电路的时钟信号;显示电路输入时钟信号的周期,有规律的输出设定的六种彩灯变化类型。
2.2时序控制模块
CLK为输入时钟信号,电路在时钟上升沿变化;CLR为复位清零信号,高电平有效,一旦有效时,电路无条件的回到初始状态;OPT为频率快慢选择信号,低电平节奏快,高电平节奏慢;CLKOUT为输出信号,CLR有效时输出为零,否则,随OPT信号的变化而改变。
我们假设时序控制电路所产生的控制时钟信号的快慢两种节奏分别为输入时钟信号频率的1/4和1/8,因而输出时钟控制信号可以通过对输入时钟的计数来获得。
当opt为低电平时,输出没经过两个时钟周期进行翻转,实现四分频的快节奏;当opt为高电平时,输出每经过四个时钟周期进行翻转,实现把八分频的慢节奏。
显示控制电路的模块框图如图所示,输入信号clk和clr的定义与时序控制电路一样,输入信号led[15...0]能够循环输出16路彩灯16种不同状态的花型。
对状态的所对应的彩灯输出花型定义如下:
S0:
0000000000000000S1:
0001000100010001
S2:
0010001000100010S3:
0011001100110011
:
010*********
S6:
0110011001100110S7:
0111011101110111
S8:
1000100010001000S9:
1001100110011001
S10:
1010101010101010S11:
1011101110111011
S12:
1100110011001100S13:
110111*********1
S14:
111011*********0S15:
111111*********1
多路彩灯在多种花型之间的转换可以通过状态机实现,当复位信号clr有效时,彩灯恢复初始状态s0,否则,每个时钟周期,状态都将向下一个状态发生改变,并对应输出的花型,这里的时钟周期即时时序控制电路模块产生的输出信号,它根据opt信号的不同取值得到两种快慢不同的时钟频率。
clr
第3章程序设计和程序仿真图形分析
3.1时序控制电路模块程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitymetronomeis--定义实体
port(
clk:
instd_logic;--时钟信号
clr:
instd_logic;--复位信号
opt:
instd_logic;--快慢控制信号
clkout:
outstd_logic--输出时钟信号
);
endmetronome;
architecturertlofmetronomeis
signalclk_tmp:
std_logic;
signalcounter:
std_logic_vector(1downto0);--定义计数器
begin
process(clk,clr,opt)
begin
ifclr='1'then--清零
clk_tmp<='0';
counter<="00";
elsifclk'eventandclk='1'then
ifopt='0'then--四分频,快节奏
ifcounter="01"then
counter<="00";
clk_tmp<=notclk_tmp;
else
counter<=counter+'1';
endif;
else--八分频,慢节奏
ifcounter="11"then
counter<="00";
clk_tmp<=notclk_tmp;
else
counter<=counter+'1';
endif;
endif;
endif;
endprocess;
clkout<=clk_tmp;--输出分频后的信号
endrtl;endrtl;
显示模块电路程序如下:
libraryieee;
useieee.std_logic_1164.all;
entityoutputis
port(
clk:
instd_logic;--输入时钟信号
clr:
instd_logic;--复位信号
led:
outstd_logic_vector(15downto0));--彩灯输出
endoutput;
architecturertlofoutputis
typestatesis--状态机状态列举
(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15);
signalstate:
states;
begin
process(clk,clr)
begin
ifclr='1'then
state<=s0;
led<="0000000000000000";
elsifclk'eventandclk='1'then
casestateis
whens0=>
state<=s1;
whens1=>
state<=s2;
led<="0001000100010001";
whens2=>
state<=s3;
led<="0010001000100010";
whens3=>
state<=s4;
led<="0011001100110011";
whens4=>
state<=s5;
led<="0100010001000100";
whens5=>
state<=s6;
led<="0101010101010101";
whens6=>
state<=s7;
led<="0110011001100110";
whens7=>
state<=s8;
led<="0111011101110111";
whens8=>
state<=s9;
led<="1000100010001000";
whens9=>
state<=s10;
led<="1001100110011001";
whens10=>
state<=s11;
led<="1010101010101010";
whens11=>
state<=s12;
led<="1011101110111011";
whens12=>
state<=s13;
led<="1100110011001100";
whens13=>
state<=s14;
led<="1101110111011101";
whens14=>
state<=s15;
led<="1110111011101110";
whens15=>
state<=s1;
led<="1111111111111111";
endcase;
endif;
endprocess;
endrtl;
顶出模块设计程序:
libraryieee;
useieee.std_logic_1164.all;
entitycotopis
port(
clk:
instd_logic;
clr:
instd_logic;
opt:
instd_logic;
led:
outstd_logic_vector(15downto0));--八路彩灯输出
endcolorled;
architecturertlofcolorledis
componentmetonomeis--定义元件:
时序控制电路
port(
clk:
instd_logic;
clr:
instd_logic;
opt:
instd_logic;
clkout:
outstd_logic);
endcomponentmetonome;
componentoutputis--定义元件:
显示电路
port(
clk:
instd_logic;
clr:
instd_logic;
led:
outstd_logic_vector(7downto0));
endcomponentoutput;
signalclk_tmp:
std_logic;
begin
u1:
metonomeportmap(clk,clr,opt,clk_tmp);--例化时序控制模块
u2:
outputportmap(clk_tmp,clr,led);--例化显示电路模块
endrtl;
时序控制模块仿真波形:
从图中可以看出,当复位信号为高电平时,电路时钟输出清零,当快慢信号OPT为低电平时,时序控制电路四分频起作用,当快慢信号OPT为高电平时,时序控制电路八分频起作用,仿真结果符合电路要求。
显示模块仿真波形:
当复位信号有效时彩灯输出为零,否则,显示电路在十六种不同状态间转换。
多路彩灯控制仿真波形:
从图中可以看出当OPT为高电平时彩灯状态转换慢,为低电平时转换要快,当复位信号有效时,所用输出都清零。
综上所述,本次设计实现了设计要求中的要求。
第4章硬件测试
波形仿真完成之后即可进行引脚的分配,并进行编程下载至硬件进行测试。
在Quartus中选择Assignments->AssignmentsEditor,在AssignmentsEditor窗口中选择pin标签页,即可分配引脚,引脚的分配情况如图5所示。
图4-1-1引脚分配图
如上图所示,在实验过程中clk的引脚选择J16即可外接频率源,实验过程中选择的频率为1KHZ。
其余数码管和二极管以及8个数码管的使能端引脚分配见上图,复位键引脚T10对应的按键。
选择process->startcompilation,重新编译,完成后形成可配置到FPGA的pan.sof文件和配置到外部的pan.pof文件。
编程下载,在quartus软件中,选择tools/programmer,在Mode中选择JTAG,点击”addfile”按钮添加需要配置的pan.sof文件,选中program/configure,点击start按钮对芯片进行配置,等待一段时间后即可观察到实验结果。
在实验箱上,我们观察到实验结果按我们所设计的那样显示,即可显示我们预先设定的三种花型AA、BB、CC并且能够按要求循环移动,发光二极管也可按设计要求循环闪烁,并与数码显示管的花型变化同步。
同时当显示不同的花型时扬声器发出了不同的声音。
当按下复位键时我们看到数码显示管重新开始再最右边显示花型AA,并且扬声器停止发声。
这些实验结果验证所设计程序的正确性,实现了设计内容和要求,并且有了一定的扩展功能。
第5章心得体会
本次设计的课题是彩灯控制器的设计,当拿到这个课题的时候经过分析就知道关键是计数器和分频器的使用,分频的方法有很多种,对于同一种功能的实现,用VHDL可以采用多种方式进行描述,每种方式之间各有优劣,本次设计只采用了其中较简单的一种,应尽量用最简洁的语言写出所需功能的程序。
通过这次课程设计对EDA技术有了更进一步的熟悉,VHDL语言和C语言等其他语言还是有很大的区别。
VHDL是EDA技术的重要组成部分,其具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化、结构化设计方面,表现了强大的生命力和应用潜力。
其主要的也是最大的优点就在于设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。
在实际操作中发现设计和课本上的知识有很大联系,但又高于课本,一个简单的原理要把它应用以及和其他功能综合起来就有些困难。
通过设计也巩固了我们的书本知识以及通过借阅书籍和上网查找资料,也丰富了自己对EDA的了解。
不过本次设计也存在一些不足,暴露了自己对EDA的掌握还有所欠缺。
在设计过程中,分频分的太大,频率太小的话,频率太大的话,数码管显示速度太快,尝试分频时使用不同的脉冲信号,但没有成功。
在反复调试中,最后还是成功了,但原理还不是很清楚。
同时,在课程设计过程中通过与老师、同学的交流,也了解了他们对于这门技术的看法和今后这门技术的发展方向,也感谢老师对我设计的指导和同学对我的帮助。
总的来说,这次设计还是有所收获的。
参考文献
1黄正瑾.在系统编程技术及其应用.南京:
东南大学出版社,1997
2彭介华.电子技术课程设计指导.北京:
高等教育出版社,1997
3李国丽,朱维勇.电子技术实验指导书.合肥:
中国科技大学出版社,2000
4潘松,黄继业.EDA技术实用教程.北京:
科学出版社,2002
5郑家龙,王小海,章安元.集成电子技术基础教程.北京:
高等教育出版社,2002
6宋万杰,罗丰,吴顺君.CPLD技术及其应用.西安:
西安电子科技大学出版社,1999
7张昌凡,龙永红,彭涛.可编程逻辑器件及VHDL设计技术.广州:
华南工学院出版社,2001
8卢杰,赖毅.VHDL与数字电路设计.北京:
科学出版社,2001