FPGA 移位运算与乘法

这篇具有很好参考价值的文章主要介绍了FPGA 移位运算与乘法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  题目:

         已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效)

FPGA 移位运算与乘法,FPGA从vivado到vitis,fpga开发

 

由题意可知:

        复位信号高有效,低复位;在inpu_grant上升沿到来时,取一次d的值,并且4个时钟周期取一次;out是将inpu_grant取到的值进行乘1/3/7/8,并且每个时钟周期乘一个。

项目经验:

        在FPGA中实现乘法器确实需要消耗一定的资源。这包括逻辑门、触发器、乘法器等。不同的乘法器实现方法消耗的资源有所不同。例如,查找表乘法器需要较大的存储空间,但可以减少乘法操作的逻辑门数量;流水线乘法器需要较多的触发器,但可以实现较高的吞吐量。

        在FPGA的设计中,如果直接将两个数相乘,会占用大量的LUT逻辑资源,而且会减慢硬件的运算速度。因此,在软件设计中两个数的相乘可以直接使用“*”,但在FPGA的设计中,需要采用更复杂的实现方式来处理乘法操作,以节约资源并提高运算速度。

        总的来说,虽然乘法操作在FPGA中会消耗一定的资源,但通过合理的实现方式,可以有效地利用资源并提高系统的性能和效率。

算法设计:

        设 a=1;故:

                a << 1 = 2 = a * 2 ;

                a << 2 = 4 = a * 2*2 = a * 4;    

                a << 3 = 8 = a * 2*2*2 = a* 8;

                a << 4 = 16 = a * 2*2*2*2 = a*16;

            以此类推,乘1/3/7/8,得;

                a = a = a * 1;

                a = (a << 1) + a = a * 3;

                a = (a << 2) - a = a * 7;

                a = a << 2 = a * 8;

 实现代码:

`timescale 1ns/1ns
module multi_sel(
    input  wire clk,       
    input  wire rst,
    input  wire [7:0]d,
    output reg  input_grant,
    output reg [10:0]out
);
reg [1:0]cnt;
reg [7:0]tmp;
always @(posedge clk or negedge rst)
begin
    if(!rst)
    begin
        cnt <= 0;
    end
    else
    begin
        cnt <= cnt + 1;
    end
end

always @(posedge clk or negedge rst)
begin
    if(!rst)
    begin
        out <= 0;
        input_grant <= 0;
        tmp <= 0;
    end
    else
    begin
        case(cnt)
            0:  begin
                input_grant <= 1;
                out <= d;
                tmp <= d;
            end
            1:  begin
                input_grant <= 0;
                out <= (tmp << 1) + tmp; 
            end
            2:  begin
                input_grant <= 0;
                out <= (tmp << 3) - tmp;
            end
            3:  begin
                input_grant <= 0;
                out <= tmp << 3;
            end
        endcase 
    end
end
endmodule

前仿真代码:

`timescale 1ns / 1ps

module test_sel();
    reg clk;       
    reg rst;
    reg [7:0]d;

always  begin
    clk = 1;
    #10;
    clk = 0;
    #10;
end

initial begin
    rst = 0;
    d = 143;
    #20 
    rst = 1;
    #80 
    d = 7;
    #80 
    d = 6;
    #20 
    d = 128;
    #20 
    d = 129;
end

multi_sel multi_sel_init(
    .clk(clk),      
    .rst(rst),
    .d(d)
);

endmodule

 测试结果:

FPGA 移位运算与乘法,FPGA从vivado到vitis,fpga开发文章来源地址https://www.toymoban.com/news/detail-795566.html

到了这里,关于FPGA 移位运算与乘法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA开发环境 Vivado

    Vivado是Xilinx系列FPGA开发环境。本文记载收录了vivado常用开发技巧,随机记录、随时更新。。。 任何Xilinx相关问题都可到WELCOME TO XILINX SUPPORT!查询 静态时序分析(Static Timing Analysis, STA):简介及内容导航 VIVADO的综合属性ASYNC_REG 在XDC中作如下约束,表示对名字末尾为 _cdc_to 的寄

    2024年02月11日
    浏览(54)
  • FPGA开发环境安装VIVADO

     BASYS3开发板使用的是 Xilinx 厂商的 Artix-7 FPGA 芯片,所以要使用 Xilinx 提供的配套开发软件 Vivado ,我使用的是 Vivado 18.3 。Vivado 18.3 的版本相对来说是较为稳定的,所以推荐给大家这个版本当然 读者也可安装更新的版本,安装步骤都是大同小异的。 第一步: 找到 Vivado 2018.

    2024年02月09日
    浏览(88)
  • FPGA开发必备软件——Vivado,安装教程

    FPGA开发必备软件——Vivado,安装教程 如果你想开始FPGA的开发学习,那么Vivado是一个不可或缺的软件。它是Xilinx推出的一款针对FPGA、SoC和ASIC开发的综合设计环境。在这里,我们详细介绍如何下载、安装和配置Vivado软件。 在Xilinx官网上注册一个账号。注册时需要提供自己的邮

    2024年02月13日
    浏览(45)
  • Xilinx FPGA开发环境vivado使用流程

    第一步:点击Add Sources按钮 第二步:选择add or create design sources按钮,即添加设计文件 第三步:选择create file 文件新建完成后: 此时可以定义I/O端口,我们选择自己在程序中编写。 第四步:在编辑器中编写verilog程序 XDC文件里主要是完成管脚的约束,时钟的约束,以及组的约

    2024年02月03日
    浏览(58)
  • 【FPGA】Vivado开发流程(基于2018.3版本)

    基本流程:①设计定义 ②设计输入 ③分析综合 ④功能仿真 ⑤布局布线 ⑥分析性能   双击 Vivado图标即可启动 Vivado 软件。 ①Quick Start 组包含有 Create Project(创建工程) Open Project(打开工程)OpenExample Project(打开实例工程)。 ②Tasks 组包含有 Manage IP(管理 IP) Open Hardw

    2024年02月14日
    浏览(39)
  • Vivado中的COE文件:FPGA开发指南

    COE文件是Vivado软件中用于初始化存储器内容的一种常见文件格式。在FPGA开发过程中,我们经常需要对存储器进行初始化,以存储初始数据或者程序代码。COE文件提供了一种简单而灵活的方式来定义存储器的初始内容。本文将介绍COE文件的使用方法,并提供相应的示例代码。

    2024年02月06日
    浏览(51)
  • Vivado | FPGA开发工具(Xilinx系列芯片)

    官网下载地址 最详细的Vivado安装教程 Vivado的安装以及使用_入门

    2024年02月12日
    浏览(59)
  • Vivado仿真数据导出至.txt文件——FPGA开发

    在FPGA开发过程中,仿真是验证设计的重要环节。在Vivado设计套件中,我们可以使用仿真工具来验证设计的功能和性能。本文将介绍如何将Vivado仿真数据导出至.txt文件,以方便后续分析和处理。 步骤如下: 打开Vivado设计套件并创建一个新的工程。 在工程中添加设计文件和约

    2024年02月05日
    浏览(184)
  • Vitis开发(一):Vivado启动vitis

    Vitis是Xilinx SDK的继承开发工具,从Vivado 2019.2版本开始启用 在Vivado 2019.1及更早版本中,导出的硬件描述文件为.hdf文件,给xilinx sdk使用 在Vivado 2019.2及后续版本中,导出的硬件描述文件为.xsa文件,给vitis平台使用 若下载的是Vivado 2019.2及后续版本中,硬件描述文件不再通过SDK启

    2024年02月16日
    浏览(39)
  • FPGA开发技巧备忘录——Vivado 自动日期版本号

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 我们在编译FPGA工程的时候一般需要对版本号的更新,一般来说都会有一个日期或者时间的版本标识,在上板调试的时候用于表征当前版本确实已经更新成功,或者作为FPGA发布版本的标识等等。但有时候

    2024年02月11日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包