verilog Signed与赋值形式
`timescale 1ns/1ps
module test;
reg signed[3:0] uu;
reg signed[3:0] dd;
reg [2:0] extract;
reg [4:0] sum;
initial
begin
uu=-7;
dd=3;
extract=uu[2:0]
sum=uu+dd;
#10
uu=7;
dd=-3;
extract=uu[2:0]
sum=uu+dd;
#10
uu=-7;
dd=-3;
extract=uu[2:0]
sum=uu+dd;
end
endmodule
如上述代码,当声明的reg sign通过整数形式赋值,实际得到的是所看到的值的补码形式,如uu=-7,则uu的实际存储值为4‘b1001,即-7在4bit下的补码,即有符号数4’b1111的补码4‘b1001,然后使用补码进行运算。
`timescale 1ns/1ps
module test;
reg signed[3:0] uu;
reg signed[3:0] dd;
reg [2:0] extract;
reg [4:0] sum;
initial
begin
uu=4'b1111;
dd=4'b0011;
extract=uu[2:0]
sum=uu+dd;
#10
uu=4'b0111;
dd=4'b1011;
extract=uu[2:0]
sum=uu+dd;
#10
uu=4'b1111;
dd=4'b1011;
extract=uu[2:0]
sum=uu+dd;
end
endmodule
当reg signed通过上述方式进行赋值时,则默认直接使用编程用户已经进行了原码到补码的转换,此时所写即所存,仍然为补码的形式保存和进行后续计算,这一点区别于使用整数型的值进行赋值。
verilog Signed与赋值形式的更多相关文章
- Verilog之阻塞赋值非阻塞赋值
verilog设计进阶 时间:2014年5月6日星期二 主要收获: 1. 阻塞赋值与非阻塞赋值: 2. 代码测试: 3. 组合逻辑电路和时序逻辑电路. 阻塞赋值与非阻塞赋值: 1. 阻塞赋值" ...
- verilog中连续性赋值中的延时
上次遇到一个问题.写一个testbench需要移动两个时钟之间的相位.后来一想,貌似我们都是这么写clock的 always #(`P/2) clk = ~clk 我的两个时钟都是这么写,只是p ...
- python变量和变量赋值的几种形式
动态类型的语言 python是动态类型的语言,不需要声明变量的类型. 实际上,python中的变量仅仅只是用来保存一个数据对象的地址.无论是什么数据对象,在内存中创建好数据对象之后,都只是把它的地址保 ...
- Verilog杂谈
1. Testbech总是用reg去驱动DUT的input端口,因为需要在仿真期间设置和保持输入端的值(例如在initial中设置初值,在always中设置激励值): 2. 避免对局部reg在定义时赋 ...
- go语言赋值
使用赋值语句可以更新一个变量的值,最简单的赋值语句是将要被赋值的变量放在=的左边,新值的表达式放在=的右边. x = // 命名变量的赋值 *p = true // 通过指针间接赋值 person.n ...
- Verilog学习笔记设计和验证篇(五)...............层次化事件队列
详细的了解层次化事件队列有助于理解Verilog的阻塞赋值和非阻塞赋值功能.所谓层次化事件队列指的是用于调度仿真时间的不同Verilog事件队列.在IEEE的5.3节中定义了层次化事件队列在逻辑上分为 ...
- c语言中的unsigned 和 signed
我们来一起看下,C语言中,对于Integer Type(整数形式)的unsigned与signed两种形式的区别,以及在内存中的存储方式是如何的 Integer type(整数形式)是C语言中的基本数 ...
- Effective C++ 笔记二 构造/析构/赋值运算
条款05:了解C++默默编写并调用哪些函数 编译器默认声明一个default构造函数.一个copy构造函数.一个copy assignment操作符和一个析构函数.这些函数都是public且inlin ...
- verilog中always块延时总结
在上一篇博文中 verilog中连续性赋值中的延时中对assign的延时做了讨论,现在对always块中的延时做一个讨论. 观测下面的程序,@0时刻,输入的数据分别是0x13,0x14 . @2时刻, ...
- linux kernel 结构体赋值方法{转载}
原文地址: http://www.chineselinuxuniversity.net/articles/48226.shtml 这几天看Linux的内核源码,突然看到init_pid_ns这个结构体 ...
随机推荐
- WSL 2 内配置Fcitx自启动
前言 我通过配置成fcitx进行服务进行,但其权限是root,在普通模式下无法使用 我用的是xserver ( moba xterm),我要在gtk mode 下启动fcitx,其实 不用这么写 操作 ...
- SpringBoot+Vue前后端分离项目,在过滤器取值为Null
SpringBoot+Vue前后端分离项目,在过滤器取值为Null 是因为SessionID的问题,因为axios每次的请求都是一次新的sessionId,所以只需要在main.js下配置如下 axi ...
- P28_全局配置 - 常用的全局配置项以及小程序窗口的组成部分
全局配置文件及常用的配置项 pages 记录当前小程序所有页面的存放路径 window 全局设置小程序窗口的外观 tabBar 设置小程序底部的 tabBar 效果 style 是否启用新版的组件样式 ...
- 使用Hook拦截sendto函数解决虚拟局域网部分游戏联机找不到房间的问题——以文明6为例
正文 重要提醒(2023-02-13):本文部分内容存在bug,目前正在调试修改,会在一段时间之后更新 重要提醒(2023-02-14):目前已修复主要bug,会在一段时间之后更新,本文计划重写大部分 ...
- K3S 系列文章-5G IoT 网关设备 POD 访问报错 DNS 'i/o timeout'分析与解决
开篇 <K3s 系列文章> <Rancher 系列文章> 问题概述 20220606 5G IoT 网关设备同时安装 K3S Server, 但是 POD 却无法访问互联网地址 ...
- ElasticSearch7.6入门
笔记记录 B站狂神说Java的ElasticSearch课程:https://www.bilibili.com/video/BV17a4y1x7zq 一.ElasticSearch概述 官网:http ...
- 操作系统复习(updating)
操作系统复习(updating) 1.进程和线程的区别是什么? 1)调度:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位 2)拥有资源:不论是传统操作系统还是设有线程的操作系 ...
- git拉取新分支、删除分支、修改远程分支
1.拉取新分支 git checkout master 切换到master分支 git pull 更新到最新代码 ...
- C#神器"BlockingCollection"类实现C#神仙操作
前言 如果你想玩转C# 里面多线程,工厂模式,生产者/消费者,队列等高级操作,就可以和我一起探索这个强大的线程安全提供阻塞和限制功能的C#神器类 BlockingCollection简单介绍 微软介绍 ...
- Java对象布局
1. 引言 由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能 .在学习并发编程知识synchronized时,我们总是 ...