前言:本文均为作者原创,内容均来自本人的毕业设计。未经授权严禁转载、使用。里面的插图和表格均为作者本人制作,如需转载请联系我并标注引用参考。分享仅供大家学习和交流。
建立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
综合就是把硬件描述语言转换为与其相对应的查找表和寄存器构成的功能电路[15]。本设计基于Xilinx Vivado 2019完成了工程建立、内核编译、板载时钟管理、硬件选择、引脚匹配、性能分析、内核烧写 、测试分析,Vivado界面如图3-9所示。

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



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


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

在Vivado建立一个FPGA工程不仅需要添加时钟,还需要增加板载的引脚约束对I/O引脚进行例化,使之连接到FPGA芯片外部的Pin脚上增加电气属性规定,从而实现将输入输出的功能映射到物理的开发板上[20],部分引脚约束如表3-2所示。
| Pin引脚 | 端口名称 | 电气属性 |
|---|---|---|
| W19 | CLK100MHZ | 时钟周期为10us |
| Y18 | CLK32768KHZ | 时钟周期为30517.58us |
| T6 | fpga_rst | LVCMOS15 |
| P20 | mcu_rst | LVCMOS33 |
| spi0-FLASH define | ||
| W16 | qspi0_cs | LVCMOS33 |
| W15 | qspi0_sck | LVCMOS33 |
| U16 | qspi0_dq[3] | LVCMOS33 |
| T16 | qspi0_dq[2] | LVCMOS33 |
| T14 | qspi0_dq[1] | LVCMOS33 |
| T15 | qspi0_dq[0] | LVCMOS33 |
| MCU JTAG define | ||
| N17 | mcu_TDO | LVCMOS33 |
| P15 | mcu_TCK | LVCMOS33 |
| T18 | mcu_TDI | LVCMOS33 |
| P17 | mcu_TMS | LVCMOS33 |
| PMU-power define | ||
| U15 | pmu_paden | LVCMOS33 |
| V15 | pmu_padrst | LVCMOS33 |
| N15 | mcu_wakeup | LVCMOS33 |