谢大钊谢大钊编著编著FPGA/CPLDFPGA/CPLD重要设计思想及工程应用重要设计思想及工程应用流水线设计篇流水线设计篇中嵌教育中嵌教育(())谢大钊谢大钊编著编著谢大钊谢大钊编著编著概述概述流水线设计是高速电路设计中的一流水线设计是高速电路设计中的一个常用设计手段。如果某个设计的处理个常用设计手段。如果某个设计的处理流程分为若干步骤,而且整个数据处理流程分为若干步骤,而且整个数据处理是是““单流向单流向””的,即没有反馈或者迭代的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤运算,前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计方的输入,则可以考虑采用流水线设计方法来提高系统的工作频率。法来提高系统的工作频率。谢大钊谢大钊编著编著流水线处理的应用流水线处理的应用在很多领域的高速电子系统中都运用了在很多领域的高速电子系统中都运用了流水线处理的方法,如高速通信系统、高流水线处理的方法,如高速通信系统、高速采集系统、高速导航系统、高速搜索系速采集系统、高速导航系统、高速搜索系统等等。流水线处理方式之所以能够很大统等等。流水线处理方式之所以能够很大程度上提高数据流的处理速度,是因为复程度上提高数据流的处理速度,是因为复制了处理模块,它是面积换取速度思想的制了处理模块,它是面积换取速度思想的又一种具体体现。又一种具体体现。谢大钊谢大钊编著编著流水线设计的结构流水线设计的结构流水线设计的结构示意图如下页图所流水线设计的结构示意图如下页图所示。其基本结构为:将适当划分的示。其基本结构为:将适当划分的nn个操个操作步骤单流向串联起来。流水线操作的最作步骤单流向串联起来。流水线操作的最大特点和要求是,数据流在各个步骤的处大特点和要求是,数据流在各个步骤的处理从时间上看是连续的,如果将每个操作理从时间上看是连续的,如果将每个操作步骤简化,假设为通过一个步骤简化,假设为通过一个DD触发器触发器((就就是用寄存器打一个节拍是用寄存器打一个节拍)),那么流水线操作,那么流水线操作就类似一个移位寄存器组,数据流依次流就类似一个移位寄存器组,数据流依次流经经DD触发器,完成每个步骤的操作。触发器,完成每个步骤的操作。谢大钊谢大钊编著编著谢大钊谢大钊编著编著流水线设计时序流水线设计时序整个设计时序的合理安排是流水线设计的整个设计时序的合理安排是流水线设计的一个关键,那么如何才能对整个设计时序进行一个关键,那么如何才能对整个设计时序进行合理安排呢?下面我们就带着这个问题做个实合理安排呢?下面我们就带着这个问题做个实验。验。谢大钊谢大钊编著编著流水线设计应用流水线设计应用实验要求:实验要求:假设该设计为某实时通信系统的一个模块,该假设该设计为某实时通信系统的一个模块,该系统采样频率为系统采样频率为5MHz5MHz,采样精度为,采样精度为3232位。位。我们需要设计的内容为:对采样数据先进行加我们需要设计的内容为:对采样数据先进行加减偏移量的运算,假设需要加十六进制数减偏移量的运算,假设需要加十六进制数00000077h00000077h的偏移量,然后把该数据压缩为的偏移量,然后把该数据压缩为1616位数位数据,便于采样后的信号处理运算,压缩数据时保据,便于采样后的信号处理运算,压缩数据时保持精度相对高些。这里我们假设信号处理运算很持精度相对高些。这里我们假设信号处理运算很简单,就是将压缩后的数据先减去十六进制数简单,就是将压缩后的数据先减去十六进制数00ffh00ffh,然后取差值的低八位数据值做为该设计的,然后取差值的低八位数据值做为该设计的输出。输出。谢大钊谢大钊编著编著流水线设计时序流水线设计时序流水线(流水线(pipeliningpipelining)技术的基本原理)技术的基本原理就是如下页图所示,将较大的组合逻辑分解就是如下页图所示,将较大的组合逻辑分解为较小的几块,中间插入触发器,这样就可为较小的几块,中间插入触发器,这样就可以提高电路的工作频率了。以提高电路的工作频率了。谢大钊谢大钊编著编著流水线设计时序流水线设计时序谢大钊谢大钊编著编著谢大钊谢大钊编著编著流水线设计时序流水线设计时序如上页图所示,时序的合理安排要求如上页图所示,时序的合理安排要求每个操作步骤的划分合理。每个操作步骤的划分合理。下面我们以一个指令集的操作过程为下面我们以一个指令集的操作过程为例来说明流水线的设计过程。例来说明流水线的设计过程。谢大钊谢大钊编著编著流水线设计时序流水线设计时序如下页图所示,将指令集的操作过程指令集的操作过程分为4个子任务:取指令I1,译码I2,取操作数I3,和运算I4,假如每个操作执行的时间均为T,则执行4个操作的执行时间为4T,将这4个子任务在时间上重叠,用4个子部件来完成,相应的4个子部件连接成串行方式,每个子部件执行的时间为T,每隔T时间就可输出一个操作处理结果,平均速度提高了4倍,在加入适当的转移控制之后,即成为流水线操作的工作方式.1I1I1I1I谢大钊谢大钊编著编著流水线设计时序流水线设计时序谢大钊谢大钊编著编著流水线设计时序流水线设计时序在在FPGAFPGA设计中采用流水线设计方法,只设计中采用流水线设计方法,只需要极少或者根本不需要额外的成本,因为需要极少或者根本不需要额外的成本,因为每一个逻辑元件都包括一个触发器,这个触每一个逻辑元件都包括一个触发器,这个触发器或者没有用到,或者是用于存储布线资发器或者没有用到,或者是用于存储布线资源。采用流水线有可能将一个复杂操作分解源。采用流水线有可能将一个复杂操作分解成一些小规模的基本操作,将一些中间值存成一些小规模的基本操作,将一些中间值存储在寄存器中,并在下一个时钟周期内继续储在寄存器中,并在下一个时钟周期内继续运算。运算。谢大钊谢大钊编著编著流水线设计时序流水线设计时序由以上分析我们可以知道,采用流水线技术可以大大提高系统运行速度,特别适合于需要进行大批量简单运算的场合,比如通信系统、雷达系统、导航系统、电子对抗系统等领域的数字信号处理运算。谢大钊谢大钊编著编著流水线设计时序流水线设计时序如果前级操作时间恰好等于后级的操作如果前级操作时间恰好等于后级的操作时间,设计最为简单,前级的输出直接汇时间,设计最为简单,前级的输出直接汇入后级的输入即可;如果前级操作时间和入后级的输入即可;如果前级操作时间和后级的操作时间不等,该怎么办呢?进一后级的操作时间不等,该怎么办呢?进一步说如果系统中有步说如果系统中有NN个模块,每个模块需要个模块,每个模块需要的时钟周期都不相同该怎么办呢?的时钟周期都不相同该怎么办呢?现在我们就带着这样的问题去学后面的现在我们就带着这样的问题去学后面的课程。课程。