zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    第七周总结
    第六周总结
    第五周总结
    第四周总结
    第三周总结
    第二周总结
    第一周总结
    《需求分析和系统设计》阅读笔记三
    《需求分析和系统设计》阅读笔记二
    Linux——error while loading shared libraries 的解决方法
  • 原文地址:https://www.cnblogs.com/icelyb24/p/2551544.html
Copyright © 2011-2022 走看看