一:流水线技术
1) 流水线原理
流水线的基本结构是将适当划分的N个操作步骤串联起来。流水线操作的最大特点是数据流在各个步骤的处理,从时间上看是连续的;其操作的关键在于时序设计的合理安排、前后级接口间数据的匹配。如果前级操作的时间等于后级操作的时间,直接输入即可;如果前级操作时间小于后级操作时间,则需要对前级数据进行缓存,才能输入到后级;如果前级操作时间大于后者,则需要串并转换等方法进行数据分流,然后再输入到下一级。
2) 流水线应用实例(8 位全加器)
1. 无流水线
2. module adder8 (cout ,sum ,clk ,cina ,cinb ,cin);
3. input [7 :0 ]cina ,cinb;
4. input clk ,cin;
5. output [7 :0 ] sum;
6. output cout;
7.
8. reg[7 :0 ]sum;
9. reg cout ;
10.
11. always @(posedge clk) begin // 时钟上升沿有效;
12. {cout ,sum} = cina + cinb + cin ; // 8 位相加;
13. end
14.
15. endmodule
RTL结构图
仿真波形
2.有两级流水线(可以根据设计情况设计成多级流水线)
} module adder8_2(cout ,sum ,clk ,cina ,cinb ,cin) ;
} input [7 :0]cina ,cinb; input clk ,cin;
} output [7 :0] sum; output cout;
} reg cout ; reg cout1 ; reg[3 :0]sum1; reg[7 :0]sum;
} always @(posedge clk) begin //第4 位相加;
} {cout1 , sum1} = cina [3 : 0] + cinb [3 : 0] + cin ;
} end
} always @(posedge clk) begin //高4 位相加,并且将8 位拼接起来;
} {cout ,sum} = {{cina[7],cina [7 :4]} +{cinb[7], cinb[7 :4] + cout1} ,sum1};
} end
} endmodule
RTL结构图
仿真波形
二:逻辑复用与逻辑复制技术
1)
逻辑复用——速度换面积
逻辑复用是通过提高工作频率来节省面积的优化方法,经常用于存在多个资源可共享单元的设计中,是大规模FPGA设计的核心思想。
2)
逻辑复制——面积换速度
逻辑复制是通过增加面积而改善设计时序的优化方法,经常用于调整信号的扇出。如果信号具有高的扇出(如:时钟和复位信号等),即要驱动很多后续电路,则要添加缓存器来增强驱动能力,但这会增大信号的时延。通过逻辑复制,使用多个相同的信号来分担驱动任务。这样,每路信号的扇出就会变低,就不需要额外的缓冲器来增强驱动,即可减少信号的路径延迟。
三:关键路径提取
1)简单组合电路关键路径的提取方法
简单组合电路的关键路径提取方法就是拆分逻辑,将复杂逻辑变成多个简单组合电路的进一步组合缩减关键信号的逻辑级数
简单关键电路的提取实例。对于语句:
assign y = a & b & c | d & e & b;
从中可以看出,信号b为关键信号。现将其简单路径计算,再经过关键路径逻辑。
assign temp = a & b & c & d;assign y = b & temp;
2) 复杂always块中关键路径的提取方法
对于always模块中时间要求非常紧的信号,需要通过分布提取方法,让关键路径先行,保证改写后的描述与原always块逻辑等效。
四:逻辑合并与拆分原理
逻辑合并和拆分操作主要用于修改逻辑结构。数字电路中的逻辑结构主要分为链状结构(Chain Architecture)和树状结构(Tree Architecture)。一般来讲,链状结构具有较大的时延,后者具有较小的时延。所谓的链状结构主要指程序是串行执行的,树状结构是串并结合的模式 。
文章评论(0条评论)
登录后参与讨论