1 / 35
文档名称:

第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.ppt

格式:ppt   页数:35
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.ppt

上传人:799474576 2013/12/22 文件大小:0 KB

下载得到文件列表

第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.ppt

文档介绍

文档介绍:EDA技术及其应用
应用VHDL设计数字系统
项目1:电子琴的设计
设计目标:
设计一个电子琴,具有8个按键,当按下某一个按键的时候,能够演奏8个音符之一: 1、2、3、4、5、6、7、H1
视频演示
知识点:
熟练掌握计数器的设计方法;
熟练掌握可变分频器的设计方法;
熟练掌握IF语句的使用;
熟练掌握CASE语句的使用;
项目1:电子琴的设计
项目分析:
设计问题1:如何发出不同音调的声音?
设计关键1:
可变分频器/ 数控分配器。
项目1:电子琴的设计
项目分析:
设计问题2:按下不同按键时,如何得到不同的分频数?
设计关键2:
向可变分频器(数控分配器)提供分频数字,需要一个“按键”到“分频数”的转换模块。
...
1
8
?
项目1:电子琴的设计
项目分析:
设计关键1:
可变分频器(数控分配器)!
项目1:电子琴的设计
LIBRARY IEEE;
USE ;
USE ;
T10 IS
PORT
(
CLK,RST,EN : IN STD_LOGIC;
CNT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC
);
T10;
知识回顾:10进制计数器设计
项目1:电子琴的设计
ARCHITECTURE behav T10 IS
BEGIN
PROCESS(CLK, RST, EN)
TI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST = '1' THEN
CNTI := (OTHERS =>'0') ; --计数器异步复位
ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿
IF EN = '1' THEN --检测是否允许计数(同步使能)
TI < 9 THEN --检测是否小于9
CNTI := CNTI + 1; --小于9,允许加1计数
ELSE
CNTI := (OTHERS =>‘0’); --大于等于9,计数值清零
END IF;
END IF;
END IF;
TI = 9 THEN COUT <= ‘1’; --计数等于9,输出进位信号
ELSE COUT <= '0';
END IF;
CNT <= CNTI; --将计数值向端口输出
END PROCESS;
END behav;
知识回顾:10进制计数器设计
仿真结果:10进制计数器设计
结论:
计数器就可以完成分频器的任务!
项目1:电子琴的设计
项目1:电子琴的设计
LIBRARY IEEE;
USE ;
USE ;
T_N IS
PORT
(
CLK,RST,EN : IN STD_LOGIC;
N : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
CNT : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);
COUT : OUT STD_LOGIC
);
T_N;
设计关键:N进制计数器设计——可变分频器
项目1:电子琴的设计
ARCHITECTURE behav T_N IS
BEGIN
PROCESS(CLK, RST, EN)
TI : STD_LOGIC_VECTOR(11 DOWNTO 0);
BEGIN
IF RST = '1' THEN
CNTI := (OTHERS =>'0') ; --计数器异步复位
ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿
IF EN = '1' THEN --检测是否允许计数(同步使能)
TI < N-1 THEN --检测是否小于N-1
CNTI := CNTI + 1; --小于N-1,允许加1计数
ELSE
CNTI := (OTHERS =>'0'); --大于等于N-1,计数值清零
END IF;
END IF;
END IF;
TI = N-1 THEN COUT <= '1'; --计数等于N-1,输出进位信号
ELSE COUT <= '0';
END IF;
CNT <= CNTI; --将计数值向端口输出
END PROCESS;
END behav;
设计关键:N进制计数器设计——可变分频器