找回密码
 注册
关于网站域名变更的通知
查看: 309|回复: 2
打印 上一主题 下一主题

数字电路FPGA的基本理论与设计技巧

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-6-4 07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
数字电路FPGA的基本理论与设计技巧
+ Q. X" `  o/ \' s% X" Y
    A、c和Verilog的相同点和不同点(关键在不同点,难点是Verilog仿真语义),其中仿真语义包括阻塞与非阻塞、毛刺、同步设计与异步设计(例如同步复位和异步复位)等问题;
" }' r! W: k* L# `
对基本理论与设计技巧的理解:首先要说到C与Verilog语言的区别,我感觉最大的区别就是Verilog并行编程的特点,更多的是在描述,C语言在一个时刻只能执行一条命令,Verilog增加了很多的位运算符,以及位拼接运算符。
/ p$ S7 W; q. |# D8 }" [; a7 P
VHDL语言中没有阻塞与非阻塞之分,相比Verilog,VHDL更适合行为级建模。
+ o4 j3 l+ @; O- |# O
阻塞赋值的时候,等号右边的值立马传递给左边的值(也就是说右边的值计算完后左边的值立即更新操作符为“=”),完成该赋值语句才能做下一语句的操作,硬件没有对应的电路,因而综合的结果未知;非阻塞赋值(<=)在赋值的过程中分两步执行,在单位仿真周期开始时计算右边的值,在同一单位仿真周期末更新左边的值,同块内各赋值语句同时完成。两者的设计原则:
# \# `' a' P. A/ O  c6 L
原则1:时序电路建模时,用非阻塞赋值2 s4 j% C+ E; i& @
原则2:锁存器电路建模时,用非阻塞赋值
# j* V3 ~7 x0 T原则3:用always块写组合逻辑时,性爱用阻塞赋值
% Z" z( l+ l. f" _/ J: e+ H8 Y原则4:在同一个always块中同时建立时序和组合逻辑电路时,用非阻塞赋值
6 Y( D7 \8 a' ~, o原则5:在同一个always块中不要同时使用非阻塞赋值和阻塞赋值5 U) y' M* {; R1 p
原则6:不要在多个always块中为同一个变量赋值
0 h, {4 E5 v% y7 U  [! o原则7:用$strobe系统任务来显示用非阻塞赋值的变量值
4 [+ j1 R2 }) \( ^原则8:在赋值时不要使用#0延迟

2 d& Y3 c8 }1 N1 c7 _
毛刺:毛刺现象是长期困扰电子设计工程师的设计问题之一,是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由FPGA内部结构特性决定的。毛刺现象在FPGA的设计中是不可避免的,有时任何一点毛刺就可以导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。

% p6 k* K) w+ ~: g) d* C" M0 p- iFPGA芯片是由可构造的输入输出块(IOB)、可构造逻辑块(CLB)和可编程连线资源(PIA)3种可构造单元构成的。
- o) D; U: Y( C6 i5 ]( i( o' k
毛刺产生的条件:信号在FPGA器件中通过逻辑单元连线时一定存在延时。延时的大小仅和连线的长短和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。因此,信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。这时,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”。

  Y8 p1 F: M' j1 J3 o& C1 F消除毛刺的方法:①利用冗余项法②采样法③吸收法④延迟法⑤硬件描述语言法(这种方法是从硬件描述语言入手,找出毛刺产生的基本原因,改变语言设计产生满足要求的功能模块,来代替原来的逻辑功能块)。
5 |! ]6 R7 V" q) F0 M. S6 i
同步设计和异步设计:包括亚稳态,保持时间问题;异步电路使用组合逻辑电路实现,没有统一的十种信号,容易产生毛刺和竞争冒险;同步电路使用组合逻辑电路电路和触发器实现电路功能,主要信号和输出信号都是由时钟驱动触发器产生,能够避免毛刺,信号稳定。异步电路的延时靠门来实现,难以预测,异步电路的优势不大。同步系统的条件:整个系统使用一个时钟源,所有信号均通过寄存器锁存,不用组合逻辑产生CLK,RESET,SET等信号,触发器不用费同步的SET或RESET进行控制,不允许用门延时和缓冲器延时来延迟时钟和信号,逻辑门延时不应比布线延时长。

9 U6 j* T" |1 A1 Q  }6 P
   B、时序分析(延时分析)和约束条件;
       时序约束主要包括周期约束和偏移约束以及静态路径约束3种,通过附加约束条件可以使综合布线工具调整映射和布局布线过程,使设计达到时序要求。附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步原件进行分组,对分组附件周期约束,然后对FPGA/cpld输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD 路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。附加约束的基本作用:提高设计的工作频率;获得正确的时序分析报告;指定FPGA/CPLD引脚位置与电气标准。
4 N6 @4 {% M! F* k9 J

该用户从未签到

2#
发表于 2019-6-4 17:24 | 只看该作者
很棒的资料 值得一看

该用户从未签到

3#
发表于 2022-8-19 15:36 | 只看该作者
数字电路FPGA的基本理论与设计技巧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-23 12:19 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表