EDA技术与应用实验指导书(第2版)_第1页
EDA技术与应用实验指导书(第2版)_第2页
EDA技术与应用实验指导书(第2版)_第3页
EDA技术与应用实验指导书(第2版)_第4页
EDA技术与应用实验指导书(第2版)_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、EDA 技术与应用实验指导书习题参考答案邹红文2015. 11目 录实验一 QUARTUS II 软件入门1实验二 VHDL数字频率计11实验三 DDS信号发生器15实验四 运算器21实验五 微控制器(1)28实验六 微控制器(2)32实验七 音乐播放器3844实验一 QUARTUS II 软件入门一、实验目的表1 QUARTUSII中几种常用门电路的名称及其逻辑符号与门或门非门与非门或非门异或门AND2OR2NOTNAND2NOR2XORAND3OR3NAND3NOR3学习QUARTUSII的使用方法:建立原理图文件、工程文件、波形图文件以及仿真;掌握波形分析方法。学习QUARTUSII几种

2、常用门电路的符号、逻辑功能。二、实验内容1. 以“与门”为例,练习原理图的仿真步骤。2. 以“选择器”为例,练习VHDL的仿真步骤。三、原理图的仿真步骤1建立文件夹,用于存放所有的实验内容。文件夹名称为你的学号,例如:B0511。2在文件夹“B0511”中建立文件夹“实验一”,存放实验一的内容。再建立子文件夹“与门”。请特别注意:“与门”这个文件夹在下面第6步保存波形图文件时还要用到!图2 新建原理图文件图1 与门逻辑电路图3按照图1建立原理图文件YM2.BDF(不区分大小写!)选菜单FILENEW,进入图2,选BLOCK DIAGRAM ,系统自动打开一个空白设计页面。点工具 , 打开图3。

3、在图3中,选择PRIMITIVESLOGICAND2,单击OK。然后在图4中单击左键,把与门AND2放置到设计页面中。 击右键,选择CANCEL,结束与门的放置,见图4。图3 选择2输入与门 图4 取消与门的放置添加输入输出引脚,更改引脚名称,连线。在图3中选PRIMITIVESPININPUT,单击OK ,然后在原理图中放置2个INPUT。在图3中选PRIMITIVESPIN OUTPUT,单击OK ,然后在原理图中放置1个OUTPUT。双击引脚,在系统对话框PIN PROPERTIES(引脚属性,如图5所示)中分别输入新引脚名A(B、Y)之后,单击“确定”。最后的电路图如图1所示。图5 修

4、改引脚的名称把原理图文件保存到保存到第2步建立的文件夹“与门”中:选择菜单项“保存”,输入文件名YM2,系统加的后缀BDF不变。图6 询问是否为原理图文件建立工程4建立工程(PROJECT)文件(YM2.QPF) 第步完成之后,系统弹出对话框图6,询问是否为原理图文件建立工程,选“是”,系统接着弹出“NEW PROJECT WIZARD” 对话框,如图7所示,在该对话框系统自动建立工程文件名YM2和实体名YM2。选FINISH,完成工程的建立。图7 系统自动设置工程名ym2和实体名ym2 图9 建立波形文件5编译工程点击编译工具 ,编译成功后系统显示图8。 图8 系统给出编译成功信息6建立波形

5、文件 选菜单FILENEW,进入图9,选OTHER FILESVECTOR WAVEFORM FILE,单击“保存”,然后输入文件名YM2,(后缀VWF系统自动添加)。请特别注意:系统自动保存到第2步建立的文件夹“与门 ”中,请不要更改路径!图10 插入结点或总线7修改系统默认仿真终止时间(可以跳过本步骤)选菜单EDITEND TIME ,系统默认时间是1US(微秒),改为400NS。8在波形图中添加结点选菜单EDITINSERT NODE OR BUS ,打开图10,单击NODE FINDER,进入图11。按照图11,把 FILTER 设置为PINS:ALL, LOCK IN 设置为 YM2

6、(一般是默认当前打开的波形文件名,也可以击浏览按钮,自行选择文件)。点按钮LIST,系统在图11中列出结点名称,把结点移到右边,单击OK。图11 选择所需结点 图12 设置周期性输入信号的输入值设置周期设置范围9在波形图中设置输入结点的值点击变量名称,选中一个变量(变为蓝色表示选中),然后点工具 ,打开图12。图12的功能:设置周期性输入信号的输入值。在图的上部设置输入信号的持续时间范围(TIME RANGE),本例范围是0-400NS。下部设置输入信号的周期和占空比,本例信号变化周期80NS,占空比50%。按照图13设置输入信号AB的波形在波形图中。选A,打开图12,输入80NS,占空比50

7、%。在波形图中选B,打开图12,输入160NS,占空比50%。修改波形图的显示比例。单击 之后,把鼠标放到波形图的时间标尺上(如图13所示),击右键缩小图形,击左键放大图形。图13 设置输入信号AB的波形bcad时间标尺10仿真并分析波形选菜单PROCESSING SIMULATOR TOOL,打开图14。按图14设置SIMULATION MODE 为FUNCTIONAL ,即设置仿真模式为功能仿真。系统在SIMULATION INPUT中自动显示当前打开的波形文件(YM2.VWF),也可自行定位文件的位置。点击 GENERATE FUNCTIONAL SIMULATION NETLIST按钮

8、。第步成功后,先点击START按钮,成功后再点击 REPORT按钮,显示仿真波形图,请大家分析波形。图14 设置仿真模式为功能仿真四、VHDL仿真步骤1、新建文件夹“选择器”。2、打开软件。3、新建VHDL文档,录入程序。 保存到文件夹“选择器”中,文件名为实体名。4、系统询问“是否建立工程?”,回答“是”。5、编译和仿真步骤与原理图的步骤相同。五、作业准备工作:设你的学号最后2位数是X,请按下面要求计算你的常数M,把M转换为5位二进制形式,填空:M= 要求:如果X30,M=X-3。如果30 > X 20,M=X+1。如果20 > X 10, M=X+11。如果X <10,M

9、=X+21。1、设计一个四选一数据选择器。仿真要求:设置输入数据A、B、C、D的周期分别是M、2M、4M、8M(单位NS)。说明仿真波形图意义。参考答案:设M=10#12#波形图:A、B、C、D的周期分别是12ns,24ns,48ns,96ns S1的周期:192NS, S0的周期:384NS。 96ns:y=a;96ns-192ns:y=c;192ns-288ns:y=b;288ns-384ns:y=d 2、设计一个加法器,(1)要求计算A+B 、 C+D。(2)比较大小,得出求A>B和C>D的值。设AB是无符号数,CD是有符号数,ABCD都是5位二进制数。假设输入值A=M,C=

10、M,B和D是任意5位二进制数。请写出下列各数值:A= ,B= ,C= ,D= 。 编写代码,调试并仿真,说明波形图意义,写出A+B 和 C+D的计算过程。参考答案:设M=10#28#=2#11100#设A=10#28#=2#11100#设C=10#28#设B=10#5#设D=10#2#无符号数相加: A+B= 11100+00101=1 00001 ,进位位舍去 带符号数相加: c+d =11100+00010= -4+2 = -2 =11110A=11100=-4,B=00101=5, A>B是假C=11100=28,D=00010=2, C>D是真3、设计含复位端和时钟使能端的

11、D触发器。画出D触发器逻辑符号。设置输入时钟的周期是M(单位NS)。说明仿真波形图。参考答案:设M=10#10#符号图:波形图说明:10NS 之前:复位20NS:EN=1,D=125NS:CLK上升沿,Q=D4、设计8位锁存器。设置输入时钟的周期是10(单位NS)。输入数据是M。参考答案:设M=10#12#CLK上升沿有效输入数据是00001100,在5NS时锁存。5、设计一个5位二进制加法计数器,要求最大计数值是M,并且计数到M后输出进位1。仿真要求:设置输入时钟的周期是M(单位NS)。说明仿真波形图意义。参考答案:设M=10#12#,波形图 :说明: 计数到12产生进位 计数到12后归0,

12、 重新开始计数 6、设计5位移位寄存器:(1)并行输入M,然后设移位5次,画出波形图。(2)说明移位寄存器波形图的意义。参考答案:设M=10#12#,波形图 : 5NS:并入初值01100 15NS:移位,最高位0不变,移出最低位025NS:移位,最高位0不变,移出最低位035NS:移位,最高位0不变,移出最低位145NS:移位,最高位0不变,移出最低位155NS:移位,最高位0不变,移出最低位07、设计一个8线-3线优先编码器。仿真要求:设置每个输入数据的延时时间是M(单NS)。说明仿真波形图意义。参考答案:设M=10#12#,波形图 :输入低电平有效,输出反码 。 优先级从高到低:DIN7

13、DIN0 。8、设计七段数码显示译码器:(1)设置输入信号延时时间是M(单位NS)。画出仿真波形图。(2)说明波形图的意义。参考答案:设M=10#12#,波形图 :输出09和字母ABCDEF;每个数据延时时间12NS。9、设计硬件消抖电路:(1)设置输入时钟的周期是M(单位NS)。画出波形图。(2)说明波形图的意义。参考答案:设M=10#12#,波形图 :说明:277NS之前:输入高电平2次,第三次持续时间超过13个时钟周期,第14个CLK上升沿输出高电平593NS之前:输入低电平2次,第三次持续时间超过8个时钟周期,第9个CLK上升沿输出低电平10、设计密码检测器,要求检测到你的密码M(5位

14、二进制数)之后,输出标志位1。波形图设置要求:CLK周期设置为10(单位NS)。设置有效数据和二种无效数据。说明波形图的意义。参考答案:M=2#11011#状态转换图: 波形图说明 60NS:序列01101,输出070NS:序列11010,输出0115NS:序列11011,输出1实验二 VHDL数字频率计一、实验目的学习VHDL程序设计方法。二、实验内容设计VHDL数字频率计。三、实验步骤1、设计计数器新建文件夹“计数器”,在仿真软件中录入下述代码,保存到文件夹 “计数器”中,本例代码的文件名是CNT100。建立工程,编译。仿真。计数器代码如下:LIBRARY IEEE;USE IEEE.ST

15、D_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT100 IS PORT( CLK,RST,EN: IN STD_LOGIC; QH,QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); COUT: OUT STD_LOGIC); END ENTITY CNT100;ARCHITECTURE RT1 OF CNT100 ISBEGINPROCESS(CLK,RST,EN,QH,QL)BEGIN IF RST ='1' THEN

16、 QH<="0000"QL<="0000" ELSIF(CLK='1' AND CLK'EVENT) THEN IF EN='1' THEN IF QL<9 THEN QL<=QL+1; ELSE QL<="0000" IF QH<9 THEN QH<=QH+1; ELSE QH<="0000" END IF; END IF; END IF; END IF; IF (QL=9 AND QH=9) THEN COUT<=&#

17、39;1' ELSE COUT<='0'END IF;END PROCESS ;END ARCHITECTURE RT1;2、设计频率计控制器新建文件夹“控制器”,在仿真软件中录入下述代码,保存到文件夹 “控制器”中,本例代码的文件名是FTCTRL。建立工程,编译。仿真。控制器VHDL代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FTCTRL IS PORT (CLKK: IN STD

18、_LOGIC; CNT_EN,RST_CNT: OUT STD_LOGIC;LOAD : OUT STD_LOGIC); END ENTITY FTCTRL ;ARCHITECTURE RT1 OF FTCTRL ISSIGNALDIV2CLK : STD_LOGIC;BEGINPROCESS(CLKK)BEGINIF (CLKK'EVENT AND CLKK='1') THEN DIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS(CLKK,DIV2CLK)BEGINIF (CLKK=0 AND DIV2CLK='

19、;0') THEN RST_CNT<=1;ELSE RST_CNT<=0;END IF;END PROCESS;LOAD<=N0T DIV2CLK;CNT_EN<=DIV2CLKEND ARCHITECTURE RT1;波形图如下,请说明波形图意义。3、设计频率计锁存器新建文件夹“锁存器”,在仿真软件中录入下述代码,保存到文件夹 “锁存器”中,本例代码的文件名是LTCH8。建立工程,编译。仿真。锁存器代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LTCH8 IS PORT(CLK,RST: IN STD

20、_LOGIC; DH,DL: IN STD_LOGIC_VECTOR(3 DOWNTO 0); QH,QL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) END ENTITY LTCH8;ARCHITECTURE RT1 OF LTCH8 ISBEGINPROCESS(DH,DL,CLK,RST)BEGIN IF RST='1' THEN QH<="0000"QL<="0000" ELSIF(CLK='1' AND CLK'EVENT) THEN QH<=DH; QL<

21、=DL; END IF;END PROCESS ;END ARCHITECTURE RT1;4、设计频率计顶层电路步骤;(1)新建文件夹“VHDL频率计”,把计数器、锁存器、控制器代码拷贝到“VHDL频率计”文件夹中。(2)打开软件,新建原理图文件,在原理图中放入一个“INPUT”。(3)保存原理图文件,文件名TOP,建立工程。(4)按照下图所示的生成符号图的方法,把计数器、锁存器、控制器生成符号图。(5)把以上三个符号放入原理图文件TOP中,按照下图连线。(6)编译、仿真原理图文件TOP。 仿真波形图见下图,FIN周期是24NS,CLK周期是100 NS。请说明仿真结果。实验三 DDS信号发

22、生器一、实验目的学习VHDL程序设计方法。二、实验内容设计DDS信号发生器。三、实验步骤1、新建文件夹“VHDL频率计”。2、打开软件,新建原理图文件,在原理图中放入一个“INPUT”。3、保存原理图文件,文件名TOP,建立工程。4、设计MIF文件(1)新建MIF 文件,按照下面3个图设置:内存容量为128X8;地址和内容格式为16进制:设置内存容量为128X8;设置地址格式为16进制:设置内容格式为16进制:(2)按照下页图录入内存的内容5、设计累加器点击工具 ,在弹出窗口输入 “lpm_add_sub”,见下图。选择“VHDL ”:设置输入时钟:6、设计触发器输入“lpm_ff”选择“VH

23、DL ”:总线宽度设置为8位:7、设计只读存储器输入“lpm_rom”: 选择“VHDL ”:设置内存容量:去掉“对钩”定位MIF文件(初始化内存):8、设置顶层电路按照下图连线,然后编译、仿真。波形图如下,请说明其意义。实验四 运算器一、实验目的学习VHDL程序设计方法。二、实验内容设计16功能的运算器。三、实验步骤1、设计ALU新建VHDL文件,把下述代码复制后保存到文件夹 “ALU”文件夹中,本例代码的文件名是ALU。建立工程,编译。仿真。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;EN

24、TITY ALU ISPORT(A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); SEL:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ALU功能表SEL3.0功能0000A0001A+10010A-10011B0100B+10101B-10110A+B0111A-B1000NOT A1001NOT B1010A AND B1011A OR B1100A NAND B1101A NOR B1110A XOR B1111NOT(A XOR B) Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ALU;ARCHITECTUR

25、E BEHAV OF ALU ISSIGNAL ARITH,LOGIC: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN-ARITHMETIC UNIT-WITH SEL (2 DOWNTO 0) SELECTARITH<= A WHEN "000",A+1 WHEN "001", A-1 WHEN "010", B WHEN "011", B+1 WHEN "100", B-1 WHEN "101", A+B WHEN "110&quo

26、t;, A-B WHEN OTHERS;-LOGIC UNIT-WITH SEL (2 DOWNTO 0) SELECTLOGIC<= NOT A WHEN "000",NOT B WHEN "001", A AND B WHEN "010", A OR B WHEN "011", A NAND B WHEN "100", A NOR B WHEN "101", A XOR B WHEN "110", NOT (A XOR B) WHEN OTHER

27、S;-MUX-WITH SEL (3) SELECTY<=LOGIC WHEN '1', ARITH WHEN OTHERS;END BEHAV;请说明ALU的功能。2、设计总线宽度为8的三态门。建立文件夹“三态门”。新建原理图文件,放置一个“INPUT”后保存到文件夹“三态门”,文件名:STM.BDF。 建立工程。按照图10到图13的步骤定制三态门。点击工具 ,在弹出窗口输入“LPM_BUSTRI ”,进入图11。图11:选择VHDL ,单击NEXT,进入图12 。图11 设置路径图12 单向三态门,宽度是8位图13 结束定制步骤按照图14连线,保存。B是控制端,高电平

28、有效。A、F分别是数据输入输出端。按照图15把系统文件加到工程中。按照图16设计波形文件并仿真。图14 三态门原理图图15 把系统文件加到工程中图16 三态门仿真波形图178位寄存器引脚图 4、设计8位寄存器。建立文件夹“寄存器”。 编写代码,按照图17设计寄存器端口。寄存器实体名为LTCH。图17中,CLK是寄存器时钟,RST=1寄存器复位。RST=0,CLK上升沿寄存器输出端Q接收输入端D的值。5设计通用寄存器。建立文件夹“通用寄存器”。把下面所示代码编译。library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.A

29、LL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity XY4 is Port ( G,CLK : in std_logic; S : in INTEGER RANGE 0 TO 3; X : in std_logic_vector(7 downto 0); Y : OUT std_logic_vector(7 downto 0) ); end XY4;architecture Behavioral of XY4 istype xIN is array(0 to 3) of std_logic_vector(7 downto 0);signal qxIN : xIN

30、 :=(others => "00000000");beginprocess(Clk,G,S,QXIN) begin IF G='0' THEN Y <= qxIN(S); ELSif(rising_edge(clk)then qxIN(S)<=X; end if; end process;end Behavioral;按照下图仿真。6设计运算器。建立文件夹“运算器”。 把下面4个文件复制到“运算器”文件夹:运算器ALU.VHD、 三态门LPM_BUSTRI0.VHD 、寄存器 LTCH.VHD 、寄存器组 XY4.VHD。打开仿真软件,新

31、建一个原理图文件,放置一个input后,保存,文件名是YSQ.BDF。建立工程,然后把上面4个VHD文件生成符号图,按照下图连线后保存,编译。其中ALU是16 功能运算器,A、B是该运算器的数据输入端,宽度8位。SEL是运算器的功能选择端,Y是运算器运算结果输出端,通过三态门控制运算器运算结果能否输出到总线。ALUOUT是连接ALU和总线的三态门控制信号。TA、TB分别是运算器两个输入端AB的暂存器(LTCH)的输入控制信号,TA、TB是高电平时暂存器可以接收总线上的数据。RST是暂存器的复位信号,RST高电平时暂存器被复位,CLK是暂存器的时钟信号,CLK上升沿时暂存器接收总线上的数据。D

32、是暂存器的的数据输入端,和总线相连。DIN是外部输入端D7.0与总线连接的三态门的控制信号。BUS是总线数据输出端。图18是仿真波形图。图18 运算器仿真波形运算器电路仿真波形分析:输入1到R1;输入2到R2;从R1读出,传到TA;从R2读出,传到TB;做加法运算,把结果写入R3。实验五 微控制器(1)一、实验目的学习CPU的工作原理,掌握CPU的控制信号的工作过程。二、实验内容设计以下3条机器指令的微程序。MOV R1, #1 功能:把立即数1写入R1。MOV R2, #3 功能:把立即数3写入R2。ADD R3,R1, R2 功能:(R1)+(R2) R3。设计微控制器,自动运行上述3条机

33、器指令。三、实验步骤按照实验四的运算器数据通路分析这3条指令工作过程,设计微程序。上述3条机器指令的28位微指令如下表: U 27.19D DIN U 18.15G S YOUTU14 U13TA TB12 11 . 8ALUOUT 运算U7.0下址16进制微指令00000000 00 00 00 00 00000000 00010000 00100000001 11 01 00 00 00000000 001001D0 00200000011 11 10 00 00 00000000 001103E0 00300000000 00 01 11 00 00000000 0100001C 004

34、00000000 00 10 10 10 00000000 0101002A 00500000000 01 11 00 01 01100000 01100071 60600000000 00 00 00 00 00000000 00000000 000把文件夹“运算器”复制粘贴,改名为 “控制器1”后保存。先打开“控制器1”的工程文件。新建一个MIF文件,如图1所示。然后按图2设置容量:8字X28位。图1 新建一个mif文件图2 设置存储器容量 图3 设置存储器内容显示格式按照图3设置存储器内容显示格式。按照图4输入存储器内容,保存为ADDR.MIF。单击工具 ,在“NAME”下输入 “LPM

35、_ROM”,单击“OK”,见图5。图4 设置存储器内容按照图6把ROM定位并改名为UROM。按照图7到图9进行操作,最后保存即可。图5 定制rom存储器图6 定位后修改存储器名称为urom图7 设置位数和字数图8 设置存储器输出端口图9 设置存储器初始化文件打开YSQ.BDF,按照图10把UROM添加上,把引线名称修改,按照图11设置仿真波形。图10 微控制器电路图11 微控制器仿真波形图10所示的微控制器仿真波形图中,第一个CLK的上升沿输出的微指令的低三位001B是控制存储器的地址,第二个CLK的上升沿输出第一条微指令。第六个CLK上升沿后全部微指令执行完毕。实验六 微控制器(2)一、实验

36、目的学习CPU的工作原理,掌握CPU的控制信号的工作过程。二、实验内容设计以下3条机器指令的微程序。MOV 3,#2FHMOV R1,3MOV BUS,R1其中,#2FH是立即数,3是存储器单元地址,BUS是显示端口。设计微控制器,自动运行上述3条机器指令。三、实验步骤1、定制存储器把文件夹“控制器1” 复制粘贴,改名为 “控制器2”后保存。打开“控制器2”的工程文件。按照下面图1图7,定制存储器。图1 定制RAM存储器图2 定制RAM存储器图3 定制RAM存储器图4 定制RAM存储器图5 定制RAM存储器图6 定制RAM存储器图7 定制RAM存储器2、设计下面3条机器指令的微指令代码MOV

37、3,#2FHMOV R1,3MOV BUS,R1其中,#2FH是立即数,3是存储器单元地址,BUS是显示端口。下表是上面3条机器指令的微指令代码。 U 27.19D DIN U 18.15G S YOUTU14 U13TA TB12 11 . 8ALUOUT SAU7.0A2.0RW OUT 16进制微指令00000000 00 00 00 00 0000000 0 0 0010000 00100101111 10 00 00 00 0000011 1 0 0102F8007200000000 01 01 00 00 0000011 0 1 011005006B00000000 00 01 1

38、0 00 0000000 0 0 0000018000打开MIF文件,把内容按照上表修改。下图是修改后的内容。图9是CPU电路图和仿真波形图。图9 CPU验证电路图和波形图实验七 音乐播放器一、 乐谱编码梁祝乐谱只有15个乐音,按照表1编码。编码后的乐谱保存到ROM中。下图即梁祝乐谱编码结果。二、乐音频率设输入信号频率为1MHZ,按照表1可以计算出16种乐音的分频器所需最大计数值。表1 乐谱编码和乐音频率音符编码频率F分频数106/F计数值(106/2F)-1低音11262106/262190722294106/294169933330106/330151544349106/349143155

39、392106/392127466440106/440113577494106/4941011中音18523106/52395529587106/587851310659106/659758411698106/698715512784106/784637613880106/880567714988106/988505高音1151047106/1047477三、乐音持续时间乐曲速度和音符节拍决定音符持续时间。设0.5秒为1拍,梁祝乐谱最短时间为半拍,即0.25秒。四、播放器组成乐谱存储器存放乐谱的编码,分频器输出每个乐音对应的频率,驱动扬声器发音。乐谱存储器地址保持时间就是每个乐音的发音时间,由乐

40、谱存储器的时钟周期决定。四播放器具体电路1、时钟分频器实验板的时钟输出是20MHZ,经过分频产生1MHZ的周期信号用作乐音分频器的时钟,4HZ的信号用作乐谱存储器的时钟。20MHZ分频为1MHZ代码和波形图如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FENPIN20 IS PORT(CLK : IN STD_LOGIC; -输入20MHZ信号OUT1 : OUT STD_LOGIC);- 输出1MHZEND;ARCHITECTURE ONE OF FENPIN20 IS SIGNAL T1 : INTEGER RANGE 0 TO 10

41、-1;SIGNAL F1M : STD_LOGIC;BEGINPROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1') THEN T1<=T1+1;IF(T1=9) THEN F1M<= NOT F1M;T1<=0;END IF;END IF;END PROCESS;OUT1<=F1M;END;CLK的频率设为10NS。另外,1MZH分频为4HZ分频器的计数次数是500 000/4-1=124999。2、乐音分频器乐音分频器功能:根据乐谱存储器的输出得到对应音符的分频值,然后输出产生该音符所需的方波信号。即有表1的第2

42、列得到第5列后,把1MHZ的信号分频输出。 CLK的频率设为1NS。END TIME设为3.84US。END TIME计算方法:音符“1”的一个周期包含CLK周期数:(1907+1)*2=3816NS15个音符分别仿真,计算每个音符的END TIME或者用最长的时间3.84US。例如:音符“2”的一个周期包含CLK周期数:(1700+1)*2=3402NS下面是 “1”和“2”的波形。代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SPEAKER IS PORT(CLK : IN STD_LOGIC;-1MHZTN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);-乐谱编码SPKS : OUT STD_LOGIC);END;ARCHI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论