自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HERO--To Be a Linuxer

不愿做英雄,只愿做在路边为英雄鼓掌的人

  • 博客(16)
  • 资源 (5)
  • 收藏
  • 关注

原创 BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用

目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。 FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM

2014-03-13 00:22:00 1275

原创 Gray码在异步FIFO中的应用

在异步FIFO中,写操作和读操作工作在不同的时钟域,需要跨时钟域来传递FIFO的空满状态信息。一般是通过传递读写的地址来实现空满状态控制的。写地址减去读地址(如果写地址小于读地址,则写地址先加上FIFO深度再减去读地址),即为FIFO中存放的数据个数,由此产生FIFO的空满判断。不管是读地址还是写地址,每次变化都是加1,溢出后从0开始重新累加。当写地址跨越时钟域到达读操作一侧时,需要用读时钟去采样

2014-03-12 20:40:06 1112

原创 工程中FIFO空,满,将空,将满标志使用

最近跳槽到了一家公司做硬件防火墙,第一次真真正正的用Verilog做工程,学到了很多东西,尤其对FIFO的empty,full,aempty,afull感触很深,使用好了,可以提高系统性能,使用不当,会造成性能下降,甚至会出现FIFO写、读反转,造成空、满标志同时拉起,系统挂死。防火墙处理的对象是报文,下面的例子就直接取的项目中的实际情况。一般设置afull为能再容纳一个完整的报文且FIF

2014-02-10 21:30:33 9912 1

原创 SPI接口的Verilog HDL实现

串口外设接口SPI(Serial Peripheral Interface)是一种由Motorola公司推出的一种同步串行接口,得到了广泛应用。SPI通信协议SPI,顾名思义就是串行外围通信接口,只需四条线jiu'ke'yi完成主、从与各种外围器件全双工同步通信。4根接口线分别是:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入(MOSI),低电平有效从机选择

2013-08-29 00:00:10 14424 1

原创 分频电路(偶分频、奇分频)

在FPGA设计中,时钟可以算作系统的“血液”。在时序电路设计中,几乎所有的信号都需要依靠时钟向前传递,因此在进行VHDL开发前需要确定所需的时钟频率。偶数分频电路偶数倍分频是最简单的一种分频模式,可通过计数器来实现,有多种实现方法。下面介绍一种最常用的方法。如要进行N倍偶数分频,那么可由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出时钟进行反转,并给计数器一个复位信号,使

2013-08-27 22:16:40 7111

原创 Verilog可综合状态机

状态机是数字逻辑设计的重要内容,经常出现在各种逻辑设计中。根据输出是否与输入信号有关,状态机可以划分成Mealy和Moore型状态机;根据输出信号是否与输入信号同步,状态机可以划分成异步和同步状态机。由于现在电路以同步设计为主,所以主要介绍同步的Mealy和Moore型状态机。状态机的Verilog实现基于Verilog DHL语言的状态机设计方法非常灵活,按代码描述方法的不同,可以分

2013-08-27 09:51:11 1926

原创 Verilog中任务(task)和函数(function)

如果程序中有一段语句需要执行多次,则重复性的语句非常多,代码会变得冗长且难懂,维护难度也很大。任务和函数具备将重复性语句聚合起来的能力,类似C语言的子程序。通常任务和函数来代替重复性语句,也有效简化程序结构,增加代码的可读性。因此,task和function都是可综合的,不过综合出来的都是组合逻辑电路。一、任务(task)任务就是封装在task-endtask之间的一段语句。任务是通过调用

2013-08-26 12:39:11 18945 2

原创 Verilog中循环的使用

Verilog中提供了四种循环语句,可用于控制语句的执行次数,分别为:for,while,repeat,forever。其中,for,while,repeat是可综合的,但循环的次数需要在编译之前就确定,动态改变循环次数的语句是不可综合的。forever语句是不可综合的,主要用于产生各种仿真激励。一、repeat语句repeat语句执行指定循环数,如果循环计数表达式的指不确定,即为x或z时

2013-08-26 00:35:42 19877

原创 Verilog中if-else和case的区别

今天在eetop上看到一个帖子,讨论这个问题,链接在这里click。在这总结下if-else和case的区别。if语句指定了一个有优先级的编码逻辑,而case语句生成的逻辑语句是并行的,不具有优先级。if语句可以包含一系列不同的表达式,而case语句比较的是一个公共的控制表达式。通常if-else结构速度较慢,但占用的面积小,如果对速度没有要求但对面积有较高要求,则可用if-else结构完成编

2013-08-25 19:12:00 14501 2

原创 阻塞赋值和非阻塞赋值

阻塞赋值和非阻塞赋值阻塞和非阻塞过程赋值的误用不仅在仿真时会产生逻辑错误,而且会造成仿真和综合的不一致,更为严重的这种错误往往不容易发现。为解决这一问题,必须深刻理解阻塞和非阻塞过程赋值的功能和执行过程中的本质区别。在硬件中过程赋值语句表示的是:用赋值语句RHS(Right Hand Side,表示右边表达式和变量)表达式所推导出的逻辑来驱动该赋值语句LHS(Left Hand S

2013-08-11 11:14:35 1093

原创 同步时序逻辑电路和异步时序逻辑电路

触发器是构成时序逻辑电路的基本元件,根据各级触发器时钟端的连接方式,可以将时序逻辑电路分为同步时序逻辑电路和异步时序逻辑电路。在同步时序电路中,各触发器的时钟端全部连接到同一个时钟源上,统一受系统时钟的控制,因此各级触发器的状态变化是同时的。在异步时序逻辑电路中,各触发器的时钟信号是分散连接的,因此触发器的状态变化不是同时进行的。同步时序逻辑电路从构成方式来讲,同步时序电路所有操作都是在同

2013-08-11 09:57:42 7441

原创 双口RAM

双口RAM 是在一个SRAM 存储器上具有两套完全独立的数据线、地址线和读写控制线,并允许两个独立的系统同时对该存储器进行随机性的访问。即共享式多端口存储器。双口RAM最大的特点是存储数据共享。一个存储器配备两套独立的地址、数据和控制线,允许两个独立的CPU或控制器同时异步地访问存储单元。因为数据共享,就必须存在访问仲裁控制。内部仲裁逻辑控制提供以下功能:对同一地址单元访问的时序控制;存储

2013-08-10 18:07:02 1319

原创 ISE中约束文件(UCF)

FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF文件)以及物理约束文件(.PCF文件),可以完成时序约束、管脚约束以及区域约束。3类约束文件的关系为:用户在设计输入阶段编写UCF文件,然后UCF文件和设计综合后生成NCF文件,最后再经过实现后生成PCF文件。本节主要介绍UCF文件的使用方法。UCF文件中描述管脚分配的语法为:NET “端口

2013-08-07 23:59:21 2572 1

原创 内核数据结构——链表

操作系统内核经常要维护内核数据结构的链表。有时,Linux内核数据结构中同时存在着多个链表的实现代码。为了减少重复代码的数量,内核开发者已经建立了一套标准的循环、双向链表的实现。如果你需要操作链表,那么建议你使用这一内核机制。当使用这些链表接口时,应该始终牢记这么链表函数不进行任何锁定。如果你的驱动程序有可能试图对同一个链表执行并发操作的话,则有责任实现一个锁方案。否则,崩溃的链表结构体、数据

2013-07-28 10:38:13 595

原创 I/O端口和I/O内存

每种外设都通过读写寄存器进行控制,大部分外设都有几个寄存器,不管在内存地址空间还是在I/O地址空间,这些寄存器的访问地址是连续的。在硬件层,内存区域和IO区域没有概念上的区别:他们都通过向地址总线和控制总线发送电平信号进行访问,再通过数据总线读写数据。      尽管硬件寄存器和内存非常相似,但程序员在访问IO寄存器的时候必须注意避免由于CPU或编译器不恰当地优化而改变预期的IO动作。

2013-07-18 22:28:55 594

转载 libnids中TCP/IP栈实现细节分析(上)——TCP会话重组

dccmx 于 2011年 三月 7日 发表 | 最后修改于 2011年 三月 22日libnids是网络安全方面的一个库,可以用来检测网络上的攻击行为。其中最有价值的部分是,它模拟了linux内核中3层和4层的协议栈。可以供我们进一步研究linux内核中的TCP/IP协议栈做一些有价值的参考。这里简单谈谈这个库中模拟3、4层协议的实现细节(在继续读下去之前,有必要复习一下TCP/IP

2013-07-14 21:29:16 732

modelsim6.5仿真入门教程

很详细的modelsim6.5仿真教程。debug等

2013-04-26

ISElicence文件

ISE的licence,很多版本都可以用,比如12.X,14.X

2013-04-26

Make详解(英文)

英文原版,非常详细,看后收获颇多,你值得收藏!!

2013-04-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除