• 四级流水线的8bit加法器


    以流水线实现8bit 加法器。

     1 //date : 2013/8/23
     2 //designer :pengxiaoen
     3 //function :
     4 
     5 module pipeline (
     6                  clock ,reset ,
     7                       ina,inb,cin,
     8                       sum,cout
     9                       );
    10 input clock ,reset;
    11 input [7:0] ina ,inb ;
    12 input cin;
    13 output [7:0] sum ;
    14 output cout ;
    15 
    16 reg [7:0] tempa,tempb,sum;
    17 reg tempci,firstco,secondco,thirdco,cout;
    18 reg [1:0] firsts,thirda,thirdb;
    19 reg [3:0] seconda,secondb,seconds;
    20 reg [5:0] firsta,firstb,thirds;
    21 
    22 always @ (posedge clock or negedge reset)
    23 if(!reset)
    24     begin 
    25          tempa <= 0;
    26           tempb <= 0;
    27           tempci<= 0;
    28      end 
    29 else begin
    30          tempa <= ina;
    31            tempb <= inb;
    32            tempci<= cin;    
    33      end 
    34 
    35 //------------------------------1---------------------------      
    36 always @(posedge clock)
    37 begin
    38     {firstco , firsts} <= tempa[1:0] + tempb[1:0] + tempci;
    39      firsta <= tempa[7:2];
    40      firstb <= tempb[7:2]; 
    41 end 
    42 
    43 //-----------------------------2-----------------------------
    44 always @(posedge clock )
    45 begin
    46     {secondco,seconds} <= {firsta[1:0]+firstb[1:0] + firstco, firsts};
    47      seconda <= firsta[5:2];
    48      secondb <= firstb[5:2]; 
    49 end 
    50 
    51 //--------------------------------3---------------------------
    52 always @ (posedge clock )
    53 begin
    54     {thirdco,thirds} <= {seconda[1:0] + secondb[1:0] + secondco , seconds};
    55      thirda <= seconda[3:2];
    56      thirdb <= secondb[3:2];
    57 end 
    58 
    59 //--------------------------------4-------------------------------
    60 always @ (posedge clock )
    61 begin 
    62     {cout ,sum} <= {thirda[1:0]+thirdb[1:0]+thirdco,thirds};
    63 end 
    64 
    65 endmodule 

    流水线的优缺点我就不多说。主要说明一下这个程序里面的注意点。
    第一个always 里 对输入数据的后第0—1个bit进行相加。得到结果是 3 个bit。其中一个进位位,2个数据位

    第二个alwasys 里对输入数据的后第2—3个bit进行相加。得到的结果是5个bit,其中一个进位位,4个数据位。

    第三个alwasys 里对输入数据的后第4—5个bit进行相加。得到的结果是7个bit,其中一个进位位,6个数据位。

    第四个alwasys 里对输入数据的后第6—7个bit进行相加。得到的结果是9个bit,其中一个进位位,8个数据位。

  • 相关阅读:
    特殊字符,如Emoji表情Base64存储到数据库
    判断文本文件的编码
    很多.net 程序员不知道又非常重要的 .net高级调试技巧.调试别人的dll方法内的变量
    没想到你是这样的Linux
    PDF转成txt
    生成云图
    Data collection (imaging)
    Python Conda 软件包升级
    电镜作业2的脚本版本
    电镜作业2
  • 原文地址:https://www.cnblogs.com/sepeng/p/3279548.html
Copyright © 2020-2023  润新知