FPGA创新实验设计报告doc 25页正式版Word文档格式.docx
- 文档编号:5721983
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:32
- 大小:625.19KB
FPGA创新实验设计报告doc 25页正式版Word文档格式.docx
《FPGA创新实验设计报告doc 25页正式版Word文档格式.docx》由会员分享,可在线阅读,更多相关《FPGA创新实验设计报告doc 25页正式版Word文档格式.docx(32页珍藏版)》请在冰点文库上搜索。
上课铃
下课铃
8:
45
50
9:
35
10:
40
11:
25
30
12:
15
13:
14:
05
55
15:
16:
17:
18:
19:
20
20:
10
根据时间表在相应时间,铃声响起。
铃声部分
铃声部分分为JK触发器,分频器,铃声部分,选择器,音频调试,音频转换器,六个模块。
1分频器
分频器将50MHZ的脉冲电路调节到合适的频率,在铃声系统部分中需使用两次,一次为对上下课铃音频电路的触发(1HZ),一次为音频转换器的触发(6250000HZ).
2铃声部分
铃声部分设置成上课铃和下课铃两个子模块,分别存放上下课铃的乐谱。
3音频调试电路
根据十二平均律将两个八度共十六个音符设置成相应的频率。
使其转换成相应的音高。
4音频转换器
原理为一个计数器,通过脉冲电路将每次的音符转换成相应的频率,通过小喇叭输出。
5JK触发器
整个音乐系统的开始与停止通过两个JK触发器来控制。
原理如图
当选择器发出信号时,第一个JK触发器中J通道接高,K通道为0,Q输出高电平,使第二个JK触发器触发(第二个JK触发器设置成T’触发器)此后即使第一个触发器中J=0.Q1状态保持,仍为1.
在铃声部分设置逻辑出口K,当输出最后一个音符时,k=1,反馈到第一个JK触发器的K端上,此时Q1=0,使第二个触发器清零,停止向铃声部分输送脉冲信号。
铃声停止。
3.2实验原理图展示
时钟部分
综合电路
3.3仿真波形及分析
Trf仿真波形
由图可知,每一个trf下降沿使trfo从3减到0再到3从而实现循环,当clr变为0了之后,trfo立即变为3。
SS仿真波形
15为变暗。
由图可知,假定plus键按住,trfo为3,因此h_hi从0开始加到5,然后放开plus之后h_hi交替5与15,说明正在闪烁。
假定当按下trf,trfo变为2,即闪烁从h_hi改为h_lo,同样trfo为1时,闪烁m_hi。
SZ仿真波形
上三图为时钟正常工作时的输出。
上图为当clr为1,按plus的时候,当trfo为3,2,1时h_hi,h_lo,m_hi的数值的增加。
Lj仿真波形
当时间为08:
00,08:
45时分别输出tmp1,tmp2为10和01,当下一个脉冲到来,08:
00变成00:
00之后,tmp1,tmp2为00。
通过tmp1与tmp2实现上下课铃的控制。
Nacklass,vorklass仿真波形
通过clk可以实现放歌曲,当歌曲结束时k=1,此时通过jk触发器使clk停止,等到下一个lj模块中的tmp1,tmp2的信号到来,clk重新开始,此时通过条件语句时cnt归零,重新放歌曲。
3.4源程序及注释
1分频器(50MHZ=>
8MHZ)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYfenpinqiIS
PORT(clk:
INSTD_LOGIC;
clk_out:
OUTSTD_LOGIC);
ENDfenpinqi;
ARCHITECTUREfwmOFfenpinqiIS
CONSTANTm:
INTEGER:
=4;
--whenweneed8MHZ。
INTEGER=6250000whenweneed2HZ
SIGNALtmp:
STD_LOGIC;
BEGIN
PROCESS(clk,tmp)
VARIABLEcout:
=0;
BEGIN
IFclk'
EVENTANDclk='
1'
THENcout:
=cout+1;
IFcout<
=mTHENtmp<
='
0'
;
ELSIFcout<
m*2THENtmp<
ELSEcout:
ENDIF;
ENDIF;
ENDPROCESS;
clk_out<
=tmp;
ENDfwm;
2JK触发器
ENTITYJANDKIS
PORT(clr,clk,j,k:
q,qn:
outSTD_LOGIC);
ENDJANDK;
ARCHITECTURECONTROLOFJANDKIS
SIGNALTMP:
STD_LOGIC;
BEGIN
PROCESS(clr,clk,j,k)
ifclr='
thenTMP<
elsIF(clk'
)THEN
IF((j='
)and(k='
))thenTMP<
=NOTTMP;
--J=1K=1翻转)
ELSIF((j='
='
--J=1K=0置高
--J=1K=1置零
ENDIF;
q<
=TMP;
qn<
ENDCONTROL;
3下课铃
ENTITYnachklassIS
PORT(clk,temp1:
tone_index:
OUTINTEGERRANGE0TO15;
k:
ENDnachklass;
ARCHITECTUREmelodyOFnachklassIS
SIGNALcnt:
INTEGERRANGE0TO49:
signalkk:
STD_LOGIC:
PROCESS(clk,cnt)
IF(clk'
)THENcnt<
=cnt+1;
ENDIF;
IF(cnt=48)THEN
kk<
--k=1的时候,通过jk触发器使时钟停止(J=0K=1,第一个时钟置零,接到第二个时钟清零端,实现下课铃的停止)
elsekk<
CASEcntIS
--此项用来存乐谱下课铃声
WHEN01=>
tone_index<
=5;
WHEN02=>
=6;
WHEN03=>
=7;
WHEN04=>
=8;
WHEN05=>
=9;
WHEN06=>
WHEN07=>
WHEN08=>
WHEN09=>
WHEN10=>
WHEN11=>
WHEN12=>
WHEN13=>
WHEN14=>
WHEN15=>
WHEN16=>
WHEN17=>
WHEN18=>
WHEN19=>
WHEN20=>
WHEN21=>
WHEN22=>
WHEN23=>
WHEN24=>
WHEN25=>
WHEN26=>
WHEN27=>
WHEN28=>
WHEN29=>
WHEN30=>
WHEN31=>
WHEN32=>
WHEN33=>
WHEN34=>
WHEN35=>
WHEN36=>
WHEN37=>
WHEN38=>
WHEN39=>
WHEN40=>
WHEN41=>
WHEN42=>
WHEN43=>
WHEN44=>
WHEN45=>
WHEN46=>
WHEN47=>
when48=>
WHENOTHERS=>
ENDCASE;
ifcnt=49thencnt<
endif;
k<
=kk;
--通过给cnt重新赋值实现第二次上下课铃声的开始。
当第二个时间点到来,
--输入的tmp1tmp2的改变使时钟重新走起来,使cnt从48变成49从而赋值为0,
--从而可以再循环至48.
ENDPROCESS;
ENDmelody;
4上课铃声(原理同下课铃)
ENTITYvorklassIS
ENDvorklass;
ARCHITECTUREmelodyOFvorklassIS
IF(cnt=48)THEN
--k=1的时候,通过jk触发器使时钟停止,实现上下课铃的停止
--此项用来存乐谱上课铃声
=10;
=12;
5音调调试电路
ENTITYtoneIS
PORT(index:
ININTEGERRANGE0TO15;
code:
--定义错的输出引脚
high21:
OUTSTD_LOGIC;
--定义high21输出引脚
tone:
OUTINTEGERRANGE0TO16#7FF#);
--定义tone输出引脚
ENDtone;
ARCHITECTUREoneOFtoneIS
search:
PROCESS(index)
CASEindexIS--此项用来检索音调的频率,高八度和低八度共十六个音符
WHEN0=>
tone<
=2047;
code<
high21<
WHEN1=>
=773;
=1;
WHEN2=>
=912;
=2;
WHEN3=>
tone<
=1036;
=3;
WHEN4=>
=1116;
WHEN5=>
=1197;
WHEN6=>
=1290;
WHEN7=>
=1372;
WHEN8=>
=1410;
WHEN9=>
=1480;
WHEN10=>
=1542;
WHEN11=>
=1590;
WHEN12=>
=1622;
WHEN13=>
=1668;
WHEN14=>
=1692;
WHEN15=>
=1728;
WHENOTHERS=>
NULL;
ENDCASE;
END;
6音频输出电路
ENTITYexchangeIS
ININTEGERRANGE0TO16#7FF#;
spks:
ENDexchange;
ARCHITECTUREbehavOFexchangeIS
SIGNALpre_clk,full_spks:
div_clk:
PROCESS(clk)
VARIABLEcnt4:
INTEGERRANGE0TO15;
pre_clk<
IFcnt4>
11THENpre_clk<
cnt4:
ELSIFclk'
THENcnt4:
=cnt4+1;
--通过时钟实现计数器功能算出频率,进行输出)
gen_spks:
PROCESS(pre_clk,tone)
VARIABLEcnt11:
INTEGERRANGE0TO16#7FF#;
IFpre_clk'
EVENTANDpre_clk='
THEN
IFcnt11=16#7FF#THENcnt11:
=tone;
full_spks<
ELSEcnt11:
=cnt11+1;
ENDIF;
delay_spks:
PROCESS(full_spks)
VARIABLEcnt2:
IFfull_spks'
EVENTANDfull_spks='
THENcnt2:
=NOTcnt2;
IFcnt2='
THENspks<
ELSEspks<
ENDbehav;
7时间调节电路——调节位置选择器
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYtrfIS
PORT(trf,clr:
--clr为1时,表停止,调节时间,trf调节时间位数trf_temp为00011011时各表示分个位,分十位,时个位,时十位。
trfo:
OUTSTD_LOGIC_VECTOR(1DOWNTO0));
ENDtrf;
ARCHITECTUREfwmOFtrfIS
SIGNALtrf_temp:
STD_LOGIC_VECTOR(1DOWNTO0);
PROCESS(clr,trf,trf_temp)
begin
then
trf_temp<
="
11"
elsif(trf'
EVENTANDtrf='
)then--通过脉冲,实移位。
由输出trfo实现闪烁与加数。
iftrf_te
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA创新实验设计报告doc 25页正式版 FPGA 创新 实验设计 报告 doc 25 正式版