完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
前言
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毕竟还是一块矿板,不能直接用作开发板进行调试,需要先对其硬件进行一些改造。 供电改造:买回来的矿板在主电源输入接口后面会缺少一个防反接的二极管(SS810),可以选择从网上购买一个新的,也可以旁边拆下来一个焊上。或者和我一样,直接把线焊在排针的输入二极管上面。输入电压:12-5V 调试接口改造:将串口和JTAG的排针全部焊接上;其中JTAG的线序是标准JTAG14针的接口,而串口的在板子上有写。 更改启动顺序:ZYNQ SOC启动过程以ARM为主,上电后硬件读取PS端IO口确定从NAND、QSPI-FLASH、SD Card还是JTAG启动。板子默认从NAND启动,为了软件调试和下载NAND,须从JTAG启动。看原理图可以确定电阻R2578(上拉)和R2583(下拉)控制BOOT_MODE[2]引脚,也就是控制矿板从JTAG还是从NAND启动。我们只需将电阻向右移一个位即可改成从JTAG启动。 如果身边工具受限,该项可不强制做。 有能力的可以补齐PL端的晶振,和microSD卡槽 配置样板工程 下载并安装Vivado软件。该软件是FPGA厂商赛灵思公司2012年发布的集成设计环境。包括高度集成的设计环境和新一代从系统到IC级的工具。我使用的版本是Vivado 2018.3,不同版本间操作会有一定差异。 新建工程:点击新建工程 →Next→设置项目名称和项目根目录→选择RTL Project→选择芯片型号→Finish 创建原理图:点击“Create Block Design”创建原理图,并将其命名为“System”;目录和源选项保持默认即可。 添加ZYNQ7 Processing System 配置外设IO,设置使用NAND UART1如图 时钟配置:使用FCLK_CLK0用于PS端给PL端时钟信号,按照下图(由于原矿板上PL端的晶振并未焊接,只能使用PS端提供的时钟信号;PL端会在后面点灯时候用到) 设置内存参数:选择内存为DDR3,数据位宽为16Bit,由于板子上用的不是镁光的内存,我们只能使用镁光128M的内存代替,数据线PCB延迟设置为0.106,按照下图: 修改NAND的时序,如下图;到此步完成ZYNQ PS的配置,点击OK 为ZYNQ创建端口,不创建端口的话,PL端无法调用其时钟信号。右键时钟端口,选择“Creat Port”(或者快捷键Ctrl+K),保持默认设置点击OK 这里多为AXI时钟创建了一个输入,不然验证时会报错;但是AXI总线我们并没有用到,所以可以在PS配置中取消掉,如图 先验证设计,再右键Source中的设计创建封装和输出顶层文件 添加点灯程序:新建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; endendendmodule 添加约束文件,文件内容如下。并保存 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}] Generate Bitstream 生成.bit文件 导出硬件文件File-》export hardware,记得勾上.bit文件,不然PL部分是缺失的 启动SDK 在SDK中新建App,取名为FSBL,并选择赛灵思官方提供的FSBL模板。FSBL(First Stage Bootloader)听名字就知道是一个优先级更高的BL,他的作用就是配置PL和加载用户的应用程序。在上电复位之后,最先执行,负责检测启动模式、配置时钟和内存接口,并将bootloader复制到内存中,然后将处理器交给bootloader。这个app在后面会用到。 同样的方法再新建一个HelloWorld模板,这是为了验证我们的ARM内核是否正常运行,稍微修改一下代码让他能一直输出字符(保存文件SDK就会自动编译) #include 《stdio.h》#include “platform.h”#include “xil_printf.h”#include “sleep.h”int main(){ init_platform(); while(1) { print(“Hello Worldnr”); sleep(1); } cleanup_platform(); return 0;} 制作镜像文件BOOT.bin用于固化到NAND。BOOT.bin由FSBL.elf led_top.bit app.elf三个文件组成;Xilinx-》Create Boot Image 然后按照顺序添加前面提到的文件。 添加led_top.bin和helloworld.elf要记住“Partition type”选择的是数据文件 请务必按顺序添加文件!!! 烧录镜像文件:如果在之前硬件已经更改了启动顺序电阻,现在可以直接点击创建镜像上面的Program Flash进行烧写,烧写完记得把电阻改回来,不然是无法正常运行的。 如果没办法改动启动电阻也没关系。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。总的来说这块板子用于入门大于用于长期学习。 |
|
|
|
只有小组成员才能发言,加入小组>>
4241个成员聚集在这个小组
加入小组3264 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4212 浏览 1 评论
4212 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-3 06:55 , Processed in 0.602406 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号