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

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

3天内不再提示

fpga 有符号数、无符号数

FPGA学习交流 2018-10-09 15:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在设计中,所有的算数运算符都是按照无符号数进行的。如果要完成有符号数计算,对于加、减操作通过补码处理即可用无符号加法完成。对于乘法操作,无符号数直接采用“*”运算符,有符号数运算可通过定义输出为 signed 来处理。

通过“*”运算符完成有符号数的乘法运算。
module ceshi (out, clk, a, b);
output [15:0] out;
input clk;

//通过 signed 关键字定义输入端口的数据类型为有符号数
input signed [7:0] a;
input signed [7:0] b;

//通过 signed 关键字定义寄存器的数据类型为有符号数
reg signed [7:0] a_reg;
reg signed [7:0] b_reg;
reg signed [15:0] out;

wire signed [15:0] mult_out;
//调用*运算符完成有符号数乘法
assign mult_out = a_reg * b_reg;

always@(posedge clk)
begin
a_reg <= a;
b_reg <= b;
out <= mult_out;
end

endmodule
上述程序在 ISE 中的综合结果如下图所示,从其 RTL 结构图可以看到乘法器标注为“signed” ,为有符号数乘法器。
102341y0qc66p2geg9g6pz.png




仿真结果图
102341otfrnmtnnbqkvqbz.png


二进制显示的结果
102342g9l5ier7ljzj1j1z.png


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

    关注

    1656

    文章

    22295

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    位操作的常见错误与应对策略

    的,可能会导致数据溢出或丢失。 (三)数据类型位表示的理解要点 在嵌入式系统中,不同的数据类型有着不同的位表示方式,这一点在进行位操作时尤为重要。符号数符号数的位表示就存
    发表于 11-24 07:50

    定点数表示实数的方法以及定点数在硬件上的运算验证

    ,Vivado就能将后续符号数运算综合成相应电路(与C语言不同,Verilog规定,符号数符号数
    发表于 10-28 08:13

    通过内联汇编调用乘法指令mulh\\mulhsu\\mulhu

    32位(32位符号数相乘与符号数相乘低32位相同) mulhrd,rs1, rs2 将两个32位
    发表于 10-24 06:52

    对于指令集中back2back情况的简单介绍

    (64 位中的低 32 位)就用 mul 指令。要得到高 32 位,如果操作数都是符号数,就用 mulh 指令;如果操作数都是符号数,就用 mulhu 指令;如果一个
    发表于 10-23 06:52

    蜂鸟乘法器设计分享

    符号数的运算。蜂鸟中为了保证运算的一致性,统一在操作数前面补1位符号位,从而将符号数转化为
    发表于 10-22 08:21

    Booth编码的原理及选择

    Booth提出该算法的初衷是基于当时计算机中的移位运算比加法运算要快这个硬件环境,其目的是通过移位运算代替部分加法运算来提高乘法运算速度。然而,Booth算法更大的优势在于,它对符号数
    发表于 10-22 07:53

    RISC-V M扩展介绍

    寄存器中 mulh rd, rs1, rs2 # 将rs1和rs2的高32位乘积存储在rd寄存器中 mulhsu rd, rs1, rs2 # 将rs1的符号数和rs2的符号数
    发表于 10-21 06:50

    rt-thread studio怎么设置才能让char变量是真正的符号类型?

    最近被一个bug折磨了3天,一路debug进来,发现最终的原因是,定义了一个char变量,但实际上是符号的(代码期望该变量是符号的)。 然后我检查了以下编译器如下的设置,发现很奇怪
    发表于 09-16 08:23

    Copilot操作指南(一):使用图片生成原理图符号、PCB封装

    “  上周推出支持图片生成模型的华秋发行版之后,得到了很多小伙伴的肯定。但看到更多的回复是:为什么我的 Copilot 无法生成符号?只有普通的文本回复?今天就为大家详细讲解下图片生成符号、封装
    的头像 发表于 07-15 11:14 3938次阅读
    Copilot操作指南(一):使用图片生成原理图<b class='flag-5'>符号</b>、PCB封装

    请教这是什么符号

    请教这是什么符号,谢谢!!!
    发表于 04-08 10:40

    Verilog中signed和$signed()的用法

    1、在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分符号数符号数
    的头像 发表于 02-17 17:47 1192次阅读
    Verilog中signed和$signed()的用法

    请问AFE5801 AD转换后数字信号是用符号数还是符号数表示的?

    请问AFE5801 AD转换后数字信号是用符号数还是符号数表示的啊?
    发表于 02-11 07:18

    开关二极管符号如何了解

    在电路图中,开关二极管的符号通常与其他电子元件的符号一起使用,以表示电路的连接关系和功能。通过符号,我们可以清晰地看到开关二极管的正负极、连接方式以及与其他元件的相互作用。这有助于我们理解电路的工作原理、进行电路分析和设计。
    的头像 发表于 12-26 17:59 3903次阅读
    开关二极管<b class='flag-5'>符号</b>如何了解

    ADS1118测量4-20mA和0-5V信号数据,有点跳动也有点误差,怎么解决?

    ADS1118测量4-20mA和0-5V信号数据有点跳动,也有点误差,求帮忙解决一下, 谢谢!
    发表于 12-26 07:24

    ADS8688分别设置0 to 1.25 × VREF和±1.25 × VREF采样范围时,得到的16位数据是按照符号数还是符号数进行转换?

    请问ADS8688 在分别设置 0 to 1.25 × VREF 和±1.25 × VREF采样范围时,得到的16位数据是按照符号数还是符号数进行转换?两者一样吗?
    发表于 12-20 08:03