Verilog代码中负数表示

您所在的位置:网站首页 c语言负数运算怎么表示 Verilog代码中负数表示

Verilog代码中负数表示

2024-07-10 23:57| 来源: 网络整理| 查看: 265

使用Verilog描述语言时,在编写含有负数判断的描述语言时,需要定义负数的数据类型。

一般的包含0以及0以上的正数寄存器只需声明 reg 即可;

用法:

reg [x:0] a;

reg寄存器是最常用的寄存器类型,这种寄存器中只能存放无符号数。如果给reg中存入一个负数,通常会被视为正数! 而对于是负数或者是存在负数的寄存器声明要使用 signed;

用法:

reg signed [x:0] a;

示例:

正数的寄存器声明:

reg [ 4:0] seconds1_data; //秒钟低位数据寄存器1 reg [ 4:0] seconds1_data_n; //seconds1_data的下一个状态 reg [ 4:0] seconds2_data; //秒钟高位数据寄存器2 reg [ 4:0] seconds2_data_n; //seconds2_data的下一个状态 reg [ 4:0] minutes1_data; //分钟低位数据寄存器 reg [ 4:0] minutes1_data_n; //minutes1_data的下一个状态 reg [ 4:0] minutes2_data; //分钟高位数据寄存器 reg [ 4:0] minutes2_data_n; //minutes1_data的下一个状态

其对应的某一段控制数据变化的组合逻辑代码如下:

always @ (*) begin if(time_seconds == SEC_TIME_1S | key_out[4] == 1'b1) //判断按键KEY5和判断1s时间 seconds1_data_n = seconds1_data + 1'b1; //如果按键按下或者到达1s,seconds1_data将会加1 else if(seconds1_data == 4'd10) //判断seconds1_data有没有达到10s seconds1_data_n = 1'b0; //如果seconds1_data到达10s,seconds1_data将会被清零 else seconds1_data_n = seconds1_data; //否则seconds1_data将会保持不变 end

含有负数的寄存器声明:

reg signed[ 4:0] seconds1_data; //秒钟低位数据寄存器1 reg signed[ 4:0] seconds1_data_n; //seconds1_data的下一个状态 reg signed[ 4:0] seconds2_data; //秒钟高位数据寄存器2 reg signed[ 4:0] seconds2_data_n; //seconds2_data的下一个状态 reg signed[ 4:0] minutes1_data; //分钟低位数据寄存器 reg signed[ 4:0] minutes1_data_n; //minutes1_data的下一个状态 reg signed[ 4:0] minutes2_data; //分钟高位数据寄存器 reg signed[ 4:0] minutes2_data_n; //minutes1_data的下一个状态

其对应的某一段控制数据变化的组合逻辑代码如下:

always @ (*) begin if(time_seconds == SEC_TIME_1S ) //判断1s时间 seconds1_data_n = seconds1_data - 1'b1; //如果按键按下或者到达1s,seconds1_data将会减1 else if(seconds1_data == -1'b1) //判断seconds1_data有没有达到-1s seconds1_data_n = 4'd9; //如果seconds1_data到达-1s,seconds1_data将会被置9 else if(timeup == 1'b0) //如果计时器到0 seconds1_data_n = 1'b0; //置0 else seconds1_data_n = seconds1_data; //否则seconds1_data将会保持不变 end

两者例子均是seconds1_data数据位变化,一个正向从1累加到9置零,一个反向从9递减到0置9

正向判断是加到了10归0;反向则是减到-1置9,此过程寄存器需要负数。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3