数字电路设计之算数右移的verilog实现
来源:互联网 发布:电视如何解除网络禁用 编辑:程序博客网 时间:2024/06/05 07:59
在verilog语言中,本来>>>就是算数右移的符号,可是在实际仿真的时候我发现效果还是和逻辑右移的效果一样。后来我觉得应该可以自己写一个算了。
方法一:暴力case
case(shift) //shift是要移位的数目
1:
result <= {result[15],result[15:1]}; //假设result是15位的数据
2:
result <={{2{result[15]}},result[15:2]};
......
default:
result <= {16{result[15]}};
endcase
方法二:循环法(后来我发现不可行,不支持非常数)
integer i;//i要在外面定义,不过一般不要用循环,循环是仿真的时候常用的,综合的时候不要用
for( i=0;i < shift;i=i+1)
begin
result <= {result[15],result[15:1]};
end
我写的一个M0 CPU就是使用这种方法进行算数右移的。这里需要注意的是括号:
case(reg_A)//假设数据16位
0: ALUo <= reg_B;
1: ALUo <= {reg_B[15],reg_[15:1]};
2: ALUo <= {{2{reg_B[15]}},reg_B[15:2]};
3: ALUo <= {{3{reg_B[15]}},reg_B[15:3]};
4: ALUo <= {{4{reg_B[15]}},reg_B[15:4]};
5: ALUo <= {{5{reg_B[15]}},reg_B[15:5]};
6: ALUo <= {{6{reg_B[15]}},reg_B[15:6]};
7: ALUo <= {{7{reg_B[15]}},reg_B[15:7]};
8: ALUo <= {{8{reg_B[15]}},reg_B[15:8]};
9: ALUo <= {{9{reg_B[15]}},reg_B[15:9]};
10: ALUo <= {{10{reg_B[15]}},reg_B[15:10]};
11: ALUo <= {{11{reg_B[15]}},reg_B[15:11]};
12: ALUo <= {{12{reg_B[15]}},reg_B[15:12]};
13: ALUo <= {{13{reg_B[15]}},reg_B[15:13]};
14: ALUo <= {{14{reg_B[15]}},reg_B[15:14]};
default:
ALUo <= {16{reg_B[15]}};
endcase
- 数字电路设计之算数右移的verilog实现
- 数字电路设计之循环右移的verilog实现
- 数字电路设计之堆栈的verilog实现
- 数字电路设计之VGA的字母显示的verilog实现
- 数字电路设计之同步状态机的verilog HDL实现
- 数字电路设计之各种触发器的verilog实现
- 数字电路设计之奇偶分频的verilog实现
- 数字电路设计之恢复余数除法器的verilog实现
- 数字电路设计之GoldSchmidt除法的verilog实现
- 数字电路设计之牛顿迭代法计算除法的verilog实现
- 数字电路设计之VGA显示条形图的verilog实现
- 数字电路设计之32位先进进位加法器的verilog实现
- 数字电路设计之写verilog易犯的错误
- 数字电路设计之verilog的define和parameter
- 数字电路设计之verilog的门级描述
- 数字电路设计之verilog的小技巧集锦
- 数字电路设计之verilog 原语
- 数字电路设计之加法器的实现
- 黑马程序员 java学习笔记——类加载器
- 程序员战场之路之抛砖引玉
- The Documentatiion of Kinect Face Tracking
- 公网网段,内网网段和虚拟机网段
- Partitioning your job into maps and reduces
- 数字电路设计之算数右移的verilog实现
- 【HDU】2444 The Accomodation of Students 二分匹配
- mips架构下alsa结构声音移植笔记
- ArcGIS教程:面积制表
- hd 2190 悼念512汶川大地震遇难同胞——重建希望小学
- 日志系统组件框架之版本兼容性
- SQL Server 2008 R2 序列号 key 产品密钥
- iOS月薪10k以上知识大总结
- 【CSDN编程挑战】完全平方数的个数