网站搜索:
第3节 在用户IP中添加自己的功能代码实现UART功能
文章出处:与非网
更新于2008-05-22 09:38:04

在用户IP中添加自己的功能代码实现UART功能

1. 加入.vhd或者.v硬件描述语言代码

1) 编写相应的用户代码并保存,然后按照下述步骤添加;

2) 执行Hardware → Create or Import Peripheral,并单击Next,出现如图6.3. 1所示的窗口时,选择Import existing peripheral,单击Next;



图6.3. 1

3) 出现下图所示的窗口时,保持默认设置不变,单击Next。



图6.3. 2

4) 出现如图6.3. 3所示的窗口时,在Name后的文本框中输入fsl_uart,并选中User version : 1.00.a,单击Next。



图6.3. 3

5) 此时,会弹出如下图所示的对话框,单击YES。



图6.3. 4

6) 出现如下图所示的窗口,选择HDL source files项,单击Next。



图6.3. 5

7) 出现如下图所示的窗口,选择将要使用的HDL语言为Verilog,同时在下方选中Use existing Peripheral Analysis Order files (*.pao)选项,并浏览到用户工程目录下的.pao文件,加载进入后,单击Next。



图6.3. 6

8) 出现如下图所示的窗口时,单击Add Files,打开加载文件对话框后,浏览找到用户编写的HDL文件,全部选中并单击“打开”,确认文件被加载后,单击Next。



图6.3. 7

9) 出现如下图所示的窗口时,选中右侧的FSL Master和FSL Slave选项,单击Next。



图6.3. 8

10) 接下来将会出现FSL Master和FSL Slave相关信息的窗口,分别如图6.3. 9和图6.3. 10所示,用户可以浏览端口定义,确认无误后单击Next。



图6.3. 9



图6.3. 10

11) 出现如下图所示的窗口时,取消选中的Select and configure interrupts选项,单击Next。



图6.3. 11

12) 接下来用户可以修改时钟频率和串口波特率设置。选中窗口右下方的Display advanced attributes选项,将会出现如图6.3. 12所示的对话框,然后在参数列表中更改需要调整的参数。如本例中串口的波特率为57600Baud,就在右侧的Default Values后输入参数0x0000e100(0xe100=57600),并在Clock Unit处的下拉菜单中选择Hz,单击Next。



图6.3. 12

13) 出现如下图所示的窗口时,不做修改,单击NEXT。

提示:test_port和test_port1是例程所加的测试端口。



图6.3. 13

14) 最后,会出现如下图所示的加载成功提示窗口,单击Finish完成加载。



图6.3. 14

2. 连接用户IP到总线

1) 单击XPS左侧窗口的IP Catalog,展开Project Local pcores,双击fsl_uart以添加此IP的一个实例。此时右侧窗口如下图显示。



图6.3. 15

2) 双击右侧窗口内的microblaze_0,弹出如下图所示的窗口,选择Buses选项,并设定参数Number of Links为1,然后单击OK。
提示:此处需要设置MicroBlaze处理器的FSL总线接口参数,因为MicroBlaze在默认状态下没有添加FSL总线接口,本例程为其添加一对FSL总线接口,用户可以按照实际需求设定此次参数。



图6.3. 16

3) 在左侧窗口的IP Catalog中,展开Bus and Bridge,双击Fast Simple Link (FSL) Bus两次以添加两个FSL总线的实例,如图6.3. 17所示。

提示:所添加的两根FSL总线是一主(Master)一从(Slave)关系,而这一主一从恰好和MicroBlaze的一对FSL总线接口对应。

4) 展开右侧Bus Interfaces窗口内的microblaze_0项,可以看到如下图所示的总线接口列表。点击MFSL0后面的Bus Connection下拉列表,选择fsl_v20_0,这意味着MFSL0将被连接到fsl_v20_0总线上。采用相同的方法将SFSL0连接到fsl_v20_1总线上。这样就实现了MicroBlaze与FSL总线的连接。



图6.3. 17



图6.3. 18

5) 展开fsl_uart_0项,分别将其MFSL和SFSL端口连接到fsl_v20_1和fsl_v20_0上,如下图所示。
提示:fsl_v20_0和fsl_v20_1分别连接SFSL0和MSFL0是因为在UART通讯中,用户IP接收来自MicroBlaze的数据并将其发送到终端时处于从设备状态,而接收来自终端的数据并将其发送到MIcroBLaze时处于主设备状态。MicroBlaze的状态则完全相反。



图6.3. 19

6) 选择右侧窗口的Ports选项,展开fsl_v20_0项,并分别将FSL_Clk和SYS_Rst信号在其右侧的Net下拉列表中设置为与sys_clk_s和sys_bus_reset端口相连。然后针对fsl_v20_1模块重复以上设置,如下图所示。

提示:上述设置是使FSL总线时钟FSL_Clk和FSL总线RESET信号SYS_Rst分别与系统的总线时钟和系统总线RESET信号相连。



图6.3. 20

7) 展开fsl_uart项,将UART_Rx 和UART_Tx端口分别与fsl_uart_0_UART_Rx和fsl_uart_0_UART_Tx相连,如下图所示。



图6.3. 21

8) 选择左侧的Project选项,双击打开.mhs文件,在第一个Begin的前一行添加用户IP的端口,如图6.3. 22所示,保存后关闭。双击打开.ucf文件,在#### Module LEDs_8bit constraints的前一行添加如图6.3. 23所示的内容,为用户IP设定外部端口约束,保存后关闭文件。至此,已经完成了连接用户IP到总线并配置输出管脚的工作。



图6.3. 22



图6.3. 23

3. 加入.c软件代码

1) 选择左侧Applications选项,双击Add Software Application Project…,打开如图6.3. 24所示的对话框,为用户软件工程命名后单击OK。随后根据实际需求编写相应的.c用户程序并保存。本例程软件工程命为test_uart,包含两个.c程序,添加后如图6.3. 25所示。



 图6.3. 24



图6.3. 25

2) 右键单击用户软件工程(本例程为Project test)的标题行,在弹出菜单中选择Build Project,编译板级支持包、添加的库文件和自定义程序代码,并生成可执行文件(.elf),如下图所示。



图6.3. 26

3) 成功生成可执行文件后,软件界面下部的信息提示窗口会显示如下图所示的信息。



图6.3. 27

4) 右键单击Project _TestApp_Memory,取消选择Mark to initialize Brams,然后再次右单击用户软件工程,选择Mark to initialize Brams,如下图所示。至此,已经完成了软件程序代码的导入。

提示:不同的软件工程内有不同的程序,而在EDK环境下,每个软件工程编译后只能生成一个.elf文件。同时Microbalze一次也只能执行一个.elf文件。所以,我们在系统运行前,应该选择好将BRAM配置给哪一个.elf文件使用,如本例配置给test_uart的executable.elf,用于测试UART通讯。



图6.3. 28

 

<<上一节    下一节>>



关于OpenHW | OpenHW使用说明 | FAQ | 相关法律 | 版权声明 | 网站地图
联系邮件:xiaoquan@eefocus.com  联系电话: 010-58859035-8012
Powered by eefocus.com