1、武汉理工大学EDA课程设计说明书目录摘要.2Abstract.3绪论.41.VHDL 简介.51.1 VHDL的特点.51.2 VHDL发展史.52.设计的方案确定.62.1.AD558工作原理.62.2 设计方案.73.设计流程.84.结束语.145.参考文献.15附录.162武汉理工大学EDA课程设计说明书摘要本说明书首先介绍了 VHDL语言的特点及发展史;接着简要说明了 D/A接 口(函数发生器)的工作原理及设计思想和设计方案的确定;然后着重解释了使 用VHDL语言设计D/A接口(函数发生器)的具体操作步骤及主要流程。为了 更加详细的解释清楚主要流程在本课程设计说明书中还附加了相应的图片
2、。最后 还附加了实现设计的VHDL源程序。关键词:VHDL D/A接口 设计3武汉理工大学EDA课程设计说明书AbstractThis manual introduces the VHDL language f eatures and development history;f ollowed by a brief description of the D/A interf ace and the working principle and design ideas and the way that the design program was conf irmed;and then I ex
3、plain the emphasis on the use of VHDL language to design D/A interf ace and the specif ic steps and the main process.In order to explain in more details of the main process I also attached the corresponding pictures.Finally I added the VHDL design source codes in the addendum.Keywords:VHDL D/A Inter
4、f ace Design4武汉理工大学EDA课程设计说明书绪论EDA是 电子设计自动化(Electronic Design Automation)的缩写。EDA技术就 是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言 HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动 地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至 实现既定的电子线路系统功能。EDA技术使设计者的工作仅局限于利用软件的 方式来完成对系统硬件功能的实现,可以说EDA技术的产生与发展是电子设计 技术的一个巨大进步。EDA技术融合了众多电
5、子设计技术和计算机辅助技术,使得它在现代电子学方面的应用越来越广泛,也成为电子、电气类大学生必须熟 练掌握的一种设计工具。硬件描述性语言HDL是EDA技术的重要组成部分,常见HDL的有VHDL、HDL、ABEL、Verilog、AHDL、SystemC 等。其中 VHDL、Verilog 在现在的 EDA 设计中使用的最多,也拥有了几乎所有主流EDA工具的支持,而相对于其他语 言 VHDL 更加完善。VHDL 是英文全名是 VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,是硬件描述语言的业界标准之一。
6、它作为 一个规范语言和建模语言,具有与具体硬件电路无关及设计平台无关的特性,而 且还有很强的电路行为描述和建模能力,能从多个层次的数字系统进行建模和描 述,从而大大简化了硬件设计的任务,提高了设计效率和可靠性。D/A转换器的功能是把二进制数字信号转换为与其数值成正比的模拟信号。AD558是并行8位D/A转换芯片,应用CPLD可以完成对AD558的控制。CPLD 与CPLD结合之后可以完成函数发生器的基本功能:波形输出。要实现这种结合 就需要应用VHDL语言完成D/A接口的设计。通过合适的VHDL语言可以完成 递增斜波、递减斜波、三角波、递增阶梯波的输出。5武汉理工大学EDA课程设计说明书1.V
7、HDL简介1.1 VHDL的特点VHDL语言功能强大、设计灵活。VHDL语言可以用简洁明确的源代码 来描述复杂的逻辑控制,它具有多层次的设计描述功能,层层细化,最后可 直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言虽不能比拟的。VHDL还支持多种设计方法,既支持 自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次 化设计。由于VHDL已经成为IEEE标准所规定的硬件描述性语言,目前大 多数EDA工具几乎都支持VHDLo因为VHDL易读和结构化且易于修改设 计所以在硬件电路设计过程中,VHDL语言得到广泛应用。VHDL语言独立于器件的设计
8、与工艺无关。因而设计人员用VHDL进 行设计时,不需要考虑选择器件得问题,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。VHDL语言易于共享和复用。VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中 的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可 以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统 的功能可行性,随时可对设计进行仿真模拟。VHDL语句的行为描述能力和程序结构决定了它具有支
9、持大规模设计 的分解和已有设计的再利用功能。这个特点很好的符合了市场需求。对于用 VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述的设计转变成门级网表。总之,由于VHDL语言有的这些优良的特点,它被广泛的应用在电子 线路和电子系统的设计中。1.2 VHDL发展史VHDL于1983年由美国国防部发起创建,由IEEE进一步发展,并在 1987年作为“IEEE标准1076发布。从此VHDL成为硬件描述语言的业界 标准之一。随后各EDA公司相继推出了自己的VHDL设计环境,或宣布自 6武汉理工大学EDA课程设计说明书己的设计工具支持VHDLo此后VHDL在电子
10、设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能 力上扩展了 VHDL的内容,公布了新版本的VHDL,即IEEE标准的 1076-1993版本。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语 言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬 件描述语言。现在公布的最新VHDL标准版本是IEEE1076-2 002 o在现代电子行业中,VHDL语言将承担起大部分的数字系统设计任务。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中,当然在一 些实力较为雄厚的单
11、位,它也被用来设计ASIC。2.设计方案的确定2.1.AD558工作原理A/D转换器和D/A转换器是把微型计算机的应用领域扩展到检测和过程控 制的必要装置,是把计算机和生产过程、科学实验过程联系起来的重要桥梁。D/A转换器的功能是把二进制数字信号转换为与其数值成正比的模拟信号。D/A 转换器相对于A/D转换器在时序上要求较低。在D/A参数中一个最重要的参数 就是分辨率,它是指输入数字量发生单位数码变化时,所对应输出模拟量(电压 或电流)的变化量。分辨率是指输入数字量最低有效位为1时,对应输出可分辨 的电压变化量 U与最大输出电压Um之比。D/A转换器AD558是EDA实验箱上自带的并行8位D/
12、A转换芯片,它可 以把输入的8位数字量转化为02.56V的电压量,它与CPLD器件联合使用可以 产生几种波形。其芯片管脚外形和内部结构框图分别如图1、图2所示:(LSB)DBO DB1DB2DB3DB4DB5DB6(MSB)DB7AD558TOP VIEW(Not t o Scal e)留道E回131310111E叵叵叵叵叵叵叵VOUTVqut senseVout SELECTGND GND*VCC CS图1 AD558芯片管脚外形图7武汉理工大学EDA课程设计说明书CONTROL DIGITAL INPUT DATA(BUS)INPUTSI qq S m 含 2 冷路 5 MS B.v GN
13、D CS CE LSBS Q S g S o g g*VCCVOUTVoutSENSE A v0UTselectGND图2 AD558内部结构框图AD558的真值表如图3所示。由真值表可知:当CS为低电平、CE为电平 时,AD558保持上次的转换结果;当CS和CE同时为电平时,通过数据总线 D7.O读入数据,同时讲转换结果输出。Input DataCECSDAC DataLatchCondition0000Transparent*91001“Transparent”0g00Latching1g01Latching00g0Latching10g1LatchingX1XPrevious DataL
14、atchedXXiPrevious DataLatched图3.AD558真值表2.2 设计方案本次D/A接口(函数发生器)的设计中,转换结果是时时输出的。根据对 AD558真值表的分析可知:当CE和CS同时置0时AD558的工作模式为时 时输出。因此在本次设计中我只需要将CE和CS同时置即可。根据对AD558 功能的分析可知:利用VHDL语言编写源程序通过CPLD完成对AD558的控制,并与AD558结合可以完成四种波形的产生。8武汉理工大学EDA课程设计说明书具体设计方案如下:利用VHDL语言设计。255循环加法计数器、2 55-0 循环减法计数器、。1280循环加减计数器、。224等梯度
15、循环加法计数器便可 分别完成递增斜波、递减斜波、三角波、递增阶梯波的输出。每个计数器还设计 了片选端和清零端。当清零端为0时计数器恢复为初始状态。为了实现输出波形 模式的选择,在本次设计中我使用了一个四选一选择器:输入为2位逻辑数组输 出为4个一位逻辑量。每一种输入状态对于于一种输出状态,每个状态有且仅有 一位为1,其余3位皆为0,每个输出量与一种计数器的片选端相连接,即每个 输入状态都只选中一种输出状态。由于CPLD实验箱上没有D/A转换器,为了显示设计结果检验设计成果我 决定使用7段数码管显示产生波形的数字量。由于输出范围为。255,在十六进 制数0HEEH的范围内,而且实验箱上只有8个7
16、段数码管因此我各用2个7 段数码管显示4种波形的输出。在每个计数器输出端口和7段译码器中间添加一个输入频率为1000HZ的4 选1数据选择器,并利用两个拨码开关实现输入数据的选择。由于实验箱上自带 的时钟源频率为2 0MHZ,为了得到1000HZ的频率,我还设计了一个分频器。以上即为本次D/A接口(函数发生器)的主要设计方案。3.设计流程首先启动Quartus II软件如图4所示:9武汉理工大学EDA课程设计说明书3 HQUARTUSmVersion 6.0 ni|i in hum 卜 28r A A I*A 入 Cn.W.r 入 Eb A Mf JLl 3UI图4 Quartus II启动界
17、面接着利用向导,建立一个新的工程。在File菜单中选择New Project Wizard 选项启动项目向导。如图5所示,分别指定创建工程的路径,工程名和顶层文件 名。工程名和顶层文件可以一致也可以不同。一个工程中可以有多个文件,但只 能有一个顶层文件。这里我将工程名取为:keshe,顶层文件名取为zhuanhuan。如图5所示。10武汉理工大学EDA课程设计说明书图5创建工程界面图在图5所示界面点击NEXT按钮出现对话框如图6所示直接点Finish按钮然 后在出现的界面中依次点击File/new出现如图7所示界面。点击创建VHDL编 辑界面中VHDLFile按钮即进入VHDL语言编辑区如图8
18、所示。11武汉理工大学EDA课程设计说明书图6创建工程的结束界面Hev区IDevice Design Files|Other Files|AHDL FileBlock Diagram/Schematic FileEDIF FileSOPC Builder SystemVerilog HDL FileVHDL FileOK|Cancel图7创建VHDLFile对话框12武汉理工大学EDA课程设计说明书匕 l il t 力”(rajeft Fix-号 p 七 e 8 3Qv&rt us II-C:/al t rra/qt t jiB4 create symbol f ile f or curren
19、t f ile便可对相应的模块生产元器件。本次设计中对顶层文件采取原 理图输入法,利用前期设计的各模块的元器件图连接成整体电路图。修改设计直 至编译成功为止,电路原理图如图9所示:13武汉理工大学EDA课程设计说明书图9整体电路图原理图设计成功之后,根据实验箱上相应的管教,锁定管教之后再次编译,编译成功之后就可以把程序下载到实验箱上进行功能验证了。若功能验证结果符 合设计要求则设计至此结束。14武汉理工大学EDA课程设计说明书结束语通过这次EDA课程设计,我对课堂上所学到的理论知识的理解加深了许多,自己动脑、动手设计的能力也得到了较大提高。虽然我们这学期学习了 EDA这门课,但是由于学时十分有
20、限,当时学的有些 不系统。而且在第八周课程及结束了,十一周考完考试之后就几乎没有再接触 EDA的知识了。在此次课程设计之前,有许多细节我已经不是很清楚了,为此我 特意花了两天的时间提前再次学习了EDA技术与VHDL这本教材。我想这和课 堂上的学习一样是我能顺利完成本次课程设计的一个重要原因。在这次课程设计的过程中,我对VHDL语言有了更深的认识。通过查阅相关 资料和动手设计我发现我以前对VHDL语言的认识太过肤浅,认为VHDL语言只能 用于设计小型的电路系统。但有了更深刻的认识之后我发现学好VHDL语言可以 设计出大规模的、功能复杂的电路系统。以前之所以会有错误的认识是因为自己 对VHDL语言
21、的了解和掌握还不够。现在仔细想想,这次课程设计使得我对VHDL 语言的理解与应用能力得到了较大的提升,也让我认识到只要升入学习,提升的 空间永远的存在的。在设计的过程中我遇到了一些问题,如:编写源程序中出现了语法错误,使 用原理图设计顶层文件是对输入输入输出端口的位数选择错误和端口命名错误 等。通过查阅书本和以前设计的程序我发现了产生错误的原因并解决了问题完成 了设计。经过反思我发现较大一部分错误时因为操作的不熟练照成的,这也让我 明白了要保持设计的高效率及必须经常练习。另一方面我也发现了动手实践的重要性。动手实践是理论知识得以灵活运用 的必要前提,也是今后今后走上工作岗位之后能够很好的完成设
22、计工作的技术保 证。只有遇到实际问题并根据自己对课堂上获得的专业知识的理解来解决它才能 真正的提高自己的能力。这也提醒我在平时的学习生活中不能一味埋头于课本知 识,当今社会竞争越来越激烈,社会对人才的要求越来越全面,只有理论知识是 远远不够的,必须靠动手能力做支撑。因此在学习之余我们应该积极参加各种与 专业知识有关的实践活动和知识竞赛,巩固所学的理论知识,多注重培养实际动 手能力和专业技术能力,这样才能在以后的工作岗位上有所作为。15 16业.,2 006.1【7】刘艳萍高振斌李志平.EDA实用技术及应川.北京:国防工【6】章彬宏周正林.EDA应用技术.北京:北京理工大学.,2 007.7【5
23、】赵刚.EDA技术简明教程,成都:四川大学.,2 004.6【4】汉泽西.EDA技术及其应用.北京:北京航空航天大学.,2 004.5【3】付家才.EDA工程实践技术.北京:化学工业.,2 007.1【2】康华光.电子技术基础.北京:高等教育.2 006.12 005.7【1】潘松黄继业.EDA技术与VHDL(第二版).北京:清华大学.,参考文献武汉理工大学EDA课程设计说明书武汉理工大学EDA课程设计说明书附录分频器源程序:library ieee;use ieee.std_logic_l 164.all;use ieee.std_logic_unsigned.all;entity f pq
24、 isport(clk:in std_logic;f lout:out std_logic);end entity;architecture bhv of f pq issignal b:integer range 0 to 2 00000;beginprocess(clk)beginif clkevent and clk=l thenif b=2 0000 then b=0;f _out=,l,;elsif b2 0000 then b=b+l;f _out=,0,;end if;end if;end process;end bhv;4选1选择器源程序:library ieee;use ie
25、ee.std_logic_l 164.all;use ieee.stdogic_unsigned.all;entity xuanze4_l is port(al:in std_logic;a2:in std_logic;ql:out std_logic;17武汉理工大学EDA课程设计说明书q2:out std_logic;q3:out std_logic;q4:out std_logic);end entity xuanze4_l;architecture bhv of xuanze4_l issignal q:stdogic_vector(3 downto 0);signal a:std_l
26、ogic_vector(1 downto 0);beginprocess(a)begina q q q q=n1000H;end case;ql=q(0);q2=q(l);q3=q(2);q4=q(3);end process;end bhv;递增计数器源程序:llibrary ieee;use ieee.std_logic_l 164.all;use ieee.std_logic_unsigned.all;entity dizeng isport(clk,cs,ret:in std_logic;18武汉理工大学EDA课程设计说明书ql:buf f er integer range 0 to
27、2 56);end entity dizeng;architecture bhv of dizeng isbeginprocess(clk,cs,ret)beginif cs=r thenif ret=,0,then ql=0;elsif ret=r thenif clk!event and clk=r thenif ql=2 55 then ql=0;elsif ql2 55 then ql=ql+l;end if;end if;end if;end if;end process;end bhv;递减计数器源程序:library ieee;use ieee.stdogic_1164.all;
28、use ieee.std_logic_unsigned.all;entity dijian isport(clk,cs,ret:in stdogic;qkbuf f er integer range 0 to 2 56);end entity dijian;architecture bhv of dijian isbeginprocess(clk,cs,ret)19武汉理工大学EDA课程设计说明书beginif cs=*r thenif re仁O then ql=0;elsif ret=fr thenif clkevent and clk=l thenif ql=O then ql0 then
29、 ql=ql-l;end if;end if;end if;end if;end process;end bhv;三角波发生器源程序:library ieee;use ieee.std_logic_l 164.all;use ieee.stdogic_unsigned.all;entity sanjiao isport(clk,cs,ret:in std_logic;q:buf f er integer range 0 to 2 56);end entity sanjiao;architecture bhv of sanjiao issignal ql integer range 0 to 2
30、 56;beginprocess(clk,cs,ret,ql)beginif cs=r thenif ret=,0,then ql=0;elsif ret=*r then2 0武汉理工大学EDA课程设计说明书if clkevent and clk=T thenif ql=2 55 then ql=0;elsif ql2 55 then ql=ql+l;end if;end if;end if;end if;if ql=12 8 then q12 8 then q=2 55-ql;end if;end process;end bhv;递增阶梯波发生器源程序:library ieee;use ie
31、ee.std_logic_l 164.all;use ieee.stdogic_unsigned.all;entity jieti isport(clk,cs,ret:in std_logic;qkbuf f er integer range 0 to 2 56);end entity jieti;architecture bhv of jieti isbeginprocess(clk,cs,ret)beginif cs=r thenif ret=O then ql=0;elsif ret=*r thenif clkevent and clk=*r then if q1=2 2 4 then
32、ql=0;2 1武汉理工大学EDA课程设计说明书elsif ql2 2 4 then ql=ql+32;end if;end if;end if;end if;end process;end bhv;4选1选择器源程序:library ieee;use ieee.std_logic_l 164.all;use ieee.std_logic_unsigned.all;entity choose isport(ml,m2:in std_logic;a,b,c,d.in integer range 0 to 2 56;q:out integer range 0 to 2 56);end entity
33、 choose;architecture bhv of choose issignal x:std_logic_vector(0 to 1);beginx=ml&m2;with x selectq=a when n00n,b when 01”,c when“10”,d when others;end bhv;7段译码器源程序:library ieee;use ieee.std_logic_l 164.all;2 2武汉理工大学EDA课程设计说明书entity scan isport(clk:in std_logic;aa:in integer range 0 to 2 56;out3:buf
34、f er integer range 0 to 7;segout:out std_logic_vector(7 downto 0);end scan;architecture behave of scan issignal a,b,c,segin:integer range 0 to 9;begina=aa/100;b=(aa-100*a)/10;c=aa-100*a-10*b;processbeginwait until clkevent and elk二T;if out3=2 then out3=0;else out3seginseginseginnull;end case;end process;with segin selectsegout=n00111111 nwhen 0,n00000110nwhen 1,n010110Hnwhen 2,n010011Hnwhen3,n01100110nwhen 4,2 3武汉理工大学EDA课程设计说明书“01101101when5,”01111101”when 6,”00000111“when 7,01inni”when 8,H01101 llln when 9,unaf f ected when others;end behave;2 4
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100