嵌入式系统论文.docx
- 文档编号:2064128
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:15
- 大小:1.39MB
嵌入式系统论文.docx
《嵌入式系统论文.docx》由会员分享,可在线阅读,更多相关《嵌入式系统论文.docx(15页珍藏版)》请在冰点文库上搜索。
嵌入式系统论文
《嵌入式系统开发基础》课程论文
基于FPGA的卡拉OK机嵌入式设计
学号1115107007
姓名
班级11级通信B班
指导老师
华侨大学通信工程系
目录
一、摘要3
二、整体设计方案3
1、方案结构框图3
2、主要方案选择4
3、主要研究问题4
三、硬件平台及相关器件介绍4
1、DE2开发板4
2、wm8731音频编/解码芯片5
四、软件设计7
1、控制及分频模块CLOCK_500.v7
2、I2C总线传输模块i2c.v10
3、按键控制音量调节信号产生模块keytr.v11
五、硬件验证12
六、结语与致谢14
七、参考文献14
一、摘要
近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。
嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。
目前,信号处理技术、通信技术和多媒体技术的迅猛发展都得益于DSP技术的广泛应用。
但是对于便携式和家用的语音系统而言,基于一般的DSP芯片的设计方案并不理想。
首先DSP的芯片成本以及开发成本在现阶段仍然是比较高的,尤其是芯片成本,远远不及大批量ASIC芯片成本之低。
其次便携式的设备对体积要求十分苛刻,限制了一部分DSP芯片的使用,而体积正是ASIC芯片的优点之一。
本次课程设计提出了一种基于FPGA的卡拉OK机设计方案,使用DE2平台进行验证。
利用WM8731音频解码芯片,通过将音乐和麦克风采集的人声的混合达到K歌的效果。
混合后的音乐通过耳机放大器输出,可以直接驱动耳机或有源音箱。
2、整体设计方案
1、方案结构框图
2、主要方案选择
方案中的处理器选用了Altera 公司的Cyclone II系列FPGA中的EP2C35F672C6。
另外,使用DE2板上集成的Wolfson公司的低功耗立体声24位音频编/解码芯片WM8731完成音频输入/输出。
3、主要研究问题
1、FPGA及SOPC编程控制技术
2、WM8731的原理与控制
3、I2C总线的FPGA控制
3、硬件平台及相关器件介绍
1、DE2开发板
在设计的硬件开发平台是DE2开发板,它是Altera公司针对大学教学以及研究机构推出的FPGA开发平台。
DE2平台上的FPGA采用AlteraCyclone2系列的EP2C35F672C6。
DE2板外观图如下:
2、wm8731音频编/解码芯片
1、芯片简介
WM8731是一款带有集成耳机驱动器的极低功耗、高质量音频编码解码器,专为便携数字音频应用而设计。
该器件可以提供CD音质的音频录音和回放,为16欧姆的负载提供50mW的输出功率。
WM8731包含2个线路输入和1路麦克风输入并可以进行音量调节;内置片上ADC(模拟数字转换器)及可选择的高通数字滤波器;采用高品质过采样率结构的DAC(数字模拟转换器);线路输出和耳机输出;内置晶体振荡器以及可配置的数字音频接口和2或3线可选的微处理器控制接口等。
控制器可通过控制接口(ControlInterface)对WM8731进行配置,然后通过数字音频接口(DigtalAudioInterface)读写数据音频信号。
WM8731带有一个片上时钟发生器,支持多种时钟模式。
通过一个12MHz时钟,该器牛可以直接生成44.1kHz、48kHz和96kHz等采样率,以及MP3标准定义的其他采样率,完全不需要一个独立的锁相环或晶振。
支持其他公用的主时钟频率,例如12.288MHz。
芯片电路图
如图LINEIN接手机耳机插口输入音乐,同时MICIN接麦克风,LINEOUT接耳机或音响,可以从LINEOUT口听到音乐与MIC中人声的混合音。
管脚图
2、芯片工作原理
音频编/解码芯片WM8731上电后必须将工作模式设置在系统要求的状态下,因此上电需要用VERILOGHDL编写程序模块对芯片的工作模式进行设置。
该语音编/解码芯片有多种工作模式,A/D变换后,语音的采样频率与采样位宽都需要根据系统的具体要求,合理配置。
语音芯片的配置时序为I2C模式,芯片接口为主模式,即由WM8731提供位时钟,A/D转换和D/A转换的左、右声道控制相位时钟,以及转换后的数据PCM码输送给FPGA处理器。
以下为芯片配置字列表,WM8731内部控制字寄存器有16个,在芯片初始化时,在制作ROM表格中完成。
相应的程序设置如下:
SET_LIN_L:
LUT_DATA_<=16'h001A;//线入左声道控制
SET_LIN_R:
LUT_DATA_<=16'h021A;//线入右声道控制
SET_HEAD_L:
LUT_DATA<=16'h047B;
SET_HEAD_R:
LUT_DATA<=16'h067B;
A_PATH_CTRL:
LUT_DATA<=16'h0814;//16’h08F8;
D_PATH_CTRL:
LUT_DATA<=16'h0A06;//16’h0A06;
POWER_ON:
LUT_DATA<=16'h0C00;
SET_FORMAT:
LUT_DATA<=16'h0E01;
SAMPLE_CTRL:
LUT_DATA<=16'h100E;
SET_ACTIVE:
LUT_DATA<=16'H1201;
四、软件设计
本设计使用verilogHDL语言,使用Quartus2进行软件设计。
系统总原理图如下:
系统分三个模块,分别为控制及分频模块CLOCK_500、I2C总线传输模块i2c、按键控制音量调节信号产生模块keytr。
下面将分别介绍:
1、控制及分频模块CLOCK_500.v
模块生成的symbol图:
下面是verilog程序CLOCK_500.v:
`definerom_size6'd8
moduleCLOCK_500(
CLOCK,
CLOCK_500,
DATA,
END,
RESET,
GO,
CLOCK_2
);
inputCLOCK;
inputEND;
inputRESET;
outputCLOCK_500;
output[23:
0]DATA;
outputGO;
outputCLOCK_2;
reg[10:
0]COUNTER_500;
wireCLOCK_500=COUNTER_500[9];
wireCLOCK_2=COUNTER_500[1];
reg[15:
0]ROM[`rom_size:
0];
reg[15:
0]DATA_A;
reg[5:
0]address;
wire[23:
0]DATA={8'h34,DATA_A};//定义24位的[23:
0]DATA前八位为34H,后16位为[15:
0]DATA_A
wireGO=((address<=`rom_size)&&(END==1))?
COUNTER_500[10]:
1;
always@(negedgeRESETorposedgeEND)begin
if(!
RESET)address=0;//若RESET=0,则传输ROM[0]=16'h0c00,效果是powerdown
else
if(address<=`rom_size)address=address+1;//RESET=1,则传输ROM[X]的下一条语句
end
reg[7:
0]vol;
always@(posedgeRESET)begin
vol=vol-1;end//vol-1使音量减小,每来一个RESET上升沿执行一次
always@(posedgeEND)begin
//ROM[0]=16'h1e00;
ROM[0]=16'h0c00;//powerdown
ROM[1]=16'h0ec2;//master
ROM[2]=16'h0838;//soundselect
ROM[3]=16'h1000;//mclk
ROM[4]=16'h0017;//
ROM[5]=16'h0217;//
ROM[6]={8'h04,1'b0,vol[6:
0]};//左通道耳机音量输出控制
ROM[7]={8'h06,1'b0,vol[6:
0]};//右通道耳机音量输出控制
//ROM[4]=16'h1e00;//reset
ROM[`rom_size]=16'h1201;//active
DATA_A=ROM[address];//令[15:
0]DATA_A等于ROM[address],使对WM8731的控制语句通过[23:
0]DATA由I2C总线(即i2c模块)传给WM8731。
end
always@(posedgeCLOCK)begin
COUNTER_500=COUNTER_500+1;//分频,将50MHz分成1MHz
end
endmodule
程序原理分析:
本程序模块是本次设计的关键模块,它实现了对WM8731的控制命令、音量调节、分频等功能。
对WM8731的控制语句为16位总线数据,具体请看如下描述:
由上表可知,ROM[6]={8'h04,1'b0,vol[6:
0]};与ROM[7]={8'h06,1'b0,vol[6:
0]};分别为左通道耳机音量输出控制和右通道耳机音量输出控制,调节音量的功能即在此实现。
下表是WM8731芯片ADC、DAC、I2CSDAT、I2CSCLK等端口的引脚锁定:
以上引脚在原理图上的截图:
另外,本程序模块还实现将50MHz时钟分频成1MHz时钟的功能。
2、I2C总线传输模块i2c.v
模块生成的symbol图:
程序原理分析:
如上图所示为WM8731的I2C总线时序,可以看到i2c.v程序中按照上图中SDIN的时序顺序依次进行,从而完成24位数据[23:
0]I2C_DATA的传输,其中后16位数据是对WM8731的控制信息,详解请看CLOCK_500.v模块中的相关描述。
3、按键控制音量调节信号产生模块keytr.v
模块生成的symbol图:
下面是verilog程序keytr.v:
`defineOUT_BIT9
modulekeytr(
key,
ON,
clock,
KEYON,
counter
);
inputkey;
outputON;
outputKEYON;
inputclock;
output[9:
0]counter;
reg[9:
0]counter;
regKEYON;
wireON=((counter[`OUT_BIT]==1)&&(key==0))?
0:
1;
always@(negedgeONorposedgeclock)begin
if(!
ON)
counter=0;
elseif(counter[`OUT_BIT]==0)
counter=counter+1;
end
always@(posedgeclock)begin
if((counter>=1)&&(counter<5))
KEYON=0;
else
KEYON=1;
end
endmodule
程序原理分析:
该程序模块输入key连接DE2板上的KEY0作为音量调节按键,时钟输入接CLOCK_500.v模块中分频得到的1MHz时钟。
输出KEYON接CLOCK_500.v的reset端,从而在CLOCK_500.v通过对vol[6:
0]的控制起到调节音量的效果。
五、硬件验证
Quartus2编译结果:
(成功)
引脚锁定:
下载到FPGA:
硬件验证结果:
如上图LINEIN(音频输入)口接手机耳机插口输入音乐,同时MICIN(麦克风)口接麦克风,LINEOUT接耳机或音响,可以从LINEOUT(音频输出)口听到音乐与MIC中人声的混合音。
本次设计完成。
六、结语及致谢
从老师布置论文撰写的一开始,我就一直在构思选题,搜索了许多关于嵌入式系统的论文,并且也找了图书馆里关于嵌入式的书籍。
但由自身水平有限,想要深刻理解一些前辈们撰写的论文以及相关教材中一些技术实属难事,若还想就此写一写自己的理解更是难上加难。
于是,选择了之前的《关于卡拉OK机的嵌入式课程设计》进行论文的撰写。
写论文的过程中,我学到了不少的知识,经历了很多,也体会到了很多,虽然结果很重要,可是并不能因此就忽略了中间的过程,因为这才是解决问题的关键。
最后,感谢戴老师一学期以来在《嵌入式系统设计》这门课上深入浅出的讲课,以及平时在班级群里与同学的互动交流与分享,一起探讨,朝着未知领域前进的感觉很好。
七、参考文献
[1]侯殿有.嵌入式系统开发基础[M].北京:
清华大学出版社.2013.
[2]秦贵和.嵌入式技术[M].北京:
航空航天大学出版社.2005.
[3]熊茂华.嵌入式系统设计与开发应用[M].北京:
清华大学出版社.2008.
[4]田泽.ARM9嵌入式开发实验与实践[M].北京:
航空航天大学出版社.2006.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 论文
![提示](https://static.bingdoc.com/images/bang_tan.gif)