美文网首页
在Verilog中如何使用signed信号(有符号数)

在Verilog中如何使用signed信号(有符号数)

作者: monokent | 来源:发表于2017-02-18 21:49 被阅读0次

此文为 "How to use signed variable in System Verilog" 中文版
版权归作者monokent所有,转载请注明出处

示例 1

在Verilog语言中,有符号数signed以2进制补码形式表示。
下例中,我们声明一个变量为signed类型,并用sd表示有符号整数。

logic signed [35:0] c0, c1;
logic signed [17:0] a0, a1;
always@(*) begin
    c0 <= a0 * 18'sd2017;
    c1 <= a1 * -18'sd2016;
end

其中, sd 表示 signed decimal.

示例 2

在示例1中,如果我们写

c1 <= a1 * -18'd2016;

结果会出错,因为Verilog视 -18'd2016为无符号数(unsigned),从而将其转化为一个正的值。
那如果我们将示例1中的c0赋值写成如下形式呢?

c0 <= a0 * 18'd2017

结果也是错误的,因为如果表达式中有一个无符号数,则所有的操作数都会被强行转换为无符号数。这样的话,如果a0为负数,则其会被转换为正数导致出错。

示例 3

右移一个有符号数

assign c0_normal = c0 >>> 17;

">>>" 是专门针对signed信号的右移符号

示例 4

下面各表达式的结果是多少?

integer a;
a = -18 / 3;     // -6
a = -6'd18 / 3;  // 23
a = -6'sd18 / 3  // -6
a = -5'sd18 / 3  // (14/3)=4

相关文章

  • 在Verilog中如何使用signed信号(有符号数)

    此文为 "How to use signed variable in System Verilog" 中文版版权归...

  • 2_有符号和无符号

    关键词:计算机中的符号位、有符号数的表示法、无符号数的表示法、signed和unsigned、无符号数和有符号数的...

  • How to use signed variable in Sy

    Author: monokent Example 1 In verilog, signed data is in ...

  • 进制的转换

    进制的转换 有符号数(signed):既能表示正数也能表示负数的整数,包括零. 无符号数(unsigned):只能...

  • C语言数据类型

    数的范围 有符号: 可以表示正数和负数 无符号: 只能表示正数 signed char num; 有符号数num...

  • 边沿检测器

    对clk时钟信号的边沿检测在Verilog中是支持posedge clk这种语法格式的,但是对于一个普通的信号边沿...

  • vcs仿真vhdl和verilog语言混合仿真的问题

    当用vcs对vhdl和verilog语言混合仿真时,遇到verilog语言的模块的信号无dump波形,解决方法:在...

  • grep -v、-e、-E

    概述 在Linux的grep命令中如何使用or,and,not操作符呢? 其实,在grep命令中,有or和not操...

  • Verilog进行饱和与截位操作

    转载自jgliu的博客 Verilog进行饱和与截位操作 一、引言 在利用Verilog写数字信号处理相关算法的过...

  • 计算机的编码

    计算机中的数据表示 计算机中数字的表示有 无符号数和有符号数 有符号数 数字的表示中使用一位表示符号的正负,比如...

网友评论

      本文标题:在Verilog中如何使用signed信号(有符号数)

      本文链接:https://www.haomeiwen.com/subject/gpsdwttx.html