乐曲演奏顶层文件

简介: 乐曲演奏顶层文件

一共要设计这九个模块,并将这几个模块例化为元件,并用信号线连接起来就行了,重点是要理解并看懂原理图,原理图是我自己画的,利用RTL也是可以看那个电路图的只是,我是在学校实验室做的电脑上面没有安装相应的软件,有问题问我哈,点个关注呗,最好三连哈哈!微信图片_20221013085009.png

我们这个课老师最后让硬件演奏的是黄版本的歌曲梁祝伴奏。


设计模块说明:

模块一(PLL20):锁相环电路。输出10MHZ频率的信号。利用Quartus内部的向导去设置就行了。

模块二(CNT10T):10进制的计数器。把10Mhz的信号转变为1Mhz的信号。

模块三(CNT2_18T):2的18次方进制的计数器。把1Mhz的信号转变为4hz的信号。

模块四(CNT38T):138进制的计数器。作为音符ROM的地址发生器。

模块五(MUSIC):存放乐谱的ROM。XXX.mif.这种后缀文件可由记事本得到或者Quartus自带的mif编辑器得到。利用Quartus内部的向导去设置就行了。

模块六(F_code):音符译码器。

模块七(SPKER(Quartus是不区分大小写的)):输出音符频率的数控分频器。

模块八(Decl7s):让数码管显示当时具体演奏的是那个音符。

模块九(CNT2T):分频电路·2进制的计数器。

u1: pll1 PORT MAP(inclk0=>CLK_20,c0=>net1);
u2:CNT10T PORT MAP( CO1=>net1,Q=>net2);
u3:CNT2_18T PORT MAP(CO2=>net2,Q=>net3);
u4:CNT138T PORT MAP(CLK=>net3,Q=>net4);
u5:music1 PORT MAP(address=>net4,clock =>net3,q=>net5);
u6:F_CODE PORT MAP( INX=>net5,TO1=>net6,CODE=>net7 );
u7:spker PORT MAP(clk =>net2,Tn=>net6,SpkS=>net8);
u8:Decl7s PORT MAP(A=>net7,LED7s=>LED7S);
u9:CNT2T PORT MAP(CO3=>net8,Q=>SPK_KX);

顶层文件代码

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY music IS
  PORT(CLK_20 :IN STD_LOGIC;
       SPK_KX:OUT STD_LOGIC;
       LED7S: OUT STD_LOGIC_VECTOR(0 TO 6));
END music;
ARCHITECTURE behav OF music IS
COMPONENT CNT138T
   PORT( CLK:in std_logic;
         Q:out std_logic_vector(0 to 7));
 END COMPONENT;
 COMPONENT CNT10T
   PORT( CO1:in std_logic;
         Q:out std_logic);
 END COMPONENT;
COMPONENT CNT2_18T
   PORT( CO2:in std_logic;
         Q:out std_logic);
 END COMPONENT;
 COMPONENT CNT2T
   PORT( CO3:in std_logic;
         Q:out std_logic);
 END COMPONENT;
 COMPONENT F_CODE
   PORT(INX: IN STD_LOGIC_VECTOR (0 TO 3);
        CODE: OUT STD_LOGIC_VECTOR(0 TO 3);
        H:OUT STD_LOGIC;
        TO1:OUT STD_LOGIC_VECTOR(0 TO 10));
 END COMPONENT;
COMPONENT spker
   PORT(clk:IN STD_LOGIC;
       Tn:IN STD_LOGIC_VECTOR(0 TO 10);
       SpkS:OUT STD_LOGIC);
 END COMPONENT;
 COMPONENT pll1
   PORT
  (
    inclk0    : IN STD_LOGIC  := '0';
    c0    : OUT STD_LOGIC 
  );
 END COMPONENT;
 COMPONENT music1
   PORT
  (
    address   : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
    clock   : IN STD_LOGIC ;
    q   : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)
  );
 END COMPONENT;
 COMPONENT Decl7s
   PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
        LED7s:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
 END COMPONENT;
 SIGNAL net1:std_logic;
 SIGNAL net2:std_logic;
 SIGNAL net3:std_logic;
 SIGNAL net4:STD_LOGIC_VECTOR (7 DOWNTO 0);
 SIGNAL net5:STD_LOGIC_VECTOR(0 TO 3);
 SIGNAL net6: STD_LOGIC_VECTOR(0 TO 10);
 SIGNAL net7:STD_LOGIC_VECTOR(0 TO 3);
 SIGNAL net8:std_logic;
BEGIN
u1: pll1 PORT MAP(inclk0=>CLK_20,c0=>net1);
u2:CNT10T PORT MAP( CO1=>net1,Q=>net2);
u3:CNT2_18T PORT MAP(CO2=>net2,Q=>net3);
u4:CNT138T PORT MAP(CLK=>net3,Q=>net4);
u5:music1 PORT MAP(address=>net4,clock =>net3,q=>net5);
u6:F_CODE PORT MAP( INX=>net5,TO1=>net6,CODE=>net7 );
u7:spker PORT MAP(clk =>net2,Tn=>net6,SpkS=>net8);
u8:Decl7s PORT MAP(A=>net7,LED7s=>LED7S);
u9:CNT2T PORT MAP(CO3=>net8,Q=>SPK_KX);
END behav;
相关文章
|
19天前
|
存储 Linux
深入探索Linux文件系统:属性、路径与隐藏之谜
深入探索Linux文件系统:属性、路径与隐藏之谜
28 1
|
8月前
|
设计模式 Java
【3D机甲】捏造型功能
【3D机甲】捏造型功能
|
9月前
第4章 MATLAB编程基础——4.1 M文件编辑器
第4章 MATLAB编程基础——4.1 M文件编辑器
|
图形学 索引
【unity每日一记】-物体创建,获取,查找,继承
【unity每日一记】-物体创建,获取,查找,继承
92 0
|
人工智能 数据可视化 机器人
GIF动画渲染、让灯塔闪烁、创建航空动态图……ChatGPT代码解释器插件「不止于代码」
GIF动画渲染、让灯塔闪烁、创建航空动态图……ChatGPT代码解释器插件「不止于代码」
174 0
|
设计模式 前端开发 JavaScript
坚持造轮子第六天 - Mixin -装备合成路径
坚持造轮子第六天 - Mixin -装备合成路径
85 0
程序人生 - 猫咪的门齿有什么作用?
程序人生 - 猫咪的门齿有什么作用?
91 0
|
图形学 Android开发
Unity粒子特效系列-下雨预制体做好了,拿走直接就用!
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
1738 1
|
vr&ar 图形学 索引
【Unity3D 灵巧小知识点】 ☀️ | 获取某个游戏对象下的所有子物体
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
【Unity3D 灵巧小知识点】 ☀️ | 获取某个游戏对象下的所有子物体