【【verilog 典型電路設計之加法器樹乘法器】】

verilog 典型電路設計之加法器樹乘法器

加法器樹乘法器
加法器樹乘法器的設計思想是“移位后加”,并且加法運算采用加法器樹的形式。乘法運算的過程是,被乘數與乘數的每一位相乘并且乘以相應的權值,最后將所得的結果相加,便得到了最終的乘法結果。
在這里插入圖片描述
首先我們明確一個觀點 進行4位數乘法應該來說是最多會得到 8 位
因為4位數最大是15 15乘15得到的是225 在可控制的 128 到 256 之間 所以我們基本確定 臨時變量選取為【7:0】 即可
然后下一步我們通過實際例子來確定乘法器簡單的邏輯
比如 兩個數 1001 乘 1010
在這里插入圖片描述
我們觀察可知得到【6:0】 完全可以用[7:0]去覆蓋 還有 得到的四位暫存下來就是0 乘1001 1乘1001 0 乘1001 1乘1001
每一個進行小移位之后相加 即可
四位暫存數,就好比 第一位確定的是[3:0] 第二位確定的是[4:1] 第三位是[5:2] 第四位是[6:3] 在面對是[7:0]中 我們可以采取在其他位補0 的做法 保證它的適用性

以下是verilog的代碼

module mul_addtree(mul_a,mul b,mul_out);
input[3:0] mul_a,mul_b;
wire[7:0] mul_out;
wire[7:0] stored0,stored1,stored2,stored3;
wire[7:0] add01, add23;
assign
stored3=mul_b[3]?{1'b0,mul_a,3'b0}:8'b0;
assign
stored2=mul_b[2]?{2'b0,mul_a,2'b0}:8'bo;
assign
stored1=mul_b[1]?{3'b0,mul_a,1'b0}:8'b0;
assignstored0=mul_b[0]?{4'b0,mul_a}:8'b0;
assign add01=stored1+stored0;
assign add23=stored3+stored2;
assign mul_out=add01+add23;
endmodule

接下來
寫下testbench

module mult_addtree_tb;
reg [3:0]mult_a;
reg [3:0]mult_b;
wire [7:0]mult_out;
mul_addtreeU1(.mul_a(mult_a),.mul_b(mult_b),.mul_out(mult_out));
initial
begin
mult_a=0; 
mult_b=0;
repeat(9)
begin
#20 
mult_a=mult_a+1;
mult_b=mult_b+1;
end
end

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

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

相關文章

mongodb:環境搭建

mongodb 是什么? MongoDB是一款為web應用程序和互聯網基礎設施設計的數據庫管理系統。沒錯MongoDB就是數據庫,是NoSQL類型的數據庫 為什么要用mongodb? (1)MongoDB提出的是文檔、集合的概念,使用BSON&am…

【Go】常見的四個內存泄漏問題

Goroutine沒有順利結束 1、這里更多的是由于channelforselect導致的,錯誤的寫法導致了發送者或接收者沒有發現channel已經關閉,任務已經結束了,卻仍然在嘗試輸入輸出https://geektutu.com/post/hpg-exit-goroutine.html Map的remove方法不會…

selenium.webdriver Python爬蟲教程

文章目錄 selenium安裝和使用 selenium安裝和使用 pip install selenium 下載對應的瀏覽器驅動 實例化瀏覽器 from selenium import webdriverbrowser webdriver.Chrome()元素定位 控制瀏覽器

HTB-Keeper

HTB-Keeper 信息收集80端口 lnorgaardroot 信息收集 80端口 80主頁給了一個跳轉的鏈接 跟隨鏈接后到了一個登陸界面。 嘗試搜索默認密碼。 通過賬號root:password登錄。不知道為什么我登陸了兩次才成功。 通過搜索在Admin->Users->Select里面發現了用戶信息。 lno…

WS2812B————動/靜態顯示

一,系統架構 二,芯片介紹 1.管腳說明 2.數據傳輸時間 3.時序波形 4.數據傳輸方法 5.常用電路連接 三,代碼展示及說明 驅動模塊 在驅動模塊首先選擇使用狀態機,其中包括,空閑狀態,復位清空狀態&#xff0c…

怎么把圖片表格轉換成word表格?幾個步驟達成

在處理文檔時,圖片表格的轉換是一個常見的需求。而手動輸入表格是非常耗時的,因此,使用文本識別軟件來自動轉換圖片表格可以大大提高工作效率。在本文中,我們將介紹如何使用OCR文字識別技術來將圖片表格轉換為Word表格。 OCR文字識…

Vue3+Element plus+pageHelper實現分頁

安裝element plus npm install element-plus --save引入 修改main.js: import { createApp } from vue import App from ./App.vue import ElementPlus from element-plus import element-plus/dist/index.cssconst app createApp(App) app.use(ElementPlus) ap…

15.3 【Linux】循環執行的例行性工作調度

相對于 at 是僅執行一次的工作,循環執行的例行性工作調度則是由 cron (crond) 這個系統服務來控制的。剛剛談過 Linux 系統上面原本就有非常多的例行性工作,因此這個系統服務是默認啟動的。另外, 由于使用者自己也可以…

棧和隊列--受限制的線性表

目錄 和隊列的定義和特點 1.1棧的定義和特點、 1.2隊列的定義和特點 1.3棧和隊列的應用 2.棧的表示和操作的實現 2.1棧的類型定義 2.2順序棧的表示和實現 2.2.1初始化 2.2.2入棧 2.2.3出棧 2.2.4取棧頂元素 2.3鏈棧的表示和實現 2.2.1初始化 2.2.2入棧 2.2.3出棧…

Java-運算符和控制語句(下)(基于c語言的補充)

輸出到控制臺 System.out.println(msg); // 輸出一個字符串, 帶換行 System.out.print(msg); // 輸出一個字符串, 不帶換行 System.out.printf(format, msg); // 格式化輸出 從鍵盤輸入 使用 Scanner 讀取字符串/整數/浮點數 首先需要導入util包 自動導入util包 這里把回車看…

如何選擇最佳的文件傳輸協議?(FTP、TFTP、Raysync)

在數字化時代,通過互聯網傳輸文件是一項常見的任務。因此,選擇適合您企業需求的文件傳輸協議非常重要。 文件傳輸協議是發送方和接收方之間的一套規則和信息。它的作用就像網絡兩端都能理解的一種語言,使得數據可以正確輸出并帶有正確的文件…

【高頻面試題】JVM篇

文章目錄 一、JVM組成1.什么是程序計數器2.什么是Java堆?3.能不能介紹一下方法區(元空間)4.你聽過直接內存嗎5.什么是虛擬機棧6.垃圾回收是否涉及棧內存?7.棧內存分配越大越好嗎?8.方法內的局部變量是否線程安全?9.什么…

NIO 非阻塞式IO

NIO Java NIO 基本介紹 Java NIO 全稱 Java non-blocking IO,是指 JDK 提供的新 API。從 JDK1.4 開始,Java 提供了一系列改進的輸入/輸出的新特性,被統稱為 NIO(即 NewIO),是同步非阻塞的。NIO 相關類都被…

01-Spark環境部署

1 Spark的部署方式介紹 ? Spark部署模式分為Local模式(本地模式)和集群模式(集群模式又分為Standalone模式、Yarn模式和Mesos模式) 1.1 Local模式 Local模式常用于本地開發程序與測試,如在idea中 1.2 Standalone模…

PAT 1039 Course List for Student

個人學習記錄,代碼難免不盡人意。 Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the courses, you are supposed to output the registered course list for each student who comes for a query. …

netty學習分享 二

操作系統IO模型與實現原理 阻塞IO 模型 應用程序調用一個IO函數,導致應用程序阻塞,等待數據準備好。如果數據沒有準備好,一直等待….數據準備好了,從內核拷貝到用戶空間,IO函數返回成功指示。 當調用recv()函數時,系…

釉面陶瓷器皿SOR/2016-175標準上架亞馬遜加拿大站

親愛的釉面陶瓷器皿和玻璃器皿制造商和賣家,亞馬遜加拿大站將執行SOR/2016-175法規。這是一份新的法規,規定了含有鉛和鎘的釉面陶瓷器和玻璃器皿需要滿足的要求。讓我們一起來看一看,為什么要實行SOR/2016-175法規?這是一個保護消…

yolo源碼注釋3——模型配置文件

代碼基于yolov5 v6.0 目錄: yolo源碼注釋1——文件結構yolo源碼注釋2——數據集配置文件yolo源碼注釋3——模型配置文件yolo源碼注釋4——yolo-py 模型配置文件一般放在 models 文件夾下的 XXX.yaml 文件中,以 yolov5s.yaml 為例: # YOLOv…

使用SpringAop切面編程通過Spel表達式實現Controller權限控制

目錄 參考一、概念SpEL表達式 二、開發引入包定義注解定義切面定義用戶上下文 三、測試新建Service在方法上注解新建Service在類上注解運行 參考 SpringBoot:SpEL讓復雜權限控制變得很簡單 一、概念 對于在Springboot中,利用自定義注解切面來實現接口…

opencv實戰項目 手勢識別-手勢音量控制(opencv)

本項目是使用了谷歌開源的框架mediapipe,里面有非常多的模型提供給我們使用,例如面部檢測,身體檢測,手部檢測等。 手勢識別系列文章 1.opencv實現手部追蹤(定位手部關鍵點) 2.opencv實戰項目 實現手勢跟蹤…