求vhdl语言输出理论入50MHz得到输出为8HZ的频率信号的分频器代码

分频器的VHDL代码 在数字电路中,常需要对较高频率的时钟进行分频操作,得到较低频率的时钟信号。我们知道,在硬件电路设计中时钟信号是最重要的信号之一。 下面我们介绍分频器的 VHDL 描述,在源代码中完成对时钟信号 CLK 的 2 分频, 4 分频, 8 分频, 16 分频。 这也是最简单的分频电路,只需要一个计数器即可。LIBRARY IEEE; USE END IF ; END PROCESS; clk_div6 <= clk_temp; END rtl; 对于上述源代码描述的这种分频器,在硬件电路设计中应用十分广泛,设计人员常采用这种分频器来产生选通信号、中断信号和数字通信中常常用到的帧头信号等。

FPGA课程设计(最终版)要点

发布时间 : 星期二 文章FPGA课程设计(最终版)要点更新完毕开始阅读

武汉理工大学FPGA应用课程设计

分频系数 32 72 表2-2 各音名对应的分频系数

音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此,要控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数。如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要提供一个4HZ的时钟频率即可产生四分音符的时长。

至于音长的控制,在自动演奏模块,每个乐曲的音符是按地址存放的,播放乐曲时按4HZ的时钟频率依次读取简谱,每个音符持续时间为0.25秒。如果乐谱中某个音符为三拍音长,那又该如何控制呢?其实只要在3个连续地址存放该音符,这时就会发三个0.25秒的音长,即持续了三拍的时间,通过这样一个简单的操作就可以控制音长了。

2.3系统组成及工作原理

整个系统由乐曲自动演奏模块、音调发生器模块和数控分频器模块三个部分组成。乐曲自动演奏模块又包含了键盘的编码,并且设置了一个自动演奏/键盘输入切换auto。乐曲自动演奏模块的作用是产生发声控制输入信号。音调发生器根据发声控制输入产生获得音阶的分频预置值(即分频系数)。数控分频器根据分频预置值对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。系统组成框图如图2-1所示。

武汉理工大学FPGA应用课程设计

自动演奏/按键输入选择32MHz系统时钟数控分频器扬声器 音符显示乐曲自动演奏音调发生器高低音显示 键盘[7:0]图2-1系统组成框图

2.3.2系统工作原理

系统的基准时钟脉冲为32MHz,所以在本设计中需要将其进行分频,以得到所需要的脉冲来发出相应的音符。键盘输入一共有9个按键,除了8个音符对应的按键之外,还设置一个自动演奏/键盘输入切换auto,它不是一个单独的模块,它和其他按键一起包含在乐曲自动演奏模块中,作用相当于一个开关。

当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,自动演奏模块以4Hz的频率输出8位发声控制输入信号,再送入音调发生器。当8位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将在端口tone输出,该数值即为该音阶的分频预置值,音调发生器还输出音符显示信号、高低音显示信号。最后由数控分频模块按照音调发生器输出的分频预置值进行分频,得到存储的乐曲的音符的频率,之后由扬声器输出对应的声调。

auto=“1”时,选择键盘输入的信号,8个按键分别对应8个音符,自动演奏模块将按键输入转化为8位发声控制输入信号送入音调发生器,最后通过数控分频模块得到按键对应的音符的频率,之后由扬声器输出对应的声调。

武汉理工大学FPGA应用课程设计

VHDL采用的是自顶向下的设计方式,顶层模块由乐曲自动演奏(automusic),音调发生器(tone)和数控分频器(speaker)三个模块组成。其中乐曲自动演奏部分(automusic)又包括了键盘编码,还设置了一个自动演奏/键盘输入切换auto,即当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,auto=“1”时,选择由键盘输入的信号,再对其进行编码。两种情况下输出的都是八位二进制数,对应音调发生器的输入。图3-1即是顶层模块设计原理图。

图3-1顶层模块设计原理图

3.2乐曲自动演奏模块的设计

为了实现电子琴的功能要求,需要设计一个自动演奏模块,该模块的作用是产生8位发声控制输入index。当auto为“0”或“1”时可以选择自动演奏或者键盘输入,如果auto为“0”,则由存储在此模块中的8位二进制数来作为发声控制输入index,由此便可自动演奏乐曲;当auto为“1”时,则由键盘的输入转化为8位2进制数作为发声控制输入index。此模块的VHDL语言中包括三个进程,首先是对基准脉冲进行分频得到4Hz的脉冲,作为第二个进程的时钟信号,它的目的是控制每个音阶之间的停顿时间,此处便是1/4=0.25s;第二个进程完成自动演奏部分乐曲的地址累加;第3个进程是输出

武汉理工大学FPGA应用课程设计

存储的自动演奏的乐曲或键盘输入的发声控制输入index。乐曲自动演奏模块如图3-2所示。

图3-2乐曲自动演奏模块

3.3音阶发生器模块的设计

音阶发生器的作用是产生获得音阶的分频预置值。当8位发声控制输入index中的某一位为高电平时,则对应某一音阶的数值将以端口tone输出,作为获得该音阶的分频预置值,该值作为数控分频器的输入,来对4MHz的脉冲进行分频,由此得到每个音阶相应的频率,例如输入index=\,即对应的按键是2,产生的分频系数便是6920由code输出对应该音阶简谱的显示数码;由high输出指示音阶高8度的显示,高电平有效。音阶发生器如图3-3所示。

图3-3音阶发生器模块

3.4数控分频器模块的设计

数控分频模块的目的是对基准脉冲分频,得到0,1,2,3,4,5,6,7七个音符对应频率。该模块的VHDL描述中包含了三个进程。首先对32MHz的基准脉冲进行分频得到8MHz


我要回帖

更多关于 语言输出理论 的文章

 

随机推荐