zoukankan      html  css  js  c++  java
  • 一个周期算出所有高电平的个数

    一、题目

      在一个时钟周期内算出输入的13路脉冲信号中,高电平的个数。

    二、代码

     1 //**************************************************************************
     2 // *** 描述 : 在一个时钟周期内算出13路脉冲信号为高电平的个数
     3 // *** 出处 : 特权《深入浅出》20页
     4 //**************************************************************************
     5 
     6 module test
     7 //========================< 端口 >==========================================
     8 (
     9 input   wire                clk                 ,
    10 input   wire                rst_n               ,
    11 input   wire    [12:0]      data                ,
    12 output  wire    [15:0]      num     
    13 );
    14 //========================< 信号 >==========================================
    15 reg     [ 3:0]              i                   ;
    16 
    17 /*
    18 //==========================================================================
    19 //==                        1拍 叠加之前的num
    20 //==========================================================================
    21 always @(posedge clk or negedge rst_n) begin
    22     if(!rst_n) begin
    23         num = 0;
    24     end
    25     else begin
    26         for(i=0;i<13;i=i+1)
    27             if(data[i])
    28                 num = num + 1;      //注意是阻塞赋值
    29     end
    30 end
    31 //==========================================================================
    32 //==                        1拍 不叠加之前的num
    33 //==========================================================================
    34 always @(posedge clk or negedge rst_n) begin
    35     if(!rst_n) begin
    36         num = 0;
    37     end
    38     else begin
    39         num = 0;                    //注意清0
    40         for(i=0;i<13;i=i+1)
    41             if(data[i])
    42                 num = num + 1;      //注意是阻塞赋值
    43     end
    44 end
    45 */
    46 //==========================================================================
    47 //==                        0拍 不叠加之前的num
    48 //==========================================================================
    49 assign num   = data[12] + data[11] + data[10] + data[9] + 
    50                data[ 8] + data[ 7] + data[ 6] + data[5] + 
    51                data[ 4] + data[ 3] + data[ 2] + data[1] + data[0]; 
    52 
    53 endmodule

    三、说明

    1、第 1 种是特权《深入浅出》书中给出的办法,计算的结果会不断累加;

    2、第 2 种是基于第 1 种方法的更改,计算的结果不会累加,更加符合题意;

    3、第 3 种是百度而来的邪门法,一拍都不用,直接就出结果了;

  • 相关阅读:
    项目管理系列(其他):国际工程承包项目风险识别与分析
    公司注册之简化版
    公司注册之百度百科
    有效投标不足三家不应是重新招标的必要条件
    CPU频率
    集成电路
    晶体管
    Oracle问题之ORA-01609、ORA-00362
    Oracle问题之ORA-12560TNS:协议适配器错误
    Oracle问题之字符集问题,登陆sqlplus出现问号
  • 原文地址:https://www.cnblogs.com/xianyufpga/p/13462511.html
Copyright © 2011-2022 走看看