当前位置: 首页 > article >正文

Verilog的整数除法

1、可变系数除法实现----利用除法的本质

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2025/04/15 13:45:39
// Design Name: 
// Module Name: divide_1
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module divide_1(// clk and rst_ninput   wire            sys_clk         ,input   wire            sys_rst_n       ,// dividend and divisor        input   wire            enIn            ,input   wire [7:0]      dividend        ,input   wire [3:0]      divisor         ,output  wire            busy            ,output  wire            enOut           ,output  wire            warning         ,output  wire [7:0]      quotient        ,output  wire [3:0]      remainder);localparam  IDLE    =   1'b0    ;localparam  S_CALC  =   1'b1    ;reg         current_state   ;reg         next_state      ;reg         lockDivs        ;reg  [7:0]  DivA            ;reg  [3:0]  DivB            ;reg         counting , ending   ;reg  [7:0]  counter         ;reg         out_busy        ;reg         out_enOut       ;reg         out_warning     ;reg  [7:0]  out_quotient    ;reg  [3:0]  out_remainder   ;wire [7:0]  extDivB =   { 4'b0,DivB }   ;always@( posedge sys_clk )beginif( sys_rst_n == 1'b0 )begincurrent_state   <=  IDLE    ;DivA            <=  8'b0    ;DivB            <=  4'b0    ; counter         <=  8'b0    ;out_enOut       <=  1'b0    ;out_warning     <=  1'b0    ;out_quotient    <=  8'b0    ;out_remainder   <=  4'd0    ;endelsebegincurrent_state   <=  next_state  ;// DivA  DivB  counterif( lockDivs == 1'b1 )beginDivA    <=  dividend    ;DivB    <=  divisor     ;counter <=  8'b0        ;endelse if( counting == 1'b1 )beginDivA    <=  DivA - extDivB  ;counter <=  counter + 1'b1  ;end//out_enOutout_enOut   <=  ending  ;// out_warningif( ending == 1'b1 )beginif( DivB == 4'b0 )beginout_warning <=  1'b1    ;endelsebeginout_warning <=  1'b0    ;end// out_quotientout_quotient    <=  counter ;// our_remainderout_remainder   <=  DivA[3:0]   ;endendendalways@( current_state , enIn , DivA , extDivB )beginout_busy    <=  1'b0    ;lockDivs    <=  1'b0    ;counting    <=  1'b0    ;ending      <=  1'b0    ;case( current_state )IDLE    :beginif( enIn == 1'b1 )beginlockDivs    <=  1'b1    ;next_state  <=  S_CALC  ;endelsebeginnext_state  <=  IDLE    ;endendS_CALC  :beginout_busy    <=  1'b1    ;if( DivA < extDivB || extDivB == 8'b0 )beginending      <=  1'b1    ;next_state  <=  IDLE    ;  endelsebegincounting    <=  1'b1    ;next_state  <=  S_CALC  ;endenddefault :beginnext_state  <=  IDLE    ;endendcaseendassign  busy        =   out_busy        ;assign  enOut       =   out_enOut       ;assign  warning     =   out_warning     ;assign  quotient    =   out_quotient    ;assign  remainder   =   out_remainder   ;endmodule

tb

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2025/04/15 15:24:32
// Design Name: 
// Module Name: tb_divide_1
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module tb_divide_1();reg                     sys_clk         ;reg                     sys_rst_n       ;       reg                     enIn            ;reg  [7:0]              dividend        ;reg  [3:0]              divisor         ;wire                    busy            ;wire                    enOut           ;wire                    warning         ;wire [7:0]              quotient        ;wire [3:0]              remainder       ;initialbeginsys_clk     =   1'b0    ;sys_rst_n   =   1'b0    ;enIn        =   1'b0    ;dividend    =   8'b0    ;divisor     =   4'b0    ;#50enIn        =   1'b1    ;dividend    =   8'd110  ;divisor     =   4'd10   ; sys_rst_n   =   1'b1    ; #20enIn        =   1'b0    ;#200$finish ;      endalways #5beginsys_clk =   ~sys_clk    ;enddivide_1        divide_1_inst(.sys_clk         (sys_clk),.sys_rst_n       (sys_rst_n),       .enIn            (enIn),.dividend        (dividend),.divisor         (divisor),.busy            (busy),.enOut           (enOut),.warning         (warning),.quotient        (quotient),.remainder       (remainder));endmodule

 

         但是这种做法运算一次最多需要256的clk,所以需要减小消耗的实现

2、可变系数除法实现----利用除法的竖式求解

3、可变系数除法实现----利用乘法实现除法

相关文章:

Verilog的整数除法

1、可变系数除法实现----利用除法的本质 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2025/04/15 13:45:39 // Design Name: // Module Name: divide_1 // Project Name: // Target Devices: // Tool Versions: // Description: // // Depe…...

C++ | STL之list详解:双向链表的灵活操作与高效实践

引言 std::list 是C STL中基于双向链表实现的顺序容器&#xff0c;擅长高效插入和删除操作&#xff0c;尤其适用于频繁修改中间元素的场景。与std::vector不同&#xff0c;std::list的内存非连续&#xff0c;但提供了稳定的迭代器和灵活的元素管理。本文将全面解析std::list的…...

React 把一系列 state 更新加入队列

把一系列 state 更新加入队列 设置组件 state 会把一次重新渲染加入队列。但有时你可能会希望在下次渲染加入队列之前对 state 的值执行多次操作。为此&#xff0c;了解 React 如何批量更新 state 会很有帮助。 开发环境&#xff1a;Reacttsantd 学习内容 什么是“批处理”以…...

【大模型理论篇】Search-R1: 通过强化学习训练LLM推理与利⽤搜索引擎

最近基于强化学习框架来实现大模型在推理和检索能力增强的项目很多&#xff0c;也是Deep Research技术持续演进的缩影。之前我们讨论过《R1-Searcher:通过强化学习激励llm的搜索能⼒》&#xff0c;今天我们分析下Search-R1【1】。 1. 研究背景与问题 ⼤模型&#xff08;LLM&a…...

Google政策大更新:影响金融,新闻,社交等所有类别App

Google Play 4月10日 迎来了2025年第一次大版本更新&#xff0c;新政主要涉及金融&#xff08;个人贷款&#xff09;&#xff0c;新闻两个行业。但澄清内容部分却使得所有行业都需进行一定的更新。下面&#xff0c;我们依次从金融&#xff08;个人贷款&#xff09;&#xff0c;…...

什么时候触发full GC(发生场景)

文章目录 1. 老年代空间不足2. 分配担保失败3. 显式调用`System.gc()`4. 元空间/永久代空间不足5. CMS/G1的并发失败6. 空间分配担保机制7. 堆内存碎片化8. 其他场景总结回答在Java中,Full GC(全局垃圾回收)会回收整个堆内存(包括年轻代、老年代)以及元空间(或永久代)。…...

NO.93十六届蓝桥杯备战|图论基础-拓扑排序|有向无环图|AOV网|摄像头|最大食物链计数|杂物(C++)

有向⽆环图 若⼀个有向图中不存在回路&#xff0c;则称为有向⽆环图(directed acycline graph)&#xff0c;简称 DAG 图 AOV⽹ 举⼀个现实中的例⼦&#xff1a;课程的学习是有优先次序的&#xff0c;如果规划不当会严重影响学习效果。课程间的先后次序可以⽤有向图表⽰ 在…...

每日文献(十三)——Part one

今天看的是《RefineNet: Iterative Refinement for Accurate Object Localization》。 目录 零、摘要 0.1 原文 0.2 译文 一、介绍 二、RefineNet A. Fast R-CNN B. Faster R-CNN C. RefineNet 训练 D. RefineNet 测试 零、摘要 0.1 原文 We investigate a new str…...

游戏引擎学习第225天

只能说太难了 回顾当前的进度 我们正在进行一个完整游戏的开发&#xff0c;并在直播中同步推进。上周我们刚刚完成了过场动画系统的初步实现&#xff0c;把开场动画基本拼接完成&#xff0c;整体效果非常流畅。看到动画顺利呈现&#xff0c;令人十分满意&#xff0c;整个系统…...

git提取出指定提交所涉及的所有文件

当需要提取出某次提交所修改过的所有的文件时&#xff0c;可以使用如下命令&#xff0c;该命令来自文心一言 mkdir temp_dir git diff-tree --no-commit-id --name-only -r <commit-hash> | xargs -I {} cp --parents {} temp_dir/--no-commit-id&#xff1a;不显示提交…...

Linux 使用Nginx搭建简易网站模块

网站需求&#xff1a; 一、基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab ​ 二、给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于[www.openlab.com/student](http://www.openlab.com/stud…...

抖音ai无人直播间助手场控软件

获取API权限 若使用DeepSeek官方AI服务&#xff0c;登录其开发者平台申请API Key或Token。 若为第三方AI&#xff08;如ChatGPT&#xff09;&#xff0c;需通过接口文档获取访问权限。 配置场控软件 打开DeepSeek场控软件&#xff0c;进入设置界面找到“AI助手”或“自动化”…...

深度解析Redis过期字段清理机制:从源码到集群化实践 (二)

本文紧跟 上一篇 深度解析Redis过期字段清理机制&#xff1a;从源码到集群化实践 &#xff08;一&#xff09; 可以从redis合集中查看 八、Redis内核机制深度解析 8.1 Lua脚本执行引擎原理 Lua脚本执行流程图技术方案 ​​执行全流程解析&#xff1a;​ #mermaid-svg-X51Gno…...

TCP标志位抓包

说明 TCP协议的Header信息&#xff0c;URG、ACK、PSH、RST、SYN、FIN这6个字段在14字节的位置&#xff0c;对应的是tcp[13]&#xff0c;因为字节数是从[0]开始数的&#xff0c;14字节对应的就是tcp[13]&#xff0c;因此在抓这几个标志位的数据包时就要明确范围在tcp[13] 示例1…...

如何实现动态请求地址(baseURL)

需求: 在项目中遇到了需要实时更换请求地址,后续使用修改后的请求地址(IP) 例如:原ip请求为http://192.168.1.1:80/xxx,现在需要你点击或其他操作将其修改为http://192.168.1.2:80/xxx,该如何操作 tips: 修改后需要跳转( 修改了IP之前的不可使用,需要访问修改后的地址来操作 …...

封装一个搜索区域 SearchForm.vue组件

父组件 <template><div><SearchForm:form-items"searchItems":initial-values"initialValues"search"handleSearch"reset"handleReset"><!-- 自定义插槽内容 --><template #custom-slot"{ form }&qu…...

《ADVANCING MATHEMATICAL REASONING IN LAN- GUAGE MODELS》全文阅读

《ADVANCING MATHEMATICAL REASONING IN LAN- GUAGE MODELS: THE IMPACT OF PROBLEM-SOLVING DATA, DATA SYNTHESIS METHODS, AND TRAINING STAGES》全文阅读 提升语言模型中的数学推理能力&#xff1a;问题求解数据、数据合成方法及训练阶段的影响 \begin{abstract} 数学推…...

Day56 | 99. 恢复二叉搜索树、103. 二叉树的锯齿形层序遍历、109. 有序链表转换二叉搜索树、113. 路径总和 II

99. 恢复二叉搜索树 题目链接&#xff1a;99. 恢复二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 题目难度&#xff1a;中等 代码&#xff1a; class Solution {public void recoverTree(TreeNode root) {List<TreeNode> listnew ArrayList<>();dfs(root,…...

GPT - GPT(Generative Pre-trained Transformer)模型框架

本节代码主要为实现了一个简化版的 GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型。GPT 是一种基于 Transformer 架构的语言生成模型&#xff0c;主要用于生成自然语言文本。 1. 模型结构 初始化部分 class GPT(nn.Module):def __init__(self, vocab…...

前端加密的几种方式

前端加密的几种方式 一、对称加密原理‌常用算法代码示例&#xff08;AES&#xff09;适用场景‌ 二、非对称加密原理‌常用算法‌代码示例&#xff08;RSA)‌适用场景‌ 三、哈希函数‌原理‌常用算法‌‌代码示例&#xff08;SHA-256&#xff09;适用场景‌ 四、Base64 编码原…...

贪心算法:部分背包问题深度解析

简介&#xff1a; 该Java代码基于贪心算法实现了分数背包问题的求解&#xff0c;核心通过单位价值降序排序和分阶段装入策略实现最优解。首先对Product数组执行双重循环冒泡排序&#xff0c;按wm(价值/重量比)从高到低重新排列物品&#xff1b;随后分两阶段装入&#xff1a;循环…...

连接器电镀层的作用与性能

连接器电镀层的作用与性能&#xff1a; 镀金 金具有很高的化学稳定性&#xff0c;只溶于王水&#xff0c;不溶于其它酸&#xff0c;金镀层耐蚀性强&#xff0c;导电性好&#xff0c;易于焊接&#xff0c;耐高温&#xff0c;硬金具有一定的耐磨性。 对钢、铜、银及其合金基体而…...

神经网络如何表示数据

神经网络是如何工作的&#xff1f;这是一个让新手和专家都感到困惑的问题。麻省理工学院计算机科学和人工智能实验室&#xff08;CSAIL&#xff09;的一个团队表示&#xff0c;理解这些表示&#xff0c;以及它们如何为神经网络从数据中学习的方式提供信息&#xff0c;对于提高深…...

【双指针】和为 s 的两个数字(easy)

和为 s 的两个数字&#xff08;easy&#xff09; 题⽬描述&#xff1a;解法⼀&#xff08;暴⼒解法&#xff0c;会超时&#xff09;&#xff1a;解法⼆&#xff08;双指针 - 对撞指针&#xff09;&#xff1a;算法思路&#xff1a;C 算法代码Java 算法代码&#xff1a; 题⽬链接…...

.net core 工作流介绍

WikeFlow2.0介绍 WikeFlow官网&#xff1a;http://www.wikesoft.com WikeFlow学习版演示地址&#xff1a;http://workflow.wikesoft.com WikeFlow学习版源代码下载&#xff1a;WorkFlow: 多数据库支持&#xff0c;同时支持&#xff1a;SQLServer&#xff0c;Mysql&#xff0…...

nginx自编译重现gzip和chunked的现象

前言 最近做项目&#xff0c;发现一个比较好玩的事&#xff0c;nginx的module gzip模式默认支持1KB压缩&#xff0c;和chunked返回&#xff0c;本来现在的很多框架都很完善了&#xff0c;但是&#xff0c;一些新语言框架或者一些老旧框架会不能完整支持chunked&#xff0c;导致…...

jspm企业采购管理系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 相比于以前的传统企业采购手工管理方式&#xff0c;智能化的管理方式可以大幅降低企业采购管理的运营人员成本&#xff0c;实现了企业采购管理的标准化、制度化、程序化的管理&#xff0c;有效地防止了物资信息、物资入库、出库等的随意管理&#xff0c;提高了信息的处理…...

iOS应用开发指南

开发一款iOS应用是一个系统化的过程&#xff0c;涵盖从环境搭建、界面设计、编码实现到测试发布的各个环节。以下是一份面向初学者的iOS移动应用开发指南&#xff0c;帮助你从零开始构建自己的App。 一、准备工作&#xff1a;开发环境与工具 必备设备 Mac电脑&#xff1a;iO…...

Go之defer关键字:优雅的资源管理与执行控制

在Go语言中&#xff0c;defer关键字是处理资源释放、错误恢复和代码逻辑清理的利器。它看似简单&#xff0c;却隐藏着许多设计哲学和底层机制。本文将深入剖析defer的执行原理、使用场景和常见陷阱&#xff0c;助你掌握这一关键特性。 一、defer基础&#xff1a;延迟执行的本质…...

现代测试自动化框架教程:Behave接口测试与Airtest移动端UI自动化

前言 我发现每天还是陆陆续续有人在看我之前写的自动化框架搭建的文档&#xff1b;即使很早就有新的框架&#xff0c;更好的选择出来了&#xff1b;所以特别写了这一篇目前大厂也在使用的&#xff1b;日活400w有实际落地的自动化测试架构方案&#xff1b; 随着测试技术…...