当前位置: 首页 > article >正文

verilog报错:Illegal concatenation of an unsized constant. and 输入输出位宽不匹配

错误一:Illegal concatenation of an unsized constant.

 concatenation with unsized literal; will interpret as 32 bits:

data_out_int =  {{(CUT_INT_BITS){`DIN_SIGNED}},data_in_int} ;

修改为

data_out_int =  {{(CUT_INT_BITS){1‘b1}},data_in_int} ;就正确了,就是要保障拼接时需要复制多少位时,需要确保{(CUT_INT_BITS){`DIN_SIGNED}}这个里面的两个量都是正确的值。

还有就是有的时候信号的位宽会根据输入进行调整:(也就是输入输出位宽不匹配时,位宽由参数导入)

parameter DATA_IN_WIDTH = 8;
parameter DATA_OUT_WIDTH = 9;

wire [DATA_IN_WIDTH -1:0]  	data_in;
wire [DATA_OUT_WIDTH -1:0]  	data_out ;



//因为参数的变化,可能会出现位宽不相符的情况
assign  data_out = data_in;

//对于这种情况,有两个办法
//第一,是定义一个中间参数

parameter DATA_IN_WIDTH = 8;
parameter DATA_OUT_WIDTH = 9;

localparam DATA_OUT_WIDTH_REAL = (DATA_OUT_WIDTH > DATA_IN_WIDTH ) ? DATA_OUT_WIDTH : DATA_IN_WIDTH ;

wire [DATA_IN_WIDTH -1:0]  	data_in;
wire [DATA_OUT_WIDTH -1:0]  data_out ;

wire [DATA_OUT_WIDTH_REAL -1:0]  data_out_reg ;

assign data_out_reg = (DOUT_INT_BITS > DATA_W_IN_INT_BITS ) ? {{(CUT_INT_BITS){DIN_SIGNED}},data_in} : data_in;

assign  data_out = data_out_reg[DATA_OUT_WIDTH -1:0] ;


//第二,采用generate产生代码块(注意,信号定义在generate之内时,只作用于这个代码块内部)

parameter DATA_IN_WIDTH = 8;
parameter DATA_OUT_WIDTH = 9;



wire [DATA_IN_WIDTH -1:0]  	data_in;
wire [DATA_OUT_WIDTH -1:0]  data_out ;



generate
    if (DOUT_INT_BITS > DATA_W_IN_INT_BITS)  
		assign data_out = {{(CUT_INT_BITS){DIN_SIGNED}},data_in};
	else  
		assign data_out = data_in;
	end

还有一种问题就是,定义的信号位宽报错

parameter DATA_IN_WIDTH = 8;

wire [DATA_IN_WIDTH -1:0]  	data_in;


//有可能DATA_IN_WIDTH是等于0的,这样就会发生data_in的序列有负数,从而产生问题
//所以可以定义一个中间变量

parameter DATA_IN_WIDTH = 8;


localparam DATA_IN_WIDTH_REAL  = (DATA_IN_WIDTH == 0) ?  0 :  DATA_IN_WIDTH -1;

wire [DATA_IN_WIDTH_REAL  -1:0]  	data_in;


http://www.kler.cn/a/297278.html

相关文章:

  • 安全服务面试-2
  • Spring Cloud LoadBalancer
  • 【QT Creator】基本使用
  • 在cscode中通过maven创建java项目
  • 免费 U 盘数据恢复 - 用 4 种免费方法从随身U 盘恢复文件
  • html备忘录
  • 个人信息记录安全:守护数字时代的隐私堡垒
  • smsp__inst_executed_pipe_fp64为什么对不上
  • 【spring】微服务架构中的VO命名
  • OceanBase性能相关
  • Oracle Enterprise Manager:Oracle数据库管理的高效工具
  • IP宿主信息在不同领域的广泛应用
  • Docker入门学习-01
  • WinCC 中对 VBS 进行单步执行调试
  • 一次windows server 服务器病毒分析处理总结
  • AUTO TECH 2025 华南展——第十二届广州国际汽车技术展览会
  • linux怎么打开pak文件怎么打开,如何在Linux上安装并启用Flatpak支持?
  • 精选干货!分享5款ai智能写论文软件
  • postgresql中的各种浮点型小数精度区别
  • WEB渗透权限维持篇-DLL注入-修改内存中的PE头