时序设计规范1V0(6)

2019-03-03 15:33

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.24 外部存储器IO bank分布

MAX10 IO单元(IOE)包含一个双向IO缓冲器和五个寄存器,用于寄存输入、输出、输出使能信号和完全嵌入式双向单倍数据速率(SDR)以及双倍数据速率(DDR)的传送。

IO缓冲器在每个IO bank上四个IO模块组成一组。

1.MAX10器件与vref、rup、rdn、clkpin、pllclkout、配置及测试管脚共享通用IO管脚。

2.施密特触发器输入缓冲器适用所有IO缓冲器。

每个IOE包含一个输入寄存器、两个输出寄存器和两个输出使能(OE)寄存器。 1.两个输出寄存器和两个OE寄存器被用于DDR应用。

2.可以将输入寄存器用于快速建立时间,将输出寄存器用于快速时钟至输出(clock-to-output)时间。

3.可以将OE寄存器用于快速时钟至输出(clock-to-output)使能时间。

可以将IOE用于输入、输出或双向数据路径。IO管脚支持各种单端和差分IO标准。 双向配置中的IOE结构如图1.25所示。

26 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.25 DDR模式下的IOE结构图

对于外部输入信号,如果要提高设计的时序性能,应该先进行寄存再使用,图1.25中可见IOE中有寄存器资源,如果HDL中有寄存操作,软件会调用此资源进行映射的;当输入接口是双沿采样时(DDR),可调用IOE中的DDIO进行数据采样,实现良好的时序性能;

27 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

第二章:利于时序的设计

2.1、锁存器异常调用

FPGA设计中不推荐使用锁存器进行设计,因为对于时序分析工具而言,锁存器会增加时序分析的难度。这里我们仅对意外生成锁存器的情况进行分析。

锁存器是组合性非时序逻辑生成的,由缺失分支条件或敏感列表不完整引入。

1、分支条件缺失(if-else缺失) always @ ( G or D ) if( G ) Q = D;

2、敏感列表不完整(推荐使用always @ ( * )表述) always @ ( G ) if( G ) Q = 1; else if( B ) Q = 0; else Q = 1;

2.2、高效利用LUT资源

LUT查找表是FPGA最重要的资源,组合逻辑一般都是调用LUT来实现的。因此,设计组合逻辑时应该结合LUT的特性,实现良好的时序性能。我们推荐设计单元(always块)应可在一个CLB(8X6inLUT+16XREG)/LAB(16X4inLUT+16XREG)中实现。

逻辑中比较器、加法器、常规的组合逻辑等都是在LUT上实现的,并且XILINX的LUT支持同步存储功能,可以例化为RAM/FIFO等,而ALTERA的LUT不支持此项功能,同步存储单元都是调用LE中的REG实现,LUT作为地址映射资源被例化。

1个4输入LUT一次可比较2bit数据,6输入LUT可比较3bit,多位比较是LUT级联完成的,如下图为8bit位宽比较需调用5个4输入LUT实现。

28 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图2.1 8bit比较器

一般项目中LUT资源都较充裕,对比较器、加法器位宽限制较少,具体的量化限制无法给出,一般48位宽的操作都没有问题,但资源紧张时有可能时序无法通过,此时需酌情减少位宽。

2.3、状态机编写

综合工具会自动识别设计中的状态机,并进行优化,需要考虑有以下几点:

1、编码方式:独热码、二进制码。独热码具有更好的速度,因其无需解码,但容易进入未定义的状态而出异常;二进制码的优势是更安全,综合各方面考虑,使用二进制码更可靠;

2、使用3段式编码,利于综合工具识别,进而优化; 3、设计default,将未知状态跳转到复位状态;

4、复位设计要简洁,不要即使用复位操作又使用置位操作,综合工具会将其编译为普通逻辑而非状态机,即三段式状态机的第一段要简洁,不添加额外的逻辑,复位值尽可能为全“0”,如下所示:

always @ (posedge clk or posedge reset) begin

if(reset)

state <= state_0; // state_0=4’h0; else

state <= next_state; end

2.4、复位控制

XILINX和ALTERA器件对复位控制的硬件资源有较大的区别,表2.1为对比关系。

表2.1 复位设计对比 全局复位 复位方式 XILINX 推荐不使用全局复位操作 推荐使用同步复位 29 / 50

ALTERA 未有明确推荐 未有明确推荐 高低皆可以 复位信号极性 高有效 时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

复位资源 专用异步复位资源 专用同步/异步复位资源 为了方便代码相互移植,根据上述不同,我们推荐如下设计要点: 1、XILINX之所以不推荐全局复位,是其在芯片配置过程中有一个GSR全局复位的过程,而复位值是可以在信号申明时指定的(reg a = 1’b1;),因此其觉得没有必要再进行全局复位,ALTERA在上电后值也是确定的,没有明确置为1的,都默认为0,因此,上电后逻辑都能进入设定状态。但进行全局软复位时,就必须添加全局复位链路,这在我们的设计中是比较常用的,因此我们的设计还是保留全局复位。

2、XILINX推荐使用同步复位,其给出的理由是,某些专用资源如DSP/BLOCK RAM仅支持同步复位,对关联信号进行异步复位后,综合工具可能将其映射为逻辑资源去实现,但我们使用这些资源的时候都直接例化,不需要综合工具去揣摩,且根据核生成的信号进行连接,因此我们还是使用目前推荐的异步复位同步化方式;

3、XILINX同步复位的实现是将复位信号作为普通的信号,消耗LUT资源,而ALTERA含有专用的同步复位/置位电路;

4、强制所有复位/使能等控制信号都采用高有效表示;

5、异步复位同步处理是我们推荐的复位方式,其RTL电路如下所示,不再累述。

图2.2 异步复位同步化

6、使用异步复位同步化处理,会遇到复位信号的恢复/撤销关系不满足的情况(复位信号不能在时钟沿跳变的一定范围内跳变,否则所在同步原件的输出值可能不确定),为了避免这种情况发生,可以使用时钟输出使能进行控制,将时钟滞后复位信号一定时间再输出,如图2.3所示:

图2.3 时钟滞后复位信号输出

7、单个CLB/LAB的控制信号(复位、使能等)在硬件上是一致的,因此对同一always块内的信号,要做同样的控制逻辑,否则软件会将他们映射到不同的CLB/LAB里,增加其间的路径延时;

8、复位值设为1时,ALTERA需消耗LUT,其会在REG的前后各加一个反相器,增加资源消耗及路径延时,XILINX的REG内部支持默认输出1,不额外增加逻辑。因此,设计时,尽可能将复位值设定为0,通过其他的手段完成非0值的输入,这样也可避免因为复位本身的问题带来的异常。

30 / 50


时序设计规范1V0(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电机与拖动课程设计说明书-三相异步电机能耗制动

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: