EDA技术及其应用第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计

时间:2025-02-22

EDA技术及其应用第4章 应用VHDL设计数字系统

项目1:电子琴的设计设计目标: 设计一个电子琴,具有8个按键,当按下某一个按键的时 候,能够演奏8个音符之一: 1、2、3、4、5、6、7、H1 视频演示 知识点: 熟练掌握计数器的设计方法; 熟练掌握可变分频器的设计方法; 熟练掌握IF语句的使用; 熟练掌握CASE语句的使用;

项目1:电子琴的设计项目分析: 设计问题1:如何发出不同音调的声音?音符 1 1.5 2 2.5 3 4 4.5 5 5.5 6 6.5 7 H1 对应频率(Hz) 523.2511306 554.365262 587.3295358 622.2539674 659.2551138 698.4564629 739.9888454 783.990872 830.6093952 880 932.327523 987.7666025 1046.502261 时钟频率1.5MHz 分频数 2867 2554 2275 2148 1913 1705 1519 1433CNT_N CLK RST EN N[11..0]

设计关键1:

可变分频器/ 数控分配器。

中音

CNT[11

高音

C

项目1:电子琴的设计项目分析: 设计问题2:按下不同按键时,如何得到不同的分频数? 设计关键2: 向可变分频器(数控分配器)提供分频数字,需要一个 “按键”到“分频数”的转换模块。

1

. . .

?conv erter key [7..0] en div _num[11..0] CODE[3..0] HIGHCNT_N CLK RST EN N[11..0]

CNT[11

8

C

项目1:电子琴的设计项目分析: 设计关键1: 可变分频器(数控分配器)!

CNT_N CLK RST EN N[11..0] CNT[11..0] COUT

inst

项目1:电子琴的设计 知识回顾:10进制计数器设计

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT ( CLK,RST,EN : IN STD_LOGIC; CNT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10;

CNT10 CLK RST EN inst

CNT

项目1:电子琴的设计 知识回顾:10进制计数器设计ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CNTI : 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 --检测是否允许计数(同步使能) IF CNTI < 9 THEN --检测是否小于9 CNTI := CNTI + 1; --小于9,允许加1计数 ELSE CNTI := (OTHERS =>‘0’); --大于等于9,计数值清零 END IF; END IF; END IF; IF CNTI = 9 THEN COUT <= ‘1’; --计数等于9,输出进位信号 ELSE COUT <= '0'; END IF; CNT <= CNTI; --将计数值向端口输出 END PROCESS; END behav;

CNT10 CLK RST EN inst

CNT

项目1:电子琴的设计 仿真结果:10进制计数器设计

结论: 计数器就可以完成分频器的任务!

项目1:电子琴的设计 设计关键:N进制计数器设计——可变分频器

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT_N IS PORT ( CLK,RST,EN N CNT COUT ); END CNT_N;

CNT_N CLK RST EN N[11..0]

: : : :

IN STD_LOGIC; IN STD_LOGIC_VECTOR(11 DOWNTO 0); OUT STD_LOGIC_VECTOR(11 DOWNTO 0); OUT S

TD_LOGIC

CNT[

inst

项目1:电子琴的设计 设计关键:N进制计数器设计——可变分频器ARCHITECTURE behav OF CNT_N IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CNTI : 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 --检测是否允许计数(同步使能) IF CNTI < N-1 THEN --检测是否小于N-1 CNTI := CNTI + 1; --小于N-1,允许加1计数 ELSE CNTI := (OTHERS =>'0'); --大于等于N-1,计数值清零 END IF; END IF; END IF; IF CNTI = N-1 THEN COUT <= '1'; --计数等于N-1,输出进位信号 ELSE COUT <= '0'; END IF; CNT <= CNTI; --将计数值向端口输出 END PROCESS; END behav;

CNT_N CLK RST EN N[11..0]

CNT[

inst

项目1:电子琴的设计 设计关键:N进制计数器设计——可变分频器

N分频,占空1/N

结论: 1. COUT实现了N分频,

2. 但是占空比是1/N,能量不足,无法驱动蜂鸣器工作。

项目1:电子琴的设计设计关键: 改进的N进制计数器——可变分频器 COUT占空比50%LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT_N IS PORT ( CLK,RST,EN N CNT COUT ); END CNT_N;

CNT_N CLK RST EN N[11..0]

: : : :

IN STD_LOGIC; IN STD_LOGIC_VECTOR(11 DOWNTO 0); OUT STD_LOGIC_VECTOR(11 DOWNTO 0); OUT STD_LOGIC

CNT[

inst

项目1:电子琴的设计设计关键: 改进的N进制计数器——可变分频器 COUT占空比50%ARCHITECTURE behav OF CNT_N IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CNTI : 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 --检测是否允许计数(同步使能) IF CNTI < N-1 THEN CNTI := CNTI + 1; --小于N/2,允许加1计数 ELSE CNTI := (OTHERS =>'0'); --大于等于N/2,计数值清零 END IF; END IF; END IF; IF CNTI < CONV_INTEGER(N)/2 THEN COUT <= ‘0'; ELSE COUT <= ‘1'; END IF; CNT <= CNTI; COUT <= COUTI; --将计数值向端口输出 END PROCESS; END behav;

CNT_N CLK RST EN N[11..0]

CNT[

inst

项目1:电子琴的设计设计关键: 改进的N进制计数器——可变分频器 COUT占空比50%

占空比非50% 结论:1. COUT实现了N分频,

占空比接近50%

2. 当N比较大时,占空比是接近50%,能量足以驱动蜂鸣器工作。

项目1:电子琴的设计项目分析: 设计关键2: 向可变分频器(数控分配器)提供分频数字, 需要一个“按键”到“分频数”的转换模块。

conv erter key [7..0] div _num[11..0] CODE[3..0] HIGH en

CNT_N CLK RST EN N[11..0] CNT[11..0] COUT

项目1:电子琴的设计设计关键2: “按键” …… 此处隐藏:2114字,全部文档内容请下载后查看。喜欢就下载吧 ……

EDA技术及其应用第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219