• 一个周期算出所有高电平的个数


    一、题目

      在一个时钟周期内算出输入的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 种是百度而来的邪门法,一拍都不用,直接就出结果了;

  • 相关阅读:
    DAY12 基本余数 运算符2
    DAY11 基本运算符
    DAY10 变量 常量 作用域
    DAY09 JAVA 类型转换
    DAY08 数据类型2
    DAY07 数据类型
    DAY06 JAVA基础语法1注释2标识符
    Beta冲刺集合
    Alpha冲刺集合
    高级软件工程实践总结
  • 原文地址:https://www.cnblogs.com/xianyufpga/p/13462511.html
Copyright © 2020-2023  润新知