zoukankan      html  css  js  c++  java
  • Verilog之case语句

    verilog设计进阶

    时间:2014年5月6日星期二

    主要收获:

    1.学会使用case语句;

    2.学会使用随机函数$random。

    $random:

    1.函数说明:$random函数调用时返回一个32位的随机数,它是一个带符号的整形数。

    2.产生0~59之间的随机数的样例:

    reg[23:0]rand;

    rand={$random}% 60;

    3.产生一个在min, max之间随机数的样例:

    reg[23:0]rand;

    rand= min+{$random}%(max-min+1);

    (摘自昔如烟的博客)

    Verilog程序:

    modulealu(out, opcode, a, b);

           output[7:0]     out;

           reg[7:0]   out;

           input[2:0]       opcode;

           input[7:0]       a, b;

          

           always@(opcode or a or b) begin

                  case(opcode)

                         `plus:      out = a + b;

                         `minus:   out = a - b;

                         `band:     out = a & b;

                         `bor:       out = a | b;

                         `unegate:out= ~a;

                         default: out = 8'hx;

                  endcase

           end

    endmodule

    測试程序:

    `timescale1ns/1ns

    modulealutest;

           wire[7:0] out;

           reg [7:0] a, b;

           reg [2:0] opcode;

           parameter times = 5;

          

           initial begin

                  a={$random}%256;

                  b={$random}%256;

                  opcode=3'd0;

                  repeat(times) begin

                         #100;

                         a={$random}%256;

                         b={$random}%256;

                         opcode=opcode+1;

                  end

                  #100 $stop;

           end

          

           alu u1(out, opcode, a, b);

    endmodule

    仿真波形:


  • 相关阅读:
    高德车载导航自研图片格式的探索和实践
    导航定位向高精定位的演进与实践
    高德算法工程一体化实践和思考
    机器学习在高德用户反馈信息处理中的实践
    UI自动化技术在高德的实践
    高德网络定位算法的演进
    系统重构的道与术
    基于深度学习的图像分割在高德的实践
    MySQL索引那些事
    如何优雅的将Mybatis日志中的Preparing与Parameters转换为可执行SQL
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5112545.html
Copyright © 2011-2022 走看看