EDK使用实例之LCD1602

目的:

在之前的LED的实例的基础之上使用GPIO点亮LCD1602液晶屏。本文将更多介绍SDK中的操作。

实验环境:

软件:Xilinx ISE Design Suit 13.4

板卡: 红色飓风II-Xilinx RCII-SP3S400

实验内容:

在ISE工程中添加MircroBlaze软核,并在SDK中编写软件程序,驱动外设LCD1602液晶屏。

实验步骤:

第一步:ISE中创建工程并添加DCM

1、 打开ISE,点击New Project。

 

2、 选择工程路径,为工程命名

 

 

3、 选择工程属性和器件参数

此处注意,如果是使用其他的板卡,或者自己设计的板卡,需要选择相应的器件参数。

4、 添加顶层文件

 

 

 

生成顶层red_lcd.v文件。

5、 添加DCM。

 

选择

 

选择

 

设置DCM参数如下:

 

参数如下:

 

此处输入时钟为红色飓风板卡上面的晶振50MHz,并添加上了二倍频时钟CLK2X。

DCM添加完成后,我们还需要将DCM在顶层模块中进行实例化,结果如下:

 

第二步:添加microblaze软核。

1、 添加Embedded Processor。

 

此处创建过程与直接调用XPS创建系统大同小异,此处不多做贴图,不过需要注意的几个地方如下:

 

此处输入时钟为50MHz所以需要在顶层连接的时候选择DCM输出的50MHz时钟。

 

添加外设的时候除了添加了上次添加的LEDS外,这次还添加了RS232和两个GPIO,其中GPIO为3bit,是用来给输出LCD1602的RS、RW、EN,GPIO_1是8bit是用来输出给LCD0~LCD7的。

生成的系统如下图示:

 

2、因为系统默认的GPIO端口都为双向的端口,所以我们需要对端口做一些修改,选中Ports,点击Generic_GPIO中的Connected Port端口然后选择Disconnect from External Ports。

 

 

可以看到External Ports中的Generic_GPIO端口也已经没有了。

 

然后重新选择Generic_GPIO下面的GPIO_IO_O,选择External Ports。

 

可以看到在External Ports中的Generic_GPIO端口重新出现了,并且是GPIO_IO_O。这样就将Generic_GPIO口从原来的双向端口更改成了输出端口。

 

 

可以按照同样的方法将Generic_GPIO_1端口也从双向端口更改成输出端口。

 

 

3、 端口修改完成后我们就需要初始化地址,选择Addresses,

 

点击最右侧的 按钮进行地址生成。

 

表示地址生成成功。

4、 生成网标文件。

选择Hardware下面的Gneerate Natlist生成网标。

 

 

此处估计会花的时间比较长。

 

表示生成网标完成。

此刻我们的软核就生成完成了,我们就可以退出XPS界面了。

 

 

注意:Xilinx在ISE13以后将软件中XPS和SDK彻底分离了,所以现在的XPS中不能再进行软件添加,软件编写全部移到了SDK中。

 

 

5、 将软核实例化之顶层文件中。

实例化软核和实例化DCM类似,也是需要打开View HDL Instantiation Templat文件。

实例化以后的结果详见代码。

 

第三步:编译ISE工程。

1、 添加UCF文件。

添加UCF文件的方法和平时ISE工程中添加UCF文件的方法相同,此处不再赘述。

2、 编译工程。

添加好UCF文件以后双击Generate Programming File,进行工程编译。

 

 

第四步:添加SDK工程。

1、 打开SDK软件。

此处需要注意,首先选中Hierarchy框中的软核文件

 

然后在Processes框中双击Export Hardware Design To SDK with Bitstream选项。(该选项可以在打开SDK的时候自动添加microblaze软核的信息到SDK工程中。)

2、 添加软核路径。

在打开SDK的时候软件会提示选择工作空间,个人建议可以在之前的ISE的工程目录里面创建一个工作空间来存放SDK的工程。

 

3、 添加软件工程。

进入软件后可以看到软件自动添加了软核的信息。

 

在此需要添加软件工程。在Project Explorer的空白处右键点击选择new->project。

 

 

选择Xilinx C project

 

然后选择空模板。

 

最后点击finish。

最终软件工程创建完成。

 

4、 添加代码。

在src文件夹上点击右键选择新建一个Source File。

 

输入文件名,因为是C文件所以后缀需要是.c。

 

 

完成后可以看到在主编辑框中出现了main.c文件。

 

将代码添加进工程里面,详见工程代码。

第五步:编译SDK工程并下载至FPGA

1、 编译SDK工程。

右键点击软件工程,选择Build Project,进行工程编译。

 

如果有错误可以通过Problems框进行错误查看。

 

2、 FPGA下载

编译通过以后就可以进行FPGA下载了。选择Xilinx Tools->ProgramFPGA。

 

点击后会出现下载文件选择,如下图:

 

其中Bitstream选择ISE工程下生成的bit文件,

Bmm文件为ISE工程路径下的edkBmmFile_bd.bmm文件。

ELF文件为软件配置文件,路径在

.. \SDK_workspace\empty_application_0\Debug

 

选择好了以后点击Program后就会看到

 

显示的下载的滚动条。下载结束后会可以看到板卡上面的LCD1602会显示"hello world""hello xilinx"两行字,同时LED会在进行流水显示,当led7~led0 == 1111_1110的时候lcd会进行清屏。

 

 

后记:

本次试验是在红色飓风2的板子上做的实验,因为这个板子上的GPIO可以直接跟LCD1602连接,如果需要在SP601板子上做这个实验,只是需要在创建ISE工程的时候选择Spartan6的器件,在做引脚分配的是做相应的引脚分配即可,至于软件工程中的代码是参考了单片机上的lcd1602的程序。希望文章可以帮助更多初学的朋友。文章中还有不足,希望发现问题的朋友可以邮件提醒我,我也可以做及时的修改。

By: 冰风溪谷

E-mail: icelyb24@gmail.com

ice_lyb@qq.com

 

 

工程下载地址:http://fpga-study-information.googlecode.com/files/red_lcd.rar

posted @ 2012-06-16 00:10  冰风溪谷  阅读(2277)  评论(6编辑  收藏  举报