可综合的阶乘计算verilog

Verilog实现数字立方、平方和阶乘计算
该代码实现了一个Verilog模块,根据输入的选择数和不超过5的数字,输出其立方、平方或阶乘值。测试代码用于验证模块功能,通过随机生成选择数和数字,观察结果输出。在时钟上升沿更新输入并产生输出,输出可能会有1个时钟周期的延迟。

根据输入的选择数和数字(最大为5),输出数字的立方、平方或者阶乘,

代码如下

module mux2_1
(
    input   wire        sys_clk,
    input   wire        sys_rst_n,
    input   wire [1:0]  select,
    input   wire [2:0]  num,        //输入的最大数为5
    
    output reg [6:0]    result
);

always@ (posedge sys_clk or negedge sys_rst_n)
    if(!sys_rst_n)
        result <= 7'd0;
    else
        case(select)
            2'b00: result <= num * num * num;   //立方
            2'b01: result <= num * num;     //平方
            2'b10: result <= factorial(num);    //阶乘
            default:result <= 7'd0;
        endcase

function [6:0] factorial;
    input [2:0] n;
    reg [2:0] index; 
    begin
        factorial = 7'd1;
        index = 3'd1;
        if(n == 3'd0 || n == 3'd1)
            factorial = 7'd1;
        else
            while(n != index ) begin
                index = index + 1;
              
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eachanm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值