您的位置:首页 > 其它

Digilent GENESYS vertex5开发板实现调用AC97(LM4550芯片)IP和LCD1602的使用

2012-08-15 19:04 761 查看
本文参考官方资料:– EDK Concepts, Tools, and Techniques http://www.xilinx.com/support/documentation/sw_manuals/edk_ctt.pdf
和http://www.digilentinc.com/Data/Products/GENESYS/Genesys_bsb_design.zip

以及http://www.digilentinc.com/Data/Products/GENESYS/Genesys_Ip_Cores.zip

最终实现效果:在Genesys开发板上实现语音的采集和播放,并由LCD1602和leds显示语音的状态,对语音的控制由方向按键实现。

使用环境:Xilinx ISE 11.4 (主要是用XPS和SDK)、Windows XP Professional SP3、Digilent GENESYS 开发板

具体过程:

一.搭建硬件平台:(这一步比较复杂)

1.使用XPS的BSB(Base System Builder)搭建单核系统(具体参见Genesys_bsb_design.zip),满足如下条件:

– Use 64KB BRAM (Look at Slide 17 in Genesys_BSB_Guide)

– Set “HARD_ETHERNET_MAC” to use DMA and Interrupt (Look at Slide 18 in Genesys_BSB_Guide)

– Set both UART core types to xps_uart16650 (Look at Slide 19 in Genesys_BSB_Guide)

– Enable both instruction and data cache memory (recommended)

2.加入所需要的IP。

(由于本来只打算使用AC97和LCD的IP,考虑到高低速外设总线分开,还需要一个PLB v4.6的IP,故就只加了这三个IP,但在后面的编译过程中遇到了解决不了的问题,因为对于新加入的PLBv4.6总线来说,还需要一个PLBV46 to PLBV46 Bridge 来与PLB总线连接,对于外围外设的管理,还需要一个EPC(External
Peripheral Control)和Utility Bus Split来完成最终的操作)

因此,除AC97外需要加入五个IP,如下图:(AC97的IP需要在创建BSB时就加入Genesys BSB support文件支持,或者在Project->Project Options->Project Peripheral Repository Search Path里面加入xxx\Digilent_Genesys_BSB_Support\lib这样的支持文件,才能引入官方编译好的AC97
IP)(该支持文件可以在官网下载到)



其中,加入General Purpose IP后将其改名为Char_LCD(如下图),加入PLBv4.6总线IP后将其改名为mb_plb_1(如下图),接下来更改PLB总线设置,如下图,将低速设备如Char_LCD、DIP_Switchs_8Bits、Leds_8Bits、Push_Button_7Bits、RS232_Uart_0、RS232_Uart_1连接到mb_plb_1,至于PLB
bridge其MPLB连接到mb_plb_1,SPLB连接到mb_plb,设置DDR2_SDRAM的参数如下图所示:


接下来对新加入的IP进行配置,首先配置DDR2_SDRAM,如下图,对其四个port进行设置





接下来配置Char_LCD,由于LCD1602有11个GPIO口通信(8位数据、两位读写控制位Wr、Rd,和一位数据命令选择位cd)所以数据位宽11位,如下图:





接下来生成新加入IP的地址,在Address选项卡里面点击Generate Address即可,如下图:



然后配置xps_epc,设置外设的数量,及各种相应时间,如下图:









配置util_bus_split_0 ,如下图:





3.设置IP的端口连接。

首先进入System Assembly View的Port视图:设置两个mb_plb总线的时钟和复位接口,在将Char_LCD的IO口使用Make external外扩出来(与实际的LCD1602连接),如下图:



接下来就会在External Ports里面看到外扩出来的Char_LCD_GPIO_IO,如下图:



用同样的方法,将xps_epc和ac97都外扩出来,如下图:

(外扩的时候,注意观察External Ports里面是不是都有对应的端口出现,有的时候会出现__NOC__(该ISE版本的bug,以后版本没有该问题),此时需要再在刚刚那个Make External的地方选择New Connection,就会出现对应名字的端口,手动将__NOC__的地方改为相应端口名即可)

其中,xps_epc_0的PRH_Addr的xps_epc_0_PRH_Addr_split是Make External后手动修改的名字



对应的External Ports截图如下:(其中xps_epc_0_PRH_Addr以及后面的xps_epc_0_PRH_Addr,[0:1]都是手动修改得到的)



然后修改程序复位时钟为25M,将总线分割的IP的端口手动连到刚刚手动改动的端口上,如下图



至此,外扩端口以及结束,然后添加用户约束文件(管脚约束),复制下载到的Genesys_ip_cores_UCF_SDK /data/Genesys_ip_cores.ucf里面的与相应IP相连的管脚到Project视图里面的UCF File Data/system.ucf里面即可。

编译:“Hardware->Generate Bitstream” 30~60 分钟

“Software->“Generate Libraries and BSPs” “ Build All User Applications”

“Device Configuration” -> “Download Bitstream” 下载后可以从开发板的串口看到测试程序的输入信息(串口:9600,8,n,1)

二.在SDK里面实现具体用户应用程序。

“Project” -> “Export Hardware Design to SDK” 选择Export and Launch SDK

对于出现的“Workspace Launcher”对话框,输入当前所创建的工程文件夹下面的SDK文件夹的路径,如果没有出现该对话框,可用“File” -> “Switch Workspace”更改当前路径。

之后,SDK会自动搜索Hardware Specification File,如果提示未找到,可用当前工程文件夹的EDK/EDK_export中找到system.xml文件。

从XPS将硬件平台导入正常后会在Project视图里面看到microblaze_0的硬件平台,需要构建自己的软件平台,选择“File”->"New"->"Software Platform",输入软件平台名称,选择standalone模式(没有操作系统),Finish即可。

然后新建一个C工程,“File”->"New"->"Managed Make C Application Project",输入工程名,选择刚刚生成的软件平台,选择一个空模板,Finnish即可。

由于官网例程已经自带了示例程序,可以直接导入,“File”->"Import..."->"File System",输入下载到的例程路径,..\Genesys_ip_cores_UCF_SDK\SDK\SDK_Workspace\Audio_Demo,全部选择需要导入到的示例src文件即可。系统会自动编译新加入的文件。

测试:a.下载硬件文件“Tools” -> “Program FPGA” -> “Save and Program”

b.运行elf文件。在Project视图里展开新工程,找到.elf文件,右击它选择“Run as” -> “Run on hardware”或者“Debug
as” -> “Debug on hardware”即可运行或调试工程。

c.对于示例程序,LCD会提示当前状态,通过SW0来选择语音输入(0-mic输入,1-线路输入),通过方向按键来控制AC97的操作:Up-录音5秒
Down-播音5秒 (此时LED均会提示录音时间) Left-做耳机1kHz方波 Right-有耳机1kHz方波 Center-两个耳机1kHz方波
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐