newton算法实现的div的verilog

代码如下

module cordicDiv
(input CLOCK,RESET,input iCall, input [31:0]dividend,input [31:0]divisor,output [31:0]quotient
);reg signed [7:0]e;reg signed [31:0]f,rp,dd,x0,x1;reg signed [63:0]q;reg [7:0]i;reg isDone,isSign,isE;always @ ( posedge CLOCK or negedge RESET )if( !RESET )begine <= 8'd0;{ f,rp,dd,x0,x1 } <= { 32'd0,32'd0,32'd0,32'd0,32'd0 };q <= 64'd0;i <= 8'd0;{ isDone,isSign,isE } <= { 1'b0,1'b0,1'b0 };endelse if( iCall )case( i )0:beginisSign <= dividend[31] ^ divisor[31];dd <= dividend[31] ? -(dividend) : dividend;f <= divisor[31]? -(divisor):divisor;e <= 8'd0;i <= i + 1'b1;end1:beginif( f >= 65536 ) begin f = f >>> 1; e = e + 1'b1; endelse if( f < 32768 ) begin f = f <<< 1; e = e - 1'b1; endif( f < 32768 | f >= 65536 ) i <= i;else i <= i + 1'b1;end2:beginisE <= e[7];e <= e[7] ? -e : e;x0 <= { 16'd0,f[19:4] };i <= i + 1'b1;end3,4,5,6,7,8,9,10:beginx1 = 8192 - ((f[19:4]*x0) >>> 12);x0 <= (x0 * x1) >>> 12;i <= i + 1'b1;end11:beginx0 = x0 <<< 4;rp = isE ? x0 <<< e : x0 >>> e; // x0 * 2-eq <= (dd * rp) >>> 16;i <= i + 1'b1;endendcaseassign quotient = isSign ? -q : q;endmodule

模块的功能如下:

  1. 当RESET信号为低电平时,重置模块的内部状态和变量。
  2. 当iCall信号为高电平时,开始执行除法运算。
  3. 根据i的值,执行不同的操作:
    • 当i为0时,初始化一些变量,确定被除数和除数的符号。
    • 当i为1时,进行除数归一化的计算,将除数调整到特定范围内。
    • 当i为2时,判断除数的符号,计算初始值x0。
    • 当i为3到10时,使用CORDIC算法迭代计算x0和x1的值。
    • 当i为11时,根据计算得到的x0和e,计算商的值q。
  4. 最后,根据商的符号位isSign,确定最终的商的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows USB 设备驱动开发-开发Type C接口的驱动程序(三)

编写 USB Type C 端口控制器驱动程序 如果 USB Type-C 硬件实现 USB Type-C 或电源传送 (PD) 物理层&#xff0c;但未实现供电所需的状态机&#xff0c;则需要编写 USB Type-C 端口控制器驱动程序。 在 Windows 10 版本 1703 中&#xff0c;USB Type-C 体系结构已得到改进&am…

RKE部署k8s

移除docker&#xff08;非必要&#xff09; rm -rf /etc/docker rm -rf /run/docker rm -rf /var/lib/dockershim rm -rf /var/lib/docker yum list installed | grep docker yum remove ***rke部署k8s集群 cat > /etc/sysctl.conf << EFO net.ipv4.ip_forward 1 n…

【VUE学习】day03-过滤器filter

VUE学习第三天 过滤器filter全局过滤器私有过滤器 过滤器filter 作用&#xff1a;常见的文本格式化使用场景&#xff1a;插值表达式、v-bind用法&#xff1a;{{msg | filterName}} ; v-bind:属性‘msg | filterName’ msg:需要格式化的文本信息&#xff08;管道符前面的数据&a…

pytorch学习(十)优化函数

优化函数主要有&#xff0c;SGD, Adam&#xff0c;RMSProp这三种&#xff0c;并且有lr学习率&#xff0c;momentum动量&#xff0c;betas等参数需要设置。 通过这篇文章&#xff0c;可以学到pytorch中的优化函数的使用。 1.代码 代码参考《python深度学习-基于pytorch》&…

postman使用说明

Postman是一款非常流行的API开发、测试和文档生成工具&#xff0c;它可以帮助开发人员轻松地创建和管理API请求&#xff0c;并提供了强大的功能来模拟和测试API响应。在本文中&#xff0c;我将介绍如何使用Postman来创建和管理API请求&#xff0c;以及如何使用它的高级功能来测…

Java里的引用详解

1.体验方法引用 方法引用的出现原因 在使用Lambda表达式的时候&#xff0c;我们实际上传递进去的代码就是一种解决方案&#xff1a;拿参数做操作 那么考虑一种情况&#xff1a;如果我们在Lambda中所指定的操作方案&#xff0c;已经有地方存在相同方案&#xff0c;那是否还有必要…

2024最新教程,在docker中安装kali,并配置ssh连接

docker的基本使用&#xff1a;搭建高效攻防靶场vulfocus与Docker仓库管理实战&#xff1a;从听说到入门 拉取kali官方镜像 docker pull kalilinux/kali-rolling 启动一个kali镜像&#xff0c;将容器中的22端口映射到主机100端口&#xff0c;方便ssh直接连接 docker run -it…

白骑士的PyCharm教学基础篇 1.3 调试与运行

系列目录 上一篇&#xff1a; 配置与调试环境 配置调试环境 选择解释器 在 PyCharm 中选择正确的 Python 解释器&#xff1a;依次点击 “File” -> “Settings” -> “Project: [项目名]” -> “Project Interpreter”&#xff0c;选择或添加解释器。 配置运行/…

Model Import Settings

前言 在可视化3D世界中&#xff0c;模型是3D世界的核心&#xff0c;你可以没有贴图&#xff0c;可以没有特效&#xff0c;甚至可以没有用户交互界面&#xff0c;但必须得有模型来描述世界的基本样貌。 在3D世界中&#xff0c;由点线面构成了模型的轮廓&#xff1b;由UV和纹理&a…

Java 集合框架:Java 中的优先级队列 PriorityQueue 的实现

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 018 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

在JavaScript 中,== 和 === 的区别

在 JavaScript 中&#xff0c; 和 是用来比较两个值是否相等的运算符&#xff0c;它们之间有一些重要的区别&#xff1a; 运算符&#xff08;相等运算符&#xff09;&#xff1a; 运算符会在比较之前进行类型转换。如果两个操作数类型不同&#xff0c; 会尝试将它们转换为相…

用不同的url头利用Python访问一个网站,把返回的东西保存为txt文件

这个需要调用requests模块&#xff08;相当于c的头文件&#xff09; import requests 还需要一个User-Agent头&#xff08;这个意思就是告诉python用的什么系统和浏览器&#xff09; Google Chrome&#xff08;Windows&#xff09;: Mozilla/5.0 (Windows NT 10.0; Win64; x64…

【Git命令】git rebase之合并提交记录

使用场景 在本地提交了两个commit&#xff0c;但是发现根本没有没必要分为两次&#xff0c;需要想办法把两次提交合并成一个提交&#xff1b;这个时候可以使用如下命令启动交互式变基会话&#xff1a; git rebase -i HEAD~N这里 N 是你想要重新调整的最近的提交数。 如下在本地…

vscode配置django环境并创建django项目(全图文操作)

文章目录 创建项目工作路径下载python插件&#xff1a;创建虚拟环境选择虚拟环境在虚拟环境中安装Django创建Django项目 创建项目工作路径 下载python插件&#xff1a; 创建虚拟环境 >python:create 于是会多出一个.venv的目录 选择虚拟环境 在虚拟环境中安装Django …

MySQL 数据库 day 7.16

ok了家人们今天继续记录一下数据库,看看今天学了什么。 一.事物概述 1.1 环境准备 -- 账户表 create table account( id int primary key auto_increment, name varchar(20), money double );insert into account values (null,张三,1000); insert into account values (n…

解决Linux桌面初始化问题

问题 启动vnc桌面&#xff0c;提示问题 定位 从[t]csh手册 可以看到&#xff0c;其初始化流程 经定位&#xff0c;是.cshrc的这段代码存在&#xff0c;导致桌面初始化异常。 [wanlin.wangicinfra-cn-172-16-0-115 ~]$ cat .cshrc ...部分省略... # Environment for anac…

Unity UGUI 之 Canvas Scaler

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 1.什么是Canvas Scaler Unity - 手册&#xff1a;Canvas Scaler 重点&#xff1a;虽然叫…

【springboot】中使用--WebMvcConfigurer

WebMvcConfigurer 一、页面跳转控制器step1:创建视图&#xff0c;resources/templates/index.htmlstep2:创建SpringMVC配置类step3:测试功能 二、数据格式化step1:创建 DeviceInfo 数据类step2&#xff1a;自定义 Formatterstep3: 登记自定义的 DeviceFormatterstep4: 新建 Con…

Flutter中GetX的用法(超详细使用指南之路由依赖管理篇)

目录 1.前言 2.GetX 依赖管理概述 1.GetX 依赖管理的基本概念 2.与其他依赖管理工具的比较 3. 基础依赖注入 1.Get.put 2.Get.lazyPut 3.Get.putAsync 4.高级依赖注入 1.使用Get.create 2.依赖生命周期管理 5. 参考资料 1.前言 今天这篇博客主要介绍Getx的三大功能…

Powershell 使用介绍

0 Preface/Foreword 0.1 参考文档 Starting Windows PowerShell - PowerShell | Microsoft Learn 1 Powershell 介绍 2 命令介绍 2.1 新建文件夹 New-Item -Path C:\GitLab-Runner -ItemType Directory 2.2 切换路径 cd C:\GitLab-Runner 2.3 下载文件 Invoke-WebRequ…