0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

自定义位宽输入输出截位模块的灵活配置方案

pdh的FPGA 来源:pdh的FPGA 2024-04-25 11:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

内容如标题。方便又简单。可作为类似IP使用。

/**********************************************************当前版本修订**********************************************************************
**  文件名称:       round_truncation
**创建人/修改人:pdh
**  版本日期:       2024.4.24
**  版本号:         v1.0
**  版本功能描述:   本模块实现可配置,输入任意位宽,输出任意位宽的截位操作,对标matlab round函数
**
*******************************************************************************************************************************************/


`timescale 1ns / 1ps
 
module round_truncation #
(
    parameter IN_WIDTH    = 22                      ,
    parameter TRUNC_WIDTH = 5                       ,
    parameter OUT_WIDTH   = IN_WIDTH-TRUNC_WIDTH    
)   
(   
    input                           i_clk           ,
    
    input           [IN_WIDTH-1:0]  i_full_data     ,
    input                           i_full_data_vld ,


    output  logic   [OUT_WIDTH-1:0] o_trunc_data    ,
    output  logic                   o_trunc_data_vld
);


/****************************************************************************/
/*  signal
/****************************************************************************/
logic   [IN_WIDTH-1:0]  round_data      ;
logic                   round_data_vld  ;


/****************************************************************************/
/*  process
/****************************************************************************/
always @(posedge i_clk)
begin
    if (i_full_data[IN_WIDTH-1] == 1'b0)                            // 正数,就加0.5,位宽大小以要截位的位宽大小
    begin
        round_data <= i_full_data + {{1'b0},{(TRUNC_WIDTH-1){1'b1}}};
    end
    else if (i_full_data[IN_WIDTH-1])                               // 负数,就减0.5,位宽大小以要截位的位宽大小
    begin
        round_data <= i_full_data + {{1'b1},{(TRUNC_WIDTH-1){1'b0}}};
    end
end


always @(posedge i_clk)
begin
    if (round_data[IN_WIDTH-1] == 1'b0 && round_data[IN_WIDTH-2])   
    begin
        o_trunc_data <= {{1'b0},{(OUT_WIDTH-1){1'b1}}};             // 如果正数溢出,就给正数最大值,7ff,位宽大小以要截位的位宽大小
    end
    else if (round_data[IN_WIDTH-1] && round_data[IN_WIDTH-2] == 1'b0)
    begin
        o_trunc_data <= {{1'b1},{(OUT_WIDTH-1){1'b0}}};             // 如果负数溢出,就给负数最大值,800,位宽大小以要截位的位宽大小
    end
    else 
    begin
        o_trunc_data <= round_data[(IN_WIDTH-1):TRUNC_WIDTH];       // 没溢出,就直接给需要截位的值
    end
end


always @(posedge i_clk)
begin
    round_data_vld   <= i_full_data_vld;
    o_trunc_data_vld <= round_data_vld;
end


endmodule

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 输入输出
    +关注

    关注

    0

    文章

    44

    浏览量

    11119

原文标题:可配置任意输入输出位宽截位模块

文章出处:【微信号:pdh的FPGA,微信公众号:pdh的FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HarmonyOS应用自定义键盘解决方案

    自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义
    的头像 发表于 06-05 14:19 2588次阅读

    SIMULINK线的处理/SIMULINK自定义功能模块

    SIMULINK线的处理/SIMULINK自定义功能模块     SIMULINK模型的构建是通过用线将各种功能模块进行连接而构成的。用鼠标可以在功能
    发表于 06-19 12:51 6389次阅读

    SOPC中自定义外设和自定义指令性能分析

    SOPC中自定义外设和自定义指令性能分析 NiosII是一个建立在FPGA上的嵌入式软核处理器,灵活性很强。作为体现NiosII灵活性精髓的两个最主要方面,自
    发表于 03-29 15:12 1915次阅读
    SOPC中<b class='flag-5'>自定义</b>外设和<b class='flag-5'>自定义</b>指令性能分析

    如何配置自定义工具链?

    Atmel小贴士 如何配置自定义工具链内爱特梅尔公司螺柱
    的头像 发表于 07-10 03:04 2532次阅读

    自定义视图组件教程案例

    自定义组件 1.自定义组件-particles(粒子效果) 2.自定义组件- pulse(脉冲button效果) 3.自定义组件-progress(progress效果) 4.
    发表于 04-08 10:48 15次下载

    教程 2:自定义配置文件示例

    教程 2:自定义配置文件示例
    发表于 03-13 19:33 0次下载
    教程 2:<b class='flag-5'>自定义</b><b class='flag-5'>配置</b>文件示例

    教程 3:构建自定义配置文件

    教程 3:构建自定义配置文件
    发表于 03-15 19:39 0次下载
    教程 3:构建<b class='flag-5'>自定义</b><b class='flag-5'>配置</b>文件

    教程 2:添加特征-自定义配置文件创建

    教程 2:添加特征 - 自定义配置文件创建
    发表于 03-15 19:39 0次下载
    教程 2:添加特征-<b class='flag-5'>自定义</b><b class='flag-5'>配置</b>文件创建

    教程 3:自定义配置文件 gatt cmd 示例

    教程 3:自定义配置文件 gatt cmd 示例
    发表于 03-15 19:40 0次下载
    教程 3:<b class='flag-5'>自定义</b><b class='flag-5'>配置</b>文件 gatt cmd 示例

    自定义蓝牙低功耗配置文件

    自定义蓝牙低功耗配置文件
    发表于 03-15 20:14 1次下载
    <b class='flag-5'>自定义</b>蓝牙低功耗<b class='flag-5'>配置</b>文件

    教程 2:自定义配置文件示例

    教程 2:自定义配置文件示例
    发表于 07-04 20:50 1次下载
    教程 2:<b class='flag-5'>自定义</b><b class='flag-5'>配置</b>文件示例

    教程 3:构建自定义配置文件

    教程 3:构建自定义配置文件
    发表于 07-06 18:49 1次下载
    教程 3:构建<b class='flag-5'>自定义</b><b class='flag-5'>配置</b>文件

    教程 2:添加特征-自定义配置文件创建

    教程 2:添加特征 - 自定义配置文件创建
    发表于 07-06 18:50 0次下载
    教程 2:添加特征-<b class='flag-5'>自定义</b><b class='flag-5'>配置</b>文件创建

    教程 3:自定义配置文件 gatt cmd 示例

    教程 3:自定义配置文件 gatt cmd 示例
    发表于 07-06 18:50 1次下载
    教程 3:<b class='flag-5'>自定义</b><b class='flag-5'>配置</b>文件 gatt cmd 示例

    自定义蓝牙低功耗配置文件

    自定义蓝牙低功耗配置文件
    发表于 07-06 19:24 0次下载
    <b class='flag-5'>自定义</b>蓝牙低功耗<b class='flag-5'>配置</b>文件