judyzhong 的blog

Zynq-7000 SoC、DDR — LPDDR2 动态时钟停止重启太快

描述
在没有内存事务处理执行以及如果接收到内存请求重启时钟时,用户可通过编程 LPDDR2 控制器来停止 DRAM 时钟。

当事务处理队列为空时,该控制器会适当停止时钟,但在时钟重启时,控制器会迅速发布 DRAM 事务处理。它无法识别 tXP 时序参数值。

要么不使用 LPDDR2 时钟停止特性,要么提供软件确保只有在没有 DRAM 活动时才完成时钟停止的启用/禁用。


解决方案
影响: 其它信息,请查看解决办法的详细信息。
规避措施: 不使用时钟停止特性,也可以 
在 DRAM 处于非工作状态时,手动编程停止时钟特性
配置

关于Vivado几个参数的设置

有时候,我们希望从windows的命令行或命令控制台中启动或调用vivado设计套件的各个工具,同时也希望每次新建vivado工程时能自动帮我们指定相应的工程目录(而不是每次都要指定工程目录),这就需要我们稍微设置几个简单的参数,下面一一道来。

一、设置环境变量

通过设置vivado环境变量,使我们能够在命令行或命令控制台中启动vivado设计套件的各个工具,如图1所示。

图1  命令行或命令控制台启动vivado

图1 命令行或命令控制台启动vivado

Zynq轻量级以太网控制器LWIP传输速度优化

在sdk中选择lwip模板,编译调试可轻松连接成功并进行通信,模板中代码完成的任务是client给server发什么,server就会回复什么。

但是传输速度非常低下,只有50KB左右,所以需要改进速度,修改lwip BSP中的设置参数可明显改进传输速度,默认BSP参数是:

需要修改的参数如下:

MEM_SIZE 524288
MEMP_NUM_PBUF 1024
MEMP_NUM_TCP_SEG 1024
PBUF_POOL_SIZE 8192
N_RX_DESCRIPTORS = 512
N_TX_DESCRIPTORS = 512
TCP_SND_BUF 65535
TCP_WND 65535
TCP_IP_TX_CHECKSUM_OFFLOAD= true

Xilinx OLOGIC 资源

OLOGIC块在FPGA内的位置紧挨着IOB,其作用是FPGA通过IOB发送数据到器件外部的专用同步块。OLOGIC 资源的类型有OLOGIC2(位于HP I/O banks)和OLOGIC2(位于HR I/O banks)。在本文的下述论述中,除非特殊说明,OLOGIC2和OLOGIC3在功能和端口上都是相同的。

OLOGIC2和OLOGIC3不属于原语,正因为这样,所以它们不能被直接例化。它包含在布局布线后用户可例化的一些元素,例如一个输出触发器(OFD--output flip-flop)或者一个ODDR(output DDR element).

OLOGIC主要由两个block组成,一个用于配置输出路径。另外一个用于配置三态控制路径。这两个block具有共同的时钟,但是具有不同的使能信号OCE和TCE。两者具有由SRVAL属性精致的一部和同步set和reset(S/R信号)。

输出路径和三态枯井可以以下列模式之一独立配置:

边沿触发的D触发器

DDR模式(ASAME_EDGE 或 OPPOSITE_EDGE)

电平敏感锁存器

异步电路/组合逻辑

下图说明了OLOGIC block中的各种逻辑资源

读zynq_ebook笔记知识点(三)

作者:llc1991

第十一章:硬件/软件划分

FPGA 可编程逻辑适合解决那种能高效地划分为多道并行任务的问题。由于可编程逻辑固有的并行执行方式,多个运算可以被同时处理,用比串行处理更短的时间计算出最终的结果。FPGA 实现的例子应用包括数字过滤计算、波束形成和图像处理。传统上这些任务是重复的,而且计算的过程本质上是完全静态的。另一方面,存在一些更动态、不可预测的问题,这些任务更适合在基于处理器的系统上实现。

Vivado下的Microblaze系统搭建:永远的Hello World

目前,xilinx的zynq系列FPGA炒的火热,SOC成为FPGA发展的必然趋势。可见所有功能均用硬件描述语言设计是不科学的。硬件逻辑独有的并行性使其在实时处理和并行算法中占尽优势,但当执行串行操作时却需要使用笨重的状态机来完成。因此,要实现对实时性要求不高的串行操作,对各类IP核的总体控制调度,亦或是快速移植软件协议栈时,利用FPGA内部CPU是个比较好的选择。

  硬核CPU只在特定系列FPGA芯片中,性能当然没的说,占用的资源也非常少。但相比硬核,microblaze可移植性较强,性能要求不高的场合下还是非常灵活的。本文依然以经典的串口打印字符串“hello,world”为例,搭建基于microblaze的简单嵌入式系统。

   create block design,添加microblaze软核后点击Run Block Automation。

这里暂时不使用DDR之类的缓存设备,利用片内Memory存储代码,因此将Local Memory容量增大。

DDR3调试总结

作者:hanfei_1

以前同是DDR3的无知少年,由于项目需求、工作需要,有幸深入研究DDR3,中间也确实历经各种盲目阶段,查询资料、建立工程、调试错误等等,如今对此不敢说是精通,也只能说是基本入门,写此文章的目的也无非是想让那些和当初的我一样的初学者少走些弯路而已,也只当是抛砖引玉,也希望大神们能多多指教!提前谢过了,下面也为了不让大家看的那么无聊,也会适当换个方式,也望大家能给几分薄面,大神们多多指点,小菜鸟们就好好学习吧,毕竟也是手打的材料,下面入正题~

作为初学者,我认为最好能做到以下三个方面:材料准备与学习、工程建立与调试、日常总结与记录。

读zynq_ebook笔记知识点(二)

作者:llc1991

第九章:一般嵌入式系统架构

本文转载自: http://blog.chinaaet.com/llc1991/p/5100051309

读zynq_ebook笔记知识点(—)

作者:llc1991

1. PS和PL 分工:

软件(在PS 端)常常用来完成一些一般性的顺序执行的任务,比如操作系统、用户应用程序以及图形界面,而偏向于数据流计算的任务则更加适合于在PL 端实现。。另外,那些具有并行限制的软件算法,也应该考虑在PL 端实现。这比较近似于“ 协处理器” 模型,可以把处理器从那些重在计算并且具有并行性的任务中解放出来,改为硬件处理,从而在整体上提升性能。

2. 选择PS的操作系统:

操作系统:它可以是例如Linux 或者Android 这样的成熟的操作系统;也可以是嵌入式操作系统;对于时序

PYTHON入门(二)

继续跨PYTHON大门
第一篇入门文章写了一些python支持的一些基本特性,这一篇则是作为PYTHON入门(一)的续篇,在稍微高一点的层次上,帮助进行正式的入门

一、函数
函数通过def关键字定义,通过一个简单的例子迅速说明情况:
#!/usr/bin/python2
def Hello():
print "helloO0OooO0oo"

Hello()

上面简短的代码即完成了一个函数的定义和调用,输出结果自己想象

那不说废话,直接上形参,给函数一个输入口
#!/usr/bin/python2
def Hello(s1,s2):
print "helloO0OooO0oo",s1,s2

Hello("1",'ok')
Hello(2,'not ok')

输出的结果也是很容易想象到的:
root@hlf-virtual-machine:/home/hlf/mnt# ./hello.py
helloO0OooO0oo 1 ok
helloO0OooO0oo 2 not ok

局部变量
#!/usr/bin/python2
def Hello(x):
print "global i=",x
i=222

同步内容