流水线加法器.doc_第1页
流水线加法器.doc_第2页
流水线加法器.doc_第3页
流水线加法器.doc_第4页
流水线加法器.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

module add_line (a,b,clk,out);parameter width=16, width1=8, /lsb width2=8; /msb / r3 r1 input width-1:0 a; /a=00010111_00000001 input width-1:0 b; /b=11111111_00000000output width:0 out; / r4 r2input clk;reg width1-1:0 r1,r2,r5;reg width2-1:0 r3,r4,r6;reg c1,c2;reg width:0 sum;always (posedge clk) /-first beginr1width1-1:0=awidth1-1:0; /r2width1-1:0=bwidth1-1:0; /r3width2-1:0=awidth-1:width1;r4width2-1:0=bwidth-1:width1;endalways (posedge clk) /- secondbeginc1,r5=r1+r2;c2,r6=r3+r4+c1;sum=c2,r5,r6;endassign out=sum;endmodule图图上图是没有assign out=sum;时的rtl级仿真结果;错误1:Warning (10034): Output port out1 at add_line.v(9) has no driver原因:out没有驱动,out根本就没有用;错误2:永远有多远(1057978105) 10:43:30这样不好 有时序又有组合永远有多远(1057978105) 10:46:04最好把它都放在时序里面 width改成width0(1003704680) 10:47:54那个地方是时序,哪个地方是组合永远有多远(1057978105) 10:48:17always 时序 assign组合module add_line (a,b,clk,out);parameter width=16, width1=8, /lsb width2=8; /msb / r3 r1 input width-1:0 a; /a=00010111_00000001 input width-1:0 b; /b=11111111_00000000output width:0 out; / r4 r2input clk;reg width1-1:0 r1,r2,r5;reg width2-1:0 r3,r4,r6;reg c1,c2;reg width:0 out;always (posedge clk) /-first beginr1width1-1:0=awidth1-1:0; /r2width1-1:0=bwidth1-1:0; /r3width2-1:0=awidth-1:width1;r4width2-1:0=bwidth-1:width1;endalways (posedge clk) /- secondbeginc1,r5=r1+r2;c2,r6=r3+r4+c1;out=c2,r5,r6;endendmodule图上图用阻塞赋值的rtl;图上图是用非阻塞赋值的rtl;下图是用非阻塞赋值运算结果:有两个地方进位错误!第一个进位推迟一个时钟;图下图是用阻塞赋值结果:图错误原因:非阻塞赋值语句中,数值的转移须等到下一个时钟周期;与组合逻辑的比较:module add(a,b,sum);input 15:0 a,b;output 16:0 sum;assign sum=a+b;Endmodule图所谓流水线设计实际上就是把规模较大、层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组暂存中间数据。K 级的流水线就是从组合逻辑的输入到输出恰好有K 个寄存器组(分为K 级,每一级都有一个寄存器组)上一级的输出是下一级的输入而又无反馈的电路。图5.6 表示了如何将把组合逻辑设计转换为相同组合逻辑功能的流水线设计。这个组合逻辑包括两级。第一级的延迟是T1 和T3 两个延迟中的最大值;第二级的延迟等于T2 的延迟。为了通过这个组合逻辑得到稳定的计算结果输出, 需要等待的传播延迟为max(T1,T3)+T2个时间单位。在从输入到输出的每一级插入寄存器后,流水线设计的第一级寄存器所具有的总的延迟为T1 与T3 时延中的最大值加上寄存器的Tco(触发时间)。同样,第二级寄存器延迟为T2 的时延加上Tco。采用流水线设计为取得稳定的输出总体计算周期为:max(max(T1,T3)+Tco,(T2+Tco)流水线设计需要两个时钟周期来获取第一个计算结果,而只需要一个时钟周期来获取随后的计算结果。开始时用来获取第一个计算结果的两个时钟周期被称为采用流水线设计的首次延迟(latency)。对于CPLD 来说,器件的延迟如T1、T2 和T3 相对于触发器的Tco 要长得多,并且寄存器的建立时间Tsu 也要比器件的延迟快得多。只有在上述关于硬件时延的假设为真的情况下,流水线设计才能获得比同功能的组合逻辑设计更高的性能。采用流水线设计的优势在于它能提高吞吐量(throughput)。假设T1、T2 和T3 具有同样的传递延迟Tpd。对于组合逻辑设计而言,总的延迟为2*Tpd。对于流水线设计来说,计算周期为(Tpd+Tco)。前面提及的首次延迟(latency)的概念实际上就是将(从输入到输出)最长的路径进行初始化所需要的时间总量;吞吐延迟则是执行一次重复性操作所需要的时间总量。在组合逻辑设计中,首次延迟和吞吐延迟同为2*Tpd。与之相比,在流水线设计中,首次延迟是2*(Tpd+Tco),而吞吐延迟是Tpd+Tco。如果CPLD 硬件能提供快速的Tco,则流水线设计相对于同样功能的组合逻辑设计能提供更大的吞吐量。典型的富含寄存器资源的CPLD 器件(如Lattice 的ispLSI 8840)的Tpd 为8.5ns,Tco 为6ns。流水线设计在性能上的提高是以消耗较多的寄存器资源为代价的。对于非常简单的用于数据传输的组合逻辑设计,例如上述例子,将它们转换成流水线设计可能只需增加很少的寄存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论