整数除法verilog代码支持pipeline
2021/6/30 23:56:43
本文主要是介绍整数除法verilog代码支持pipeline,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在sgbm算法中用到,算是经过考验过的,
可以到我的github页面下载modelsim仿真工程
http://github.com/tishi43/div
module div_by_shift_sum #( parameter WidthD0=64, parameter WidthD1=32, parameter WidthQ=WidthD0+WidthD1) ( input wire clk, input wire [WidthD0-1:0] a, input wire [WidthD1-1:0] b, output wire [WidthD0-1:0] result ); reg [WidthD1-1:0] b_d[0:WidthD0]; reg [WidthQ-1:0] div_result_d[0:WidthD0]; reg [WidthD1-1:0] div_sub_val[0:WidthD0]; always @ (posedge clk) begin b_d[0] <= b; div_result_d[0] <= {{(WidthD1-1){1'b0}}, a,1'b0}; end integer ii; always @(*) begin for (ii = 0; ii <= WidthD0; ii = ii + 1) begin div_sub_val[ii] = div_result_d[ii][WidthQ-1:WidthD0]-b_d[ii]; end end always @(posedge clk) begin for (ii = 1; ii <= WidthD0; ii = ii + 1) begin if (div_result_d[ii-1][WidthQ-1:WidthD0]>=b_d[ii-1]) div_result_d[ii] <= ({div_sub_val[ii-1],div_result_d[ii-1][WidthD0-1:0]} << 1) | 1; else div_result_d[ii] <= div_result_d[ii-1][WidthQ-1:0] << 1; b_d[ii] <= b_d[ii-1]; end end assign result = div_result_d[WidthD0][WidthD0-1:0]; endmodule
这篇关于整数除法verilog代码支持pipeline的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21订单系统资料入门教程:轻松管理你的订单
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java订单系统资料:新手入门教程与实战指南
- 2024-09-21Java管理系统资料入门教程
- 2024-09-21从零开始学习Java监控系统资料
- 2024-09-21Java就业项目资料:新手入门的必备教程
- 2024-09-21Java全端资料:初学者指南
- 2024-09-21Java全栈资料入门教程及资源汇总
- 2024-09-21Java日志系统资料入门教程