首页 > 其他分享 >Verilog设计实现两个8位二进制数相乘

Verilog设计实现两个8位二进制数相乘

时间:2024-05-31 22:58:14浏览次数:27  
标签:product 0001 二进制 1111 相乘 Verilog out tb 255

乘法器的基本原理可以通过多种方法实现,例如移位相加法、查找表法等。在Verilog中,我们可以使用内建的乘法运算符“*”来实现乘法功能。

首先明确计算的范围。8位2进制1111_1111=255,所以两个8位二进制数的取值范围是0-255。考虑最大值255*255=65025=(1111_1110_0000_0001)2。所以输出结果最大值是16位二进制。

因此在定义输入端口时,应定义8位input[7:0] a,b;

在定义输出端口时,应定义16位output[15:0] out。

设计文件:

module test6(clk,a,b,out);
input clk;
input  [7:0] a,b;
output  [15:0] out;
assign out = a * b;

endmodule

		

测试文件:
 

module tb_test6;
    // 定义输入信号和期望的输出信号
    reg [7:0] a_tb, b_tb;
    wire [15:0] product_tb;

    // 实例化被测试的8位乘法器模块
    test6 my_est6 (
        .a(a_tb),
        .b(b_tb),
        .out(product_tb)
    );

    // 初始化和仿真时间控制
    initial begin  
        // 设置测试向量
        a_tb = 8'b1111_1111; // 输入A设为255
        b_tb = 8'b0000_0001; // 输入B设为1
        #10; // 等待10个时间单位,让信号稳定

        
        if (product_tb !== 16'b1111_1111_0000_0001) begin
            $display("Test Failed: Expected 16'b1111_1111_0000_0001, Got %b", product_tb);
            $finish;
        end else begin
            $display("Test Passed for inputs 255 and 1.");
        end

        #10 $finish;
    end
endmodule

测试波形:

标签:product,0001,二进制,1111,相乘,Verilog,out,tb,255
From: https://blog.csdn.net/jskwys/article/details/139348469

相关文章

  • 无法执行二进制文件:VScode 中的执行格式错误
    在此处输入图片描述Linux,VScode,C.文件pcl_digtest.elf:......
  • 【二进制部署k8s-1.29.4】一、安装前软件准备及系统初始化
    文章目录简介一.资源及软件准备1.1.机器资源信息1.2.软件列表1.2.网络规划1.2.安装路径二.系统初始化环境2.1.内核升级2.2.软件安装2.2.系统初始化2.2.内核模块配置2.3.内核参数优化简介本章节主要讲解在安装部署k8s-1.29.4环境之前的一些软件、环境调优的准备......
  • Verilog HDL中如何控制模块的调用与否
    VerilogHDL中如何控制模块的调用与否(实用)语言:VerilgHDLEDA工具:ISE、Vivado、QuartusIIVerilogHDL中如何控制模块的调用与否(实用)一、引言二、模块调用与否的几种方法1.注释2.使用预处理指令`ifdef3.使用generate语句三、结尾关键词:调用,VerilogHDL......
  • 二进制日志(bin log)
    binlog主要应用场景:一是用于数据恢复二是用于数据复制5.1查看默认情况查看记录二进制日志是否开启:在MySQL8中默认情况下,二进制文件是开启的。mysql>showvariableslike'%log_bin%';+---------------------------------+----------------------------------+|Variabl......
  • C++二进制文件的读写
    二进制文件的读取:voidTransformSession::generateData(conststd::string&filePath,std::vector<uint8_t>&data){std::ifstreamifs(filePath,std::ios::binary);if(!ifs){SPDLOG_ERROR("failedtoopenreadfile:{}",filePath);......
  • Ascii(256个) 编码表 完整码表 ASCII编码 ASCII表 ASCII码 二进制 十进制 八进制 十六进
    目录简介ASCII码表ASCII解释1.控制字符释义(0~31)2.ASCII扩展字符(128~255)ASCII的各种进制简介ascii(AmericanStandardCodeforInformationInterchange )美国信息交换标准代码。是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。等同于国际标准......
  • C语言---求一个整数存储在内存中的二进制中1的个数--3种方法
    //编写代码实现:求一个整数存储在内存中的二进制中1的个数//第一种写法/*intcount_bit_one(unsignedintn){intcount=0;while(n)//除到最后余数是0,那么这个循环就结束了{//这个题就是可以想成求15的二进制的过程//每次都除以2,余数为1的时候就......
  • 基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
    1.算法运行效果图预览vivado2019.2和matlab2022a测试,结果如下:    2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述​      图像质量的含义包括图像的逼真度和图像的可读懂性。所谓图像的逼真度是指被评价图像与标准图像的偏离程度,偏差越......
  • Verilog入门篇,带你了解Verilog
    前言 学习资源推荐:学习书目推荐《Verilog数字系统教程》第四版,夏宇闻,韩彬编著。         Verilog刷题网站:HDLBits。                                           ......
  • 【每周例题】力扣 C++ 字符串相乘
    字符串相乘题目字符串相乘题目分析1.首先,题目上标出了一条:注意:不能使用任何内置的BigInteger库或直接将输入转换为整数。这就是这道题的难度所在2.这样子的话,我们可以从手写乘法计算来寻找思路: ①首先我们需要将各位相乘的结果放入数组ansArr中,我们使用双重for循环计算......