数字电子技术课程设计报告Word文档下载推荐.docx

上传人:b****2 文档编号:5790225 上传时间:2023-05-05 格式:DOCX 页数:18 大小:394.93KB
下载 相关 举报
数字电子技术课程设计报告Word文档下载推荐.docx_第1页
第1页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第2页
第2页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第3页
第3页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第4页
第4页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第5页
第5页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第6页
第6页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第7页
第7页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第8页
第8页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第9页
第9页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第10页
第10页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第11页
第11页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第12页
第12页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第13页
第13页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第14页
第14页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第15页
第15页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第16页
第16页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第17页
第17页 / 共18页
数字电子技术课程设计报告Word文档下载推荐.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字电子技术课程设计报告Word文档下载推荐.docx

《数字电子技术课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字电子技术课程设计报告Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。

数字电子技术课程设计报告Word文档下载推荐.docx

实验设计步骤及仿真结果

1.按键消抖

(1)原理:

该类按键抖动时间大约10ms

按键消抖状态机

在ST3、ST4、ST5时key_out=1表示按键按下且稳定,其他状态时key_out=0表示按键未按下或有抖动。

每个键是低电平有效,键按下代表低电平,原先没按下时是高电平ST0,即key_in=1,当检测到有低电平时,程序将进行10ms的延时ST1,延时结束后检测电平的高低ST2,当为低电平时说明按键真的已被按下ST3,若为高电平时说明按键没被按下只是有抖动,状态又回到ST0;

当稳定在ST3状态及低电平时,又检测到有高电平ST4,程序将进行200ms的延时ST5,延时结束后检测电平的高低,若为高电平,说明按键已被松开又回到原状态ST0,若为低电平时说明按键还没被松开仍未低电平ST3。

从而完成消抖功能。

(2)消抖程序为:

modulexiaodou(in,clk,out);

inputin,clk;

outputout;

reg[17:

0]n;

reg[2:

0]state;

parameterst0=3'

b000,st1=3'

b001,st2=3'

b010,st3=3'

b011,st4=3'

b100,st5=3'

b101;

always@(posedgeclk)

case(state)

st0:

if(!

in)state=st1;

st1:

beginn=n+1;

if(n=='

d10000)

beginstate=st2;

n='

d0;

end

end

st2:

if(in)state=st0;

elsestate=st3;

st3:

if(in)state=st4;

st4:

d200000)

beginstate=st5;

end

st5:

elsestate=st3;

endcase

assignout=(state<

3'

b011)?

1:

0;

endmodule

点击保存,将文件名改为模块名,即改为xiaodou

设置顶层实体:

Project→SetasTop-LevelEntity

然后编译:

Procesing→Startcompilation

创建符号:

File→Creat/update→CreateSymbolFilesforcurrentFile

调用器件,画电路图,点击保存,然后编译。

加入信号,一个脉冲信号,一个模拟的抖动信号,保存,编译,仿真

(3)加入的脉冲信号为:

所画的电路图为:

所加的信号及仿真结果为:

由消抖仿真图可知,输出的波形是将抖动都消除了,满足实验要求,说明所编写的程序正确。

2.按键识别

实现的功能就是能识别出所按下的是哪个键,通过组合有21个不同的音也就有21个按键方式,程序得能将这些见识别出来,分配成不同的代码。

(1)按键识别的程序为:

moduleanjianshibie(in1,in2,in3,in4,in5,in6,in7,hKey,lKey,out);

inputin1,in2,in3,in4,in5,in6,in7,hKey,lKey;

output[4:

0]out;

wirein1,in2,in3,in4,in5,in6,in7,hKey,lKey;

reg[4:

always@(in1orin2orin3orin4orin5orin6orin7orhKeyorlKey)

begin

if(hKey==1&

&

lKey==1)//没按下hKey和lKey

begin

if(!

in1)out<

=5'

b00000;

elseif(!

in2)out<

b00001;

in3)out<

b00010;

in4)out<

b00011;

in5)out<

b00100;

in6)out<

b00101;

in7)out<

b00110;

elseout<

b11111;

end

elseif(hKey==0&

lKey==1)//只按下hKey

in1)out<

b01000;

b01001;

b01010;

b01011;

b01100;

b01101;

b01110;

elseif(hKey==1&

lKey==0)//只按下lKey

b11000;

b11001;

b11010;

b11011;

b11100;

b11101;

b11110;

点击保存,将文件名改为模块名,即改为anjianshibie

加入信号,保存,编译,仿真

(2)按键识别的电路图为:

所加的信号和输出的波形图为:

分析:

当高音键被按下,并且S1键被按下时应该表示高音“哆”,应输出为01000,与仿真结果相同,说明所编写的按键识别程序正确。

3可控分频器

其原理为:

检测出按键识别模块传来的编码,将1MHz的脉冲信号分成不同频率的信号。

(1)可控分频器的程序为:

modulekkfpq(in,clk,out);

input[4:

0]in;

inputclk;

wire[4:

reg[20:

0]t;

wireclk;

regout;

initial

begin

t=0;

out=0;

always@(posedgeclk)

begin

t=t+1;

case(in)

5'

b00000:

//zhongyin

if(t<

1000000/2*523)out=0;

elseif(t>

1000000/523)t=0;

1000000/2*523)out=1;

b00001:

1000000/2*587)out=0;

1000000/587)t=0;

1000000/2*587)out=1;

b00010:

1000000/2*659)out=0;

1000000/659)t=0;

1000000/2*659)out=1;

b00011:

1000000/2*698)out=0;

1000000/698)t=0;

1000000/2*698)out=1;

b00100:

1000000/2*784)out=0;

1000000/784)t=0;

1000000/2*784)out=1;

b00101:

1000000/2*880)out=0;

1000000/880)t=0;

1000000/2*880)out=1;

b00110:

1000000/2*998)out=0;

1000000/998)t=0;

1000000/2*998)out=1;

b01000:

//gaopin

1000000/4*523)out=0;

1000000/2*523)t=0;

1000000/4*523)out=1;

b01001:

1000000/4*587)out=0;

1000000/2*587)t=0;

1000000/4*587)out=1;

b01010:

1000000/4*659)out=0;

1000000/2*659)t=0;

1000000/4*659)out=1;

b01011:

1000000/4*698)out=0;

1000000/2*698)t=0;

1000000/4*698)out=1;

b01100:

1000000/4*784)out=0;

1000000/2*784)t=0;

1000000/4*784)out=1;

b01101:

1000000/4*880)out=0;

1000000/2*880)t=0;

1000000/4*880)out=1;

b01110:

1000000/4*998)out=0;

1000000/2*998)t=0;

1000000/4*998)out=1;

5'

b11000:

//diyin

1000000/523)out=0;

1000000/0.5*523)t=0;

1000000/523)out=1;

b11001:

1000000/587)out=0;

1000000/0.5*587)t=0;

1000000/587)out=1;

b11010:

1000000/659)out=0;

1000000/0.5*659)t=0;

1000000/659)out=1;

b11011:

1000000/698)out=0;

1000000/0.5*698)t=0;

1000000/698)out=1;

b11100:

1000000/784)out=0;

1000000/0.5*784)t=0;

1000000/784)out=1;

b11101:

1000000/880)out=0;

1000000/0.5*880)t=0;

1000000/880)out=1;

b11110:

1000000/998)out=0;

1000000/0.5*998)t=0;

1000000/998)out=1;

b11111:

out=0;

endcase

end

点击保存,将文件名改为模块名,即改为kksbq,

加入信号,一个脉冲信号一个位长为5的输入信号,保存,编译,仿真

(2)输入的脉冲信号为:

输入的信号及仿真的结果为:

有仿真电路图可知,当加入11110的输入信号时,代表的是低音“西”,可见将1MHz的信号分成了所需频率的信号。

4.总的电路图及得到的仿真结果

总的电路图:

中音“哆”

当S1按键按下时,输出波形的频率符合要求。

5.分配管脚

(1)管脚对应表:

信号名称

对应FPGA管脚名

说明

1MHz

L2

基准时钟

OU

F3

音频输出

S1

F8

基本功能按键

S2

A14

S3

F10

S4

B16

S5

F12

S6

B17

S7

F15

S8

B18

BT1

M1

扩展功能按键

BT2

M2

BT3

U12

BT4

U11

分配管脚图:

根据该管脚的分配图将输入信号输出信号及控制高音低音功能的按键分别分配到不同的管脚处,以便通过实验器材验证程序的正确与否。

经过老师检测,所发的声音符合实验要求。

5.实验中出现的问题及解决的方案

1.按键消抖是此次课程设计的难点和易错点,通过分析按键消抖状态机及询问同学,最终搞清楚了消抖的原理,编写了程序并运行成功。

2.“=”和“==”是两个不同的运算符,“=”是赋值语句,“==”是比较语句,实验编程中将两者弄混,使得按键识别程序一直出错,最终找到原因并改正。

3.刚开始只编写了中高音的程序,所以设的变量为宽度为4的变量,中高音运行成功并检查合格后有添加了低音功能,将变量设为宽度为5的变量,并设置编码来代表低音那七个音。

4.连接总电路图时,加了二分频模块,即加了D触发器和一个非门,单输出波形不符合要求,经过询问同学,将这个二分频模块去掉后,输出波形符合要求。

5.中高低三个音都有自己的频率值,通过计算并用case语句将21个音的频率分出来,以满足设计要求。

六.总结

1.通过此次课程设计,重新熟悉了Quartus软件的应用步骤,从破译到建工程,编写程序,绘制电路图,添加输入信号,编译,仿真。

这几天将这几个步骤练习的挺熟练的,这也为以后熟练使用该软件提供了方便。

2.此次课程设计所用语言为verilog语言,课堂上没怎么学过,虽然此语言与C语言有很大的相似之处,但一些变量的设置和一些特定的要求仍与C语言不同,所以又将课本第六章重新学习了一遍,学到了很多,也成功地编写出了程序(虽然在编写的过程中老是出错)。

3.此次实习将课本理论知识和实际联系起来,运用所学知识设计了一个简易的电子琴,并输出了21个不同的音,颇有收获感。

4.虽然用的是verilog语言,但仍然觉得学到的只是一些皮毛,在接下来的学习中还得不断完善自我,提高动手能力,提高理论联系实际的能力,多向身边的同学学习。

5.还有我也发现了在平时学习过程中难于发现的许多缺点不足。

比如实践的机会过少,所学的理论知识不能够灵活运用,因此在遇到实际的问题时无法正确处理;

再者在课堂上获得的专业知识过于浅显,很多的有关基本操作原理、操作方法都理解不了;

课外知识了解的也过少,导致在课程设计初期,面对完全陌生的设计课题无从下手,不知所措。

所以以后的学习生活中要理论和实践多结合,才能更好的掌握知识。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2