摘要: 1、前言 最近写代码需用到链表结构,正好公共库有关于链表的。第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域。后来看代码注释发现该代码来自linux内核,在linux源代码下include/Lish.h下。这个链表具备通用性,使用非常方便。只需要在结构定义一个 阅读全文
posted @ 2016-05-11 20:21 xuzhi_fpga 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 1、#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER) (include/linux/stddef.h) 1.1 功能: 返回结构体TYPE中MEMBER成员相对于结构体首地址的偏移量,以字节为单位。 1.2 解析: 此类复杂表 阅读全文
posted @ 2016-05-11 15:55 xuzhi_fpga 阅读(3398) 评论(0) 推荐(2) 编辑
摘要: 虚拟专用网络(Virtual Private Network),简称VPN。其功能是:在公共网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。VPN具有成本低,易于使用的特点。基本功能: VPN属于远程访问技术,简单地说就是利用公共网络架设专用网络。例如某公司员工出差到外地,他想访问企业内网的服务器资源,这种访问就属于远程访问。在传统的企业网络配置中,要进行远程访问,传统的方法是租用DDN(数字数据网)专线或帧中继,这样的通... 阅读全文
posted @ 2014-03-31 22:55 xuzhi_fpga 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 只有最初级的逻辑电路才使用单一的时钟。大多数与数据传输相关的应用都有与生俱来的挑战,即跨越多个时钟域的数据移动,例如磁盘控制器、CDROM/DVD控制器、调制解调器、网卡以及网络处理器等。当信号从一个时钟域传送到另一个时钟域时,出现在新时钟域的信号是异步信号。在现代IC、ASIC以及FPGA设计中,许多软件程序可以帮助工程师建立几百万门的电路,但这些程序都无法解决信号同步问题。设计者需要了解可靠的设计技巧,以减少电路在跨时钟域通信时的故障风险。异步时钟基础:从事多时钟设计的第一步是要理解信号稳定性问题。当一个信号跨越某个时钟域时,对新时钟域的电路来说它就是一个异步信号。接收该信号的电路需要对其 阅读全文
posted @ 2014-01-24 15:06 xuzhi_fpga 阅读(956) 评论(0) 推荐(0) 编辑
摘要: 3综合运用 下面提到的解决问题技巧,由于受目前认识的限制和现有的技术水准,不应当把它们看成是“万能”的。尤其是随着技术的发展,其中的许多手段肯定会不合适了。3.1可能成为关键路径的电路 在做详细设计方案或者总体方案的时候,一定要考虑到设计中哪些电路可能成为关键路径。如果不考虑这些,很可能会导致设计实现失败,或者要更改设计,或者要更换器件。 在FPGA设计里,常常影响到设计无法(或者很难)实现的电路有(指设计速度方面):比较器、多路选择器、DistributedRAM、乘法器、加法器等,尤其是在位宽比较大的情况下。 建议:在做方案时,针对上述电路先进行速度评估,以决定是否要Pipeline。3. 阅读全文
posted @ 2014-01-21 15:59 xuzhi_fpga 阅读(1181) 评论(0) 推荐(0) 编辑
摘要: 2 如何使用后端工具 本章节主要说明Xilinx的一些后端工具能为我们做什么,在什么情况下我们考虑使用这些工具。至于这些工具具体如何使用,可以看Xilinx提供的相关文件。2.1布局布线 布局布线是干什么的,我不用多说。我只想讲讲几个值得注意的问题:2.1.1 设计前期(设计方案阶段)对关键电路的处理 一个设计能否成功,关键是在设计方案阶段相关问题是否考虑完善,其中一个非常重要的工作是确定关键路径(或者关键模块关键算法等)能否在芯片中实现,其实现的结果如何(如速度是否满足面积是否太大等)。 因此,我们要求大家在做方案时,要对所有的可能的关键路径(或关键部分)心中有数, 而且一定要在正式开始编代 阅读全文
posted @ 2014-01-21 15:48 xuzhi_fpga 阅读(1091) 评论(0) 推荐(0) 编辑
摘要: 时间:2014-1-20------2014-1-21注释:在原文中使用的语言是VHDL,但是在笔记中我把它转化成verilog语言。1设计技巧在设计过程中,经常遇到速度或面积问题:在功能基本正确之后,设计要么速度不满足要,求要么面积太大,或者两者都不满足设计要求,经常在速度和面积上花费大量的时间。本章着重从速度和面积角度出发,考虑如何编写代码或设计电路,以获得最佳的效果,但是有些方法是以牺牲面积来换取速度,而有些方法是以牺牲速度来换取面积,也有些方法可同时获得速度和面积的好处。具体如何操作,应当依据实际情况而定在处理速度与面积问题的一个原则是:向关键路径部分要时间,向非关键路径部分要面积。为 阅读全文
posted @ 2014-01-21 15:46 xuzhi_fpga 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: 1LVDS概述 LVDS(LowVoltageDifferentialSignaling)是一种小振幅差分信号技术,它使用非常低的幅度信号(100Mv~450mV)通过一对平行的PCB走线或平衡电缆传输数据。在两条平行的差分信号线上流经的电流及电压振幅相反,噪声信号同时耦合到两条线上,而接受端只关心两信号的差值,于是噪声被抵消。由于两条信号线周围的电磁场也相互抵消,故差分信号传输比单线信号传输电磁辐射小得多。此外,该传输标准采用电流模式驱动输出,不会产生振铃和信号切换所带来的尖峰信号,具有良好的EMI特性。由于LVDS差分信号技术降低了对噪声的关注,所以可以采用较低的信号电压幅度。这个特性非常 阅读全文
posted @ 2014-01-16 14:28 xuzhi_fpga 阅读(6319) 评论(0) 推荐(1) 编辑
摘要: 为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(BlockSelectRAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的VirtexII器件最多可以提供16个全局时钟输入端口和8个数字时钟管理模块(DCM)。 与全局时钟资源相关的原语常用的与全局时钟资源相关的Xilinx器. 阅读全文
posted @ 2014-01-16 14:21 xuzhi_fpga 阅读(2030) 评论(0) 推荐(0) 编辑
摘要: 触发器:flipflop锁存器:latch寄存器:register锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,尽当锁存器处于使能状态时输出才会随着数据输入发生变化。 触发器是边沿敏感的存储单元,数据存储的动作有某一信号的上升或者下降沿进行同步的。 寄存器用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。触发器是在时钟的沿进行数据的锁存的,而 阅读全文
posted @ 2014-01-16 14:17 xuzhi_fpga 阅读(9846) 评论(0) 推荐(1) 编辑