同步操作将从 浪潮RISC-V研究小组/RVWeekly 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
https://zhuanlan.zhihu.com/p/199193665
关于荔枝糖Hex ZController开发板是针对 Xilinx Zynq系列 FPGAXC7Z020,专门为 Zy nqFPGA使用 者和 Zynq FPGA学习者提供一款简单易用,价格便宜,易扩展的开发板。
说实话,我看到这个配置,然后售价400出头,我还是比较心动的。 毕竟我的需求就是用来捏软核,或者捏神经网络加速器之类的原型验证,对于像屏幕接口,摄像头接口不是很需要。
另外说说这块板子使用不方便的地方,没有专门引出硬件的复位按钮,复位全靠拔插电了(亦或者从软件上实现),问题也不大,在接受范围内 还有另外一个不太好的地方,就是JTAG下载接口,是s形排列的,据说是为了直接把杜邦线插上,然后不用焊接也会很牢靠...但是对于想焊接排针的同学来说,这个就有点难看了 还有就是对于小白来说资料比较少,不过该有的资料都有了。开发起来也没啥难度。无非就是自己融会贯通下别人家的资料。正好锻炼自学能力。 另者,PL侧无晶振,所以想单独开发PL侧的同学可能就没办法了。不过问题不大,可以用PS侧的IP核走FCLK_CLK0给PL测时钟。我想没人买ZYNQ是为了单独PL开发,多多少少都要用到PS侧的,所以这也不算是个大问题
综上所述,如果你没有对camera/screen接口的需求,亦或者是对IO引出数量的大量需求,推荐上车,性价比极高
我用的vivado 2020.1,官方有过一些类似的demo,只不过还是ISE...太老了。2020年了,怎么还能不用2020vivado
然后我们这次是用PS侧的uart1发hello,world。所以我们需要把DDR3也给配置下 板载的内存芯片:MT41K256M16TW-107 但是貌似没有可以直接选择,所以我们需要调查下这个DDR的命名规范
综上选择
当然选Custom之前的一个(也就是整个选项的倒数第二项),MT41J也是可以的。上面说过,他们的电平兼容
经过一波PS侧IP配置后,我们得到了如下图:
然后再点击以下这个按钮自动走一下block,就收工了。
进来后先点锤子编译下
创建新应用项目
接下来一路next,到如下界面,为了方便我就不自己代码了,直接用官方DEMO就行。
然后再用小锤子Build下,就收工了。
然后运行在板子上,然后随便找个串口终端软件,或者用vitis自带的也行。调好波特率等着就行。
我的板子还在路上,所以报如下错误,云操作一波QAQ
软核捏完啦,开始折腾了下。收工
发布于 2020-08-26
https://zhuanlan.zhihu.com/p/202584973
通过上一篇博客,我们完成了荔枝糖Hex PS侧打印"Hello,World!"([Vivado 2020.1]ZYNQ7020折腾之路(一)之荔枝糖Hex入门输出“Hello,World!“---https://blog.csdn.net/qq_36229876/article/details/108054405)
今天我们来测试下芯片内部内存和外置的ddr3内存颗粒
一路next后,并 run as hardware 后,可以在vitis串口终端看到如下信息
从如上图我们可以知道 外部DDR3内存容量为0x3FF00000 bytes = 1023MB
ps侧片内ram为:0xFE00 = 63KB
至此完成对荔枝糖Hex片内内存,DDR3测试
发布于 2020-08-28
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
https://zhuanlan.zhihu.com/p/205310326
只不过今天要多留个FCLK_CLK0_0端口,因为荔枝糖HEX的PL侧是没有外挂晶振,所以需要通过PS侧给PL侧生成时钟。这样的设计,我认为的优缺点如下: 优点
缺点
于是,我们配置好ZYNQ的IP核,此处只需要给PL侧引出一路时钟就行。右键FCLK_CLK0,点击 make external ,然后再 auto 连线
然后为BD create wrapper 最后将我们之前写好的run_led.v加入到source里面。
源码如下
module run_led(
input RSTn_i,
output reg [1:0]LED_o
);
wire CLK_i;
reg [31:0]Counter;
sys_clk_wrapper system_clk1(
.FCLK_CLK0_0(CLK_i)
);
//脉冲计数器
always @(posedge CLK_i or negedge RSTn_i)
begin
if(!RSTn_i)
begin
Counter <= 0;
end
else if(Counter == 32'd99_999_999)
begin
Counter <= 0;
end
else
begin
Counter <= Counter + 1;
end
end
//LED灯控制(0:亮 1:灭)
always @(posedge CLK_i or negedge RSTn_i)
begin
if(!RSTn_i)
begin
LED_o <= 2'b10;//
end
else if(Counter == 32'd49_999_999)//第一秒
begin
LED_o <= 2'b10;
end
else if(Counter == 32'd99_999_999)//第2秒复位
begin
LED_o <= 2'b01;
end
end
endmodule
set_property PACKAGE_PIN W5 [get_ports RSTn_i]
set_property PACKAGE_PIN AB1 [get_ports {LED_o[1]}]
set_property PACKAGE_PIN AB4 [get_ports {LED_o[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports RSTn_i]
set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[0]}]
然后综合一下,直接就可视化的生成xdc约束文件了(自己手动太麻烦了)
等右上角出现 Ready 字样 说明综合完毕,此时也要观察下底部的log框,康康有没有waring或者error.综合完成后,打开综合设计
然后点击 Schematic ,再点击 4 I/O Ports (教程写到这里我才发现,其实CLK端口没必要引出,因为走的PS端的FCLK_CLK_0,不过无所谓啦.
之后就是根据荔枝派Hex的原理图分配下管脚(这里吹吹画原理图的前辈,设计得不错。后面哪个{}花括号里面的数字,就是使用这个网络标号的FPGA端口 在原理图上所在的页码数。)
设置管脚约束如下,记得把电平换成LVCOMS33
然后点击右上角的保存,保存xdc文件
最后我们看到管脚约束文件已经被添加进来了
最后生成比特流文件,把.bits文件通过JTAG烧录到板子里面
发布于 2020-08-29
https://zhuanlan.zhihu.com/p/210301920
一般对面FPGA,我们采用的是将程序固化到SPI FLASH种,然后FPGA上电后自动运行SPI FLASH种的程序。(比如我之前用的cyclone iv) 不过 对于ZYNQ来说,我们有了更加多样的程序固化方式:
对于荔枝糖HEX来说,我们使用2和3两种方式进行程序固化。 首先,我们先从比较简单的将程序固化在TF卡中进行说明。
生成需要固化的.bin文件(PS:由于需要使能不同的管脚,所以即便PL端逻辑相同,但是固化在NAND FLASH中或者TF卡中的.bit文件是不同的,具体见下文)
首先创建一个FSBL文件,通过右侧对这个FSBL工程的介绍,我们提取到大概信息。这个ZYNQ FSBL工程主要是将PL侧的.bits文件和PS侧的.elf文件打包下载到NAND/SPI/NOR FLASH中。当然如果我们使用TF卡的话,就不存在下载的说法了,就直接把.bin文件拖入sd卡根目录就行啦。
然后我们注意到这里有一行报错
This application requires xilffs library in the Board Support Package. You can go back to the previous pages to select a different platform and domain or create a new one with suitable hardware and software.
如何解决这个报错呢? 这个报错的大概意思是 BSP(Board Support Packet,板级支持包) 里面少了个xilffs library。我们只用 在BSP里面添加上这个包就行了。具体操作见博客:https://blog.csdn.net/qq_36229876/article/details/108238233
然后把需要固化的工程生成.bin文件,点击 Create Boot Image
然后准备好三个文件,分别是 ps端.elf,pl端.bit,还有FSBL.elf
点击 Create Image ,完成生成
将生成的BOOT.bin复制进TF卡
把TF卡插入板子上,程序应该是不会运行的。 因为我们注意到,原理图上,default的boot mode是走NAND FLASH
要想走TF卡,得把SDIO_SDDET脚拉低
再次观察原理图,我们发现其实设计了全自动电路
我们把上述的几个原理图连起来分析后,我们可以发现一个事情,说就是当TF卡插入时,会自动进入从TF卡引导程序。当TF卡拔出时,则进入用NAND FLASH引导程序。下面测试的结果也验证了这个原理。(不得不说,设计得挺不错的) 插上TF卡时
打开VIDADO 之前的ZYNQ IP Core,为了把程序固化到NAND FLASH中,我们需要把相关引脚给ENABLE了
然后重新综合工程,得到.bits FOR NAND FLASH。然后按照上文章节 生成需要固化的.bin文件 进行BOOT.bin文件的生成。 然后
然后
还有一个容易出错的地方是,软件自动导入的FSBL文件路径不对,应该设置成工程下面的FSBL文件的fsbl.elf文件(如果DEBUG目录下没有这个文件的话,就Build下FSBL工程)
出现如下错误:
Problem in running uboot Flash programming initialization failed. ERROR: Flash Operation Failed
然后查翻了下,需要将FSBL项目下的main.c里面的 BootModeRegister = JTAG_MODE
结果还是不行,一直报那个错误,等明天再试试吧。先去睡觉了QAQ。昨晚和女朋友4点钟才去睡觉,今早八点多就起来了,顶不住了QAQ
发布于 2020-09-01
万里之行始于足下!
封笔啦。
登录 后才可以发表评论