verilog中带符号数据的赋值问题(记录)

2023-11-03

记录今日新发现,关于带符号数据的赋值问题。

 

在组合逻辑中,等号两端数据type类型要相同,即同为signed型或unsigned型

在时序电路中,等号两端数据type类型可以不同,signed或unsigned都可以

wire [1:0] a,b;

wire signed [1:0] c,d;

assign a=b;   //合法

assign c=d;   //合法

assign c=a;   //非法

assign a=c;  //非法

reg signed [1:0] e,f;

always@(*) begin
    e=a;   //非法
    e=c;   //合法
end

reg signed f,h;
always@(posedge clk) begin
    f <= a;    //合法
    h <= c;    //合法
end

 

另外,在组合逻辑中,两个完全相同的array,可以直接赋值相连

wire [1:0]  arr_1 [0:1];
wire [1:0]  arr_2 [0:1];

assign arr_2 = arr_1;    //合法

 

切记:

在赋值过程尽量保证两边的位宽相等,尤其是有符号数据;

在赋值过程尽量保证两边的位宽相等,尤其是有符号数据;

在赋值过程尽量保证两边的位宽相等,尤其是有符号数据;

若赋值两边的数据位宽不相等,则直接按照位宽取低比特方向的数据,不会对符号位进行特殊处理,即可能会出现“原本是负数,赋值之后变成正数”的情况,

所以,如果要进行非等位宽且有符号的数据时,且多位宽赋值给少位宽,需要进行符号位的判断,然后进行特殊的赋值处理,而不能单纯的直接进行赋值。

如果是少位宽赋值给多位宽,则不需要特殊处理。

如图:

总结如下:

1、少位宽数据赋值多位宽,根据少位宽是否有符号进行区分,若有符号,则结果按照有符号计算,若无符号,结果按照无符号计算;

2、多位宽赋值给少位宽,不进行符号区分,直接将多位宽数据中与少位宽位数相同的低比特数据赋值给少位宽数据;

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

verilog中带符号数据的赋值问题(记录) 的相关文章

  • 在 Verilog 中生成 For 循环中实例化模块

    我正在尝试使用 Verilog 实例化一些模块generate块 因为我将实例化可变数量的它们 genvar i generate for i 1 i lt 10 i i 1 begin status whatever status clk
  • Verilog 位更改位置

    假设我有一个寄存器reg 15 0 my reg 其中包含一个16位signed sample 如何找到第一位变化的位置 意思是 如果假设my reg 16 b0001011011010111 我怎么知道第一个变化是0 to 1 is at
  • 如何在 verilog 中不使用 while() 循环(用于综合)?

    我已经养成了开发大量测试平台并使用 for 和 while 循环进行测试的习惯 没关系 问题是我已经将这种习惯用于对应该可综合的电路进行编码 XST等拒绝合成代码 无需对合成参数进行额外修改 例如 while num lt test num
  • Verilog HDL ?操作员

    什么是 用 Verilog 做什么 例如 以下命令是什么意思 input first din input 7 0 din output 127 0 parity reg 127 0 parity wire 7 0 feedback assi
  • 使用数据流模型的T触发器

    我正在尝试模拟 t flipflop 的工作 timescale 1ns 1ps module t flipflop input t input clk input clear output q output qbar wire sbar
  • 简单赋值时不输出期望值

    当我将一些值分配给具有四位的变量时 当我简单地输出该值时 我会得到意想不到的结果 我以前从未见过这个 想知道我是否在语法上做错了什么 module main reg 3 0 x initial begin monitor b x x 001
  • Vivado 比特流消息:违反规​​则 (LUTLP-1) 组合循环

    我在串流时遇到问题 该项目旨在创建一个占空比为 1 2 的时钟 综合和实现过程中没有任何问题 我尝试了几种方法来解决它 但他们的表现并不好 module clock div clk clk out input clk output reg
  • 为什么这个 verilog 关系语句返回 true?

    我有一条名为 sin hall2 的 9 位签名线 该语句返回 true sin hall2 8 0 gt 9 d1 当我查看模拟时 sin hall2 169 我假设这是 verilog 处理比较负数的方式 但我做错了什么 当我执行 si
  • 如何生成异步复位verilog总是阻塞凿子

    Chisel 始终生成敏感度列表中仅包含时钟的块 always posedge clk begin end 是否可以将模块配置为使用异步重置并生成这样的始终块 always posedge clk or posedge reset begi
  • 「HDLBits题解」Gates4

    本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接 Gates4 HDLBits module top module input 3 0 in out
  • 如何获取值数组作为 plusargs?

    如何获取值数组作为参数 我需要从命令行获取一组未定义大小的命令 如何将这些参数放入数组或队列中 Eg CMDS READ WRITE READ N WRITE 它应该被带到一个数组中 value plusargs不支持数组 但支持字符串 看
  • Verilog 错误:必须连接到结构网络表达式

    我收到错误 output or inout port Qout must be connected to a structural net expression 我评论了下面代码中发生错误的行 代码被修剪 压缩 我搜索了答案 似乎我无法将输
  • 从测试台访问 uvm_config_db 的最佳方式?

    我想在我的顶级测试平台中创建一个时钟 其周期可以通过测试进行控制 我所做的是将周期设置到 uvm config db 中并将其返回到测试台中 我必须输入 1 以确保构建阶段已完成 否则 get 返回错误值 module testbench
  • 如何使用 don't cares 参数化 case 语句?

    我有一条称为输入的电线 我想检测前导的数量 我正在尝试创建一个模块 该模块使用下面的 case 语句根据前导零的数量更改输出数据 然而 输入的大小是可参数化的 如果 X 是固定值 4 我将创建一个 case 语句 case input 4
  • verilog $readmemh 对于 50x50 像素 RGB 图像花费太多时间

    我正在尝试编译用于 FPGA 编程的 verilog 代码 我将在其中实现 VGA 应用程序 我使用 QuartusII 和 Altera 我正在尝试正确使用 readmemh 来逐像素获取图片 现在 我已经使用 matlab 将图片转换为
  • 我们可以在 C 或 SystemVerilog 中使用 ifdef MACROS 中的条件吗?

    我想要那样的东西 ifdef N O gt N I define GREATER 1 else define LESSER 1 endif 但做不到 有什么解决方案或阅读吗 我很努力地想要做到这一点 但是却做不到 Verilog 不提供这样
  • 始终块中的 Veriloggenerate/genvar

    我试图让一个模块通过 ISE 12 4 中的语法检查 但它给了我一个我不明白的错误 首先是代码片段 parameter ROWBITS 4 reg ROWBITS 1 0 temp genvar c generate always pose
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 具有内部赋值延迟的阻塞和非阻塞语句之间的区别

    以下 2 个 verilog 代码片段有什么区别 1 always in out 5 in AND 2 always in out lt 5 in 考虑到always块中不存在其他行 输出会有什么不同吗 问题参考幻灯片 16 参见 o5 和
  • Verilog 双向握手示例

    我正在完成一个项目 要求是处理器内部功能单元之间的双向握手 我知道它是什么 但是有没有任何 标准 或一个简单的例子 我唯一能想到的就是两个单元之间 当它们之间有一条数据线并且当 X 发送到 Y 时 会给出一个单独的 发送 信号 当 Y 接收

随机推荐

  • R语言apply()函数

    apply 函数是一种很强大的机制 apply 可把函数应用到数组的某个维度上 其函数的的一般格式为 apply x MARGIN FUN 其中 x为数据对象 MARGIN是维度的下标 FUN是由你指定的函 数 而 则包括了任何想传递给FU
  • Animator动画混合树

    Unity中的BlendTree BlendTree介绍 BlendTree BlendTree创建 一维混合 1D Blending 二维混合树 每个混合树的动画有一些要注意的地方 BlendTree介绍 Blend Tree用于多个动画
  • ScrollView简单自动滚动问题总结

    今天参考网上的资料写了一个简单的动画 刚开始的时候 确实困难重重 1 当我们在Activity里面获得View对象的时候 无论是getMeasuredHeight 还是getHehgit 方法 放在Activity里的onCreate on
  • 联想拯救者r720自带win10安装linux(ubuntu)双系统

    联想拯救者R720自带win10安装linux ubuntu 双系统 准备事项 ubuntu的u盘启动 网上有教程 下个比较新的版本 本人用的ubuntu16 04 关闭win10的快速启动 也可以不关闭 不关闭的话可能会导致以后ubunt
  • 规律化递归

    递归思想 具体案例 package Java project 1 import java util Scanner public class RecursionDemo public static void main String args
  • k8s知识点拾遗

    目录 Headless和Service ClusterIP模式 Headless模式 Deployment 简述 更新Deployment 回退Deployment Deployment扩容 暂停和恢复Deployment 编写Deploy
  • 通过GitHub Blame深入分析Redux源码

    文章首发于GitHub Blog 说明 本文所分析的Redux版本为3 7 2 分析直接写在了注释里 放在了GitHub上 gt 仓库地址 分析代码时通过查看Github blame 参考了Redux的issue及PR来分析各个函数的意图而
  • 配置SSH Key连接GitLab

    Git配置ssh连接相关命令 1 配置账号 git config global user name cwh git config global user email cwh xxx com 邮箱需要GitLab上账号配置相对应的邮箱 否则拉
  • 2022年「博客之星」参赛博主:落寞的魚丶

    诚信五星 五星必回 https bbs csdn net topics 611387242 spm 1001 2014 3001 6377 诚信五星 五星必回
  • noip 2008 双栈排序

    题目大意 给定n和一串数字 这串数字是一个1 n的排列 现在要用两个栈给这些数字排序 首先先判断是否有解 有解的话再输出字典序最小的方案 入栈1 输出a 出栈1 输出b 入栈2 输出c 出栈2 输出d 分析 首先必然要先考虑是否有解 对于没
  • 国产超低功耗华大MCU资料汇总

    华大单片机最新最全内容请访问 芯虎论坛 http tigerchip com cn 目录 点击直接跳转 开发工具下载 离线编程器 仿真器 MDK IAR 选型表 封装库 芯片资料 HC32F003 HC32F005 HC32L110 HC3
  • tree.plot_tree()函数里面具体的参数作用

    sklearn tree plot tree decision tree max depth None feature names None class names None label all filled False impurity
  • STM32通用定时器的个人总结

    STM32104ZET6系列的芯片中 定时器一共有一下三种分类 高级定时器 通用定时器 基本定时器 这里主要讲一下通用定时器 首先 计数器模式一共有三种 分别为向上 向下或向上向下计数 其中 向上计数的通俗意思就是 计数器从0开始计数 一直
  • 如何找出U盘中隐藏的文件夹

    背景 这周二我们老师说我一个问题就是 说她的U盘里有一大堆东西但是打开U盘的时候显示为空 这个问题困扰了她好长时间 解决办法 第一步 用电脑管家杀毒 打开电脑管家 然后点击 病毒查杀 之后点击指定位置杀毒 杀毒位置为U盘所在盘符 首先排除了
  • Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) 解决方法

    有时用apt安装软件 莫名中断会导致apt被lock 接着再用apt就会报错 E Could not get lock var lib dpkg lock open 11 Resource temporarily unavailable E
  • Transformer代码讲解(最最最最......详细)

    Transformer代码讲解 最最最最 详细 整个代码主要分为两部分去讲解 一 完整代码 二 部分代码剖析 1 主函数if name main 2 从整体网路结构来看 分为三个部分 编码层 解码层 输出层 3 Encoder 部分包含三个
  • 解决IE 浏览器无法访问网站的问题

    今天电脑不知道咋地 一直访问不了网站 访问什么网站都报无法访问 如下图所示 经过几分摸索 发现是DNS的问题 通过设置IE浏览器可以自动设置 按照下面步骤设置即可 1 打开IE浏览器右上角的齿轮 2 选择 Internet 选项 3 选择
  • C++ win平台路径管理类

    ifndef PATH MANAGER H define PATH MANAGER H include
  • oracle 11g收集多列统计信息详解

    我们在写SQL语句的时候 有的时候会碰到where子句后面有多个条件的情况 也就是根据多列的条件筛选得到数据 下面这篇文章主要给大家介绍了Oracle 11g收集多列统计信息的相关资料 文中介绍的非常详细 需要的朋友可以参考下 前言 通常
  • verilog中带符号数据的赋值问题(记录)

    记录今日新发现 关于带符号数据的赋值问题 在组合逻辑中 等号两端数据type类型要相同 即同为signed型或unsigned型 在时序电路中 等号两端数据type类型可以不同 signed或unsigned都可以 wire 1 0 a b