【ZYNQ】EBAZ4205 ZYNQ 7010矿板改造开发板

Vivado(2018.3)软件版本过旧,仅供参考!!!新版本操作正在更新


前言

EBAZ4205是矿机的控制板,价格便宜;现在咸鱼上大约50左右就可以收到一块成色不错的。

EBAZ4205硬件资源丰富,其使用XILINX XC7Z010-1CLG400I 作为主控芯片,芯片的SOC包含两个硬核ARM A9,以及ARTIX-7逻辑。板子还有一颗128M x 16 bit DDR3 CLK800MHz,一块128M字节 NAND FLASH,PS端 33.333Mhz晶振;板子预留有一个JTAG调试接口,一个4Pin串口,一个网口,数量众多的PL端引出的引脚(PH2.0插座)…具体可以查看原理图1


一、硬件改造

由于EBAZ4205毕竟还是一块矿板,不能直接用作开发板进行调试,需要先对其硬件进行一些改造。

  1. 供电改造:买回来的矿板在主电源输入接口后面会缺少一个防反接的二极管(SS810),可以选择从网上购买一个新的,也可以旁边拆下来一个焊上。或者和我一样,直接把线焊在排针的输入二极管上面。输入电压:12-5V
    在这里插入图片描述

  2. 调试接口改造:将串口和JTAG的排针全部焊接上;其中JTAG的线序是标准JTAG14针的接口,而串口的在板子上有写。

  3. 更改启动顺序:ZYNQ SOC启动过程以ARM为主,上电后硬件读取PS端IO口确定从NAND、QSPI-FLASH、SD Card还是JTAG启动。板子默认从NAND启动,为了软件调试和下载NAND,须从JTAG启动。看原理图可以确定电阻R2578(上拉)和R2583(下拉)控制BOOT_MODE[2]引脚,也就是控制矿板从JTAG还是从NAND启动。我们只需将电阻向右移一个位即可改成从JTAG启动。
    如果身边工具受限,该项可不强制做。
    在这里插入图片描述

  4. 有能力的可以补齐PL端的晶振,和microSD卡槽

二、配置样板工程

  1. 下载并安装Vivado软件。该软件是FPGA厂商赛灵思公司2012年发布的集成设计环境。包括高度集成的设计环境和新一代从系统到IC级的工具。我使用的版本是Vivado 2018.3,不同版本间操作会有一定差异。
    Vivado 2018.3

  2. 新建工程:点击新建工程 →Next→设置项目名称和项目根目录→选择RTL Project→选择芯片型号→Finish
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  3. 创建原理图:点击"Create Block Design"创建原理图,并将其命名为"System";目录和源选项保持默认即可。
    创建原理图
    创建原理图选项

  4. 添加ZYNQ7 Processing System
    在这里插入图片描述
    在这里插入图片描述

  5. 配置外设IO,设置使用NAND UART1如图
    在这里插入图片描述

  6. 时钟配置:使用FCLK_CLK0用于PS端给PL端时钟信号,按照下图(由于原矿板上PL端的晶振并未焊接,只能使用PS端提供的时钟信号;PL端会在后面点灯时候用到)
    在这里插入图片描述

  7. 设置内存参数:选择内存为DDR3,数据位宽为16Bit,由于板子上用的不是镁光的内存,我们只能使用镁光128M的内存代替,数据线PCB延迟设置为0.106,按照下图:
    在这里插入图片描述
    在这里插入图片描述

  8. 修改NAND的时序,如下图;到此步完成ZYNQ PS的配置,点击OK
    在这里插入图片描述

  9. 为ZYNQ创建端口,不创建端口的话,PL端无法调用其时钟信号。右键时钟端口,选择"Creat Port"(或者快捷键Ctrl+K),保持默认设置点击OK
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这里多为AXI时钟创建了一个输入,不然验证时会报错;但是AXI总线我们并没有用到,所以可以在PS配置中取消掉,如图
    在这里插入图片描述

  10. 先验证设计,再右键Source中的设计创建封装和输出顶层文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  11. 添加点灯程序:新建verilog文件"led_top.v",设置为顶层模块,添加以下代码:

module led_top(
output reg led_r=1'b1,
output reg led_g
);
wire clk,rst_n;
System_wrapper System_wrapper_0// ARM
(
 .FCLK_CLK0(clk),
 .FCLK_RESET0_N(rst_n)
);
reg [31:0]cnt0;
always@(posedge clk)begin
    if(cnt0 == 32'd50_000_000 - 1 )begin
        cnt0 <= 'd0;
        led_r <= ~led_r;
        led_g <= ~led_g;
    end else begin
        cnt0<=cnt0+1'd1;
    end
end
endmodule

在这里插入图片描述在这里插入图片描述

  1. 添加约束文件,文件内容如下。并保存
set_property PACKAGE_PIN W13 [get_ports {led_r}]
set_property PACKAGE_PIN W14 [get_ports {led_g}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_r}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_g}]

在这里插入图片描述

  1. Generate Bitstream 生成.bit文件
    在这里插入图片描述

  2. 导出硬件文件File->export hardware,记得勾上.bit文件,不然PL部分是缺失的
    在这里插入图片描述

在这里插入图片描述

  1. 启动SDK
    在这里插入图片描述
    在这里插入图片描述

  2. 在SDK中新建App,取名为FSBL,并选择赛灵思官方提供的FSBL模板。FSBL(First Stage Bootloader)听名字就知道是一个优先级更高的BL,他的作用就是配置PL和加载用户的应用程序。在上电复位之后,最先执行,负责检测启动模式、配置时钟和内存接口,并将bootloader复制到内存中,然后将处理器交给bootloader。这个app在后面会用到。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 同样的方法再新建一个HelloWorld模板,这是为了验证我们的ARM内核是否正常运行,稍微修改一下代码让他能一直输出字符(保存文件SDK就会自动编译)
    在这里插入图片描述

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "sleep.h"

int main()
{
    init_platform();
    while(1)
    {
    	print("Hello World\n\r");
    	sleep(1);
    }
    
    cleanup_platform();
    return 0;
}
  1. 制作镜像文件BOOT.bin用于固化到NAND。BOOT.bin由FSBL.elf led_top.bit app.elf三个文件组成;Xilinx->Create Boot Image 然后按照顺序添加前面提到的文件。
    在这里插入图片描述
    在这里插入图片描述
    添加led_top.bin和helloworld.elf要记住"Partition type"选择的是数据文件
    在这里插入图片描述

请务必按顺序添加文件!!!
在这里插入图片描述

  1. 烧录镜像文件:如果在之前硬件已经更改了启动顺序电阻,现在可以直接点击创建镜像上面的Program Flash进行烧写,烧写完记得把电阻改回来,不然是无法正常运行的。
    在这里插入图片描述
  2. 如果没办法改动启动电阻也没关系。SDK完成Nand Flash的烧写实际上时通过FSBL完成,因为在烧写Nand Flash的时候需要添加Image File和Flash Type以外,还需要指定一个FSBL。这个FSBL就是用来完成Nand Flash烧写的。所以,我们只要强行指定这个FSBL是以JTAG启动就可以烧写了。在Xilinx的官网问答AR#56030里面写的非常的详细。
    重新回到刚刚的FSBL代码中的main.c文件,搜索BootModeRegister,并将其修改成以下内容。
    此时不要重新生成镜像文件,直接和上面一样点击下载即可,程序就能正常烧录。
    /*
	 * Read bootmode register
	 */
	// BootModeRegister = Xil_In32(BOOT_MODE_REG);
	// BootModeRegister &= BOOT_MODES_MASK;
	BootModeRegister = JTAG_MODE;

三、结果

如果一切顺利,则可以看到如下情景,前面的红绿两盏灯交替闪烁,串口每隔一秒钟会输出"Hello World"
在这里插入图片描述


总结

这块矿板的性价比非常的高,如果单买芯片都要400-500块,这给想入门FPGA或者是ZYNQ的人带来了福利。但是毕竟是一分价钱一分货,这块矿板的资源极其有限,过小的内存和NAND导致处理稍微复杂应用可能会不够大,以及以单端引出而不是以差分对引出的走线,不能应对高频信号,如HDMI。总的来说这块板子用于入门大于用于长期学习。


参考文章

[1] EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法
[2] zynq7010之EBAZ4205之helloworld
[3] 100块学会ZYNQ-矿板Nand Flash烧写和启动
[4] AR#56030 14.5 Zynq-7000 SoC AP iMPACT - NAND programming requires the board to be in JTAG mode
[5] [正点原子2_启明星ZYNQ之嵌入式开发指南_V1.2.1.pdf]


  1. EBAZ4205电路图和PCB(GitHub) ↩︎

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值