实验8WAV音频播放器Word格式文档下载.docx
《实验8WAV音频播放器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验8WAV音频播放器Word格式文档下载.docx(76页珍藏版)》请在冰点文库上搜索。
编写顶层文件时注意这个名字。
鼠标左键单击“next”按钮,会弹出如图8-4所示的问句。
鼠标左键单击“是”按钮,进入“AddFiles[page2of5]”页,如图8-5所示。
这里还没有建立任何文档,再加上后面可以添加,故鼠标左键单击“next”按钮。
鼠标左键单击“Next”按钮后进入“Family&
DeviceSettings[page3of5]”页面。
在“Family&
DeviceSettings[page3of5]”页面:
“Devicefamily”栏里的“family”选择“CycloneII”;
“Availabledevices”栏里选择“EP2C70F896C6”器件,其它为缺省设置,如图8-6所示。
鼠标左键单击“Finish”按钮,完成工程的初建。
新建的“QuartusⅡ-E:
/demo/demo_WAVplayer/demo_wav-demo_wav”工程页面如图8-7所示。
在“QuartusⅡ-E:
/demo/demo_WAVplayer/demo_wav-demo_wav”工程页面,“entity”栏下,可以看到“CycloneⅡ:
EP2C70F896C6”和工程名字“demo_wav”。
如果“entity”栏下可以看到的不是“CycloneⅡ:
EP2C70F896C6”,比如是“StratixⅡ:
AUTO”的话,请用鼠标左键双击“StratixⅡ:
AUTO”,或者光标指着“StratixⅡ:
AUTO”然后鼠标单击右键,在下拉菜单里点击“settings”,两种方法都能使“Settings-demo_wav”的设置页弹出,在“Device”中,可以重新设置成如图8-6所示。
初建的“QuartusⅡ-E:
/demo/demo_WAVplayer/demo_wavt-demo_wav”工程页面,会自动保存在路径“E:
\demo\demo_WAVplayer”下。
任何时候想要完成工程后续设计,可以再次打开此路径下的工程文件夹“demo_WAVplayer”,如图8-8所示。
鼠标左键双击带有蓝色“Quartus”图标的“demo_wav”文件,就可以打开“QuartusⅡ-E:
/demo/demo_WAVplayer/demo_wavt-demo_wav”工程页面。
(二)拷贝ip到工程文件夹“demo_WAVplayer”里
/demo/demo_WAVplayer/demo_wav-demo_wav”工程页面内,鼠标左键单击“open”按钮弹出“打开”对话框。
在“打开”对话框的“查找范围”里,找到路径为“D:
/SOPC实验资料/WAVplayer资料”中的ip核文件夹,把此ip核文件夹拷贝到路径“E:
\demo\demo_WAVplayer”下,然后关闭“打开”对话框,如图8-9所示。
“SOPCBuilder”工具判断ip核模式正确的话,会自动把此ip核加到共用库中。
(三)利用“SOPCBuilder”工具初建硬件系统
/demo/demo_WAVplayer/demo_wav-demo_wav”工程页面,鼠标左键单击Tools‐>
SOPCBuilder,弹出“CreateNewSystem”对话框。
在“CreateNewSystem”对话框里:
“SystemName”项后输入“nios0”;
“TargetHDL”项一般选择“Verilog”;
如图8-10所示。
鼠标左键单击“OK”按钮,完成硬件系统的初建。
“TargetHDL”项一般选择“Verilog”,表示“SOPCBuilder”会将你稍后所配置的IP核,以Verilog表示,若你熟悉VHDL,也可以选择VHDL。
这里的设定不是限制了日后只能用Verilog或VHDL写代码,因为QuartusII本来就允许Verilog与VHDL混合編程,也就是说Verilog的module可以使用VHDL的entity,VHDL的entity可以使用Verilog的module,最后都能顺利编译。
配置此工程硬件系统的“SOPCBuilder”工具页面如图8-11所示,由于已经把ip拷贝到工程文件夹“demo_WAVplayer”中,“SOPCBuilder”工具页面的“SystemContents”栏里“ComponentLibrary”下,可以看到增加了“TerasicTechnologiesInc.”,此目录下面有两个新IP硬件核“AUDIO_IF”和“SEG7_IF”。
在“SOPCBuilder”工具页面,添加的硬件会在默认空白区出现,并且可以修改、删除,在默认空白区还显示硬件的主从连接。
这里需要注意:
如果配置硬件的过程中暂停设计,关闭“SOPCBuilder”工具页面会弹出一个问句,如图8-12所示。
鼠标左键单击“Save”按钮,建立的硬件系统信息就保存到路径“E:
/demo/demo_WAVplayer”下的文件“nios0.sopc”中。
如果需要再次打开此工程的“SOPCBuilder”工具页面重续硬件配置的话,可以先打开“QuartusⅡ-E:
/demo/demo_WAVplayer/demo_wav-demo_wav”工程页面(方法如图8-8所示),鼠标左键单击工程页面的“open”按钮弹出“打开”页面。
在“查找范围”找到路径“E:
\demo\demo_WAVplayer”下的“nios0.sopc”文件,鼠标左键双击“nios0.sopc”文件即可打开本工程的“SOPCBuilder”工具页面。
(四)配置硬件
1.定义时钟(clock)
确认“SOPCBuilder”工具页面的“Target/DeviceFamily”是“CycloneII”。
在如图8-13所示的“ClockSettings”栏里可以看到50.0MHz,代表NiosIICPU在DE28-70可以运行在50.0MHz,但这时CPU降频在跑,正常情況下,NiosIICPU在DE28-70可以运行100.0MHz,所以可以用PLL将clk倍频成100.0Mhz。
2.添加用来保存“Nios”程序的片上存储器(On-ChipMemory)
“OnChipMemory”在FPGA芯片内,是DE2-70上所有存储器中存储量最小,但是速度最快的存储器。
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents‐>
ComponentLibrary‐>
MemoriesandMemoryControllers‐>
OnChip‐>
OnChipMemory(RAMorROM)‐>
Add。
弹出“onchipmemory”设置页面,如图8-14所示。
在“onchipmemory”设置页面:
“TotalMemorySize”设置为80960;
其他为缺省设置,鼠标左键单击“Finish”按钮。
不用管状态框里的错误,添加Nios处理器后会自动消失。
“Totalmemorysize”与能使用的M4K存储器数量、FPGA、NiosIICPU和Megafunction(如fcfifo)都会影响“On8-chipMemory”的size,本教程使用80k。
“OnChipMemory”会在“SOPCBuilder”工具页面默认空白区有显示如图8-15所示。
如果想修改“OnChipMemory”的设置,可以左键双击硬件名称,会重新弹出如图18-14所示的设置页面。
对于其他硬件来说,方法类似。
把“onchip_memory2_0”改成“onchip_mem”。
3.添加NiosII/s处理器(NiosⅡProcessor)
ComponentLibrary‐>
NiosIIProcessor‐>
Add,弹出“NiosⅡProcessor”设置页面。
在“NiosⅡProcessor”设置页面:
设置NiosII/f处理器,“ResetVector”、“ExceptionVector”都选择“onchipmemory”,如图8-16所示。
鼠标左键单击“Finish”按钮,把“cpu_0”改成“cpu”。
4.添加调试接口(JTAG‐UART)
InterfaceProtocols‐>
Serial‐>
JTAGUART‐>
Add,弹出“JTAGUART”设置页,如图8-17所示。
使用缺省设置,鼠标左键单击“Finish”按钮。
把“jtag_uart_0”改成“jtag_uart”。
JTAGUART是PC与SOPC进行序列传输的一种方式,也是NiosIICPU标准的输出/输入设备。
如printf()通过JTAGUART,经过USBBlaster将输出结果显示在PC的NiosIIEDS上的console,scanf()通过USBBlaster经过JTAGUART将输入传给SOPC。
5.添加两个内部定时器(IntervalTimer)
Peripherals‐>
MicrocontrollerPeripherals‐>
IntervalTimer‐>
Add,弹出“IntervalTimer”设置页,按照图8-18所示设置,鼠标左键单击“Finish”按钮。
把“timer_0”改成“timer”。
按照相同的方法再增添一个“timer_1”,把名字改写成“timer_stamp”。
6.添加系统ID(SystemID)
在“SOPCBuilder”工程页面,鼠标左键单击SystemContents‐>
Peripherals‐>
DebugandPerformance‐>
SystemIDPeripheral‐>
Add,弹出“SystemIDperipheral”设置页面,如图8-19所示。
使用缺省设置,鼠标左键单击“Finish”按钮。
把“sysid_0”的名称改为“sysid”。
“SOPCBuilder”会使用SystemID为每个系统提供识别符号,NiosIIEDS可以识别符号防止使用者往FPGA上烧录了与“.ptf”不符合的“.sof”。
7.添加红绿两色LED连接PIO
PIO(ParallelI/O)‐>
Add。
弹出“PIO(ParallelI/O)”多项设置页面。
“Width”设置成18位输出方式,其他使用缺省值,如图8-20所示。
鼠标左键单击“Finish”按钮,将名称改为“pio_red_led”。
按照同样方法,设置“Width”为8位输出方式,其他使用缺省值,将名字改为“pio_green_led”
8.添加栓扣和按键开关输入PIO
MicrocontrollerPeripherals‐>
Add,弹出“PIO(ParallelI/O)”多项设置页面。
默认进入“ParameterSettings”的“BasicSettings”设置页面,如图8-21所示。
在此页设置:
“Width”为4;
“Direction”为input。
鼠标左键单击图8-21所示页面的“inputoptions”,进入“inputoptions”设置页面。
在“inputoptions”设置页面:
“Edgecaptureregister”栏的“SychronouslyCapture”前打勾,选择“Fallingedge”;
在“Interrupt”栏“GenerateIRQ”前打勾,然后选中“Edge”。
如图8-22所示,然后鼠标左键单击“Finish”按钮,将名称改为“pio_button”。
一定要选中“Edge”方式产生中断,否则按键按下后会连续不断地产生中断,导致CPU死锁。
默认进入“ParameterSettings”的“BasicSettings”设置页面,如图8-23所示。
“Width”为18;
“Direction”为input;
其他为默认值,将该硬件的名称改为“pio_switch”。
9.添加PLL
本实验需要三个时钟:
(1)100MHz的C0,用于系统硬件;
(2)100MHz的C1,用于“sdram”;
(3)18.518MHz的C2,用于“AUDIO”。
用于“sdram”的c1的“Clockphaseshift”设置为“-65ps”。
PLL‐>
PLL‐>
在弹出的对话框里,鼠标左键单击“LaunchAltera’sALTPLLMegaWizard”,使按钮周框内侧出现虚方框,如图8-24所示。
鼠标左键单击“next”按钮,进入ALTPLL多项设置页面。
默认进入的页面是:
1parametersettings栏的“General/Modes”设置页,显示为:
1parametersettings为深兰色背景,“General/Modes”为General/Modes。
如图8-25左上角所示,此页缺省设置。
鼠标左键单击2outputclocks栏,默认转换到“c0-Core/Externaloutputclocks”的设置页面,如图8-26所示。
在“c0-Core/Externaloutputclocks”的设置页面:
2outputclocks为深兰色背景,“clkc0”为clkc0。
“clkc0”各参数按照图8-26所示页面设置。
鼠标左键单击2outputclocks栏下的“clkc1”,进入“c1-Core/Externaloutputclocks”的设置页,页面显示:
2outputclocks为深兰色背景,“clkc1”为clkc1,如图8-27左上角所示。
“clkc1”的设置按照图8-27所示。
鼠标左键单击2outputclocks栏下的“clkc2”,进入“c2-Core/Externaloutputclocks”的设置页,此时页面里显示:
2outputclocks为深兰色背景,“clkc2”为clkc2,
如图8-28所示。
“clkc2”按照图8-28所示设置。
鼠标左键单击“Finish”按钮,并且单击所经过的所有页面的“Finish”按钮。
设置了PLL后,在本工程硬件系统的“SOPCBuilder”工具页面,“ClockSettings”栏下:
“clk_0”改成“clk_50”;
“pll_0_c0”改名为“pll_c0_cpu”;
“pll_0_c1”,改名为“pll_c1_memory”;
“pll_0_c2”,改名字为“pll_c2_audio”;
如图8-29所示。
10.添加SDRAM控制器
DE2‐70多媒体开发板上有两片容量为4M*16*4比特的SDRAM(IS42S16160B)。
ComponentLibrary‐>
SDRAM‐>
SDRAMController‐>
进入“SDRAMController”的多项设置页面,默认进入“ParameterSettings”的MemoryProfile设置页,此页面的设置严格按照如图8-30所示。
图8-30所示页面完成后,鼠标左键单击“Timing”,进入Timing设置页面。
严格按照如图8-31所示设置各参数,设置完成后,鼠标左键单击“Finish”按钮。
把名称改为“sdram_u1”。
按照上面同样方法、同样参数再添加一个SDRAM控制器,把名称改为“sdram_u2”。
11.添加LCD显示驱动(CharacterLCD)
Peripherals‐>
Display‐>
CharacterLCD‐>
Add,弹出“CharacterLCD”设置页面,缺省设置,鼠标左键单击“Finish”,把名字改为“lcd”。
12.添加两个“i2c”PIO
“Width”设置成1位输出方式,其他使用缺省值,如图8-32所示。
鼠标左键单击“Finish”按钮,将该硬件的名称改为“i2c_sclk”。
“Width”设置成“1”;
“Direction”选择为“Bidirectional(tristate)ports”;
其他为缺省值,如图8-33所示,
将名称改为“i2c_sdat”。
13.添加七段显示驱动(SEG7_IF)
TerasicTechnologiesInc‐>
SEG7_IF‐>
Add,弹出“SEG7_IF”设置页,全部缺省设置,鼠标左键单击“Finish”,该硬件名字改为“SEG7”。
14.添加音频连接(AUDIO_IF)
AUDIO_IF‐>
Add,弹出“AUDIO_IF”设置页,全部缺省设置,鼠标左键单击“Finish”,该硬件名字改为“AUDIO”。
15.添加SD卡所用PIO
DE2-70多媒体开发板上,SD卡没有控制器,只需设置四个PIO即可。
(1)添加“sd_clk”
在“SOPCBuilder”工具页面,鼠标左键单击ComponentLibrary‐>
Add,弹出“PIO(ParallelI/O)”多项设置页面,默认进入“ParameterSettings”的“BasicSettings”设置页面。
在“BasicSettings”设置页面:
“Width”设为1;
“Direction”设置为“outputportsonly”;
其它参数使用缺省值,如图8-34所示。
将名字改为“sd_clk”。
(2)添加“sd_cmd”、“sd_dat”和“sd_dat3”
“Direction”设置为“Bidrectional(tristate)ports”,如图8-35所示。
鼠标左键单击“inputoptions”,进入“inputoptions”设置页面。
“Edgecaptureregister”栏的“SychronouslyCapture”前打勾,选择“eitheredge”