0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Hello WorldFPGA工程师工作内容

电子设计 来源:电子设计 作者:电子设计 2022-02-09 11:03 次阅读

作者:ALINX

* 本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

适用于板卡型号:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

vivado工程目录为“ps_hello/vivado”

从本章开始由FPGA工程师与软件开发工程师协同实现。

前面的实验都是在PL端进行的,可以看到和普通FPGA开发流程没有任何区别,ZYNQ的主要优势就是FPGA和ARM的合理结合,这对开发人员提出了更高的要求。从本章开始,我们开始使用ARM,也就是我们说的PS,本章我们使用一个简单的串口打印来体验一下Vivado Vitis和PS端的特性。

前面的实验都是FPGA工程师应该做的事情,从本章节开始就有了分工,FPGA工程师负责把Vivado工程搭建好,提供好硬件给软件开发人员,软件开发人员便能在这个基础上开发应用程序。做好分工,也有利于项目的推进。如果是软件开发人员想把所有的事情都做了,可能需要花费很多时间和精力去学习FPGA的知识,由软件思维转成硬件思维是个比较痛苦的过程,如果纯粹的学习,又有时间,就另当别论了。专业的人做专业的事,是个很好的选择。

1. 硬件介绍

我们从原理图中可以看到ZYNQ芯片分为PL和PS,PS端的IO分配相对是固定的,不能任意分配,而且不需要在Vivado软件里分配管脚,虽然本实验仅仅使用了PS,但是还要建立一个Vivado工程,用来配置PS管脚。虽然PS端的ARM是硬核,但是在ZYNQ当中也要将ARM硬核添加到工程当中才能使用。前面章节介绍的是代码形式的工程,本章开始介绍ZYNQ的图形化方式建立工程。

FPGA工程师工作内容

下面介绍FPGA工程师负责内容。

2. Vivado工程建立

2.1 创建一个名为“ps_hello”的工程,建立过程不再赘述,参考“PL的”Hello World”LED实验”。

2.2 点击“Create Block Design”,创建一个Block设计,也就是图形化设计

pIYBAGAJWK6ARscqAACtN0CIMoA100.jpg

2.3 “Design name”这里不做修改,保持默认“design_1”,这里可以根据需要修改,不过名字要尽量简短,否则在Windows下编译会有问题。

pIYBAGAJWOuAQGQ6AABMZyDhcXg159.png

2.4 点击“Add IP”快捷图标

2.5 搜索“zynq”,在搜索结果列表中双击”Zynq UltraScale+ MPSoC”

2.6 双击Block图中的ZYNQ核,配置相关参数

2.7 首先出现的界面是ZYNQ硬核的架构图,可以很清楚看到它的结构,可以参考ug1085文档,里面有对ZYNQ的详细介绍。图中绿色部分是可配置模块,可以点击进入相应的编辑界面,当然也可以在左侧的窗口进入编辑。下面对各个窗口的功能一一介绍。

o4YBAGAJWs2ALOq3AADGssXbcaA185.jpg

2.7.1 Low Speed配置

1) 在I/O Configuration窗口,配置BANK0~BANK2电压为LVCMOS18,BANK3电压为LVCMOS33。首先配置Low Speed管脚,勾选QSPI,并设置为”Single”模式,Data Mode为”x4“,勾选Feedback Clk

pIYBAGAJWwuAZEPHAACFD0IPArM602.jpg

2) (AXU2CGA开发板没有EMMC,不需要勾选此项)勾选SD 0,配置eMMC。选择MIO13..22,Slot Type选择eMMC,Data Transfer Mode为8Bit,勾选Reset,并选择MIO23。

o4YBAGAJW0yAYv8UAAApXB8V5Ts965.png

3) 勾选SD 1,配置SD卡。选择MIO 46..51,Slot Type选择SD 2.0,Data Transfer Mode选择4Bit,勾选CD,用于检测SD卡插入,选择MIO45

o4YBAGAJW4qAcVbeAAAntwE3Yz4475.png

4) 勾选I2C 1,用于EEPROM等的I2C,选择MIO 32..33

pIYBAGAJW8iAJFlZAAAKGeV09dg682.png

5) 勾选串口UART 1,选择MIO 42..43

o4YBAGAJXEWAVJaoAAAOi48AMSg104.png

6) 勾选TTC0~TTC 3

o4YBAGAJXIKAfW5wAAATI2mtBUs957.png

2.7.2High Speed配置

1) High Speed部分首先配置PS端以太网,勾选GEM 3,选择MIO 64..75,勾选MDIO 3,选择MIO 76..77

pIYBAGAJXMCAfreYAAAtd9lKPnY577.png

2) 勾选USB 0,选择MIO 52..63,勾选USB 3.0,选择GT Lane1

pIYBAGAJXP6AQq8gAAArjFFYctY355.png

USB复位选择MIO 31

pIYBAGAJXTyAK4-kAAALIwgr2VM369.png

3) 勾选PCIe

o4YBAGAJXXqAPH9ZAABW5o5l2B0382.png

4) 点开Switch To Advanced Mode,选择PCIe Configuration,修改以下几个参数,配置为ROOT模式

o4YBAGAJXbmACo2BAACEubISaaQ563.jpg

5) 回到I/O Configuration,选择GT Lane0,复位选择MIO 37;勾选Display Port,选择MIO 27..30,Lane Selection选择Dual Higher

o4YBAGAJXf6AYPTBAABzeKK2p28546.png

至此,I/O部分配置完毕

2.7.3 时钟配置

1) 在Clock Configuration界面,Input Clocks窗口配置参考时钟,其中PSS_REF_CLOCK为ARM的参考时钟默认为33.333MHz;PCIe选择Ref Clk0,100MHz;Display Port选择Ref Clk2,27MHz;USB0选择Ref Clk1,26MHz。

pIYBAGAJXjyAOx8ZAABYQ9WfuYo654.png

2) 在Output Clocks窗口,如果不是IOPLL,改成IOPLL,保持一致,用同样的PLL

pIYBAGAJXn2ACu8SAACkJr1z_H4930.jpg

3) PL的时钟保持默认,这是给PL端逻辑提供的时钟。

o4YBAGAJXs2AOOR9AAAYqfp4IOA017.png

4) Full Power部分,其他保持默认,将DP_VIDEO改为VPLL,DP_AUDIO和DP_STC改为RPLL。

o4YBAGAJXwuAf2GkAAAl6avl6mY864.png

最下面的Interconnect修改如下

pIYBAGAJX0mASWf6AAAUpMVC-JY952.png

其他部分保持默认,至此,时钟部分配置完成。

2.7.4 DDR配置

在DDR Configuration窗口中,Load DDR Presets选择”DDR4_MICRON_MT40A256M16GE_083E”

pIYBAGAJX4eABKewAACTFmydx50553.jpg

AXU2CGA开发板配置如下:

pIYBAGAJX8WAJRw2AABNDT6hF7c580.png

AXU2CGB开发板配置如下:

pIYBAGAJYAOAUtV-AABBtXO5IVU477.png

其它保持默认,点击OK,配置完成,并连接时钟如下:

1)选择Block设计,右键“Create HDL Wrapper.。.”,创建一个Verilog或VHDL文件,为block design生成HDL顶层文件。

o4YBAGAJYIWAfdxqAABGCa5r3m4430.png

2)保持默认选项,点击“OK”

o4YBAGAJYMSALo_EAABN0Sj_m_U678.png

3)展开设计可以看到PS被当成一个普通IP 来使用。

pIYBAGAJYQGAHwICAAA90ds-xmA959.png

4)选择block设计,右键“Generate Output Products”,此步骤会生成block的输出文件,包括IP,例化模板,RTL源文件,XDC约束,第三方综合源文件等等。供后续操作使用。

pIYBAGAJYUCAPmAAAABe785h4uQ743.png

5)点击“Generate”

pIYBAGAJYYCASKKmAABGPyMXOlw414.png

6)在菜单栏“File -》 Export -》 Export Hardware.。.”导出硬件信息,这里就包含了PS端的配置信息。

o4YBAGAJYb-AW3n6AAB_w__2FQc566.png

7) 在弹出的窗口中选择Fixed,点击Next

pIYBAGAJYf-AEr87AABl-Wgn30Q272.png

8) 在弹出的对话框中点击“OK”,因为实验仅仅是使用了PS的串口,不需要PL参与,这里就没有使能不选择“Include bitstream”,点击Next

pIYBAGAJYkyAflstAABDlPKZfbk552.png

9) 可修改导出名字以及导出路径,默认是在vivado工程目录下的,这个文件可以根据自己的需要在合适的位置,不一定要放在vivado工程下面,vivado和vitis软件是独立的。在这里我们选择默认不做更改。点击Next

o4YBAGAJYoqAc_PZAABSfN-sDL4039.png

点击Finish

pIYBAGAJYsuAfeCOAABXSQl-Kw0602.png

o4YBAGAJYwmAPHEGAAAL_sEFqMQ163.png

此时在工程目录下可以看到xsa文件,这个文件就是这个文件就包含了Vivado硬件设计的信息,可交由软件开发人员使用。

o4YBAGAJY0eAVX9cAAAbnMt8Kqs525.png

到此为止,FPGA工程师工作告一段落。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21671

    浏览量

    601909
收藏 人收藏

    评论

    相关推荐

    硬件工程师工作必备书籍推荐

    硬件工程师工作必备书籍推荐
    的头像 发表于 09-24 16:07 670次阅读
    硬件<b class='flag-5'>工程师</b>找<b class='flag-5'>工作</b>必备书籍推荐

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别?

    逻辑工程师FPGA 原型验证工程师工作重点和职责上存在一定的区别: FPGA 算法工程师
    发表于 09-23 18:26

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    用二创,1:1复刻工程师的职场现状

    工程师
    扬兴科技
    发布于 :2024年07月19日 18:30:07

    嵌入式软件工程师和硬件工程师的区别?

    、机器人等。 定义和工作职责 嵌入式软件工程师的主要职责包括但不限于:设计、开发、测试和调试嵌入式软件应用程序,以满足特定硬件和软件要求。他们需要理解并掌握嵌入式系统的基本原理,熟悉相关硬件接口
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    fpga工程师前景如何

    FPGA工程师的前景看起来相当积极和广阔。随着5G通信、物联网、边缘计算和人工智能等技术的快速发展,FPGA工程师的需求将进一步增加。FPGA
    的头像 发表于 03-14 16:32 3097次阅读

    fpga工程师就业趋势

    FPGA工程师的就业趋势呈现出积极的态势。随着科技的发展,FPGA(现场可编程门阵列)在通信、汽车、医疗、航空航天等领域的应用越来越广泛,对FPGA
    的头像 发表于 03-14 15:47 1436次阅读

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

    #人工智能 #FPGA 怎么成为一个合格的FPGA工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年12月18日 21:19:01