没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
FPGA 入门教程
1.数字电路设计入门
2.FPGA 简介
3.FPGA 开发流程
4.RTL 设计
5.QuartusⅡ设计实例
6. ModelSim 和 Testbench
1.数字电路设计入门
1.1 数字电路设计
数字电路设计的核心是逻辑设计。通常,数字电路的逻辑值只有‘1’和‘0’,表征的是模拟
电压或电流的离散值,一般‘1’代表高电平,‘0’代表低电平。
高低电平的含义可以理解为,存在一个判决电平,当信号的电压值高于判决电平时,我
们就认为该信号表征高电平,即为‘1’。反之亦然。
当前的数字电路中存在许多种电平标准,比较常见的有 TTL、CMOS、LVTTL、LVCMOS、
ECL、PECL、LVDS、HSTL、SSTL 等。这些电平的详细指标请见《补充教程 1:电平标准》。
数字电路设计大致可分为组合逻辑电路和时序逻辑电路。
一般的数字设计的教材中对组合逻辑电路和时序逻辑电路的定义分别为:组合逻辑电
路的输出仅与当前的输入有关 ,而时序逻辑电路的输出不但与输入有关,还和系统上一个
状态有关。
但是在设计中,我们一般以时钟的存在与否来区分该电路的性质。由时钟沿驱动工作
的电路为时序逻辑电路。大家注意,这两种电路并不是独立存在的,他们相互交错存在于整
个电路系统的设计中。
1.1.1 组合逻辑电路
组合逻辑电路由任意数目的逻辑门电路组成,一般包括与门、或门、非门、
异或门、与非门、或非门等。一般的组合逻辑电路如下图:
其中 A,B,C,D,E,F 为输入,G 为输出。
1.1.2 时序逻辑电路
时序逻辑电路由时钟的上升沿或下降沿驱动工作,其实真正被时钟沿驱动的是电路中的
触发器(Register),也称为寄存器。触发器的工作原理和参数如下图:
Register的原理和参数
D
Clk
Q
D
Q
Clk
t
c-q
t
hold
T
t
su
tsu:建立时间,在时钟有效沿到来之前触发器数据输入应保持稳定的时间,如果建立时
间不够,数据将不能在这个时钟沿被打入触发器。它间接约束了组合逻辑的最大延时。
thold:保持时间,在触发器数据输入引脚的数据在系统有效时钟沿到来后,需要保持稳
定的时间,如果保持时间不够,数据同样不能被打入触发器。它间接约束了组合逻辑的最
小延时.
tc-q: 触发器从有效时钟沿到来到输出有效的最大时间。
下面是两个简单的时序逻辑电路例子:
(1)、时钟分频电路
该时序电路的功能为实现对时钟’clk’的 4 分频,其中’clk_2’为 2 分频时钟,’clk_4’为 4
分频时钟,’enable’为该电路的使能信号。其功能仿真波形如下图所示:
(2)、序列检测器
该时序电路实现了一个序列检测器,当输入序列‘datain’中出现‘101’时,标志位 F 将输
出‘1’,其他时刻输出‘0’。电路中‘clk’为时钟信号,‘D1’,‘D2’,‘D3’为移位寄存器的输出,’enable’
为该电路的使能信号。其功能仿真波形如下图所示:
可见,时序电路设计的核心是时钟和触发器,这两者也是我们设计电路时需重点关注的。
1.2 毛刺的产生与消除
1.2.1 竞争与冒险
当一个逻辑门的输入有两个或两个以上的变量发生改变时,由于这些变量是经过不同路
径产生的,使得它们状态改变的时刻有先有后,这种时差引起的现象称为竞争(Race)。竞
争的结果将很可能导致冒险(Hazard)发生(例如产生毛刺),造成错误的后果,并影响系
统的工作。
组合逻辑电路的冒险仅在信号状态改变的时刻出现毛刺,这种冒险是过渡性的,它不会
使稳态值偏离正常值,但在时序电路中,冒险是本质的,可导致电路的输出值永远偏离正常
值或者发生振荡。
避免冒险的最简单的方法是同一时刻只允许单个输入变量发生变化,或者使用寄存器采
样的办法。
1.2.2 毛刺的产生与危害
信号在 FPGA 器件中通过逻辑单元连线时,一定存在延时。延时的大小不仅和连线的长
短和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。因此,信号在器件
中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生
了“竞争冒险”。这时,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”。
让我们来具体看一下毛刺是如何产生的。下图是一个与门电路,
我们期望的设计是,a 和 b 信号同时变化,这样输出 OUT 将一直为 0,但是实际中 OUT
产生了毛刺,它的仿真波形如下所示:
可见,即使是在最简单的逻辑运算中,如果出现多路信号同时跳变的情况,在通过内部
走线之后,就一定会产生毛刺。而现在数字电路设计中的信号往往是由时钟控制的,如果将
带有毛刺的输出信号直接连接到时钟输入端、清零或置位端口的设计,可能会导致严重的后
果;此外对于多数据输入的复杂运算系统,每个数据都由相当多的位数组成。这时,每一级
的毛刺都会对结果有严重的影响,如果是多级的设计,那么毛刺累加后甚至会影响整个设计
的可靠性和精确性。
判断一个逻辑电路在某些输入信号发生变化时是否会产生毛刺,首先要判断信号是否会
同时变化,然后判断在信号同时变化的时候,是否会产生毛刺,这可以通过逻辑函数的卡诺
图或逻辑函数表达式来进行判断。
1.2.3 毛刺的消除
毛刺是数字电路设计中的棘手问题,它的出现会影响电路工作的稳定性、可靠性,严重
时会导致整个数字系统的误动作和逻辑紊乱。
剩余36页未读,继续阅读
资源评论
HIT_huster
- 粉丝: 1
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功