基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx

上传人:b****6 文档编号:15835577 上传时间:2022-11-16 格式:DOCX 页数:22 大小:497.43KB
下载 相关 举报
基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx_第1页
第1页 / 共22页
基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx_第2页
第2页 / 共22页
基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx_第3页
第3页 / 共22页
基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx_第4页
第4页 / 共22页
基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx

《基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

基于verilog语言简易电子琴设计数字电子技术课程设计报告Word格式.docx

低8度音:

基本音频率/2,例如低音1的频率为523/2=261.5Hz。

高8度音:

基本音频率×

2,例如高音1的频率为523×

2=1046Hz.。

不同的频率产生利用给定的时钟脉冲来进行分频实现。

(2)消抖的原理:

按键默认输入逻辑‘1’,当有按键按下时对应的输入为逻辑‘0’(但会存在抖动),当FPGA开始检测到该引脚从‘1’变为‘0’后开始定时(按键抖动时间大约10ms),定时时间结束后若该引脚仍然为‘0’则表示确实发生按键按下,否则视为抖动而不予以理会;

按键松开过程的消抖处理和按下时原理一样。

(3)原理框图

四、管脚对应表

信号名称

对应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

五、实验过程

1、设计按键防抖模块

(1)设计程序

modulexiaodou(rst,clk_1M,out);

inputclk_1M;

inputrst;

outputout;

wirerst;

regout;

reg[24:

0]cnt;

reg[2:

0]state;

parameterstate0=3'

b000,

state1=3'

b001,

state2=3'

b010,

state3=3'

b011,

state4=3'

b100,

state5=3'

b101;

always@(posedgeclk_1M)

begin

cnt<

=24'

d0;

case(state)

state0:

if(!

rst)

begin

out=0;

state<

=state1;

end

else

=state0;

state1:

begin

out=0;

cnt<

=cnt+1;

if(cnt==10000)

state<

=state2;

else

begin

//out=1;

end

end

state2:

=state3;

state3:

begin

out=1;

cnt<

=0;

//state<

=state4;

state4:

if(cnt==200000)

out=1;

=state5;

state5:

if(rst)

state<

endcase

end

endmodule

(2)原理图及仿真波形

2、按键识别模块设计

(1)程序设计

modulexkey(a,b,c,d,e,f,g,h,l,qout);

inputa,b,c,d,e,f,g,h,l;

outputqout;

reg[8:

0]qin;

reg[4:

0]qout;

always@(aorborcordoreorforgorhorl)

qin[8]=a;

qin[7]=b;

qin[6]=c;

qin[5]=d;

qin[4]=e;

qin[3]=f;

qin[2]=g;

qin[1]=h;

qin[0]=l;

end

always@(qin)

case(qin)

9'

b100000000:

qout<

=5'

b00001;

b010000000:

b00010;

b001000000:

b00011;

b000100000:

b00100;

b000010000:

b00101;

b000001000:

b00110;

b000000100:

b00111;

b100000010:

b01000;

b010000010:

b01001;

b001000010:

b01010;

b000100010:

b01011;

b000010010:

b01100;

b000001010:

b01101;

b000000110:

b01110;

b100000001:

b01111;

b010000001:

b10000;

b001000001:

b10001;

b000100001:

b10010;

b000010001:

b10011;

b000001001:

b10100;

b000000101:

b10101;

b000000000:

b00000;

b000000010:

b000000001:

default:

endcase

3、分频器模块的设计

modulefenpin(in,clk_1M,out);

inputin;

inputclk_1M;

outputout;

wire[4:

0]in;

regout;

reg[11:

0]count;

reg[4:

initial

count<

=12'

parameterstate0=5'

b00000,

state1=5'

b00001,

state2=5'

b00010,

state3=5'

b00011,

state4=5'

b00100,

state5=5'

b00101,

state6=5'

b00110,

state7=5'

b00111,

state8=5'

b01000,

state9=5'

b01001,

state10=5'

b01010,

state11=5'

b01011,

state12=5'

b01100,

state13=5'

b01101,

state14=5'

b01110,

state15=5'

b01111,

state16=5'

b10000,

state17=5'

b10001,

state18=5'

b10010,

state19=5'

b10011,

state20=5'

b10100,

state21=5'

b10101,

state22=5'

b10110;

always@(posedgeclk_1M)

case(state)

state0:

//if(allin==5'

b10110)

//state<

if(in==5'

b00001)

state<

elseif(in==5'

b00010)

b00011)

b00100)

b00101)

b00110)

=state6;

b00111)

=state7;

b01000)

=state8;

b01001)

=state9;

b01010)

=state10;

b01011)

=state11;

b01100)

=state12;

b01101)

=state13;

b01110)

=state14;

b01111)

=state15;

b10000)

state

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

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1