一、简答题
1、建立时间、保持时间
建立时间 setup time
是指在触发器的时钟信号上升沿到来以前,数据稳定不变的最小时间Tsu
是指在触发器的时钟信号上升沿到来以后,数据稳定不变的最小时间Th
2、如何解决亚稳态,多时钟域的跨时钟域处理
减少亚稳态的方法有以下几种:
(1)使用同步器:比如常用的2级或者多级FF打拍的方法
(2)降低频率:如果能满足功能要求,降低频率能够减少亚稳态的发生
(3)避免变化过快或者过于频繁的信号进行跨时钟采样
(4)采用更快的触发器:更快的触发器,也可以亚稳态的产生
(5)改善时钟质量,用边沿变化快速的时钟信号消除
跨时钟域:
跨时钟域的信号可以分为单bit信号和多bit信号。
单bit(慢时钟域到快时钟域):用快时钟打两拍,直接采一拍大概率也是没问题的,两拍的主要目的是消除亚稳态;
单bit(快时钟域到慢时钟域):握手、异步FIFO、异步双口RAM;快时钟域的信号脉宽较窄,慢时钟域不一定能采到,可以通过握手机制让窄脉冲展宽,慢时钟域采集到信号后再“告诉”快时钟域已经采集到信号,确保能采集到;
多bit:异步FIFO、异步双口RAM、握手、格雷码(格雷码的值只需要在原来的二进制的基础上右移一位再加上原来的二进制值即可得到)。
3、function和task的区别
function只能与主模块共用一个仿真时间单位,而task可以定义自己的仿真时间单位。
function不能包含task,task可以包含其它的task和function。