问题
给定8bit无符号整数a,b,求a除以b(b不为0)的商q和余数r。
方法第一种能够想到的方法,就是a一直减去b,一直减到差小于b为止,此时,这个最终的差即为余数,而减去b的次数即为商。然而,这个方法在商比较大的时候需要许多个周期才能得到结果,因此并不吸引人。 另一种方法如下图所示 步骤如下: 1.令a_r={N’d0,a},b_r={b,N’d0} 2.在每个时钟周期,将a_r左移一位,末尾补0,然后与b_r比较;若大于b_r,则a_r=a_r-b_r+1,否则继续比较 3.移位N次后,a_r的高N位为余数,低N位为商。 可以看到,该方法在求商和余数时,所需的时钟周期数恒为N(N为a,b的位宽),因此,相对于前一种方法,在商比较大的时候,具有明显的优势。
设计文件(以8bit无符号整数除法为例)
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/03/18 21:37:17
// Design Name:
// Module Name: demo
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module demo
(
input logic clk,
input logic rst_n,
input logic [7:0] a,
input logic [7:0] b,
input logic valid,
output logic [7:0] q,
output logic [7:0] r,
output logic ready
);
logic [15:0] a_r;
logic [15:0] b_r;
logic [31:0] cnt; //计数器
logic busy;
logic [15:0] a_shift;
assign a_shift={a_r[14:0],1'b0}; //a_r左移一位
//
always_ff@(posedge clk,negedge rst_n)
if(~rst_n)
a_r
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?