当前位置:首页 > EDA > 电子设计自动化
[导读]  通过减少寄存器间的逻辑延时来提高工作频率,或通过流水线设计来优化数据处理时的数据通路来满足高速环境下FPGA或CPLD中的状态机设计要求。本文给出了采用这些技术的高速环境状态机设计的规范及分析方法和优化方

  通过减少寄存器间的逻辑延时来提高工作频率,或通过流水线设计来优化数据处理时的数据通路来满足高速环境下FPGA或CPLD中的状态机设计要求。本文给出了采用这些技术的高速环境状态机设计的规范及分析方法和优化方法,并给出了相应的示例。

  为了使FPGA或CPLD中的状态机设计满足高速环境要求,设计工程师需要认识到以下几点:寄存器资源和逻辑资源已经不是问题的所在,状态机本身所占用的 FPGA或CPLD逻辑资源或寄存器资源非常小;状态机对整体数据流的是串行操作,如果希望数据处理的延时非常小,就必须提高操作的并行程度,压缩状态机中状态转移的路径长度;高速环境下应合理分配状态机的状态及转移条件。本文将结合实际应用案例来说明。

  状态机设计规范

  1. 使用一位有效的方式进行状态编码

  状态机中状态编码主要有三种:连续编码(sequential encoding)、一位有效(one-hot encoding)方式编码以及不属于这两种的编码。例如,对于一个5个状态(State0~State4)的状态机,连续编码方式状态编码为:State0-000、State1-001、State2-010、State3-011、State4-100。一位有效方式为下为:State0-00001、State1-00010、State2-00100、State3-01000、State4-10000。对于自行定义的编码则差别很大,例如试图将状态机的状态位直接作为输出所需信号,这可能会增加设计难度。

  使用一位有效编码方式使逻辑实现更简洁,因为一个状态只需要用一位来指示,而为此增加的状态寄存器数目相对于整个设计来说可以忽略。一位有效至少有两个含义:对每个状态位,该位为1对应唯一的状态,判断当前状态是否为该状态,只需判断该状态位是否为1;如果状态寄存器输入端该位为1,则下一状态将转移为该状态,判断下一状态是否为该状态,只需判断表示下一状态的信号中该位是否为1。

  2. 合理分配状态转移条件

  在状态转移图中,每个状态都有对应的出线和入线,从不同状态经不同的转移条件到该状态的入线数目不能太多。以采用与或逻辑的CPLD设计来分析,如果这样的入线太多则将会需要较多的乘积项及或逻辑,这就需要更多级的逻辑级联来完成,从而增加了寄存器间的延迟;对于FPGA则需要多级查找表来实现相应的逻辑,同样会增加延迟。状态机的应用模型如图1所示。

  状态机设计的分析方法

  状态机设计的分析方法可以分为两种:一种是流程处理分析,即分析数据如何分步处理,将相应处理的步骤依次定为不同状态,该方法能够分析非常复杂的状态机,类似于编写一个软件程序的分析,典型设计如读写操作和数据包字节分析;另一种方法是关键条件分析,即根据参考信号的逻辑条件来确定相应的状态,这样的参考信号如空或满指示、起始或结束、握手应答信号等。这两种分析方法并没有严格的界限,在实际的状态机设计分析时往往是这两种方法结合使用。下面分别说明这两种分析方法。

  1. 流程处理分析

  例如,在一个读取ZBT SRAM中数据包的设计中,要根据读出的数据中EOP(End of Packet)信号是否为1来决定一个包的读操作是否结束,由于读取数据的延后,这样就会从ZBT SRAM中多读取数据,为此可以设计一个信号VAL_out来过滤掉多读的数据。

  根据数据到达的先后及占用的时钟周期数,可以设计如图2所示的状态机(本文设定:文字说明及插图中当前状态表示为s_State[n:0],为状态寄存器的输出;下一状态next_State[n:0],为状态寄存器的输入;信号之间的逻辑关系采用Verilog语言(或C语言)中的符号表示;#R表示需要经过一级寄存器,输出信号对应寄存器的输出端)。该状态机首先判断是否已经到达包尾,如果是,则依次进入6个等待状态,等待状态下的数据无效,6个等待状态结束后将正常处理数据。

  2. 关键条件分析

  一个路由器线卡高速数据包分发处理的框图,较高速率的数据包经过分发模块以包为单位送往两个较低速率数据通路(即写入FIFO1或FIFO2)。

  对于分发模块设计,关键参考信号是EOP及快满信号AF1、AF2,参考EOP可以实现每次处理一个包,参考AF1、AF2信号可以决定相应的包该往哪个 FIFO中写入。分发算法为:FIFO1未满(AF1=0),数据包将写入FIFO1;如果FIFO1将满且FIFO2未满(AF1=1,且 AF2=0),则下一数据包将写入FIFO2;如果FIFO1、FIFO2都将满(AF1=1且AF2=1),则进入丢包状态。UseFifo1状态下数据包将写入FIFO1,UseFifo2状态下数据包将写入FIFO2,丢包状态下数据包被丢弃,提供丢包计数

使能 DropCountEnable。

  状态机的进一步优化

  1. 利用一位有效编码方式

  如前所述,状态机的工作频率跟状态机中各个状态对应的不同转移条件的入线数目有关。如果到一个状态的转移条件相同但入线数非常多,其逻辑实现很可能并不复杂。在一位有效编码方式下,对于某个状态,如果其他所有状态经相同的转移条件到该状态,那么其逻辑实现可以很好地化简。

  例4:一位有效编码方式下状态位s_State[n:0]中,

  s_State[1] | s_State[2] | ... | s_State[n]=1与 s_State[0]=1等价,那么

  next_State[0]=(s_State[0]&S) | (s_State[1]&T) | (s_State[2]&T) | ... | (s_State[n]) 可以化简为:

  next_State[0]=(s_State[0]&S) | ((~s_State[0])&T),右端输入信号数目大大减少。

  2. 利用寄存器的使能信号

  多数FPGA或CPLD寄存器提供使能端,如果所有的状态机转移必须至少满足某个条件,那么这个条件可以通过使能信号连接实现,从而可以降低寄存器输入端的逻辑复杂度。如上例中不同状态间转移必须以EOP为1作为前提,因而可以将该信号作为使能信号来设计。

  3. 结合所选FPGA或CPLD内部逻辑单元结构编写代码

  以Xilinx FPGA为例,一个单元内2个4输入查找表及相关配置逻辑可以实现5个信号输入的最复杂的逻辑,或8~9个信号的简单逻辑(例如全与或者全或),延时为一级查找表及配置逻辑延时;如果将相邻单元的4个4输入查找表输出连接到一个4输入查找表,那么可以实现最复杂的6输入逻辑,此时需要两级查找表延时及相关配置逻辑延时。更复杂的逻辑需要更多的级连来实现。针对高速状态机的情况,可以尽量将状态寄存器输入端的逻辑来源控制在7个信号以内,从而自主控制查找表的级连级数,提高设计的工作频率。

  4. 通过修改状态机

  如果一个状态机达不到工作频率要求,则必须根据延时最大路径修改设计,通常的办法有:改变状态设置,添加新状态或删除某些状态,简化转移条件及单个状态连接的转移数目;修改转移条件设置,包括改变转移条件的组合,以及将复杂的逻辑改为分级经寄存器输出由寄存器信号再形成的逻辑,后者将会改变信号时序,因而可能需要改变状态设置。

  5. 使用并行逻辑

  很多情况下要参考的关键信号可能非常多,如果参考这些关键信号直接设计状态机所得到的结果可能很复杂,个别状态的出线或入线将会非常多,因而将降低工作频率。可以考虑通过设计并行逻辑来提供状态机的关键信号以及所需的中间结果,状态机负责维护并行逻辑以及产生数据处理的流程。并行逻辑应分级设计,级间为寄存器,从而减少寄存器到寄存器的延时。

  该设计用于使用单一数据总线将FIFO1~4中的数据发送到4个数据通路上去,该设计中并行逻辑产生每次操作时的通路及 FIFO选择结果,状态机负责控制每次操作的流程:在“Idle”状态下,如果FIFO1~4中有数据包供读取,则进入“Schedule”状态;获得调度结果后“Schedule”经过一个“Wait”状态,然后进入“ReadData”状态读取数据,同时开始计数,计数到达所指定数值或者读到数据包尾时进入空闲状态“Idle”,依次循环下去。

  流水线设计

  流水线(Pipelining)设计是将一个时钟周期内执行的逻辑操作分成几步较小的操作,并在较高速时钟下完成。如果它的Tpd为T,则该电路最高时钟频率为1/T,而假设每部分的Tpd为T/3,则其时钟频率可提高到原来的3倍,因而单位时间内的数据流量可以达到原来的三倍。代价是输出信号相对于输入滞后3个周期,时序有所改变(输出信号的总延时一样,但数据吞吐量提高了),同时增加了寄存器资源,而FPGA具有丰富的寄存器资源。

  本文所强调的通过减少寄存器间的逻辑延时来提高状态机的工作频率,与流水线设计的出发点一样,不同的是流水线所强调的是数据处理时的数据通路优化,而本文所强调的是状态机中控制逻辑的优化。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

加州卡尔弗城2023年8月3日 /美通社/ -- 蜗牛游戏公司(纳斯达克代码:SNAL)("蜗牛游戏"或"公司"),一家全球领先的独立互动数字娱乐开发商和出版商,今日宣布与Wolp...

关键字: TI GE AI STATE

FIFO(First In, First Out)存储器是一种常见的存储器类型,它具有以下特点,并在实际应用中发挥着重要的作用。

关键字: FIFO 存储器 数据传输

更加智能的农业用喷药机,为农民带来更大收益 伦敦2023年3月14日 /美通社/ -- 凯斯纽荷兰工业集团收购了Augmenta,加速发展创新的“感知与执行”技术...

关键字: 机器视觉 UG STATE FORWARD

上海2023年2月10日 /美通社/ -- 作为全球领先的多元化科技创新企业,3M长期以来致力于为多元化的STEM(科学、技术、工程及数学)人才创造成长的沃土,借助科学的力量携手各界创造更美好的未来。在第八个&...

关键字: SCIENCE BSP INDEX STATE

在微型计算机中,所有信息(如数值、符号和图像等)均以二进制形式存储、传输和计算。由于二进制数冗长、不方便读写和辨认,因此,现代微型计算机也支持编程时使用书写长度更短的十六进制数和十进制数,同时也为各种非数值信息提供了相应...

关键字: 微型计算机 数制 编码

巴林麦纳麦2023年1月12日 /美通社/ -- 巴林花旗银行庆祝其全球技术中心成立一周年,该中心有望在十年内雇用1000名巴林编码员。目前,该中心由110名巴林员工组成,其中91名巴林员工已经开始在花旗银行Seef办事...

关键字: 编码 TI AI ST

暴雪与网易的授权协议将于2023年1月23日到期 暴雪部分国服游戏将随即下线 上海2022年11月17日 /美通社/ -- 2022年11月17日,暴雪娱乐今日宣布,其与网易公司现有的授权协议将于2...

关键字: STATE FORWARD BSP FUTURE

上海2022年11月16日 /美通社/ -- 一个多世纪以来,岗位一直是分配工作的主导模式,它定义了工作如何完成,由谁完成,如何管理和领导,如何从招聘、薪酬、职业发展到绩效管理等各种人力资源实践来支持员工。然而,根据德勤...

关键字: 人工智能 数字化 模型 编码

浪潮推出“四海”云游戏加速方案。其基于ARM服务器NF5280R6和VPU(视频处理单元)M10A,在1080P全高清分辨率下,能够同时运行60多路游戏,帮助云游戏运营商在提升游戏画面编码效果的同时,降低总体拥有成本和运...

关键字: 云游戏 APP ARM 编码

(全球TMT2022年9月23日讯)近日,浪潮城市信息模型(CIM)基础平台V1.0正式发布。该产品综合应用数字孪生、物联网、5G、区块链、大数据等技术,实现城市治理各环节全程管控、智能协同,强化城市全生命周期管理,助...

关键字: 模型 编码 大数据 区块链
关闭
关闭