这次项目主要运用MYIR提供的MYD-C7010开发板完成AXI_IIC对M24C02读写并且串口打印输出E2PROM的值,闲话少说,还是先复习下MYIR的硬件框架示意图。 2.png 我们使用了米尔开发板上的LP FMC接口进行外扩出的XM105赛灵思官方的扩展板。开发环境为VIVADO 2017.4.
下面,让我们一步一步实现AXI_IIC的操作:以下的步骤主要针对刚熟悉VIVADO开发环境的工程师,也能进一步熟悉米尔开发板硬软件的架构。这话和LED控制一样很熟悉
1.创建工程
具体的步骤如下,打开相应的VIAADO.2017.4的软件,创建一个新的工程,具体参考图。
      3.png
接着进入下一个界面,点击NEXT,创建一个名称为AXI_IIC_24C02的工程,名称可以自己取,不违反规则就行
    4.png
下一步我们创建的是一个RTL的project,注意选择,如下图:
      5.png
在接下来我们有个地方注意下选择,就是编程的语言和仿真的语言,编程的语言我们一般选择VERILOG ,当然你若是用VHDL,那就选VHDL语言仿真选择MIXD,如图:
      6.png
点击连续NEXT,来到下一个设置界面,主要设置我们主芯片的型号,我们的开发板主要是XC7z010clg400-1。
      7.png
点击NEXT,然后点击FINISH,至此,我们完成了一个名称为AXI_IIC_24C02的工程的创建。下面进入原理设计阶段。
2.设计原理
我们创建一个IP INTEGRATOR,具体的操作步骤如下图所示:
      8.png
下面我们设置DESIGN 的名称为axi_iic_24c02,名称也可以自己取,也可保持不变,设置完成后点击OK.
      9.png
接下来,我们添加一个zynq核并配置,具体的操作步骤如下:
      10.png
创建一个ZYNQ7的PS,创建的框图如下:
      11.png
如图上所示,我们双击图框,设置相应的原理图的基本参数,具体的设置参数如下图所示。
      12.png
主要配置的参数有1.SD接口的引脚和时钟配置  2.串口的配置  3.DDR参数的配置,参考实际图示例
      13.png
配置DDR的接口型号,这个参看米尔开发板上的实际型号,因为选项中没有板上对应的型号,我们可以选相近的型号,只是封装不一样而已。
      14.png
时钟设置等就不再一一阐述,其他的参数保持默认即可。然后我们单击OK,这样我们的第一个IP核就配置好了。
下面我们创建AXI_IIC核,创建的步骤是在diagram菜单栏中点击+号添加一个AXI IIC的IP核,如下图:
      15.png
双击,创建好设置的AXI IIC的核之后我们双击AXI IIC框图设置相应的参数。
      16.png
这样我们两个IP核都已经创建,下面需要进行设置原理的连线,设置automation,自动连线。
      17.png
完成上面的自动连线的操作后,我们再运行BLOCK的连线,具体的设置如下图:
      18.png
然后我们优化布线,修改相应IIC输出的名称,这个主要涉及到后面的约束条件中需要调用到相应的名称,具体如下图:
      19.png
至此,我们原理图的框架已经搭建出来,接着我们还是按照控制LED灯步骤来进行下一步。
3.生成HDL文件,生成综合文件和顶层文件
下面我们的操作步骤如下图所示:生成顶层文件,
      21.png
生成综合文件
      22.png
生成综合文件后,会有提示完成综合,这个过程需要一定的时间,接着我们来添加约束条件,如下图:
      23.png
点击NEXT,如下图:
      24.png
如下图所示创建名称为axi_iic的FILE文本
      25.png
然后我们在约束条件的文本中添加约束语句,具体如下图:
      26.png
约束条件的语句文本如下:主要是根据MYIR科技的提供的FMC扩展接口对应的FPGA引脚以及起的IIC输出的名称来定义。
通过查阅米尔电子官方提供的MYC-C7Z01020 管脚描述表文件,找出的对应关系如下:
set_property PACKAGE_PIN G14 [get_ports axi_iic_scl_io]
set_property PACKAGE_PIN J15 [get_ports axi_iic_sda_io]
set_property IOSTANDARD LVCMOS33 [get_ports axi_iic_scl_io]
set_property IOSTANDARD LVCMOS33 [get_ports axi_iic_sda_io]
set_property PULLUP true [get_ports iic_0_scl_io]  
set_property PULLUP true [get_ports iic_0_sda_io]

首先保存下.XAC约束文件,点击综合的按键,如图所示  
      27.png
上面操作完成后,出现下图所示的框图,点击OK,如下图:
      28.png
点击OK后,当完成Run Implementaion,出现以下框图,我们操作步骤如下:
      29.png
点击OK,当完成BIT流的生成以后,如下图,点击cancel。
      30.png
接下来的一步我们输出,硬件的设置,具体的步骤参照如下:
      31.png
      32.png
至此,我们完成了 所有的硬件部分的设置,接下来我们进入软件部分的设置,进入SDK部分。
4.进入SDK软件编程

FIle ->Launch SDK就进入SDK编程阶段,在SDK 里, 菜单 File -> New -> New application Project

创建名称为AXI_IIC_24C02,点击NEXT,

      34.png


创建一个以HELLO WORLD 为模板的文档
      35.png
完成 finish,然后我们打开所创建HELLO.C的文件,在文档中编写我们的程序。
我们将已经编写好的程序COPY进文档编译器中,
      36.png
然后我们对FPGA进行下载。
      37.png
进行进一步的下载设置
      38.png
完成下载后,我们看到串口从E2PROM读取出写入进去的值,0x00~0x0f,串口打印如下图所示:
      IMG_2601.JPG
我们所用的硬件的图也上一个图片,作为参考:
      IMG_2600.JPG
插入编译的.C文件作为附件,供大家参考。文档末尾还是感谢米尔提供的开发板,面包网提供的网络环境,以及米尔的技术支持陶威威工的支持,再次感谢。
helloworld.rar (4.48 KB, 下载次数: 20)
全部回复 1
  • 1879 主题
  • 1915 帖子
  • 4288 积分
身份:LV5 资深技术员
E币:2998
回复楼主
您需要登录后才可以评论 登录 立即注册