background image

  在设计中

,发送状态机和接收状态机采用三段式的描述方法完成。完成状态机设计之后,

send_start、send_byte、send_parity、pop_byte、idle、wait_to_send_byte、wait_to_send_parity、send
_stop 

、 和

wait_to_send_stop 等 九 个 状 态 , 接 收 状 态 机 包 括

rec_bit

rec_parity

rec_stop

check_parity

idle

rec_st- 

art、rec_prepare 、end_bit 、ca_lc_parity 、wait_rec_stop 、push 和 wait_idle 等 12 个状态。 
  完成之后的设计包括七个

Module,分别是:ram,rfifo,tfifo,transmitter,receiver,registers 和

top,代码行数总计 2524 行。 
  

 

  

 3.3 优化 

  本文追求设计成本与串行传输速度之间的折衷

,这就要求在低成本的 FPGA 上对设计以

时序性能为目标进行优化。

 

  造成设计时序性能差的原因有很多

,但其直接原因可分为三类,即布局欠佳、信号扇出过

高以及逻辑级数过多

[5]。其中的布局欠佳和信号扇出过高等问题可通过 EDA 工具的优化来

解决

,归于 EDA 优化的范畴;而关键路径逻辑级数过高的问题则必须通过修改设计来解决,归

于电路优化的范畴。本文就以此为切入点从

EDA 优化和电路优化两方面来对初步设计进行

优化。

 

  

 3.3.1 EDA 优化 

  首先是针对布局欠佳的

EDA 优化。当路径中布线延时占用了超过 50%的整体延迟即为

布局欠佳。表

1 即为在对设计进行优化时遇到的布局欠佳的示例。从表中可以看出:在整条路

径中连线的延迟占整体延迟的

57.7%,为布局太差。本设计采用调整布局工具的 Extra Level;

利用布局布线工具的

Extra Effort 和 MPPR 功能;利用底层编辑器 FPGA Editor 优化布线和使

用区域约束重新对设计进行布局规划等方案来解决此问题

,最终使设计的布线延迟减少到

50%以内。 
  其次是针对信号扇出过高的

EDA 优化。逻辑门的高扇出系数表明信号传输路径过长,会

造成延迟过大使设计时序性能降低。从表

2 中可以看出: counter_2 信号的逻辑门扇出系数高

11,且该路径上驱动 NXT_STATE<2>信号的逻辑门扇出系数也达到了 10,是为扇出系数过

高。本设计采用的解决方案包括利用逻辑复制

,利用区域约束和充分利用 FPGA 片内资源等

,将设计中各个逻辑门的扇出系数降低到合适的范围之内。 

  虽然借助于

EDA 工具可以对设计完成 EDA 优化,实现设计性能的一定提升。但是基于

工具努力程度的

EDA 优化有无法逾越的瓶颈,限制了设计性能的进一步提升。而电路优化则

是解决这一问题的有效途径。

 

  

 3.3.2 电路优化 

  电路优化能够消除

EDA 优化过程中遇到的瓶颈,使设计性能进一步提高。电路优化主要

是针对

FPGA 设计中关键路径逻辑级数过多的问题。对此情况 EDA 优化不会有任何改善,必

须通过修改代码来解决。

 

  本设计中采用的解决方法有

:1)使用流水线技术[6]。简单来说,数字系统的最小时钟周期

data path - clock path skew + uncertainty 的值来决定,且其中的 data path 占主导地位。因此

可以通过在组合逻辑中插入寄存器来简化原有的逻辑结构

,缩短寄存器之间延迟时间,最终达

到提高设计的时序性能的目的。

 

  

2)设置多周期路径。检查关键路径是否为多周期路径,是通过修改设计并添加相应的多

周期约束来实现的。在多周期路径中

,数据可用不止一个时钟周期到达其目的地。多周期技术

多适用于高位宽的计数器和加法器。本设计中的波特率除数计数器

DLC 位宽为 16,最坏的情

况下最低位的进位需要传递

15 位,严重制约了设计性能的提高。解决方法是将波特率除数计