Verilog:位数拓展

  如题,在Verilog中如何将寄存器的位数拓展,保证它表示的值不变?比如一个数原来用4位的寄存器表示,现在想要用10位的寄存器来存储。

1、假设这个数为整数,比如0101,即+5,那么可以在高位补六个0,即00 0000 0101,这个数也表示+5(最高位为符号位);

2、那么这个数要为负数呢?比如为-5,即1101,这是用原码表示的,我们知道,在Verilog中负数使用补码表示的,所以这个寄存器存储的应该是1011,我们也仿照上面,在最高位补六个1,即11 1111 1011,那这个数表示的是不是-5呢?我们变成原码看看(11 1111 1011)补码=(10 0000 0100)反码=(10 0000 0101)原码,确实表示的还是-5(最高位为符号位)。

3、总结,对于一个用n位寄存器来表示的数data,想要拓展到m为(m>n),可以这样来实现:{(m-n){data[n-1]},data[n-1,0]}

原文地址:https://www.cnblogs.com/lovexz/p/6767054.html