- 6
- 0
- 约3.63千字
- 约 5页
- 2023-03-12 发布于湖北
- 举报
EDA 实验报告
课程名称: EDA 技术 实验名称: 硬件电子琴电路设计班级: 姓名:
指导老师: 签名:
一、 实验目的
学习利用数控分频器设计硬件电子琴实验。
二、 实验仪器
计算机一台;Quartus Ⅱ软件;U 盘。
三、 实验内容与步骤
在 Quartus Ⅱ完成音阶发生器模块TONE 和数控分频器模块Speaker 的设计,然后完成硬件电子琴顶层文件的设计,最后检查设计是否正确。
1、数控分频器Speaker (1)完整的VHDL 程序描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Speaker IS
PORT ( clk1 : IN STD_LOGIC;
Tone1 : IN INTEGER RANGE 0 TO 16#7FF#; SpkS : OUT STD_LOGIC );
END;
ARCHITECTURE one OF Speaker IS
SIGNAL PreCLK , FullSpkS : STD_LOGIC; BEGIN
DivideCLK : PROCESS(clk1)
VARIABLE Count4 : INTEGER RANGE 0 TO 15; BEGIN
PreCLK = 0; -- 将CLK进 11分频,PreCLK为C L 11K 6分频IF Count4 11 THEN PreCLK = 1; Count4 := 0;
ELSIF clk1EVENT AND clk1=1 THEN Count4 := Count4 + 1; END IF;
END PROCESS;
GenSpkS : PROCESS(PreCLK, Tone1)
VARIABLE Count11 : INTEGER RANGE 0 TO 16#7FF#;
BEGIN -- 11位可预置计数器IF PreCLKEVENT AND PreCLK = 1 THEN
IF Count11=16#7FF# THEN Count11 := Tone1; FullSpkS = 1; ELSE Count11:=Count11 + 1; FullSpkS = 0;
END IF; END IF;
END PROCESS;
DelaySpkS : PROCESS(FullSpkS) VARIABLE Count2 : STD_LOGIC;
BEGIN
IF FullSpkSEVENT AND FullSpkS = 1 THEN Count2 := NOT Count2; IF Count2 = 1 THEN SpkS = 1;
ELSE SpkS = 0;
END IF; END IF;
END PROCESS;
END;
(2)模块图形符号及逻辑功能描述
图1 数控分频器Speaker 模块
Add1 Count11~[10..0]
SEL
Equal0
\GenSpkS:Count11[10..0]
\DelaySpkS:CSoupnktS2~reg0 FullSpkS
A[10..0]
PRE
PRE
PRE
SpkS
11 h001 --
OUT[10..0] DATAA
PRE
D Q D Q
B[10..0]
DATAB
OUT0
D Q A[10..0]
OUT D Q
ADDER LessThan0
MUX21
ENA
CLR
11 h7FF -B- [10..0]
ENA
ENA CLR
ENA CLR
Add0
\DivideCLK:Count4[3..0]
4 hB -- A[3..0]
PRE
OUT
EQUAL
CLR
A[3..0] 4 h1 -- B[3..0]
OUT[3..0]
D Q
ENA
B[3..0]
LESS_THAN
CLR
ADDER
clk1
Tone1[10..0]
2、端口TONE 的设计
图2 数控分频器Speaker 硬件电路
完整的VHDL 程序描述LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY Tone IS
PORT ( Index : IN STD_LOGIC_VECTOR(7 DOWNTO 0); CODE : OUT INTEGER RANGE 0 TO 15;
HIGH : OUT STD_LOGIC;
Tone : OUT INTEGER RANGE 0 TO 16#7FF# );
END;
ARCHITECTURE one OF Tone IS BEGIN
Search : PROCESS(Index) BEGIN
CASE Index IS -- 译码电路,查表
原创力文档

文档评论(0)