Verilog 无符号乘法器
目录
32位简易乘法器,乘数和部分积右移
32位简易乘法器,被乘数左移
32位简易乘法器,乘数和部分积右移
//
//
//创建日期:2022/10/04 08:00:00
//设计名称:32位简易乘法器,乘数和部分积右移
//课程名称:multiplication
//说明:输入时钟clk,乘法开始信号mult_begin,
// 输入32位operand1,32位operand2
// 输出64位result,乘法结束信号mult_end
//依赖项:
//
//版次:
//版本0.01-文件已创建
//其他注释:
//
//module multiplication(clk,mult_begin,operand1,operand2,result,mult_end);input clk; // 时钟input mult_begin; // 乘法开始信号input [31:0] operand1; // 操作数1input [31:0] operand2; // 操作数2output[63:0] result; // 输出output mult_end; // 乘法结束信号reg [63:0] result; // 储存结果reg mult_valid = 0; // 乘法进行信号reg mult_end = 0; // 乘法结束信号reg [31:0] M; // 被乘数reg [31:0] Q; // 乘数reg [31:0] A; // 部分积reg C = 0; // 储存加法器进位 reg [4:0] i=8'b0; // 计数,控制循环步骤// 控制乘法开始和初始化always @(posedge clk) // 当时钟遇到上升沿begin// 如果乘法未开始,乘法进行信号置0if (!mult_begin)beginmult_valid <= 1'b0;endelse// 否则乘法进行信号置1begin// 如果之前没在进行(这是开始后第一个上升沿)if(mult_valid ==1'b0)begin// 初始化M<=operand1; // 被乘数Q<=operand2; // 乘数A<=32'b0; // 部分积i<=1'b0; // 计数mult_end<=0; // 乘法停止end// 开始乘法mult_valid <= 1'b1;endend// 控制 乘法always @(posedge clk) // 当时钟遇到上升沿begin//乘法正在运行if(mult_valid&&~mult_end)beginif(Q[0])begin{C,A}=M+A; // 阻塞赋值加法end// 移位{A,Q}={A,Q}>>1;endend// 控制 ialways @(posedge clk) // 当时钟遇到上升沿begin//乘法正在运行if(mult_valid&&~mult_end)begini<=i+1;// 结束if(i==5'b11111)beginresult <= {A,Q};mult_end <= 1'b1;endendend
endmodule
32位简易乘法器,被乘数左移
//
//
//创建日期:2022/10/04 11:49:21
//设计名称:32位简易乘法器,被乘数左移
//课程名称:multiplication
//说明:输入时钟clk,乘法开始信号mult_begin,
// 输入32位operand1,32位operand2
// 输出64位result,乘法结束信号mult_end
//依赖项:
//
//版次:
//版本0.01-文件已创建
//其他注释:
//
//module multiplication1(clk,mult_begin,operand1,operand2,result,mult_end);input clk; // 时钟input mult_begin; // 乘法开始信号input [31:0] operand1; // 操作数1input [31:0] operand2; // 操作数2output[63:0] result; // 输出output mult_end; // 乘法结束信号reg [63:0] result; // 储存结果reg mult_valid = 0; // 乘法进行信号reg mult_end = 0; // 乘法结束信号reg [63:0] M; // 被乘数reg [31:0] Q; // 乘数reg [4:0] i=8'b0; // 计数,控制循环步骤// 控制乘法开始和初始化always @(posedge clk) // 当时钟遇到上升沿begin// 如果乘法未开始,乘法进行信号置0if (!mult_begin)beginmult_valid <= 1'b0;endelse// 否则乘法进行信号置1begin// 如果之前没在进行(这是开始后第一个上升沿)if(mult_valid ==1'b0)begin// 初始化M<=operand1; // 被乘数Q<=operand2; // 乘数result<=64'b0; // 积i<=1'b0; // 计数mult_end<=0; // 乘法停止end// 开始乘法mult_valid <= 1'b1;endend// 控制 乘法always @(posedge clk) // 当时钟遇到上升沿begin//乘法正在运行if(mult_valid&&~mult_end)beginif(Q[0])beginresult=result+M; // 阻塞赋值加法end// 移位Q<=Q>>1;M<=M<<1;endend// 控制 ialways @(posedge clk) // 当时钟遇到上升沿begin//乘法正在运行if(mult_valid&&~mult_end)begini<=i+1;// 结束if(i==5'b11111)beginmult_end <= 1'b1;endendend
endmodule
Verilog 无符号乘法器相关推荐
- Verilog无符号除法器-流水线实现
文章目录 1.运算模块 2.测试模块 3.仿真结果 4.总结 在前一篇文章中提到了除法器模块的状态机实现,状态机实现可以使用最少的资源实现除法功能,随之带来的是每次只能运算一次结果,下一次除法运算需 ...
- Verilog -- 有符号与无符号的加法和乘法运算
目录 Verilog中有符号与无符号的加法和乘法运算 无符号乘法和加法 有符号乘法和加法 有符号和无符号运算 参考: https://blog.csdn.net/vivid117/article/de ...
- 计算机组成原理5位无符号阵列乘法器
计算机组成原理5位无符号阵列乘法器 话说我们学校上课是讲的啥啊根本听不懂...是我理解能力不行好吧,只能自己下来再努力上网找资料学习.今天咱就是说来浅浅学习一下5位无符号阵列乘法器. 首先上电路图 很 ...
- Verilog有符号和无符号运算设计分析
主要内容是对有符号数和无符号数在设计时,数据是怎样传递的,符号位是怎样来的,以及相关的几种运算设计应当遵循怎样的想法. 最近对加减乘除运算很困惑,主要是对于有符号数的运算的困扰,如果运算出现负数怎么办 ...
- Verilog除法器(32位无符号+带符号)
32位无符号除法器设计 恢复余数法: 恢复余数除法的基本思路是从"部分余数"中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0. 寄存器使用: reg_r 存放被除数a ...
- verilog - signed 符号数与无符号
#verilog #FPGA verilog - signed 符号数与无符号数计算 文章目录 verilog - signed 符号数与无符号数计算 原码 .反码 . 补码的关系 verilog 中 ...
- 计算机系统基础实验 - 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示
实验3 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 实验序号:3 实验名称:同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 适用专业:软件工程 学 时 数:2学时 一.实验目的 1 ...
- 对verilog中有符号数和无符号数的理解
文章目录 对verilog中有符号数和无符号数的理解 对verilog中有符号数和无符号数的理解 verilog中使用signed表示有符号数,比如: wire signed [7:0] din; ...
- Verilog有符号数与无符号数的相互转化
Verilog有符号数与无符号数的相互转化 最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下. 问题描述 一.正数 二. ...
最新文章
- eclipse 出现user operation is waiting
- Centos6.6下安装配置Redmine详解
- UE4 材质:石缝提高混合权重
- Python应用实战-用Python爬取数据分析岗位信息并可视化分析
- c++查找pair,使用map,unordered_map,vector
- js实现审批流_小程序瀑布流组件:支持翻页与图片懒加载
- 如何解压POSIX tar archive文件
- Centos VIM 配置
- 下载EPM包详细运行日志
- 在云面前,为何Cisco,Dell和HP都是Loser
- 共同富裕、乡村振兴专题:基尼系数、恩格尔系数、泰尔指数-数据大全整理
- SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了
- C语言oj统计衣服尺寸,如何测量衣服尺寸?
- 嵌入式linux开发环境搭建(VMware16.0.0+Ubuntu16.04.3_X64)
- Prim算法的具体实现
- Mysql复制表两种方式(复制表结构、复制表结构和数据、复制表中的部分数据、复制表中的部分数据并起别名)
- 做完近视手术应该注意什么?近视术后护理攻略请你收下
- BeautifulSoup详解
- 水煮三国(二) 能把梳子卖给和尚吗
- 世界500强名称中英对照1-100名单