FPGA学习笔记
这类题目确实容易让人头疼,但掌握套路后其实很固定。核心思路就是:找到最坏情况下的数据积压。通常题目会给你写时钟频率 f_w、读时钟频率 f_r、突发长度 B(比如一次写 B 个数据),以及读写效率(比如读使能或写使能的占空比)。
通用步骤可以这样:
1. 确定最坏情况。最常见的就是“背靠背”写入,也就是两次突发写入之间几乎没有间隔,导致写入数据最密集。题目有时会明确说“连续突发”或隐含此条件。
2. 计算写入这些数据需要的时间。对于背靠背,写入数据总量通常是 2B(两次突发紧挨着)。写入时间 T_w = (2B) / (f_w 写效率)。这里写效率如果题目给了写使能占空比,比如 60%,那就乘以 0.6。
3. 计算在这段写入时间 T_w 内,读侧能读走多少数据。读数据量 N_read = f_r 读效率 T_w。
4. 最小深度 = 写入总量 - 读走量 = 2B - N_read。结果要向上取整。
容易出错的细节:
- 单位要统一,频率是 Hz,时间是秒。
- 读写效率的处理:是有效带宽的系数,别用反了。
- 背靠背情形下,写入总量是 2B 不是 B,这是很多人的失分点。
- 计算结果如果是小数,深度必须取整数,而且通常要向上取整。
实际工程中,计算出的深度是最小值,一般会加一些余量,比如取 2 的幂次方,或者根据经验增加 20%-50%。但在笔试中,通常算出最小值即可,除非题目明确要求考虑余量。
多找几道例题练练手,把步骤固化下来,考试时就不慌了。
