SDSoc学习(二):搭建平台,使用EMIO点亮LED

简介

  本次开发使用环境 Windows 10 SDSoc 18.2 vivado 18.2 开发板 zedboard。本次实验通过vivado搭建硬件平台,SDSoc来编写代码。The FPGA is an inherently parallel processing fabric capable of implementing any logical and arithmetic function that can run on a processor. The main difference is that the Vivado® HighLevel Synthesis (HLS) compiler [3], which is used by SDSoC to transform C/C++ software descriptions into RTL, is not hindered by the restrictions of a cache and a unified memory space.

ug1235 原话

使用 EMIO 的好处就是,当 MIO 不够用时, PS 可以通过驱动 EMIO 控制 PL 部分的引脚,接下来就来详细介绍下EMIO 的使用。
EMIO 的使用和 MIO 的使用其实是非常相似的。区别在于, EMIO 的使用相当于 PS + PL 的结合使用的例子。所以, EMIO 需要分配引脚,以及编译综合生成 bit 文件。
 

1.1 搭建vivado平台

开始创建一个空项目

这里我使用的是zedboard板子,使用其他平台的可以根据自己的芯片来选择。

记得创建BD文件时 文件名和之前的项目名字要一样。

点击"+"号创建ip核,并且搜索输入zynq,添加就完事了。

并且设置相对应的EMIO 宽度这款板子是8位LED灯所以设置成8位,最多64位。

设置完毕后会出现GPIO_0 选中该管脚 按下Ctrl+t 就可自动扩展。

重新命个名,方便看。

接下来进行管脚约束,把EMIO绑定到板子上的LED。以下是管脚绑定的命令

1. 外部时钟输入的约束如下:

create_clock -period (clock period) -name (clock name) -waveform { (Traise), (Tfall) } [get_ports (clock port name)]

2. 已建立的时钟改名
create_generated_clock -name (clock name) [get_pins (path)]

3.input/output delay 设置
set_input_delay -clock [get_clocks (clock name)] (delay time ns) [all inputs]
set_output_delay -clock [get_clocks (clock name)] (delay time ns) [all outputs]

4. 建立时钟组
set_clock_groups -name (group name) -asynchronous -group {(clock name) (clock name) }
set_clock_groups -name (group name) -asynchronous -group [get_clocks (clock name)]

5. 管脚分配
set_property PACKAGE_PIN (pin location) [get_ports (port name)]
set_property IOSTANDARD (level:LVDS,LVCMOS18,LVCMOS33 etc.) [get_ports (port name)]

6. 管脚作为时钟线
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets (port_name)]

7. 管脚拉高
set_property PULLUP true [get_ports (port name)]

8. 当 vivado 报错说有某些管脚没有分配时,加下面两句
set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]

我们在这里就使用 5 管脚分配命令 

首选查阅原理图,明白自己的外设接入了哪些管脚。

填写完毕后 点击红色按键 选中global 后ok,右键BD文件 选择

接下来,选择默认的第二个就行。

好吧,在上面的电压设置错误,然后报错了。管脚分配应该设置成如下样式。 

set_property PACKAGE_PIN T22 [get_ports {EMIO_0_tri_io[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_0_tri_io[0]}]

set_property PACKAGE_PIN T21 [get_ports {EMIO_0_tri_io[1]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_0_tri_io[1]}]

set_property PACKAGE_PIN U22 [get_ports {EMIO_0_tri_io[2]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_0_tri_io[2]}]

set_property PACKAGE_PIN U21 [get_ports {EMIO_0_tri_io[3]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_0_tri_io[3]}]

set_property PACKAGE_PIN V22 [get_ports {EMIO_0_tri_io[4]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_0_tri_io[4]}]

set_property PACKAGE_PIN W22 [get_ports {EMIO_0_tri_io[5]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_0_tri_io[5]}]

set_property PACKAGE_PIN U19 [get_ports {EMIO_0_tri_io[6]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_0_tri_io[6]}]

set_property PACKAGE_PIN U14 [get_ports {EMIO_0_tri_io[7]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_0_tri_io[7]}]

接着生成bitstream。就可以来生成让sdsoc使用的dsa文件了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值