乐曲演奏顶层文件

简介: 乐曲演奏顶层文件

一共要设计这九个模块,并将这几个模块例化为元件,并用信号线连接起来就行了,重点是要理解并看懂原理图,原理图是我自己画的,利用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;
相关文章
|
7月前
|
图形学
【unity小技巧】unity3d创建和实现破碎打破物品,万物可破碎
【unity小技巧】unity3d创建和实现破碎打破物品,万物可破碎
302 0
【unity小技巧】unity3d创建和实现破碎打破物品,万物可破碎
|
8月前
|
分布式计算 Java 测试技术
肝Spark源码的若干骚操作
肝Spark源码的若干骚操作
54 0
|
8月前
|
索引
LabVIEW加载和使用树型控件项目中的定制符号
LabVIEW加载和使用树型控件项目中的定制符号
173 0
|
8月前
简约火箭发射静态404错误页面源码
简约火箭发射静态404错误页面源码
73 0
简约火箭发射静态404错误页面源码
便携式钻孔测斜仪钻孔如何设置
河北稳控科技便携式钻孔测斜仪钻孔如何设置 钻孔设置 完成当前测区内的“当前钻孔”选择操作,完成当前测区内钻孔的添加(新建)、删除操作。在某个指定的区域内可能有多个钻孔需要测量,同一测区中的多个钻孔使用钻孔名称进行区分。设备默认保存最近一次测量时使用的当前测区内的钻孔名称,对同一钻孔进行测量时无需再次选择设置。若需更换当前测区内的钻孔名称,请按照以下步骤操作。
便携式钻孔测斜仪钻孔如何设置
|
存储 安全 数据安全/隐私保护
骚操作:隐藏代码到数据区,函数指针【滴水逆向三期37笔记】
骚操作:隐藏代码到数据区,函数指针【滴水逆向三期37笔记】
|
图形学 索引
【unity每日一记】-物体创建,获取,查找,继承
【unity每日一记】-物体创建,获取,查找,继承
129 0
|
人工智能 数据可视化 机器人
GIF动画渲染、让灯塔闪烁、创建航空动态图……ChatGPT代码解释器插件「不止于代码」
GIF动画渲染、让灯塔闪烁、创建航空动态图……ChatGPT代码解释器插件「不止于代码」
221 0
|
数据可视化 搜索推荐 程序员
程序人生 - “无代码”时代,离我们还有多远?
程序人生 - “无代码”时代,离我们还有多远?
219 0
程序人生 - “无代码”时代,离我们还有多远?