• 【蜂鸟E203的FPGA验证】Chap.7 Vivado综合与性能分析-建立Vivado工程


    【蜂鸟E203的FPGA验证】Chap.7 Vivado综合与性能分析-建立Vivado工程

    前言:本文均为作者原创,内容均来自本人的毕业设计。未经授权严禁转载、使用。里面的插图和表格均为作者本人制作,如需转载请联系我并标注引用参考。分享仅供大家学习和交流。
    建立Vivado工程的详细步骤可见之前的博客

    Vivado 蜂鸟 e203 MCU200T/DDR200T 逻辑综合 RISC-V 详细教程
    https://blog.csdn.net/qq_43858116/article/details/123648746
    
    Vivado 蜂鸟 e203 烧录下载MCU200T/DDR200T FPGA-FLASH里 bit/mcs/bin文件 详细教程 RISC-V
    https://blog.csdn.net/qq_43858116/article/details/124152615
    
    • 1
    • 2
    • 3
    • 4
    • 5

    0. Vivado与综合

      综合就是把硬件描述语言转换为与其相对应的查找表和寄存器构成的功能电路[15]。本设计基于Xilinx Vivado 2019完成了工程建立、内核编译、板载时钟管理、硬件选择、引脚匹配、性能分析、内核烧写 、测试分析,Vivado界面如图3-9所示。
    在这里插入图片描述

    图3-9 Vivado界面

    1. 建立Vivado工程

    2. 导入Verilog RTL源代码

      E203内核源代码的结构非常清晰,整体呈现层次化的结构,从顶部模块e203_cpu_top到底部各个功能模块都一层一层地去例化,如图3-10所示。因为SRAM包含内存和缓存,并不涉及流水线结构的逻辑设计,只有访存功能,所以顶层的e203_cpu_top例化将逻辑设计和内存部分分开,两个模块e203_cpu和e203_SRAM分别是E203内核所有的流水线逻辑设计部分e203_cpu和存储单元SRAM部分。除了Verilog RTL代码,还需要为处理器系统分配板载时钟和板载I/O引脚的物理约束。

    在这里插入图片描述

    图 3-10 E203内核里的模块层次

    3. 时钟管理-DDR200T开发板

    1. 单端100MHz的时钟,为FPGA子系统的主时钟输入,是板载开发板自带的晶振,经查询产品手册里板载原理图可见该部分的电路图如图3-11所示。
      在这里插入图片描述
    图3-11 100MHz板载时钟的原理图
    1. 单端32.768KHz时钟,为蜂鸟E203MCU的低速时钟输入,是板载开发板自带的另一个晶振。一般处理器的设计有个重要的单位是1Hz,而一般晶振的时钟频率是32.768KHz通过15次分频后得到的频率恰好单元1Hz,也就是1秒钟的时间,用于计时。经查询产品手册里原理图可见该部分的电路图如图3-12所示。
      在这里插入图片描述
    图3-12 32.768KHz低速时钟输入时钟原理图

      定义FPGA工程顶层设计模块system_top.v在时序分析时添加两个IP核用做时序仿真时候的时钟管理,提供各部分的时钟:MMCM( Mixed Mode Clock Manager, 混合模式时钟管理器)独立IP为高性能的FPGA设计提供更高性能的时钟管理功能,PSR(Processor System Reset,处理核系统重置器)[20],如图3-13所示。
    在这里插入图片描述
    在这里插入图片描述

    图3-13 添加的两个IP参数(左图ip_MMCM,右图ip_PSR)

      使用MMCM将主时钟100MHZ分频为8.388MHz和16MHz,使用PSR创建一个reset复位模块。对顶层设计中的各模块添加相应的时钟,定义模块的时钟输入。综合后添加时钟管理IP后的处理器的综合结构如图3-14所示。
    在这里插入图片描述

    图3-14 时钟管理后的综合结构

    4. 引脚约束

      在Vivado建立一个FPGA工程不仅需要添加时钟,还需要增加板载的引脚约束对I/O引脚进行例化,使之连接到FPGA芯片外部的Pin脚上增加电气属性规定,从而实现将输入输出的功能映射到物理的开发板上[20],部分引脚约束如表3-2所示。

    表3-2 DDR200T上E203内核的部分引脚约束文件
    Pin引脚端口名称电气属性
    W19CLK100MHZ时钟周期为10us
    Y18CLK32768KHZ时钟周期为30517.58us
    T6fpga_rstLVCMOS15
    P20mcu_rstLVCMOS33
    spi0-FLASH define
    W16qspi0_csLVCMOS33
    W15qspi0_sckLVCMOS33
    U16qspi0_dq[3]LVCMOS33
    T16qspi0_dq[2]LVCMOS33
    T14qspi0_dq[1]LVCMOS33
    T15qspi0_dq[0]LVCMOS33
    MCU JTAG define
    N17mcu_TDOLVCMOS33
    P15mcu_TCKLVCMOS33
    T18mcu_TDILVCMOS33
    P17mcu_TMSLVCMOS33
    PMU-power define
    U15pmu_padenLVCMOS33
    V15pmu_padrstLVCMOS33
    N15mcu_wakeupLVCMOS33
  • 相关阅读:
    element ui框架(登陆状态保存)
    【电商运营】在节日期间,这几个营销误区一定要避免!
    TFT-LCD LVGL官方例程的应用
    adb对安卓app进行抓包(ip连接设备)
    从RNN到LSTM
    OpenGL中最简单的窗体创建和渲染(初始化GLFW、GLAD、定义视口大小和resize回调、双层缓冲、输入事件处理)
    Python网络物品采购系统毕业设计源码031035
    【堡塔企业级防篡改-重构版】使用手册
    LDRA Testbed(TBrun)软件单元测试_操作指南
    HashMap集合技术点
  • 原文地址:https://blog.csdn.net/qq_43858116/article/details/125517249