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、可變系數除法實現----利用乘法實現除法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77456.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77456.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77456.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UniApp + Cursor + Devbox 全欄平臺開發教程:從0到完整項目打造

本文基于B站熱門教程《一口氣學會小程序 / App / H5開發:UniApp教程 + Cursor + Devbox》,https://www.bilibili.com/video/BV1W7QZYMEus/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=a1428945043b2df41c1896acb90d942a,進行全面擴展…

ESP32-idf學習(一)搭建環境和點燈

一、前言 先說一下查到的數據&#xff08;不保證準確&#xff09;&#xff1a; 1、連續四年Wi-Fi MCU全球市場份額第一&#xff0c;產品應用于智能家居、工業自動化、醫療健康等泛IoT領域?&#xff0c;2024 年營收突破 20 億元&#xff08;同比 40%&#xff09;&#xff0c;…

hooker frida版just_trust_me.js 2025升級 支持boringssl unpinning

曾幾何時&#xff0c;我翻版了 Xposed 的 just_trust_me.apk&#xff0c; just_trust_me.js 腳本仿佛是一張通行證&#xff0c;讓我們在 SSL Pinning 的高墻前輕松穿越。 但時代變了。BoringSSL、Cronet、靜態 inline hook、動態 verify callback……一切都變得更加隱蔽和棘手…

通信算法之269 : OFDM信號的循環自相關特性用于無人機圖傳信號識別

OFDM信號的循環自相關特性是其循環平穩性的核心體現,如下: [相關仿真代碼,聯系,提供] 一、循環自相關特性來源 ?循環前綴引入周期性? OFDM符號通過添加循環前綴(CP)形成符號周期結構,導致信號具有循環平穩性?26。每個符號的CP與尾部數據重復,在時延等于FFT長度(N…

vue3環境搭建、nodejs22.x安裝、yarn 1全局安裝、npm切換yarn 1、yarn 1 切換npm

vue3環境搭建 node.js 安裝 驗證nodejs是否安裝成功 # 檢測node.js 是否安裝成功----cmd命令提示符中執行 node -v npm -v 設置全局安裝包保存路徑、全局裝包緩存路徑 在node.js 安裝路徑下 創建 node_global 和 node_cache # 設置npm全局安裝包保存路徑&#xff08;新版本…

基于尚硅谷FreeRTOS視頻筆記——6—滴答時鐘—上下文切換

FreeRTOS滴答 FreeRTOS需要有一個時鐘參照&#xff0c;并且這個時鐘不會被輕易打斷&#xff0c;所以最好選擇systick 為什么需要時間參照 就是在高優先級任務進入阻塞態后&#xff0c;也可以理解為進入delay&#xff08;&#xff09;函數后&#xff0c;需要有一個時間參照&…

使用最新threejs復刻經典貪吃蛇游戲的3D版,附完整源碼

基類Entity 建立基類Entity&#xff0c;實現投影能力、動畫入場效果&#xff08;從小變大的彈性動畫&#xff09;、計算自己在地圖格位置的方法。 // 導入gsap動畫庫&#xff08;用于創建補間動畫&#xff09; import gsap from gsap// 定義Entity基類 export default class …

Redis——網絡模型之IO講解

目錄 前言 1.用戶空間和內核空間 1.2用戶空間和內核空間的切換 1.3切換過程 2.阻塞IO 3.非阻塞IO 4.IO多路復用 4.1.IO多路復用過程 4.2.IO多路復用監聽方式 4.3.IO多路復用-select 4.4.IO多路復用-poll 4.5.IO多路復用-epoll 4.6.select poll epoll總結 4.7.IO多…

Jenkins 多分支流水線: 如何創建用于 Jenkins 狀態檢查的 GitHub 應用

使用 Jenkins 多分支流水線時&#xff0c;您可以將狀態檢查與 GitHub 拉取請求集成。 以下是狀態檢查的示例 要實現這些類型的狀態檢查&#xff0c;您需要創建一個與 Jenkins 主實例集成的 GitHub 應用。 在本博客中&#xff0c;我們將介紹如何創建一個 GitHub 應用&#xff…

大模型如何突破“知識盲區”?一場靜悄悄的技術革命正在發生

大模型如何突破“知識盲區”&#xff1f;一場靜悄悄的技術革命正在發生 凌晨三點&#xff0c;程序員李然盯著屏幕上的報錯信息苦笑。他正在調試的智能客服系統&#xff0c;又一次把"北京今日體感溫度"回答成了"建議穿羽絨服"。這不是代碼錯誤&#xff0c;…

【SQL Server】數據探查工具1.0研發可行性方案

&#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 想搶先解鎖數據自由的寶子&#xff0c;速速戳我&#xff01;評論區蹲一波 “蹲蹲”&#xff0c;揪人嘮嘮你的超實用需求&#xff01; 【SQL Server】數據探查工具1.0研發可行性方案…

Qt GUI 庫總結

Qt GUI 庫總結 Qt GUI 庫&#xff08;QtGui&#xff09;是 Qt 框架中負責圖形用戶界面&#xff08;GUI&#xff09;開發的核心模塊。本文將一步步詳解 QtGui&#xff0c;從基礎入門到高級應用&#xff0c;幫助你全面掌握其功能。以下內容包括環境配置、基本功能、核心特性及進…

如何在米爾-STM32MP257開發板上部署環境監測系統

本文將介紹基于米爾電子MYD-LD25X開發板&#xff08;米爾基于STM35MP257開發板&#xff09;的環境監測系統方案測試。 摘自優秀創作者-lugl4313820 一、前言 環境監測是當前很多場景需要的項目&#xff0c;剛好我正在論壇參與的一個項目&#xff1a;Thingy:91X 蜂窩物聯網原型…

網絡互連與互聯網3

1.SMTP簡單郵件傳輸協議&#xff0c;用于發送電子郵件&#xff0c;默認情況下是明文傳輸&#xff0c;沒有加密機制。 SSL是一種安全協議&#xff0c;對電子郵件進行加密傳輸。 POP3主要用于接收電子郵件 IMAP用于接收電子郵件 2.采用存儲-轉發方式處理信號的設備是交換機 …

DICOM通訊(ACSE->DIMSE->Worklist)

DICOM 通訊協議中的 ACSE → DIMSE → Worklist 這條通訊鏈路。DICOM 通訊棧本身是一個多層的協議結構&#xff0c;就像 OSI 模型一樣&#xff0c;逐層封裝功能。 一、DICOM 通訊協議棧總體架構 DICOM 通訊使用 TCP/IP 建立連接&#xff0c;其上面封裝了多個協議層次&#xf…

優化自旋鎖的實現

在《C11實現一個自旋鎖》介紹了分別使用TAS和CAS算法實現自旋鎖的方案&#xff0c;以及它們的優缺點。TAS算法雖然實現簡單&#xff0c;但是因為每次自旋時都要導致一場內存總線流量風暴&#xff0c;對全局系統影響很大&#xff0c;一般都要對它進行優化&#xff0c;以降低對全…

Excel 中讓表格內容自適應列寬和行高

Excel 中讓表格內容自適應列寬和行高 目錄 Excel 中讓表格內容自適應列寬和行高自適應列寬自適應行高在Excel中讓表格內容自適應列寬和行高,可參考以下操作: 自適應列寬 方法一:手動調整 選中需要調整列寬的列(如果是整個表格,可點擊表格左上角行號和列號交叉處的三角形全…

JWT令牌:實現安全會話跟蹤與登錄認證的利器

摘要&#xff1a;本文深入探討了JWT令牌在實現會話跟蹤和登錄認證方面的應用&#xff0c;詳細介紹了JWT令牌的概念、組成、生成與校驗方法&#xff0c;以及在實際案例中如何通過JWT令牌進行會話跟蹤和登錄認證的具體實現步驟&#xff0c;為系統的安全認證機制提供了全面且深入的…

Mybtis和Mybatis-Plus區別

MyBatis 和 MyBatis-Plus 是 Java 中常用的持久層框架&#xff0c;MyBatis-Plus 是在 MyBatis 基礎上增強的工具包&#xff0c;讓開發更便捷、高效。下面是兩者主要的區別&#xff1a; ? 核心區別總結&#xff1a; 特性MyBatisMyBatis-Plus配置復雜度需要手寫大量 XML 或注解…

JavaScript 性能優化實戰

一、代碼執行效率優化 1. 減少全局變量的使用 全局變量在 JavaScript 中會掛載在全局對象(瀏覽器環境下是window,Node.js 環境下是global)上,頻繁訪問全局變量會增加作用域鏈的查找時間。 // 反例:使用全局變量 var globalVar = example; function someFunction() {con…