- 1、本文档共195页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级VHDL设计
可靠设计与高速设计
学时分配:6
进度
1.绪论 。
2.设计流程 。
3.模块化硬件与进程模型 。
4.信号传输模型 。
5.核心语法与基础电路设计 。
6.状态机设计 。
8. 可编程逻辑器件。
7.可靠设计与高速设计 。
9.数字信号处理的fpga实现。
10.数字系统的RTL设计。
声明
本部分内容是数字电子系统的芯片级设计中要遇到的特殊问题,虽不是考试重点,但却是实际设计中的关键注意事项。
精选自一部分出版书籍、网络资料以及个人的一些设计经验,仅仅是众多设计原则和设计技巧中的沧海一粟,并且错误在所难免。
艺无止境,讲授本部分的目的仅仅是带领入门,修行仍靠自身。要熟练使用这些技巧,并且有进一步的提高,必须经过大量的项目实践去积累。
OUTLINE
正确设计
同步设计
异步设计
高速设计的其他手段
增加设计稳定性和工作速率的方法掺杂在这几部分内容中,不根据本部分的题目做硬性的划分。
OUTLINE
正确设计
同步设计
异步设计
高速设计的其他手段
VHDL结构体描述风格
rtl风格注意事项
敏感信号的问题
条件判断语句的注意事项
多驱动与总线复用
毛刺的消除
OUTLINE
正确设计
同步设计
异步设计
高速设计的其他手段
VHDL结构体描述风格
rtl风格注意事项
敏感信号的问题
条件判断语句的注意事项
多驱动与总线复用
毛刺的消除
VHDL结构体描述风格
行为描述风格
可进行系统仿真,少数可用于综合。
RTL描述风格
寄存器传输级描述,也能为数据流描述风格。一般可被综合器综合。
结构描述风格
多用于顶层的模块连接。
行为描述风格
这种风格的描述往往以以下语句为主要特征:
使用延时语句,包括惯性延时和传输延时;
在多驱动的处理上采取判决函数;
使用Generic语句对时序参数建模;
使用其它具备行为级特性的语句如wait for等语句。
这部分属于高级仿真内容,在此不作讲述。
结构体描述风格
特征语句:
PORT MAP;
GENERIC MAP。
不作详细讲述。
RTL描述风格
面向可综合的设计,处于抽象设计与门级设计之间的层次。
其对应的硬件层次为寄存器云图
OUTLINE
正确设计
同步设计
异步设计
高速设计的其他手段
VHDL结构体描述风格
rtl风格注意事项
敏感信号的问题
条件判断语句的注意事项
多驱动与总线复用
毛刺的消除
RTL描述风格注意事项
“X”状态的传递
时钟沿描述限制
关联性强的信号应该放在一个进程中
1. “X”状态的传递(1)
不确定态“X”在前仿真中经常会出现。当然综合以后的时序仿真中一般是不会出现的。
在RTL级的描述中,要做好“X”状态的处理,以使得前仿真和后仿真的结果一致。
1. “X”状态的传递(2)
例子:
if( sel = ‘1’ ) then
y = ‘0’;
else
y = ‘1`;
end if;
从门级的观点看,该分支隐含的条件为:If ( sel = ‘0’ )。
因此在后仿真时没问题,因为sel一般不会出现‘X’。
但是前仿真时,当sel = ‘X’时,会得出y = ‘1’的结果,违反了电路原理。
1. “X”状态的传递(3)
例子:
if( sel = ‘1’ ) then
y = ‘0’;
elsif( sel = ‘0’ ) then
y = ‘1’;
else
y = ‘X`;
end if;
加上‘X’状态的处理。
1. “X”状态的传递(4)
实际上,第一种描述方式在设计中也是很经常见的,但是这个时候要尽力避免不确定态的出现:
电路初始化要完善,特别是时序电路中要有可靠的复位描述;
尽量少用组合回环或反馈;
测试矢量要完善。
1. “X”状态的传递(5)
时序电路的复位例子:时钟处理模块(2分频)
Process( clk )
Begin
If( clk’event and clk = ‘1’ ) then
clk2d = not din;
End if;
End process;
1. “X”状态的传递(5)
时序电路的复位例子:时钟处理模块(2分频)
Process( clk, reset_n )
Begin
if( reset_n = ‘0’ ) then clk2d = ‘0’;
elsIf( clk’event and clk = ‘1’ ) then
clk2d = not din;
End if;
End process;
注:时序电路的复位是强烈推荐使用的,但是在某些情况
文档评论(0)