数字电路设计之循环右移的verilog实现

本文介绍了在数字电路设计中如何使用Verilog实现循环右移操作。通过一个名为ROR的模块展示了具体实现,强调了在实现过程中需要注意的逻辑运算符使用,并提供了仿真测试用例。
摘要由CSDN通过智能技术生成

循环右移这个在ARM的指令中也是比较常见的,今天想把之前没写的这条指令补上。

循环右移感觉上有很多方法,这里就说一些我做出来并仿真正确的做法吧!

module ROR( pre,later,shift);

    input wire [7:0]pre;
    input wire [2:0]shift;
    output wire [7:0]later;
    
    assign   later = (pre>>shift)|(pre<<(8-shift));  //这里只有这个连续赋值,但是不要小看这个,这里有一些要注意的

    //那里的符号要用“或”,不能用“加”,这个原理就是循环右移就是逻辑左移或上逻辑右移n位(n=数据位数-移位数)

    //如果想多些几行就用always语句来实现该组合逻辑,当然写个循环也是可以的,不过用循环综合出来的东西乱七八糟
endmodule                                                             //其实还可以用乘法实现移位,这个就看在资源方面哪一种资源更有利了
                                                                          
仿真文件:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值