0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

剖析流水线技术原理和Verilog HDL实现

电子工程师 来源:博客园 作者:我心狂野 2021-05-27 16:57 次阅读

所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行。这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时间无关。这样,在理想的流水操作状态下,其运行效率很高。

如果某个设计的处理流程分为若干步骤,而且整个数据处理是单流向的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,则可以采用流水线设计方法来提高系统的工作频率。

下面用8位全加器作为实例,分别列举了非流水线方法、2级流水线方法和4级流水线方法。

(1)非流水线实现方式

module adder_8bits(din_1, clk, cin, dout, din_2, cout);

input [7:0] din_1;

input clk;

input cin;

output [7:0] dout;

input [7:0] din_2;

output cout;

reg [7:0] dout;

reg cout;

always @(posedge clk) begin

{cout,dout} 《= din_1 + din_2 + cin;

end

endmodule

(2)2级流水线实现方式:

module adder_4bits_2steps(cin_a, cin_b, cin, clk, cout, sum);

input [7:0] cin_a;

input [7:0] cin_b;

input cin;

input clk;

output cout;

output [7:0] sum;

reg cout;

reg cout_temp;

reg [7:0] sum;

reg [3:0] sum_temp;

always @(posedge clk) begin

{cout_temp,sum_temp} = cin_a[3:0] + cin_b[3:0] + cin;

end

always @(posedge clk) begin

{cout,sum} = {{1‘b0,cin_a[7:4]} + {1’b0,cin_b[7:4]} + cout_temp, sum_temp};

end

endmodule

注意:这里在always块内只能用阻塞赋值方式,否则会出现逻辑上的错误!

(3)4级流水线实现方式:

module adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);

input [7:0] cin_a;

input [7:0] cin_b;

input c_in;

input clk;

output c_out;

output [7:0] sum_out;

reg c_out;

reg c_out_t1, c_out_t2, c_out_t3;

reg [7:0] sum_out;

reg [1:0] sum_out_t1;

reg [3:0] sum_out_t2;

reg [5:0] sum_out_t3;

always @(posedge clk) begin

{c_out_t1, sum_out_t1} = {1‘b0, cin_a[1:0]} + {1’b0, cin_b[1:0]} + c_in;

end

always @(posedge clk) begin

{c_out_t2, sum_out_t2} = {{1‘b0, cin_a[3:2]} + {1’b0, cin_b[3:2]} + c_out_t1, sum_out_t1};

end

always @(posedge clk) begin

{c_out_t3, sum_out_t3} = {{1‘b0, cin_a[5:4]} + {1’b0, cin_b[5:4]} + c_out_t2, sum_out_t2};

end

always @(posedge clk) begin

{c_out, sum_out} = {{1‘b0, cin_a[7:6]} + {1’b0, cin_b[7:6]} + c_out_t3, sum_out_t3};

end

endmodule

总结:

利用流水线的设计方法,可大大提高系统的工作速度。这种方法可广泛运用于各种设计,特别是大型的、对速度要求较高的系统设计。虽然采用流水线会增大资源的使用,但是它可降低寄存器间的传播延时,保证系统维持高的系统时钟速度。在实际应用中,考虑到资源的使用和速度的要求,可以根据实际情况来选择流水线的级数以满足设计需要。

这是一种典型的以面积换速度的设计方法。这里的“面积”主要是指设计所占用的FPGA逻辑资源数目,即利用所消耗的触发器(FF)和查找表(LUT)来衡量。“速度”是指在芯片上稳定运行时所能达到的最高频率。面积和速度这两个指标始终贯穿着FPGA的设计,是设计质量评价的最终标准。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593171
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87595
  • 触发器
    +关注

    关注

    14

    文章

    1677

    浏览量

    60402
  • LUT
    LUT
    +关注

    关注

    0

    文章

    49

    浏览量

    12396

原文标题:FPGA流水线设计

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    固定式安装工业读码器,助力提高流水线人工上料效率

    上的条码信息,无需手动操作即可完成数据采集。这种自动化的条码扫描技术大大缩短了人工上料的时间,提高了生产效率。而工业读码器的稳定性和准确度保证了流水线上料过程中的顺畅
    的头像 发表于 02-27 14:43 98次阅读
    固定式安装工业读码器,助力提高<b class='flag-5'>流水线</b>人工上料效率

    超级方便的轻量级Python流水线工具

    Mara-pipelines 是一个轻量级的数据转换框架,具有透明和低复杂性的特点。其他特点如下: 基于非常简单的Python代码就能完成流水线开发。 使用 PostgreSQL 作为数据处理引擎
    的头像 发表于 10-31 11:26 353次阅读
    超级方便的轻量级Python<b class='flag-5'>流水线</b>工具

    基于流水线CORDIC算法通用数字调制器的FPGA实现方案

    电子发烧友网站提供《基于流水线CORDIC算法通用数字调制器的FPGA实现方案.pdf》资料免费下载
    发表于 10-27 09:46 0次下载
    基于<b class='flag-5'>流水线</b>CORDIC算法通用数字调制器的FPGA<b class='flag-5'>实现</b>方案

    多周期cpu的设计思想是什么?怎样实现cpu多流水线

    多周期cpu的设计思想是什么?怎样实现cpu多流水线? 多周期cpu的设计思想是针对传统的单周期处理器在执行每条指令时需要花费大量时间等待内存访问,而提出来一种新型的处理器设计思想。多周期cpu可以
    的头像 发表于 10-19 16:53 1402次阅读

    流水线ADC结构解析 流水线ADC和其它ADC的比较

    低采样速率ADC仍然采用逐次逼近(SAR)、积分型结构以及最近推出的过采样ΣΔADC,而高采样速率(几百MSPS以上)大多用闪速ADC及其各种变型电路。然而,最近几年各种各样的流水线ADC已经在速度
    发表于 09-26 10:24 542次阅读
    <b class='flag-5'>流水线</b>ADC结构解析 <b class='flag-5'>流水线</b>ADC和其它ADC的比较

    什么是流水线?ARM处理器流水线简析

    流水线是为了提高效率,能并发同时进行多个任务。
    的头像 发表于 09-05 15:39 1232次阅读
    什么是<b class='flag-5'>流水线</b>?ARM处理器<b class='flag-5'>流水线</b>简析

    2分钟快速上手华为云流水线CodeArts Pipeline的创建与运行

    发布等任务,承载软件从代码提交到发布上线全自动化流程。一次配置后即可重复触发执行,避免频繁低效的手工操作,提供可视化、可定制的持续交付流水线服务,实现缩短交付周期和提升交付质量的效果。 您将收获 通过流水线新手体验模板,体验一条
    的头像 发表于 09-01 13:47 248次阅读
    2分钟快速上手华为云<b class='flag-5'>流水线</b>CodeArts Pipeline的创建与运行

    制造企业常用的流水线Andon安灯呼叫系统是什么

    制造企业使用的流水线Andon安灯呼叫系统是一种非常实用的生产管理工具,它不仅能够提高生产效率和质量,还可以为企业提供宝贵的数据支持,帮助企业实现持续改进和优化。
    的头像 发表于 08-30 21:14 300次阅读

    新版本Jenkins推荐使用声明式流水线

    stage:和声明式的含义一致,定义流水线的阶段。Stage 块在脚本化流水线语法中是可选的,然而在脚本化流水线实现 stage 块,可以清楚地在 Jenkins UI 界面中显示每
    的头像 发表于 07-20 16:43 469次阅读

    半导体制冷技术应用--全自动生化免疫流水线

    全自动生化免疫流水线系统包括了标本的前处理系统、离线样本的分杯系统、生化免疫检测系统以及大容量标本贮存系统。在全自动生化免疫流水线运行过程中,工作人员只需将装有血液或尿液样品并贴有条形码的试管放到
    的头像 发表于 07-14 17:32 505次阅读
    半导体制冷<b class='flag-5'>技术</b>应用--全自动生化免疫<b class='flag-5'>流水线</b>

    总结一下pipeline流水线设计的关键点

    pipeline流水线设计是一种典型的面积换性能的设计。一方面通过对长功能路径的合理划分,在同一时间内同时并行多个该功能请求,大大提高了某个功能的吞吐率
    发表于 06-27 15:26 1106次阅读
    总结一下pipeline<b class='flag-5'>流水线</b>设计的关键点

    串联式流水线和并联式流水线

    串联式流水线,应该备用几台机器人,能立即刷程序和立即上位。 因为串联式流水线一停机就必须全线停,等你修好了黄花菜都凉了。必须有一套每工位替换的设计。能换机上程序就行。按机器的故障率来说,每100台
    发表于 05-19 18:30

    适用于工业流水线的二维扫描头

    随着现代化工业的不断进步,现在各行各业都离不开先进的自动识别技术。比如,工业流水线上使用的二维扫描头,可以不限应用场合灵活固定安装在生产流水线上方实现自动扫描,广泛应用于工业生产中多样
    的头像 发表于 05-18 17:12 394次阅读
    适用于工业<b class='flag-5'>流水线</b>的二维扫描头

    什么是流水线 Jenkins的流水线详解

    jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkin
    发表于 05-17 16:57 666次阅读

    一个典型的流水线设计

    流水线设计通常可以在一定程度上提升系统的时钟频率,因此常常作为时序性能优化的一种常用技巧。如果某个原本单个时钟周期完成的逻辑功能块可以进一步细分为若干个更小的步骤进行处理,而且整个数据处理过程是单向
    的头像 发表于 05-08 10:55 698次阅读
    一个典型的<b class='flag-5'>流水线</b>设计