| 环境:win7 64   vivado 2014.1 开发板:zedboard version d    xc7z020clg484-1
 串口软件:SecureCRT
 目标:使用vivado进行zedboard的OLED测试。目的还是介绍vivado软硬件协同开发流程。
 说明:本文参考cuter的博客采用创建IP 的实现方案,并得到了本人的指导,表示十分感谢!
 正文:
 本文将分为以下步骤:
 1. 使用Vivado IDE创建一个工程,并创建IP核
 2. 在Vivado中,创建block,添加约束xdc,validate、generate,最后导入到SDK中
 3. 在SDK中新建工程,添加文件,编译。下载到ZedBoard上进行调试
 4. 总结
 
 1. 使用Vivado IDE创建一个工程,并创建IP核
 1)创建vivado工程,命名为oled,设置目录。
 
  2)选择RTL,勾选复选框,此次不指定文件。
 
  3)选择zedboard开发板,完成工程创建。
 
  4)Tools->create & package
 
  5)选择AXI4方式
 
  6)设置名称,以及其他参数。下面继续next,保持默认参数,修改也可以,看需要
 
  7)选择edit IP。finish。(以上为vivado创建AXI IP的流程)
 
  8)此时已经建立了一个临时的工程,在完成后会自行删除
 9)修改文件,创建端口和用户逻辑。双击oled_ip_v1_0.v文件,添加
 
 [plain] view plaincopy
 
 
 
 
 
  
  10)双击oled_ip_v1_0_S00_AXI.v文件,添加
 [html] view plaincopy
 
 
 
 [plain] view plaincopy
 
 
 
 always @(*)  begin   OLED <= slv_reg0[5:0];  end  
 
 
 
  
 
  
 11)保存文件
 12)在project manager面板中,选择Package IP,可以看到如下选项:
 IP Identification:基本信息
 IP Compatibility:.支持芯片
 IP file  Groups:文件管理;可选择“merge changes……”以更新文件
 IP customization Parameters:
 IP ports and interfaces:端口,可以更新、添加等
 IP addressing and memory:地址分配
 IP GUI Customization:GUI
 Review and package:生成IP
 
 
  
 13)无误后,选择Package IP生产IP。此时软件自动关闭。可在IP catalog的下属文件夹中找到了定义的IP。(以上为创建AXI IP的基本步骤)
 
  
 
  
 2. 在Vivado中,创建block,添加约束xdc,validate、generate,最后导入到SDK中
 
 14)创建一个block design,名称默认
 
  
 15)添加IP:zynq,并run block automation,弹出框中选择ok
 
  
 16)双击zynq,customize zynq:由于IP实际是使用GPIO进行传输的模块,很多功能并不需要
 MIO:Memory Interfaces:勾掉Quad SPI
 IO peripheral:保留uart用于串口通信;保留GPIO默认
 application Processor Unit:勾掉Timer 0;
 
  
 17)添加IP:oled_ip_0,run connection automation,弹出框中选择ok
 18)鼠标移动到oled_ip_0->OLED[5:0],右击->make external。重新布局,得到最后的设计图。
 
  
 19)查看地址,未分配则分配。地址很重要,后面软件设计要用到。
 
  
 20)validate design
 
  
 21)create wrapper。在design_1.bd上右击,选择create HDL wrapper。
 22)添加约束。添加文件oled.xdc。
 注意:引脚查看硬件手册,注意和驱动中的定义相匹配。
 #   U11 <-> OLED-VBAT
 #   U12 <-> OLED-VDD
 #   U9 <-> OLED-RES
 #   U10 <-> OLED-DC
 #   AB12 <-> OLED-SCLK
 #   AA12 <-> OLED-SDIN
 
 #   OLED_DC 0     OLED[0] <-> U10
 #   OLED_RES 1     OLED[1] <-> U9
 #   OLED_SCLK 2    OLED[2] <-> AB12
 #   OLED_SDIN 3    OLED[3] <-> AA12
 #   OLED_VBAT 4    OLED[4] <-> U11
 #   OLED_VDD 5     OLED[5] <-> U12
 
 23)选择generate bitstream。提示保存则保存,弹出对话框选择ok。完成后选择open implement design。
 24)打开design,file->export->export for SDK.勾选启动SDK。(以上为vivado硬件设计流程,下面转入SDK进行软件设计)
 3. 在SDK中新建工程,添加文件,编译。下载到ZedBoard上进行调试
 25) 新建工程,选择空模板。
 
  
 26)oled->src,右击选择import,选择general->file system,选择font.h、oled.h、oled.c、helloworld.c等文件。
 oled.h中,原本“#define OLED_BASE_ADDR 0X7a800000”改为“#define OLED_BASE_ADDR XPAR_OLED_IP_0_S00_AXI_BASEADDR”。
 这样就不用每次修改地址了,vivado中分配的地址会自动保存在xparameter.h中。
 
  
 27)自动编译,出现下图,说明编译成功。如果有错误则修改之。(一般肯能使头文件的问题,按照提示修改即可)
 
  
 28)连接开发板,J14用于串口通信,J17用于烧写程序。安装驱动的方法这里就不介绍了,参考之前的文章。
 29)上电,连接SecureCRT,选择Xilinx Tools->Program FPGA。program,开发板上的蓝灯亮说明烧写成功。
 
  
 30)运行程序。oled(project)右击选择run as->launch on harddware(GDB)或者直接Run->run.可以看到串口打印的信息和OLED上的信息显示。
 
  
 
 
 |