目录

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 无符号乘法器相关推荐

  1. Verilog无符号除法器-流水线实现

    文章目录 1.运算模块 2.测试模块 3.仿真结果 4.总结  在前一篇文章中提到了除法器模块的状态机实现,状态机实现可以使用最少的资源实现除法功能,随之带来的是每次只能运算一次结果,下一次除法运算需 ...

  2. Verilog -- 有符号与无符号的加法和乘法运算

    目录 Verilog中有符号与无符号的加法和乘法运算 无符号乘法和加法 有符号乘法和加法 有符号和无符号运算 参考: https://blog.csdn.net/vivid117/article/de ...

  3. 计算机组成原理5位无符号阵列乘法器

    计算机组成原理5位无符号阵列乘法器 话说我们学校上课是讲的啥啊根本听不懂...是我理解能力不行好吧,只能自己下来再努力上网找资料学习.今天咱就是说来浅浅学习一下5位无符号阵列乘法器. 首先上电路图 很 ...

  4. Verilog有符号和无符号运算设计分析

    主要内容是对有符号数和无符号数在设计时,数据是怎样传递的,符号位是怎样来的,以及相关的几种运算设计应当遵循怎样的想法. 最近对加减乘除运算很困惑,主要是对于有符号数的运算的困扰,如果运算出现负数怎么办 ...

  5. Verilog除法器(32位无符号+带符号)

    32位无符号除法器设计 恢复余数法: 恢复余数除法的基本思路是从"部分余数"中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0. 寄存器使用: reg_r 存放被除数a ...

  6. verilog - signed 符号数与无符号

    #verilog #FPGA verilog - signed 符号数与无符号数计算 文章目录 verilog - signed 符号数与无符号数计算 原码 .反码 . 补码的关系 verilog 中 ...

  7. 计算机系统基础实验 - 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示

    实验3 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 实验序号:3 实验名称:同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 适用专业:软件工程 学 时 数:2学时 一.实验目的 1 ...

  8. 对verilog中有符号数和无符号数的理解

    文章目录 对verilog中有符号数和无符号数的理解 对verilog中有符号数和无符号数的理解 ​ verilog中使用signed表示有符号数,比如: wire signed [7:0] din; ...

  9. Verilog有符号数与无符号数的相互转化

    Verilog有符号数与无符号数的相互转化 最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下. 问题描述 一.正数 二. ...

最新文章

  1. eclipse 出现user operation is waiting
  2. Centos6.6下安装配置Redmine详解
  3. UE4 材质:石缝提高混合权重
  4. Python应用实战-用Python爬取数据分析岗位信息并可视化分析
  5. c++查找pair,使用map,unordered_map,vector
  6. js实现审批流_小程序瀑布流组件:支持翻页与图片懒加载
  7. 如何解压POSIX tar archive文件
  8. Centos VIM 配置
  9. 下载EPM包详细运行日志
  10. 在云面前,为何Cisco,Dell和HP都是Loser
  11. 共同富裕、乡村振兴专题:基尼系数、恩格尔系数、泰尔指数-数据大全整理
  12. SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了
  13. C语言oj统计衣服尺寸,如何测量衣服尺寸?
  14. 嵌入式linux开发环境搭建(VMware16.0.0+Ubuntu16.04.3_X64)
  15. Prim算法的具体实现
  16. Mysql复制表两种方式(复制表结构、复制表结构和数据、复制表中的部分数据、复制表中的部分数据并起别名)
  17. 做完近视手术应该注意什么?近视术后护理攻略请你收下
  18. BeautifulSoup详解
  19. 水煮三国(二) 能把梳子卖给和尚吗
  20. 世界500强名称中英对照1-100名单

热门文章

  1. 怎么样才能做C语言项目?
  2. guess soldes prix cela est inutile
  3. 500款LOGO素材PSD源码
  4. python路6__code,fileoperator
  5. 格力空调有董明珠,安吉尔净水器有孔娜?
  6. 诚信通店铺排名如何做,分享给大家
  7. 易基因:MeRIP-seq等揭示m6A甲基化修饰对抗病毒基因表达的转录调控机制|Cell Rep
  8. zepto ajax php实例,读Zepto源码之Ajax模块
  9. react+react-beautiful-dnd实例代办事项
  10. IDEA代码重构小技巧(VIP典藏版)