[問題] verilog array permutation
大家好, 小弟目前有下列問題想要用verilog來實作類似C的指標功能.
基本函數的功能是, 讓使用者輸入一個hexidecimal的table後,
讓輸出的8bit為輸入的8bit的位置交換舉例來說,
假設輸入的table為0x13642075, 那輸出為
data_o[5] = data_i[0];
data_o[7] = data_i[1];
rata_o[0] = data_i[2];
data_o[2] = data_i[3];
...
//C sytle pseudo code start=========================
for( int i=0; i<8; i++)
data_o[lookup_up_table[i]]=data_i[i];
//C style pseudo code end===========================
input [ 7:0] data_i;
input [27:0] look_up_table; //由於7個bit需要7x4=28個bit的table來定址
output[ 7:0] data_o;
目前的想法是
assign data_o[ look_up_table[ 3: 0] ] = data[0];
assign data_o[ look_up_table[ 7: 4] ] = data[1];
assign data_o[ look_up_table[11: 8] ] = data[2];
assign data_o[ look_up_table[15:12] ] = data[3];
...
不過如此一來被assign的data_o不是固定的表示式會被compile認為成error.
想請問大家有好的實作方法嗎? 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.49.190
推
07/26 22:50, , 1F
07/26 22:50, 1F
推
07/27 20:11, , 2F
07/27 20:11, 2F
推
07/27 20:13, , 3F
07/27 20:13, 3F
→
07/27 20:13, , 4F
07/27 20:13, 4F