01 2014 档案

同步世界中的异步信号
摘要:只有最初级的逻辑电路才使用单一的时钟。大多数与数据传输相关的应用都有与生俱来的挑战,即跨越多个时钟域的数据移动,例如磁盘控制器、CDROM/DVD控制器、调制解调器、网卡以及网络处理器等。当信号从一个时钟域传送到另一个时钟域时,出现在新时钟域的信号是异步信号。在现代IC、ASIC以及FPGA设计中,许多软件程序可以帮助工程师建立几百万门的电路,但这些程序都无法解决信号同步问题。设计者需要了解可靠的设计技巧,以减少电路在跨时钟域通信时的故障风险。异步时钟基础:从事多时钟设计的第一步是要理解信号稳定性问题。当一个信号跨越某个时钟域时,对新时钟域的电路来说它就是一个异步信号。接收该信号的电路需要对其 阅读全文

posted @ 2014-01-24 15:06 Jeason001 阅读(995) 评论(0) 推荐(0)

华为FPGA设计高级技巧Xilinx篇---读书笔记之三综合运用
摘要:3综合运用 下面提到的解决问题技巧,由于受目前认识的限制和现有的技术水准,不应当把它们看成是“万能”的。尤其是随着技术的发展,其中的许多手段肯定会不合适了。3.1可能成为关键路径的电路 在做详细设计方案或者总体方案的时候,一定要考虑到设计中哪些电路可能成为关键路径。如果不考虑这些,很可能会导致设计实现失败,或者要更改设计,或者要更换器件。 在FPGA设计里,常常影响到设计无法(或者很难)实现的电路有(指设计速度方面):比较器、多路选择器、DistributedRAM、乘法器、加法器等,尤其是在位宽比较大的情况下。 建议:在做方案时,针对上述电路先进行速度评估,以决定是否要Pipeline。3. 阅读全文

posted @ 2014-01-21 15:59 Jeason001 阅读(1244) 评论(0) 推荐(0)

华为FPGA设计高级技巧Xilinx篇---读书笔记之二如何使用后端工具
摘要:2 如何使用后端工具 本章节主要说明Xilinx的一些后端工具能为我们做什么,在什么情况下我们考虑使用这些工具。至于这些工具具体如何使用,可以看Xilinx提供的相关文件。2.1布局布线 布局布线是干什么的,我不用多说。我只想讲讲几个值得注意的问题:2.1.1 设计前期(设计方案阶段)对关键电路的处理 一个设计能否成功,关键是在设计方案阶段相关问题是否考虑完善,其中一个非常重要的工作是确定关键路径(或者关键模块关键算法等)能否在芯片中实现,其实现的结果如何(如速度是否满足面积是否太大等)。 因此,我们要求大家在做方案时,要对所有的可能的关键路径(或关键部分)心中有数, 而且一定要在正式开始编代 阅读全文

posted @ 2014-01-21 15:48 Jeason001 阅读(1132) 评论(0) 推荐(0)

华为FPGA设计高级技巧Xilinx篇---读书笔记之一设计技巧
摘要:时间:2014-1-20------2014-1-21注释:在原文中使用的语言是VHDL,但是在笔记中我把它转化成verilog语言。1设计技巧在设计过程中,经常遇到速度或面积问题:在功能基本正确之后,设计要么速度不满足要,求要么面积太大,或者两者都不满足设计要求,经常在速度和面积上花费大量的时间。本章着重从速度和面积角度出发,考虑如何编写代码或设计电路,以获得最佳的效果,但是有些方法是以牺牲面积来换取速度,而有些方法是以牺牲速度来换取面积,也有些方法可同时获得速度和面积的好处。具体如何操作,应当依据实际情况而定在处理速度与面积问题的一个原则是:向关键路径部分要时间,向非关键路径部分要面积。为 阅读全文

posted @ 2014-01-21 15:46 Jeason001 阅读(1157) 评论(0) 推荐(0)

LVDS接口设计
摘要:1LVDS概述 LVDS(LowVoltageDifferentialSignaling)是一种小振幅差分信号技术,它使用非常低的幅度信号(100Mv~450mV)通过一对平行的PCB走线或平衡电缆传输数据。在两条平行的差分信号线上流经的电流及电压振幅相反,噪声信号同时耦合到两条线上,而接受端只关心两信号的差值,于是噪声被抵消。由于两条信号线周围的电磁场也相互抵消,故差分信号传输比单线信号传输电磁辐射小得多。此外,该传输标准采用电流模式驱动输出,不会产生振铃和信号切换所带来的尖峰信号,具有良好的EMI特性。由于LVDS差分信号技术降低了对噪声的关注,所以可以采用较低的信号电压幅度。这个特性非常 阅读全文

posted @ 2014-01-16 14:28 Jeason001 阅读(6601) 评论(0) 推荐(1)

Xilinx ISE中的DCM的使用
摘要:为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(BlockSelectRAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的VirtexII器件最多可以提供16个全局时钟输入端口和8个数字时钟管理模块(DCM)。 与全局时钟资源相关的原语常用的与全局时钟资源相关的Xilinx器. 阅读全文

posted @ 2014-01-16 14:21 Jeason001 阅读(2207) 评论(0) 推荐(0)

flipflop和latch以及register的区别
摘要:触发器:flipflop锁存器:latch寄存器:register锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,尽当锁存器处于使能状态时输出才会随着数据输入发生变化。 触发器是边沿敏感的存储单元,数据存储的动作有某一信号的上升或者下降沿进行同步的。 寄存器用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。触发器是在时钟的沿进行数据的锁存的,而 阅读全文

posted @ 2014-01-16 14:17 Jeason001 阅读(10051) 评论(0) 推荐(1)

if和case用法比较
摘要:Case语句时并发语句,需要采用并行逻辑来实现,不存在逻辑的优先级别。If……else语句时多级嵌套语句,通常采用逻辑的串联来实现,该结构具有优先级别问题。这两种结构分别如下图所示:Always@(aorborcordors[1:0])BeginCase(s)2’b00:out=a;2’b01:out=b;2’b10:out=c;2’b11:out=d;Default:out=a;endAlways@(aorborcordors[1:0])BeginIf(s==2’b00)Out=a;Elseif(s==2’b01)Out=b;Elseif(s=2’b10)Out=c;Elseif(s==2. 阅读全文

posted @ 2014-01-16 14:12 Jeason001 阅读(1208) 评论(0) 推荐(0)

IGMP---Internet组管理协议
摘要:Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于 IP主机向任一个直接相邻的路由器报告他们的组成员情况。它规定了处于不同网段的主机如何进行多播通信,其前提条件是路由器本身要支持多播。IGMP 信息封装在 IP报文中,其 IP 的协议号为 2。 它用来在ip主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。igmp不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。所有参与组播的主机必须实现igmp。参与ip组播的主机可以在任意位置、任意时间、成员总数不受限制地加入或退出组播组。组播路由器不需要也不可能保存所有主机的成员关系. 阅读全文

posted @ 2014-01-13 11:25 Jeason001 阅读(583) 评论(0) 推荐(0)

ICMP---Internet控制报文协议
摘要:ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。基本简介: ICMP协议是一种面向连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP. 阅读全文

posted @ 2014-01-11 14:52 Jeason001 阅读(578) 评论(0) 推荐(0)

ARP---地址解析协议
摘要:从即日起开始学习IP/TCP协议,打算用一个月的时间把《IP/TCP协议:卷一 详解》这本书看完。ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议。某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认 其物理地址的应答,这样的数据包才能被传送出去。RARP(逆向ARP)经常在无盘工作站上使用,以获得它的逻辑IP地址。地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确定其物理地址的一种协议。因IPv4和以太网的广泛应用,其主要作用是通过已知IP地址,获取对应物理地 阅读全文

posted @ 2014-01-11 10:52 Jeason001 阅读(483) 评论(0) 推荐(0)

如何提升系统整体性能
摘要:在工程中对microblaze中的axi4lite_0的参数做一些设置,然后再加入AXITimer/CounterIP,然后再设置系统的时钟为50MHZ。测试方法: 在microblaze中对DDR进行读写,在读写的开始启动AXITimer/Counter开始计数,在读写完毕后停止AXITimer/Counter停止计数。然后用读写的字节数数以AXITimer/Counter中的数值,可以得到在相同系统频率下不同参数设置的情况下microblaze的读写性能之间的比较。测试参数的设置分以下几种情况:参数设置一:在InterconnectStrategy中 Selectconfiguration 阅读全文

posted @ 2014-01-06 16:07 Jeason001 阅读(515) 评论(0) 推荐(0)

如何提升系统频率
摘要:在目前的工程中添加时序约束,添加的约束频率为100Mhz。主要添加的约束有Period约束,OffsetIn和OffsetOut约束。以下为介绍解决时序违反的问题的方法和步骤:一分析时序报告分析时序报告,找出时序违反的原因。经过分析时序报告发现有所有9处寄存器到寄存器之间的时序违反,即所添加的Period约束中有时序违反。其中有的是逻辑级数太多,有的是fanout太多造成的走线延迟太大。二设置选项 在SysthesisOptions和ImplementDesignOptions选项框中对一些选项经行设置。希望通过这个选项的设置后,重新优化布局布线,对关键路径有一定影响,从而提升频率。对一些关. 阅读全文

posted @ 2014-01-06 16:06 Jeason001 阅读(1861) 评论(0) 推荐(0)

CLOCK_DEDICATED_ROUTE用法
摘要:CLOCK_DEDICATED_ROUTE是一个高级约束,它指导软件是否遵循时钟配置规则。当没有设置CLOCK_DEDICATED_ROUTE或设置为TRUE的时候,软件必须遵循时钟配置规则。当CLOCK_DEDICATED_ROUTE设置为FLASE的时候,软件进行操作: 1忽略到时钟配置规则2继续布局布线只有当必须违反时钟配置规则的时候才设置CLOCK_DEDICATED_ROUTE约束。约束应用的单元: 1时钟BUFFER 2时钟管理快 3高速I/O快约束应用规则: 1NET 2INSTANCEPIN约束值: 1TRUE 2 FLASE约束例子:PIN“BEL_INSTANCE_NAM. 阅读全文

posted @ 2014-01-06 16:04 Jeason001 阅读(12895) 评论(0) 推荐(0)

KEEP_HIERARCHY的用法
摘要:KEEP_HIERARCHY是一种对综合和实现过程的约束。一般而言,一个HDL设计的顶层包含好几个底层子模块。XST在综合过程中为了得到更好的结果,一般打平设计的层次。但是也可以在综合的过程中通过添加KEEP_HIERARCHY约束来使综合的过程保持设计的层次。添加KEEP_HIERARCHY约束后,综合和实现的结果表现的以下2方面:1在实现的过程中保持设计层次。2生成仿真需要的保持设计层次的网表。例子:以上图为例,如果对整个模块或I2添加约束: 1在最后的生成网表中,I2模块的层次被保持下来。 2I2模块中的I4、I5模块的层次被打平。 3I1、I3、I6、I7的层次也被打平。KEEP_HI 阅读全文

posted @ 2014-01-06 16:01 Jeason001 阅读(6804) 评论(0) 推荐(0)

在Testbench中使用memory问题
摘要:在最近的双边滤波器的仿真中遇到一些很奇怪的问题,主要是对memory的操作问题。遇到的现象和解决方法法描述如下:在Testbench中定义了1组14位存储器分别用来存储一帧图像的数据。主要数据类型的定义以及初始化:reg[8:0]npe;reg[8:0]nle;initialbeginnpe=384;nle=288;endreg[13:0]mem1[0:130000];reg[16:0]pixel_cnt;reg[16:0]line_cnt;reg[31:0]reg_sub;主要赋值语句:mem1[line_cnt*npe+pixel_cnt]<=data_in;reg_sub<= 阅读全文

posted @ 2014-01-06 15:55 Jeason001 阅读(664) 评论(0) 推荐(0)

如何将自己写的verilog模块封装成IP核
摘要:将你的设计制作成BlackBox,也就是网表文件,这样别人看不到你的设计但是可以调用你的模块了。1. 什么是BlackBox 一个大的设计中可以用到一系列网表文件作为输入的一部分而并不全部使用HDL文件。当综合这个大设计时综合器不需要知道这个网表文件是怎样实现的,而只需要知道它的输入输出接口就可以了。这样的网表就称为黑盒子,因为我们不需要看到它的内部情况。通常付费IP都会以BlackBox的形式。2. 如何使用BlackBox BlackBox网表可以是EDIF或NGC文件。每个BlackBox网表都需要有一个与之相对应的HDL文件来注明它的端口。这个HDL只说明BlackBox的端口信息,而 阅读全文

posted @ 2014-01-06 15:42 Jeason001 阅读(2623) 评论(0) 推荐(0)

关于AHB总线上Slave设备的hready信号
摘要:在以前所做的项目中用到的AHB总线中,发现作为Slave设备有2个hready信号线。一直没搞清楚这2个信号线详细作用,最近在请教高人之后终于弄明白了2个hready信号线的作用。 一般作为AHB总线的Slave设备都有2根hready信号,一个为input类型(hready_in),另一个为output类型(hready_out)。在AHB总线协议中,如果Master设备发起读写操作的时候,Slave设备不能及时响应的话,由Slave设备把hready_out信号拉低来拖延DataPhaze周期。 但是在Pipeline操作的时候,本次操作data phaze是下一次操作的address . 阅读全文

posted @ 2014-01-05 16:42 Jeason001 阅读(6694) 评论(0) 推荐(1)

关于FPGA设计仿真和硬件实测不一致问题
摘要:总结了一下本人项目中遇到的类似问题, 大家如果遇到可以从以下方面着手检查bug.1.寄存器未给初值; 一个良好的习惯就是每个寄存器变量都要在reset里面预先定义初值. 看下面一个例子:reg [1:0] unini;always@(posedgeclk or negedge rst)begin if(~rst) ;//未给定初值 else begin unini<=2'd1; if(unini<2'd1) a<=b; endend这个例子是笔者在做项目的时候真实经历的一个bug的一个简化描述,实际代码比这个要复杂得多,当时也是找了半天最后才发现是寄存器未给初 阅读全文

posted @ 2014-01-05 16:17 Jeason001 阅读(2051) 评论(0) 推荐(0)