Verilog中 高位与低位

本文通过具体示例解释了Verilog中信号定义位宽的不同形式及其实际意义,特别是最高位与最低位的不同定义方式对信号操作的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Verilog中信号定义位宽的一些问题
总是被Verilog中信号定义位宽的问题所困扰:

wire[7:0] data1 和 wire[0:7] data1有什么不一样
wire[7:0] data2[3:0]、wire[7:0] data2[0:3]、wire[0:7] data2[3:0]、wire[0:7] data2[0:3]又分别有什么不一样?
今天下定决心要把这个问题弄清楚
写了一段代码放到modelsim里跑:
module test;
    wire[7:0] data1;
    wire[0:7] data2;

    reg[7:0] byte1[3:0];
    reg[7:0] byte2[0:3];
    reg[7:0] byte3[3:0];
    reg[7:0] byte4[0:3];

    integer i;
    assign data1 = 8'b1001_1100;
    assign data2 = 8'b1001_1100;
    initial begin
        for (i = 0; i<=3; i=i+1) begin
         byte1[i] <= i+1;
         byte2[i] <= i+1;
         byte3[i] <= i+1;
         byte4[i] <= i+1; 
    end  
    end
endmodule

可以看到data1和data2最后的赋值结果都是一样的,但是注意到最高位和最低位的顺序不一样 data1 最高位是7,最低位是0 ,data2最高位是0 最低位是7 data1[7:0] data2[0:7]

一般的数 二进制下 最左边为最高位,最右边为最低位,如:1001十进制为 9,所以声明信号赋值时习惯写成 wire[3:0] data; assign data = 3’b1001;这样最高位到最低位就对应起来了
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值