如題,在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]}。
