FPGA报告实验4_第1页
FPGA报告实验4_第2页
FPGA报告实验4_第3页
FPGA报告实验4_第4页
FPGA报告实验4_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西南科技大学实验报告课程名称: 基于FPGA的现代数字系统设计 实验名称: 硬件电子琴电路设计 姓 名: 学 号: 班 级: 通信1301 指导教师: 刘桂华 西南科技大学信息工程学院制 硬件电子琴电路设计实验原理一、 实验目的:学习利用数控分频器设计硬件电子琴实验。二、原理说明:主系统由3个模块组成,例1是顶层设计文件,其内部有三个功能模块(如图1所示):Speakera.v(例4) 和ToneTaba.v (例3),NoteTabs.v (例2)。模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频

2、预置值;同时由Code输出对应该音阶简谱的显示数码,如5,并由High输出指示音阶高8度显示。模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演

3、奏电路。 图1 硬件电子琴电路结构二、 实验步骤1、 构建一个工程名为songer的工程2、 分别输入ToneTaba.v、Speakera.v、的Verilog HDL文本,进行综合和功能仿真,理解、验证模块功能。(1) 创建音节发生器ToneTaba.v模块module ToneTaba (Index,Code,High,Tone); input3:0 Index; output3:0 Code; output High; output10:0 Tone; reg3:0 Code; reg High; reg10:0 Tone; always (Index) begin case(Inde

4、x) 4'b0000:begin Tone<=11'b11111111111;Code<=4'b0000;High<=1'b0;end/2047 4'b0001:begin Tone<=11'b01100000101;Code<=4'b0001;High<=1'b0;end/773 4'b0010:begin Tone<=11'b01110010000;Code<=4'b0010;High<=1'b0;end/912 4'b0011:be

5、gin Tone<=11'b10000001100;Code<=4'b0011;High<=1'b0;end/1036 4'b0101:begin Tone<=11'b10010101101;Code<=4'b0101;High<=1'b0;end/1197 4'b0110:begin Tone<=11'b10100001010;Code<=4'b0110;High<=1'b0;end/1290 4'b0111:begin Tone<=11

6、'b10101011100;Code<=4'b0111;High<=1'b0;end/1372; 4'b1000:begin Tone<=11'b10110000010;Code<=4'b0001;High<=1'b1;end/1410; 4'b1001:begin Tone<=11'b10111001000;Code<=4'b0010;High<=1'b1;end/1480; 4'b1010:begin Tone<=11'b110000

7、00110;Code<=4'b0011;High<=1'b1;end/1542; 4'b1100:begin Tone<=11'b11001010110;Code<=4'b0101;High<=1'b1;end/1622; 4'b1101:begin Tone<=11'b11010000100;Code<=4'b0110;High<=1'b1;end/1668; 4'b1111:begin Tone<=11'b11011000000;Code&l

8、t;=4'b0001;High<=1'b1;end/1728; default:begin Tone<=11'b11111111111;Code<=4'b0000;High<=1'b0;end/2047 endcase endendmodule对该模块进行综合,然后创建激励文件Test Fixture如下:得到波形图如图所示:(2) 创建一个数控分频器Speakera.v模块module Speakera(Clk,Tone,SpkS); input Clk; input10:0 Tone; output SpkS; reg Pre

9、Clk; reg FullSpkS; reg3:0 Count4; reg10:0Count11; reg Count2; reg SpkS;always(posedge Clk)begin if(Count4>11)begin PreClk<=1'b1; Count4<=1; end else begin PreClk<=1'b0; Count4<=Count4+1'b1; end endalways(posedge PreClk)begin if(Count11>=11'h7FF) begin Count11<=To

10、ne; FullSpkS<=1'b1; end else begin Count11<=Count11+1'b1; FullSpkS<=0; endendalways(posedge FullSpkS)begin Count2<=Count2; if(Count2=1'b1) SpkS<=1'b1; else SpkS<=1'b0; end endmodule然后进行综合。3、 输入50MHZ到12.5MHZ和50MHZ到4HZ的分频模块(1) div_50_12M.v模块module div_50_12M(clk_5

11、0M,clk_12M,reset);input clk_50M;input reset;output clk_12M;reg 23:0 counter;reg clk_12M;always (posedge clk_50M or negedge reset) if(!reset) counter <= 24'b00; else if(counter = 3) /3 counter <= 24'b0; else counter <= counter + 1'b1; always (posedge clk_50M or negedge reset) if(

12、!reset) clk_12M <= 1'b0;else begin if(counter =24'd3) clk_12M <= 1'b1; else clk_12M <= 1'b0; endendmodule对其进行综合,并创建激励文件进行仿真:仿真得到的波形(2) 系统需要4HZ频率读ROM,于是用50MHZ,分频得到4HZ频率。module div_50_4HZ(clk_50M,clk_4HZ,reset);input clk_50M;input reset;output clk_4HZ;reg 23:0 counter;reg clk_

13、4HZ;always (posedge clk_50M or negedge reset) if(!reset) counter <= 24'b00; else if(counter = 12499999) /3 counter <= 24'b0; else counter <= counter + 1'b1; always (posedge clk_50M or negedge reset) if(!reset) clk_4HZ <= 1'b0;else begin if(counter =24'd12_499_999) clk

14、_4HZ <= 1'b1; else clk_4HZ <= 1'b0; endendmodule对其进行综合。4、 输入Notetabs .v模块,调用ROM的IPcore实现对梁祝音乐的存储。(1) IP核的创建【Projcet Navigator】中新建Coregen IP类型的资源,输入CEO文件(2) Verrilog文本输入module NoteTabs(Clk,ToneIndex); input Clk; output3:0 ToneIndex; reg7:0 Counter; always(posedge Clk ) beginif(Counter&g

15、t;=138) Counter<=8'b00000000;else Counter<=Counter+1'b1;end Music u5( .addr(Counter), .clk(Clk), .dout(ToneIndex) ); endmodule 对该模块进行综合,输入激励文件:进行功能仿真,得到波形如下5、 创建顶层文件module songer(clk_50M,reset,Code1,High1,Spkout);input clk_50M;/CLK=50MHZinput reset;output3:0 Code1;output High1,Spkout;

16、wire10:0 Tone;wire3:0 ToneIndex;wire clk_4HZ,clk_12M; NoteTabs u0( .Clk(clk_4HZ), .ToneIndex(ToneIndex) ); ToneTaba u1( .Index(ToneIndex), .Code(Code1), .High(High1), .Tone(Tone) ); Speakera u2( .Clk(clk_12M), .Tone(Tone), .SpkS(Spkout) ); div_50_12M u3(clk_50M,clk_12M,reset); div_50_4HZ u4(clk_50M,

17、clk_4HZ,reset);endmodule对顶层文件进行综合6、 引脚锁定7、 下载到实验板上进行验证三、 实验结果及分析1、 对tonetabs模块波形进行分析如图所示,根据音节发生器功能真值表,当发声控制输入Index为某一音符对应的值时,则对应某一音阶的数值将从端口Tone输出,同时由Code输出对应该音阶简谱的显示数码,并由High输出指示音阶高8度显示。如:index为4h1时,tone输出11h305,code为4h1。显然与真值表相同,其他同样可验证的。2、 对50M转12M的波形分析有图可知,clk_50M进过4个周期后,clk_12进过一个周期,即为clk_12的频率为clk_50的1/4,显然达到了分频要求。四、 实验思考题解答(实验指导书要求的思考题)1、 电路上应该满足哪些条件,才能用数字器件直接输出的方波驱动扬声器发声?(1) 输出的频率在扬声器的工作范围之内(扬声器的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论