版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA实验讲义林连冬 编著电子工程学院2010丁开慧S-213EDA实验讲义目录一、EDA实验系统概述二、实验内容实验一、基本逻辑电路的设计实验二、组合逻辑电路 实验三、VHDL与原理图混合方式设计电路(乐曲演奏电路)实验四、数字电子表实验五、有限状态机的VHDL语言设计方法(交通灯控制器)实验六、序列检测器一、EDA实验讲义概述EDA技术概述 :现代电子设计技术的核心是EDA(Electronic Design Automation)技术。EDA技术就是依赖功能强大的计算机,在EDA工具软件上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述
2、手段完成的设计文件,自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。EDA 技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。 一个完整的、典型的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。本实验以MAXPLUSII做为主要设计工具,并结合实验箱上的硬件电路设计实验课程,讲解如何用EDA技术进行数字电路的设计。一、CPLD/FPGA可编程器件的设计过程框图 可编程器件的设计过程与单片机的开发过程类似,同样包括程序的编辑、编译适
3、配、仿真调试及下载实现的几个部分,具体流程如下图所示。 CPLD/FPGA设计过程图NONOyes层次化设计图形输入文本输入C盘建目录建立项目文件选择器编译仿真分析管脚分配重新编译下载或编译验证逻辑正确yes设计正确形成下载文件设计输入设计实现 设计生成 硬件下载 二、硬件安装及使用说明 本实验开发系统在出厂时以按用户要求配备好了相关的主芯片适配器、编程电缆、实验指导书、连接导线及相关软件。II、III、IV型实验箱均自带开关电源,用户只需接入220V电源即可。本实验装置无须添加其它设备,仅须与计算机连接便可进行所有实验。硬件安装及使用中需要注意的几个实验步骤如下:1、 打开实验箱,检查并核实
4、设备完好及附件齐全;2、 检查下载编程电缆标识:不同公司的编程电缆是不同的,如Altera公司的编程电缆出厂时标有Altera字Lattice公司的电缆有两种:一种是数字器件编程电缆,标有Lattice字样;另一种是模拟芯片编程电缆,其上标有PAC字样,其它厂家类似。使用时一定要注意编程电缆不能混用,否则程序不能正确下载。同一厂家的CPLD/FPGA芯片的下载电缆是一样的。3、 安装下载编程电缆:确保安装的下载编程电缆与当前实验箱上适配器芯片相一致,然后将其25针的接插头连接到计算机的并行口上,另一端连接到实验箱的JTAG编程座上,并确保电缆两端接触良好。注意,IV型实验箱上有两个编程接口,标
5、有DIGATAL字样、一个是模拟芯片接口,标有ANALOG字样,注意不要接错。I、II、III型实验箱均只有一个数字芯片编程接口,位于实验箱的左上角。4、 开启实验箱电源,电源指示灯亮。本电源为五伏开关电源,有短路和自恢复等功能。如电源指示灯不亮,请检查是否已接入220V电源或其它原因所致。5、 硬件安装结束,打开实验箱电源,此时便可进行软件编程下载。程序正常下载时,其编程接口下边的状态指示灯处于闪烁状态,如不能正确下载,请检查是硬件问题还是软件设置问题?6、 实验时严禁带电接插,以防损坏电路芯片。如有异常请及时切断电源并排除故障。三、软件简介及安装(一) Max+plus 教学软件是免费的,
6、软件支持VHDL语言的所有功能,安装时你需要到Altera公司的网页去申请一个授权软件(软件安装部分有详细说明),本授权文件或来自于代理商(即License.dat文件)只有在你的软件中安装了License.dat文件以后方可启动使用此Maxplus 软件。教学软件支持多种设计输入(原理图编辑、符号法编辑、VHDL语言编辑、波形编辑)、功能仿真和时序分析。(二) 软件安装 该设计软件运行在Windows95/98操作系统下,计算机配置最好不低586(CPU/200M、内存/32M、硬盘/2G)的机器。软件的安装步骤如下;(1) 将光盘插入计算机光驱,假定您光驱号为E;(2) 打开光驱E: Ma
7、x+plus 9.5fullsetup.exe文件; (3) 点击运行setup.exe文件;(4) 按Next,并选择yes 接受协议;(5) 选择适当的安装方式(一般选择默认安装即可),并按下Next。(6) 单击Browse按钮,选择安装路径(假设为d:),按下Next,直到安装完成。这时该软件自动在d:生成Max+plus 等文件。(7) 将光盘随即附送的LICENSE.DAT 文件拷贝至安装后的D Max+plus 软件包根目录下即可。注意:LICENSE.DAT文件来自于Altera网站授权或代理商授权。(8) 点击Windows程序组下的altera Max+plus 9.5图标
8、,启动本软件,注意:第一次启动软件会有几个对话框口,提示没有安装License文件或软件狗,并附有其公司网址及如何申请License授权文件等说明。(9) 选择并点击OptionsLicense setup 菜单,单击License setup,使用Browse浏览器指出License.dat文件所在路径。即拷贝License.dat文件后的路径d: Max+plus License.dat。(10) 单击ok 按钮确认即可,至此你已经成功的完成了整个软件的安装。注意:本安装过程以其9.5版本为例介绍的,其它如10.0等版本安装过程类似.实验一、基本逻辑电路的设计 (1)实验目的 :熟悉利用M
9、AXPLUSII的原理图输入方法设计简单组合电路的思想,掌握层次化设计的方法,并通过一个1位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。学会对实验箱上的FPGA/CPLD进行编程下载,硬件仿真验证自己的设计项目。(2)实验原理:一个一位全加器可以由两个一位的半加器组成。在实际的设计中我们可以先设计两个半加器作为元件然后再在一个更高的原理图设计层次里调用之。(3)实验设备:EDA IV型实验箱。(4)实验步骤 : 步骤1 :为本项工程设计建立文件夹。 任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置此工程相关的文件的文件夹,此文件夹将被EDA软件默认为工作
10、库。一般不同的设计项目最好放在相应的文件夹中,一个设计项目可以包含多个设计文件。 假设本设计的文件夹名为MY_PRJCT,路径为D:MY_PRJCT(注意:MAXPLUSII不支持中文,所以项目名称和路径都应以英文命名) 。 步骤2 :输入设计项目和存盘a) 打开MAXPLUSII,选择菜单“File” “New”在弹出的对话框中选择“Graphic Editor file”,按“OK”后打开原理图编辑器。b) 在新打开的窗口出双击鼠标左键,打开元件库,添加元件。c) 选择菜单“File” “Save As” ,将文件取名为:h_adder.gdf(文件名不能以数字和中文开头),并存到D:MY
11、_PRJCT 下。并完成原理图设计(原理图如下图)。AND2 NOT XNOR INPUT OUTPUTd) 将设计项目设置成当前工程文件(Project) 编译、仿真和测试只针对当前工程文件,所以想要编译某一项目前应先将其设为当前工程文件。方法见下图。e) 选择目标器件并编译 。 为了获得与目标器件对应的、精确的时序仿真文件,在对文件编译前必须选定最后实现本项目的目标器件,菜单命令如下“Assign” “Device”。在弹出的对话框中做如下设定。(Device Family:ACEX1k Device: EP1K100QC208-3)开始编译:选择菜单“MAX+plusII” “Compi
12、ler” “Start”,编译结果如下。 f) 时序仿真 接下来应该测试设计项目的正确性,即进行仿真,具体步骤如下:(1)建立波形文件。选择菜单“File” “New ” “Waveform Editer file” ,打开波形编辑器。(2)输入信号节点。在上图所示的波形编辑窗的上方选择菜单“Node” “Enter Node from SNF” “List”这时在左列表框将列出该设计的所有信号节点。利用“=”按钮选中需要观察的信号节点,然后单击“OK”。(3)设置波形参量。 参量1 :“Option” “Snap to Grid” 参量2 :“File” “End Time” ,如可选34u
13、s(34微秒)以便有足够长的观察时间 (4)加上输入信号。(如下图) (5)波形文件存盘。以默认名字存盘即可,执行仿真命令前必须先执行保存操作。 (6)运行仿真器。选择主菜单“MAX+plusII” “Simulator ” “Start” (7)观察仿真结果。如果不符合设计预案则更改设计,再重新仿真,直至达到设计要求。 (8)包装元件入库。 重新打开半加器设计文件h_adder.gdf ,选择菜单“File” “Create Default Symbol”选项将当前文件变成一个包装好的单一元件(Symbol),并被放置在工程指定的目录中以备后用。g) 引脚锁定。 如果以上的仿真测试正确无误,
14、就应该将设计编程下载到选定的目标器件中去作硬件测试,以便了解设计项目的正确性。这就需要进行引脚锁定和编程下载两个步骤。选定菜单“Max+plusII” “Floorplan Editor”锁定引脚。如下图(注意锁定引脚后一定要重新编译一次,并且引脚最好分配到标有I/O的端口,引脚的分布情况和实验箱上芯片周围的引脚分布一样)h) 编程下载。(1)下载方式设定。“Max+plusII” “Programmer” “Options” “Hardware Setup” “ByteBlaster(MV)”。 此编程方式对应计算机的并口下载通道。 (2)添加下载文件。“JTAG”->“multi-D
15、evice JTAG Chain Setup.” “Select Programming File”->选择扩展名为“*.sof”的文件,单击确定-“add”-“ok”。 (3)下载。如下图所示单击“Configure”按钮,到此为止,完整的设计流程已经结束。VHDL文本输入的设计可参考这一流程。 i) 设计顶层文件 可以将前面的工作看成是完成了一个底层元件的设计,并被包装入库。现在利用已经设计好的半加器,完成顶层项目全加器的设计,步骤可参考以上设计流程:(原理图如下)(j)设计流程归纳。步骤1:建立工作库文件夹步骤6:启动编译步骤7:建立仿真波形文件步骤5:选择目标器件步骤4:将设计项
16、目设置成Project步骤3:存盘,注意原理图/文本取名步骤2:输入设计项目原理图/VHDL代码步骤8:仿真测试和波形分析步骤11:硬件测试步骤9:引脚锁定并编译步骤10:编程下载/配置五、实验过程与分析1、分别画出半加器和全加器的原理图2、写出加法器的各个端口延迟数据表;3、写出全加器硬件测试结果(用真值表的形式给出答案)。六、实验结果总结:1、思考题目:设计一个四位的全加器,并实验验证。在实验报告中给出此设计的原理图及适当的说明;实验二、组合逻辑电路一、实验目的:1.掌握组合逻辑电路的设计方法.2.掌握组合逻辑的静态测试方法.3.加深理解FPGA设计的过程,掌握用VHDL语言设计数字电路的
17、方法。二、实验原理:1. 将与4位二进制数相对应的BCD编码的内容显示在一位七段数码管上。2采用扫描显示的原理, 在8个数码管上同时显示BCD译码器的输出结果。点亮一个七段数码管,用译码器就可以了。但是当需要点亮多个七段数码管的时候,由于FPGA的I/O口不能够提供足够大的驱动电流去点亮多个七段数码管,因此只能利用扫描显示电路来实现扫描显示。三、实验设备:1.输入信号接拨码开关.2.输出信号接七段数码管显示电路。3.主芯片: EP1K100QC208-3。四、实验步骤:1.七段数码管显示器:(1).原理及原理图: 为了能以十进制数码直观地显示数字系统的运行数据,目前广泛地使用了七段字符显示器或
18、称做七段数码管。这种字符显示器由七段可发光的线段拼合而成。常见的七段字符显示器有半导体数码管和液晶显示器两种。本实验中用到的是半导体数码管。这种数码管的每个线段都是一个发光二极管(Light Emitting Diode,简称LED),因而也把它叫做LED数码管或LED七段显示器。(2).管脚图:程序一:数码管的静态显示电路(完成BCD译码器功能)- *LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-*ENTITY Seg7 isPORT
19、(NUMIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);SELOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);SEGOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END Seg7;-*ARCHITECTURE a OF Seg7 ISSIGNAL NUM : STD_LOGIC_VECTOR( 3 DOWNTO 0);SIGNAL SEG: STD_LOGIC_VECTOR( 6 DOWNTO 0);BEGIN Connection : BlockBeginSELOUT <= "000&qu
20、ot;SEGOUT(6 DOWNTO 0) <= SEG;SEGOUT(7) <= '1'NUM<=NUMIN;End Block Connection;SEVEN_SEGMENT : BlockBegin-gfedcbaSEG <= "0111111" WHEN NUM = 0 ELSE"0000110" WHEN NUM = 1 ELSE"1011011" WHEN NUM = 2 ELSE"1001111" WHEN NUM = 3 ELSE"1100110&
21、quot; WHEN NUM = 4 ELSE"1101101" WHEN NUM = 5 ELSE"1111101" WHEN NUM = 6 ELSE"0000111" WHEN NUM = 7 ELSE"1111111" WHEN NUM = 8 ELSE"1101111" WHEN NUM = 9 ELSE"1110111" WHEN NUM = 10 ELSE"1111100" WHEN NUM = 11 ELSE"0111001&qu
22、ot; WHEN NUM = 12 ELSE"1011110" WHEN NUM = 13 ELSE"1111001" WHEN NUM = 14 ELSE"1110001" WHEN NUM = 15 ELSE"0000000"End Block SEVEN_SEGMENT;END a; 2、利用扫描显示的原理设计多位数码管的显示驱动电路,要求将开关输入的二进制数字信号译成BCD编码后在八个数码管上同时显示出来,例程参考程序2,注意理解如何使用计数器进行分频电路的设计。例程2:LIBRARY IEEE;USE I
23、EEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Seg7_Dsp isPORT( CP: IN STD_LOGIC; SEGOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); SELOUT: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);NUMIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);END Seg7_Dsp;ARCHITECTURE a OF Seg7_Dsp ISSIGNAL NUM
24、 : STD_LOGIC_VECTOR( 3 DOWNTO 0);SIGNAL SEG: STD_LOGIC_VECTOR( 6 DOWNTO 0);SIGNAL SEL: STD_LOGIC_VECTOR( 5 DOWNTO 0);BEGINConnection : BlockBeginSELOUT <= SEL; SEGOUT(6 DOWNTO 0) <= SEG;SEGOUT(7) <= '1'NUM <= NUMIN;End Block Connection;Free_Counter : Block- 计数器 - 产生扫描信号 Signal Q:
25、 STD_LOGIC_VECTOR(24 DOWNTO 0);SignalS : STD_LOGIC_VECTOR(2 DOWNTO 0);BeginPROCESS (CP)- 计数器计数 BeginIF CP'Event AND CP='1' thenQ <= Q+1;END IF;END PROCESS;S <= Q(15 DOWNTO 13);SEL <= "000" WHEN S=0 ELSE"001" WHEN S=1 ELSE"010" WHEN S=2 ELSE"011
26、" WHEN S=3 ELSE"100" WHEN S=4 ELSE"101";End Block Free_Counter;SEVEN_SEGMENT : Block- Binary Code -> Segment 7 CodeBegin -gfedcbaSEG <= "0111111" WHEN NUM = 0 ELSE "0000110" WHEN NUM = 1 ELSE "1011011" WHEN NUM = 2 ELSE"1001111"
27、WHEN NUM = 3 ELSE"1100110" WHEN NUM = 4 ELSE"1101101" WHEN NUM = 5 ELSE"1111101" WHEN NUM = 6 ELSE "0000111" WHEN NUM = 7 ELSE "1111111" WHEN NUM = 8 ELSE"1101111" WHEN NUM = 9 ELSE"1110111" WHEN NUM = 10 ELSE"1111100" W
28、HEN NUM = 11 ELSE"0111001" WHEN NUM = 12 ELSE"1011110" WHEN NUM = 13 ELSE"1111001" WHEN NUM = 14 ELSE"1110001" WHEN NUM = 15 ELSE"0000000"End Block SEVEN_SEGMENT;END a;四、 实验结果总结:1、计算例程2扫描信号的频率大小并说明选择该频率作扫描信号的原因(设基频为5MHZ)。2、写出计算扫描频率的公式。3、参考例程3-2改写程序,用
29、8个数码管做显示输出。并在报告中给出修改后的代码(需标注清楚修改例程代码的地方)。实验三 VHDL与原理图混合方式设计电路(乐曲演奏电路)一、实验原理乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。在EDA开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计乐曲硬件演奏电路,并定制LPM-ROM存储音乐数据,以“梁祝”乐曲为例,将音乐数据存储到LPM-ROM,就达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改LPM-ROM所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新定制LPM-ROM,连接到程序中就可以实现其它乐曲的演奏。3.1 音乐演奏电路原理
30、先介绍一下硬件电路的发声原理。声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。3.2 音符频率的获得 多个不同频率的信号可通过对某个基准频率进
31、行分频器获得。由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。本文中选取750KHz的基准频率。由于现有的高频时钟脉冲信号的频率为12MHz,故需先对其进行16分频,才能获得750KHz的基准频率。对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将
32、原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。由于最大分频系数是1274,故分频器采用11位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设为0,即初始值=211-1=2047,此时扬声器不会发声。3.3 乐曲节奏的控制 梁祝乐曲,最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要提供一个4Hz的时钟频率即可产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。 计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,
33、演奏的速度自然降低。3.4 乐谱发生器本实验将乐谱中的音符数据存储在LPM-ROM中,如“梁祝”乐曲中的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,音符“3”就要在LPM-ROM中连续的四个地址上都存储。当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。3.5 乐曲演奏电路原理框图 当一个4Hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数,将分频系数送给数控分频器模块,当12MHz的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应
34、音符的声音来.连续的4Hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了.综上所述,得到乐曲演奏电路的原理框图如图3-1所示图3-1二、实验内容:根据顶层原理图,共分为地址发生器模块、分频预置数模块、数控分频模块这三个模块。而music模块是存放乐曲中的音符数据,在我们的顶层原理图中并没有显示出来,地址发生器模块作为music模块中所定制的音符数据ROM的地址发生器,分频预置数模块提供分频预置数即给数控分频模块提供计数初值。数控分频模块根据分频预置数输出各个音符所对应的频率
35、。3.2.1 地址发生器的VHDL设计地址发生器模块设置了一个8位二进制计数器(计数最大值为138),作为音符数据ROM的地址发生器。每来一个时钟脉冲信号(Clk),8位二进制计数器就计数一次,ROM文件中的地址也就随着递增,音符数据ROM中的音符也就一个接一个连续的取出来了。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs ISPORT (clk: IN STD_LOGIC; ToneIndex:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);E
36、ND;ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC_ROMPORT (address: IN STD_LOGIC_VECTOR(7 DOWNTO 0); inclock: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT;SIGNAL Counter: STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINCNT8: PROCESS(clk,Counter)BEGINIF Counter=138 THEN Counter<="00000
37、000"ELSIF (clk'EVENT AND clk='1') THEN Counter<=Counter+1;END IF;END PROCESS; u1:MUSIC_ROM PORT MAP(address=>Counter,q=>ToneIndex,inclock=>clk);END one;程序的功能是每来一个时钟,地址值递增1,并将这个地址上所存储的音符数据输出。当Clk来了一个时钟脉冲,输出相应地址上的音符3,地址值递增1;接下来的三个时钟脉冲来时,输出也是音符3,地址连续递增3次;再下一个脉冲来时,输出为音符5等等都符
38、合模块中的音符数据文件中的地址/数据表。3.2.2 分频预置数模块的VHDL设计模块的功能是输出各个音符所对应的分频预置数,当index是“0000”,tone输出为2047,即休止符的分频预置数;当index是“0101”时, tone输出为1197即低音5的分频预置数;当index是“1111”时, tone输出为1728即高音1的分频预置数等等其它状态时,tone分别输出相应音符的分频预置数。library ieee;use ieee.std_logic_1164.all;entity tonetaba isport(index: in std_logic_vector(3 downto
39、 0); code: out std_logic_vector(3 downto 0); high: out std_logic; tone: out std_logic_vector(10 downto 0);end entity tonetaba;architecture one of tonetaba isbeginsearch:process(index)begincase index iswhen"0000"=>tone<="11111111111"code<="0000"high<='0
40、39;-2047;when"0001"=>tone<="01100000101"code<="0001"high<='0'- 773;when"0010"=>tone<="01110010000"code<="0010"high<='0'- 912;when"0011"=>tone<="10000001100"code<="001
41、1"high<='0'-1036;when"0101"=>tone<="10010101101"code<="0101"high<='0'-1197;when"0110"=>tone<="10100001010"code<="0110"high<='1'-1290;when"0111"=>tone<="10101011100
42、"code<="0111"high<='1'-1372;when"1000"=>tone<="10110000010"code<="0001"high<='1'-1410;when"1001"=>tone<="10111001000"code<="0010"high<='1'-1480;when"1010"=>to
43、ne<="11000000110"code<="0011"high<='1'-1542;when"1100"=>tone<="11001010110"code<="0101"high<='1'-1622;when"1101"=>tone<="11010000100"code<="0110"high<='1'-1668;whe
44、n"1111"=>tone<="11011000000"code<="0001"high<='1'-1728;when others=>null;end case;end process;end one;3.2.3数控分频模块的VHDL设计其时钟(Clk)端输入的是12MHz的信号,从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,这时的频率就变为原来的1/2,刚好就是相应音符的频率。数控分频模块中对Clk输入信号的分频比由11位预
45、置数tone10.0决定。Fout的输出频率将决定每一个音符的音调,这样,分频计数器的预置值tone10.0与Fout的输出频率就有了对应关系。例如在分频预置数模块中若取tone10.0=1036,将发出音符为“3”音的信号频率。程序如下:use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speakera isport(clk: in std_logic; tone: in std_logic_vector(10 downto 0); spks: out std_logic);end entity speake
46、ra;architecture one of speakera issignal preclk,fullspks: std_logic;begindivideclk: process(clk)variable count4: std_logic_vector(3 downto 0);beginpreclk<='0'if count4>11 then preclk<='1'count4:="0000"elsif clk'event and clk='1' then count4:=count4+1;en
47、d if;end process;genspks: process(preclk,tone)-11variable count11: std_logic_vector(10 downto 0);beginif preclk'event and preclk='1'thenif count11=16#7ff#then count11:=tone;fullspks<='1'else count11:=count11+1;fullspks<='0'end if;end if;end process;delayspks: proces
48、s(fullspks)variable count2: std_logic;beginif fullspks'event and fullspks='1' then count2:=not count2;if count2='1' then spks<='1'else spks<='0'end if;end if;end process;end one;3.2.4 music_rom模块Music_rom模块存放乐曲中的音符数据,它是利用LPM-ROM来实现的,将乐谱中相应的音符放在一个连续的地址上。它首先是编
49、写音符数据文件,将乐谱中相应的音符存放在一个连续的地址上。因为1拍的时间定为1秒,提供的是4Hz的时钟频率(即1/4拍的整数倍),则需将这个音符存储在相应次数的连续几个地址上。然后对音符数据进行ROM定制,最后对定制好的ROM文件进行测试和仿真。width=4;depth=256;address_radix=dec;data_radix=dec;content begin00:3;01:3;02:3;03:3;04:5;05:5;06:5;130:5;131:5;132:5;133:5;134:5;135:5;136:0;137:0;138:0;end;其中WIDTH=4,表示数据输出为宽为4
50、;DEPTH=256,表示共有256个4位数据点;ADDRESS-RADIX=DEC,表示地址信号用十进制;DATA-RADIX=DEC,表示输出数据是十进制数。文件编辑好后,保存时取文件名为“mucic_rom.mif”,存盘的路径为“D:testmucic”。3.2.5 LPM-ROM定制(1)进入MAXPLUSII,选菜单 file->megawizard plug-in manager,选择“creat a new”,然后按“next”键,进入图2所示界面。选择LPM-ROM;最后在browse下的栏中键入路径与输出文件名:“D:test music music_rom.vhd”
51、,注意后缀vhd小写。(2)单击“next”键,将出现图3所示的界面,选择ROM数据位宽度为4,地址线宽为8,即设置此ROM能存储8位二进制数据共64个,然后进入图4所示的窗口(3)通过在图4所示窗口的“browse”钮,找到ROM中的加载文件路径和文件名:“D:testmucic music.mif”,注意ROM元件的inclock是地址锁存时钟。3.2.6 顶层文件见图1将所编写的顶层文件程序设为当前工程,通过对程序进行编译,仿真,确定工程没有错误后经过引脚锁定就可以下载到EDA试验箱中了。通过试验箱上的蜂鸣器我们可以听到“梁祝”的乐曲。三、实验结果总结:1、画出系统的框图,说明各个模块的
52、作用。实验四 电子表一、 实验目的: 通过对电子表例程的分析、改进,掌握复杂电路的调试方法,元件例化语句的使用方法,熟悉大规模复杂时序电路的设计方法,掌握层次化的设计思路,通过此实验能够熟练的应用VHDL语言和EDA设计工具独立的完成复杂设计。二、 实验原理:下图为数字电子表的原理图。BCD (7-4) DBSCLR 时钟显示电路方框图SEC 24进制计数器60进制计数器60进制计数器BCD à 七段译码电路BCD 选择BCD(8)ßBIN(6)6 个七段数码管扫描电路 S(3) SEG (8) NUM(4) BCD (3-0) ENB (0) ENB (1) ENB (2
53、) DBHDBMBIN ( 6 ) CYH CYS CYM 分频器QCP 38译码三、 实验设备:1、用实验箱上的八个七段数码管做电子表的显示器,用拨码开关做为输入。(注意:要把20进制和60进制计数器的元件例化程序与电子表工程文件放在同一工程文件夹下),取实验箱上晶振的5M频率做为基频。四、 实验步骤:例1:24进制计数器的VHDL语言源代码如下:(做完后,修改此代码实现60进制计数器功能,然后将两个计数器(60进制与24进制)程序文件与电子表的设计程序文件(即例2)保存在同一个文件夹下)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.ST
54、D_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER24 ISPORT(CP : IN STD_LOGIC;-时钟脉冲 BIN : OUT STD_LOGIC_VECTOR (5 DOWNTO 0);-二进制 S : IN STD_LOGIC;-输出启动信号 CLR : IN STD_LOGIC;-清除信号 EC : IN STD_LOGIC;-使能计数信号 CY24 : OUT STD_LOGIC-计数24进位信号 );END COUNTER24;-*ARCHITECTURE a OF COUNTER24 ISSIGNAL Q : STD_LOGIC_VECTOR (4 DOWNTO 0) ;SIGNAL RST, DLY : STD_LOGIC;BEGINPROCESS (CP,RST)- 计数24 BEGINIF RST = '1' THENQ <= "00000"- 复位计数器 ELSIF CP'event AND CP = '1' THENDLY <= Q(4);IF EC = '1' THENQ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核心素养导向教学
- 《GB-T 28200-2011钢制储物柜(架)技术要求及试验方法》专题研究报告
- GBT 19290.7-2021发展中的电子设备构体机械结构模数序列 第2-5部分:分规范 25 mm设备构体的接口协调尺寸 各种设备用机柜接口尺寸专题研究报告
- 《宠物鉴赏》课件-宠物鸟的简介
- 2026年安徽省马鞍山市单招职业倾向性测试题库及参考答案详解一套
- 心血管留图资料
- 云数据库运维服务合同
- 智能电表调试技师(初级)考试试卷及答案
- 种子包装设计行业种子包装设计师(蔬菜)岗位招聘考试试卷及答案
- (2025)全国劳动保障知识竞赛题库与参考答案
- 2025年烟花爆竹经营单位安全管理人员考试试题及答案
- 2025天津大学管理岗位集中招聘15人参考笔试试题及答案解析
- 2025广东广州黄埔区第二次招聘社区专职工作人员50人考试笔试备考题库及答案解析
- 2025年云南省人民检察院聘用制书记员招聘(22人)考试笔试参考题库及答案解析
- 旋挖钻机地基承载力验算2017.7
- xx乡镇卫生院重症精神病管理流程图
- 2023年印江县人民医院紧缺医学专业人才招聘考试历年高频考点试题含答案解析
- 安徽绿沃循环能源科技有限公司12000t-a锂离子电池高值资源化回收利用项目(重新报批)环境影响报告书
- 《汽车电器故障问题研究4600字(论文)》
- 公路工程标准施工招标文件第八章-工程量清单计量规则(2018年版最终稿)
- DB44-T 2197-2019配电房运维服务规范-(高清现行)
评论
0/150
提交评论